版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/3551388
NXP STB225指南
一、NXP STB225主要的Driver介紹
1、LinuxDVB
LinuxDVB用于控制:
(1) 前端(調諧器、頻道解碼器)
(2) 程式辨別符PID過濾
(3) 節Section過濾
(4) 傳輸流TS的多路配置設定
2、DirectFB
DirectFB用于控制視訊管道的:
(1) 非傳輸流的多路配置設定
(2) 視訊解碼
(3) 視訊輸出
(4) 靜止圖像解碼
(5) 帶圖形加速的屏顯OSD
3、ALSA
ALSA用于控制音頻管道的:
(1) 音頻解碼
(2) 音頻後處理器(post-processor)
(3) 音頻輸出
二、STB225核心子產品關系
1、phStbMmio
2、I2C
at24c64
saa1064
tda9983
ak470x
3、phStbCore
(1) phStbOsal
phStbAlsa
phStblpc
phStbKey
phStbRCprotocol
phStbSbmDev
phStbDemux833x
phStbRSServer
phStblr
(2) phStbDbg
phStbBootDsp
phStbNetDev
phStbKBufMgr
phStbFB
phStbVo
phStbVideoRenderer
phStbKernellfce
phStbWmdrmPd
三、内部處理器通信
兩個MIPS都使用相同的通信棧。
注意:
(1) IPC消息隻用于控制
(2) IPC消息參考有效負載資料
(3) 有效負載資料存儲到共享記憶體(避免複制)
四、STB225主要用例
(1) 直播(Live Broadcast)
(2) 個人錄像機PVR
(3) 經IP傳輸的TS流(多點傳播或單點傳播)
(4) 其它經IP傳輸的格式(如WMV)
(5) 其它可能的用例
· “streaming System” 允許多種類型的流通過連接配接結構化到元件或緩沖
· 單個高清流或兩路标清流
· 條件接收系統CAS:
在VMSP解擾輸入;
如需硬碟存儲,能用分組密碼(block cipher)重編碼/解碼
· 基本流ES的回放,如:MP3、WMA
· 來自記憶體的短視訊片段的回放。能為UI提供動畫
五、DirectFB內建
1、DirectFB需要:
(1) 幀緩沖裝置
(2) 輸入事件機制
(3) 移植層(Porting Layer)映射硬體功能
2、移植層
(1) 基礎結構
· phStbDFB
· DirectFB概念和硬體實作之間的映射
(2) 圖檔provider
· phStbDFBImageProvider
· 支援JPEG、PNG、GIF、BMP等格式
(3) 視訊provider
· phStbDFBVideoPrivoderTS,phStbDFBVideoProviderES,
phStbDFBVideoPrivoderASF 和phStbDFBVideoPrivoderCommon
· 支援傳輸流TS、ASF和基本流ES
六、幀緩沖實作
1、phStbFB配置設定所需記憶體建立幀緩沖
2、phStbFB還配置設定DirectFB所需的任意記憶體
3、STB225在視訊輸出時能支援1~2個幀緩沖
4、幀緩沖:
· 總是ARGB32位格式
· 能夠是單或雙緩沖
· 能放大以适應輸出螢幕
· 不能縮小以适合輸出螢幕
注意:隻能支援一個全高清幀緩沖
5、幀緩沖記憶體(标清情況)
(1) 記憶體使用2MB的倍數作為連續塊進行配置設定
(2) 幀緩沖必須符合64KB邊界
(3) 顯示的FB0使用OSD層1,FB1使用OSD層2
(4) DirectFB被配置設定為FB0的結束位置到FB1的開始位置之間的任意記憶體
(5) DirectFB記憶體的數量可以使用gfx_memory子產品參數增加,預設為4MB
6、幀緩沖記憶體(高清情況)
高清幀緩沖使用兩個OSD層
(1) 這是由于硬體局限限制了OSD層的寬度最大為960像素
(2) 單個連續的記憶體塊配置設定到幀緩沖
· 不同的起始位址和步距(Stride)允許使用兩個OSD層
· OSD層1用于顯示幀緩沖的左手邊
· OSD層2用于顯示幀緩沖的右手邊
七、STB225建立指令
1、首次建立,在stb225/ 運作:
../setup.sh
Make all
2、建立元件
make comp.lnx.clean/make/install
3、建立應用
make apps.lnx.clean/make/install
4、建立buildroot
make buildroot.menuconfig
make buildroot.busybox.menuconfig
make buildroot.clean/make/install
5、建立Linux
make linux.menuconfig
make linux.clean/make/install
6、建立U-Boot
make u-boot.clean/make
八、STB225調試(MIPS1:控制MIPS)
1、Linux 核心/子產品跟蹤
echo 9>/proc/sys/kernel/printk 增加printk的輸出級
cat/proc/kmsg 檢視核心消息
cat/var/log/messages 檢視Linux消息
(存儲在RAM盤,是以不出現在rootfs,使用telnet連接配接192.168.0.2檢視)
tail -f /var/log/messages& 持續地檢視Linux消息
2、tmdbg程式的用法
-h 列印基本的用法資訊
help 列印所有有效的指令
dbg enable Module [flag...] 在Linux打開debug标志
dbg disable Module [flag...] 在Linux關閉debug标志
dbg show Module 顯示設定的子產品标志
dbg list 在Linux為所有子產品列出DBG标志設定
例如:
tmdbg dbg enable tmgdrAudioIO 0x700
tmdbg dbg enable tmdlMsvd 0xa0000030
3、标志的含義
Level_5 0x00001000 非常詳細的調試(/var/log/messages)
Level_4 0x00000800 詳細的調試
Enter 0x00000010 顯示外部接口函數調用入口
Leave 0x00000020 顯示外部接口函數退出
IEnter 0x00000040 顯示内部函數調用入口
ILeave 0x00000080 顯示内部函數退出
九、STB225調試(MIPS2:音頻編解碼器)
1、telnet到MIPS1(192.168.0.2)
2、然後從DSP MIPS(192.168.251.2)telnet
3、“tmdbg dbg l” 列出能夠使用的子產品
4、輸出到循環(circular)日志緩沖區,而不是var/log/messages目錄
5、可以通過“logread”讀它
6、如使用“logread -f”,會得到連續的輸出
7、tmdbg dbg enable指令,例如:
“tmdbg dbg e phdspMpgal2 0x00001f00” 将提供5到1級的調試
8、logread -f>logfile.txt 可儲存資訊到一個檔案
十、STB225樣例程式
1、exStbDemo
基于DirectFB、LinuxDVB和ALSA
通用應用程式,說明了大量的系統特征:
(1) DVB:接收、頻道安裝、節目資訊
(2) PVR:錄制、回放
(3) IP接收和回放:多點傳播、單點傳播
(4) 媒體檔案回放:TS、ES、ASF(WMV、WMA、WM-DRM)
(5) 圖像解碼:幻燈片和thumbnail播放、JPG/PNG/BMP/GIF
(6) 顯示和輸出操作:視訊縮放、分辨率/TV标準切換、Gamma校正、
層(Alpha混合、閃爍過濾、Z順序、顯示/不顯示)、WSS/防複制保護/内容保護系統體系CGMS
(7) 性能分析
(8)通路ALSA音頻元件
2、exStbFb
簡單圖像解碼和顯示的應用程式
(1) 不使用DirectFB
(2) 使用圖像解碼庫和幀緩沖裝置
(3) 能解碼、縮放和定位:JPG/PNG/BMP/GIF(包括動畫)/從視訊層抓屏(使用/dev/vrend/display[1|2])
3、exStbResolution
修改幀緩沖尺寸和放大的程式
(1) 可改變的幀緩沖寬度、高度和目的矩形視窗
(2) 例如:用exStbFb在兩個不同的螢幕位置、兩個不同的層顯示不同的動畫GIF。
· 幀緩沖隻能放大(即目的矩形視窗必須>=寬度和高度)
· 多種對寬度、高度和目的視窗的同步改變(顯示可能中斷)
· 一定要小心,一次隻能改變一個參數
4、exStbLED
測試前面闆LED輸出的應用程式
(1) 字元顯示
(2) 數字顯示
(3) 點“.”顯示
(4) 卷動Scrolling(向前、向後、速度控制)
(5) 亮度(Brightness)
(6) 時間顯示
注意:由于7位的顯示,部分字元不能顯示。
5、exStbCC
說明相關字幕資料插入的應用程式
(1) 使用視訊顯示裝置接口 /dev/vdenc/renderer0/vdenc[0|1]
(2) 檢查檢視是否裝置支援相關字幕
(3) 注入一系列的相關字幕資料(隻對CC1有效)
6、exStbThumbs
基于視訊和圖像的thumbnail顯示的DirectFB應用程式
(1) 必須運作在1280×720p、使用兩個幀緩沖的模式
(2) 在視訊層循環的H.264流
(3) 圖像序列快速顯示到螢幕
(4) 随即視訊幀捕捉和顯示
(5) 圖像層alpha混合用于平滑過渡
7、exStbVideo
基于視訊顯示的DirectFB應用程式
(1) 目前支援:ASF媒體檔案、TS檔案、ES檔案
(2) 非常簡單的例子——隻從頭到尾播放指令行指定的檔案
(3) 能使用ctrl+c中斷
8、exStbHwAcc
說明硬體圖形加速的應用程式(包括彩色鍵控的使用)
(1) 以兩種方式實作圖形功能
· 使用軟體執行操作
· 使用硬體加速裝置(/dev/phStbDraw)
(2) 指令行選項用于選擇使用的功能
十一、STB225燒寫
1、Flash概述
(1) 支援的Flash類型:
· NOR
· NAND
小頁/大頁
小容量/大容量
MTD驅動器提供軟體海明錯誤校驗碼ECC和壞塊管理
(2)能經u-boot或Linux燒寫(兩者都使用MTD驅動器)
(3) 燒寫nandboot/u-boot應仔細
如果不工作,那麼你需要EJTAG恢複主機闆
(4) 使用NFS最小化重燒寫
經TFTP核心引導
2、經U-Boot燒寫
(1) 從建立的PC複制檔案到DRAM,例如:
· EJTAG
· 序列槽(Kermit/Z-modem,很慢!)
· TFTP(即以太網)
(2) 擦除Flash分區
(3) 從DRAM複制到Flash分區
(4) 能燒寫空主機闆,使用:
· EJTAG下載下傳
燒寫映像
u-boot恢複映像,從DRAM編譯運作
· 從預寫Flash引導,然後從flash複制燒寫
3、經Linux燒寫
(1) 從建立的PC傳輸檔案到目标,例如:
· USB驅動器
· NFS(即以太網)
· 從網際網路下載下傳,為flash更新
(3) 複制檔案到Flash分區
(4) Only works if the board already has a working linux build
(5) NAND例子:
flash_eraseall -j /dev/mtd3
nandwrite /dev/mtd3 my_padded_file
(6) Must pad file to multiple of erase block size
4、燒寫工具
(1) 重燒寫
· 燒寫單個檔案到單個分區
· 從Linux指令行運作,易于腳本
(2) 支援
· 序列槽(Kermit/Z-modem)
· TFTP 即以太網(未來)
· EJTAG(未來,能bring-up new boards)
例如:reflash -z -d nand0 -n Kernel $KSRC/ulmage
(3)燒寫包
· 燒寫所有分區(使用bring-up new boards)
· 在Linux建立包,但在Windows運作
· 使用Ashling Pathfinder + Opella EJTAG
例如:make_windows_flash dirname