達芬奇數(shù)字媒體片上系統(tǒng)的架構和Linux啟動過程
完成以上步驟之后,U-boot準備引導ARM Linux。
(1)配置系統(tǒng)的內(nèi)存(通過ATAG_ MEM塊和mem=)NAND Flash和DDR2。
(2)通過TFTP加載等加載方式,加載內(nèi)核到指定的存儲地址。
(3)如果定義過,加載RAM Disk。
(4)初始化傳遞到內(nèi)核的引導參數(shù)(EMAC地址,串口,控制臺,視頻格式等)
(5)獲得ARM Linux機類型值(DVEVM為#901)。
(6)設置kernel tagged list。
(7)用初始值設置ARM的寄存器。
(8)調(diào)用內(nèi)核。
> Linux 初始化步驟
(1)Linux內(nèi)核需要從引導加載程序(U-boot)中得到以下參數(shù)。
* 已經(jīng)初始化的memory系統(tǒng)。
* R0=0;R1為ARM Linux機類型值。
* R2指向ATAG結構體的內(nèi)容:①物理memory區(qū);②是否使用RAM DISK及其壓縮版的地址;③視頻驅(qū)動程序具體的初始化參數(shù);④內(nèi)核命令行;⑤其他參數(shù)(串口和版本號)。
更多關于Linux內(nèi)核引導參數(shù)的信息可以參考Linux/Documentation/kernel-parameters.txt。如果要想傳遞給內(nèi)核更多的參數(shù),再u-boot中的bootargs中設置就可以了。
(2)對于壓縮的內(nèi)核(aka uImage),Linux 最初啟動Linux/arch/kernel/head.s。
(3)start_kernel()運行。位于Linux/init/main.c。
(4)Linux的第一個進程init()運行。
總結
經(jīng)過上面介紹,很多DSP工程師可能會對達芬奇DMSoC及Linux啟動流程有一個感性的認識,雙核架構的達芬奇DMSoC帶給我們的是一加一大于二的性價比,要想了解更多的細節(jié),請參考數(shù)據(jù)手冊和應用文檔。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關文章:linux教程
評論