TI 作業系統之 啟動時序

2021-10-09 09:02:14 字數 1771 閱讀 1749

文由博主譯自《sys/bios(ti-rtos kernel) v6.46 user's guide》,

texas instruments,文獻編號:spruex3q,2023年6月,p47-48。

內容以原文為準,鏈結。

sys/bios啟動時序在邏輯上分為2個階段:發生在應用(程式)的 main( ) 函式呼叫之前的操作;發生在應用(程式)的 main( ) 函式呼叫後的操作。

main()之前的啟動時序完全由xdctools runtime包管理。有關主程式之前的引導時序詳見 "xdctools boot sequence andcontrol points" wiki 頁面。xdctools執行時啟動時序入下:

1  cpu復位後立即完成對裝置使用的cpu初始化。(從c_int00開始),這一步和 cinit( ) 一步的詳細情況見 與你的器件相符的組合語言工具使用者指南 中的「程式載入與執行」一章。

2  在 cinit( ) 之前,執行復位功能表(xdc.runtime.reset 模組提供了這個鉤子)。呼叫在 reset.fxns[ ] 陣列中指定的函式。這些復位功能僅在復位以後且執行程式之前被呼叫。

3  執行 cinit( ),初始化 c 的執行時環境。

4  執行使用者的第乙個函式(xdc.runtime.startup 模組提供了這個鉤子)。

5  執行全部的模組初始化函式。

6  執行使用者的最後乙個函式(xdc.runtime.startup 模組提供了這個鉤子)。

7  執行pinit( )。

8  執行main( )。

main( ) 之後的啟動時序由 sys/bios 管理,為了完成初始化過程,需要在應用程式的main( ) 函式的結尾明確呼叫 bios_start()。當呼叫了bios_start(),sys/bios 的啟動時序如下:

1啟動函式。執行使用者提供的啟動函式(見bios.startupfxns)。如果系統支援定時器,全部靜態建立的定時器都要按照它們的靜態配置進行初始化。如果定時器配置成「自動」啟動,定時器就從現在開始執行。

2使能硬體中斷

3使能軟體中斷。如果系統支援軟體中斷(swis)則使能軟體中斷(見bios.swienabled)。

4任務啟動。如果系統支援任務,則開始任務排程(見bios.taskenabled).如果系統裡沒有靜態或動態地建立任務,則直接執行空閒的迴圈過程。

下面舉例說明配置模組和目標的 .cfg 檔案中關於啟動時序的可能控制點:

reset = xdc.usemodule('xdc.runtime.reset');

var startup = xdc.usemodule('xdc.runtime.startup');

startup.firstfxns[startup.firstfxns.length++] = '&myfirst';

startup.lastfxns[startup.lastfxns.length++] = '&mylast';

var bios = xdc.usemodule('ti.sysbios.bios');

bios.adduserstartupfunction('&mybiosstartup');

TI 實時作業系統SYS BIOS使用總結

1 概述 sys bios 是乙個可擴充套件的實時的作業系統。具有非常快速的響應時間 在中斷和任務切換時達到較短的延遲 響應時間的確定性,強壯的搶占系統,優化的記憶體分配和堆疊管理 盡量少的消耗和碎片 能夠實現系統的模組化並可裁剪。最大的特點就是 實時。2 xdctools xdctools 是sy...

作業系統的啟動

當按下電源的時候作業系統都幹了些什麼?要搞清楚都幹了些什麼就要搞清楚作業系統是如何啟動的。那麼就要從最基本的常識來入手。認識圖靈機 通用圖靈機模型中 控制器首先從紙帶上面讀取控制動作比如到底是加法還是減法啊,到底是做炒雞蛋啊還是做炒土豆啊。這就好像是我們現在電腦的應用程式了。cpu讀取動作,決定到底...

作業系統的啟動

bootsect.s x86 inter 結構電腦剛開機時cpu處於實模式狀態 cs 4 ip 記憶體中有一段固化的 rom bios 基本輸入輸出,位於0xffff0 cs 0xffff 段暫存器 ip 0x0000 偏移 先檢查硬體,如果不合格作業系統無法執行 start 如果硬體通過則將磁碟中...