您好,登錄后才能下訂單哦!
上電——→DM8127內部片上的ROM CODE運行——→ROM CODE讀取SYSBOOT PINS電平狀態決定是從NAND FLASH BOOT還是 UART0串口 BOOT或者SD卡BOOT或者PCIe BOOT或者EMAC BOOT或者XIP BOOT——→讀取ubootmin并運行ubootmin(ubootmin取得ARM控制權)——→讀取u-boot并運行u-boot(u-boot取得ARM控制權)——→讀取linux內核BIN并運行linux 內核(linux-2.6.37取得ARM控制權一直到板子復位或者斷電)——→掛載文件系統(可以是存放在NAND FLASH的ubifs,squashfs,或者NFS)——→運行文件系統的腳本——→運行IPNC_RDK整個DEMO應用程序system_server,boa和live555等,啟動VPSS M3核,啟動VIDEO M3核,啟動浮點DSP C674X核。
整個過程可以通過上圖直觀了解。
一、運行ubootmin
一開始上電,DM8127主芯片內部有ROM CODE,這個是使用片上的內部RAM運行的,還沒用片外的DDR3,如果新做的板子什么程序也沒有,只要TPS659113電源管理芯片的供電時序正常,主晶振正常工作,那么ROM CODE就會正常運行,先讀取SYSBOOT PINS(就是BOOT MODE那幾個外接上拉下拉電阻的管腳狀態),如果對應的那些NAND FLASH或者SD 卡或者PCIe等接口沒有程序,那么DM8127這時會通過UART0 不斷輸出C C C C C C ……..的打印字符,試圖通過UART0進行通訊下載UBOOT-OPTI BIN文件(這個UBOOT-OPTI后面介紹UBOOT移植的時候再分析)。
至于運行ubootmin這第2步驟,可以用兩種方式運行方式說明一下:
1、就是在第1步沒上電之前,通過TF卡(SD卡),TF卡預先COPY兩個文件:MLO 和u-boot.bin到卡上,TF卡格式化成FAT32,并且是8倍速以下的卡。這個兩個文件就是后面要提到的ubootmin編譯和uboot-2010.06編譯。其中ubootmin編譯得到就是MLO文件,uboot-2010.06編譯得到就是u-boot.bin。TF(SD卡)先插上到板子上面,然后給板子上電,這樣就會從SD卡BOOT,運行MLO,也就是運行ubootmin。ubootmin這里就會去做很多底層驅動的初始化工作,包括DDR3初始化,這里提到一點,ubootmin還是運行在片內的RAM,并沒有運行在外部DDR3。
2、還有一種超大規模工廠生產的時候,NAND FLASH可以預先燒寫ubootmin BIN文件和 uboot-2010.06 BIN文件,內核BIN文件,文件系統BIN文件,然后再給SMT工廠貼片,那么這時從工廠拿回來的DM8127板子在沒有硬件短路的情況下,根據硬件電路默認設置SYSBOOT PINS為NAND BOOT,那么一上電就會運行NAND FLASH 里面的ubootmin。
在沒有程序的情況下,其實絕大部分都是使用第一種方式SD卡BOOT的方式去運行ubootmin。等到燒寫好ubootmin和UBOOTBIN到NAND 的時候,我們才不需要SD卡 BOOT。所謂通過SYSBOOT PINS外接上拉電阻和下拉電阻的電平狀態來BOOT ubootmin:
只能說是優先從哪種方式BOOT,而TI 內部ROM CODE會自動從優先的BOOT MODE去找對應的ubootmin,比如從NAND 優先BOOT,但是NANDFALSH沒ubootmin,那么ROM CODE會去找SD卡BOOT(又叫MMC BOOT),如果SD卡里面沒有MLO 和u-boot.bin,ROM CODE 繼續找SPI BOOT,如果SPI BOOT 不成功,繼續找UART0 口去BOOT,ROM CODE會一直列舉完幾種BOOT 模式。
二、運行完整uboot
ubootmin初始化結束后,會去讀取uboot-2010.06 BIN文件并運行完整的uboot,即uboot-2010.06。完整的uboot-2010.06正常運行,那么可以通過網絡TFTP等操作去燒寫,然后就去運行linux內核了。這個完整的uboot運行是在DDR3了(代碼映射到DDR3存儲地址段不能和kernel沖突),有關uboot-2010.06的移植后面再單獨寫寫,這里不累贅。
三、運行linux內核
uboot-2010.06 會通過各種方式(讀取NAND 里面的BIN文件或者TFTP 下載內核)并運行內核,ARM控制權交給內核,這個linux內核也是運行在DDR3。
四、內核掛載文件系統
這個也不需要累贅,做過linux嵌入式開發都知道,研發先使用NFS調試通,然后再制作ubifs BIN文件或者squashfs BIN文件燒到板子NAND FLASH去。
五、執行文件系統的腳本
首先會去運行文件系統etc里面的一大堆腳本,最后再運行/etc/init.d/finish_ubifs.sh的腳本:
cd/opt/ipnc
./init.sh
./system_server
sleep7
./autorun_ipnc.sh
這些腳本的內容可以去對應的NFS文件系統目錄打開看看。
運行DEMO程序這些都會在system_server這個應用程序去打開,或者并行去打開。都是LINUX 應用層面的程序。
六、其他3個核的啟動
啟動VPSS M3核(ipnc_rdk_fw_m3vpss.xem3),啟動VIDEO M3核(ipnc_rdk_fw_m3video.xem3),啟動DSP 核(ipnc_rdk_fw_c6xdsp.xe674)都有對應的load腳本。見下面2張圖:
注意上面兩張圖的路徑,知道這些程序和腳本放在什么地方。
其實在system_server應用程序可以使用類似以下方法執行這些腳本:
system("./scripts/load_vpss.sh&");
system("./scripts/load_video.sh&");
system("./scripts/load_c6xdsp.sh&");
好了,有關DM8127的啟動過程就寫到這里,要深入了解,建議還是拿板子進行調試,理論的東西不如手動去驗證,通過實際操作,才更好掌握DM8127 這個ARM+浮點DSP的開發方法。
(題外話,有些網友通過本人QQ:2505133162了解DM8127是否可以做深度學習算法,本人通過很多方面得到個人結論:DM8127不適合復雜的深度學習算法,只能做車牌識別,人臉識別,智能安防IVS這些產品,TI DAVINCI 平臺有適合自動駕駛的DM505解決方案,可以做一些深度學習算法,我們目前還沒有這個平臺。)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。