本文由博主譯自《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 如果硬體通過則將磁碟中...