溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Boot之bootrom啟動順序是怎么樣的

發(fā)布時間:2021-12-22 10:21:09 來源:億速云 閱讀:421 作者:小新 欄目:互聯(lián)網(wǎng)科技

這篇文章主要為大家展示了“Boot之bootrom啟動順序是怎么樣的”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Boot之bootrom啟動順序是怎么樣的”這篇文章吧。

    加載vxWorks的boot loader有很多種,最常見的就是使用BSP編譯的bootrom

Boot之bootrom啟動順序是怎么樣的

它在Target里的執(zhí)行順序如下

  • usrEntry() - config/all/usrEntry.c,RAM中的第一條指令,它的唯一功能就是調(diào)用usrInit()

  • usrInit() - config/all/usrConfig.c,主要工作包括:將BSS清零、初始化Cache庫、設(shè)置中斷向量表基址、安裝異常向量、調(diào)用sysHwInit()、使能Cache、調(diào)用usrKernelCorePreInit()初始化Class、對象、信號量等、初始化wdb、調(diào)用usrKernelInit()

    • usrKernelInit() - comps/src/usrKernel.c,配置內(nèi)核使用的數(shù)據(jù)結(jié)構(gòu),包括初始化內(nèi)核的Task庫、配置調(diào)度策略、初始化Tick隊列、初始化wind work隊列、記錄系統(tǒng)內(nèi)存池尺寸、調(diào)用kernelInit()初始化內(nèi)

    • kernelInit() - src/wind/kernelLib.c,初始化并啟動內(nèi)核,包括設(shè)置中斷棧尺寸、設(shè)置內(nèi)存池位置、初始化中斷l(xiāng)ock-out等級、關(guān)閉時間片輪轉(zhuǎn)策略、將系統(tǒng)Tick清零、初始化中斷棧、初始化并啟動第一個任務(wù)tRootTask

  • usrRoot() - config/all/usrConfig.c,這就是系統(tǒng)第一個任務(wù)的入口地址,主要負(fù)責(zé)post-kernel的初始化,逐步加載系統(tǒng)服務(wù),它內(nèi)部同樣由大量初始化函數(shù)組成

    • usrKernelCoreInit() - src/config/usrKernelCore.c,初始化內(nèi)核的一些機(jī)制,包括Event、信號量的open機(jī)制、消息隊列及open機(jī)制、看門狗、任務(wù)的open機(jī)制等

    • memInit() - src/os/mm/memLib.c,初始化系統(tǒng)內(nèi)存池

    • usrMmuInit() - comps/src/usrMmuInit.c,初始化MMU

    • usrKernelCreateInit() - src/config/usrKernelCore.c,初始化內(nèi)核對象的creation機(jī)制,例如任務(wù)、消息隊列、看門狗

    • sysClkConnect() - src/drv/timer/xxxTimer.c,掛接系統(tǒng)時鐘ISR,調(diào)用sysHwInit2()

    • sysHwInit2() - $(BSP)/sysLib.c,掛接中斷,配置其它附加信息

    • iosInit() - src/os/io/iosLib.c,初始化IO系統(tǒng)

    • tyLibInit() - src/os/io/tyLib.c,初始化TTY庫

    • ttyDrv() - src/os/io/ttyDrv.c,初始化TTY驅(qū)動

    • ttyDevCreate - src/os/io/ttyDrv.c,創(chuàng)建TTY設(shè)備

    • 初始化其它機(jī)制,例如任務(wù)級job機(jī)制、message logging庫、管道驅(qū)動、標(biāo)準(zhǔn)IO庫、ERF(Event Reporting Framework)庫、設(shè)備管理、文件系統(tǒng)相關(guān)機(jī)制、pty(pseudo-terminal)驅(qū)動、存儲設(shè)備加載、Boot Line解析等

    • bootAppShellInit() - src/boot/bootAppShell.c,初始化Boot Shell

    • Boot方式的初始化,例如文件系統(tǒng)、網(wǎng)絡(luò)

    • bootApp() - src/boot/bootApp.c,啟動Boot Loader主任務(wù)bootApp

  • bootAppTask() - src/boot/bootApp.c,bootApp的入口地址。它默認(rèn)先等待7秒,如果Boot Shell接收到命令,則解析執(zhí)行;如果7秒倒計時結(jié)束,則按照Boot Line將vxWorks鏡像加載到RAM_LOW_ADRS,然后跳轉(zhuǎn)到這個地址開始執(zhí)行vxWorks

Boot之bootrom啟動順序是怎么樣的

以上是“Boot之bootrom啟動順序是怎么樣的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI