學習目標
1 了解核心啟動流程
2 示例模型
啟動流程
說明$sub$$代表在執行 main() 函式之前的系統初始化工作
$super$$代表程式跳轉到 main() 函式執行工作
int $sub$$main(void)
int rtthread_startup(void)
int main(void)
這部分啟動**,大致可以分為四個部分:記憶體分布(1)初始化與系統相關的硬體;
(2)初始化系統核心物件,例如定時器、排程器、訊號;
(3)建立 main 執行緒,在 main 執行緒中對各類模組依次進行初始化;
(4)初始化定時器執行緒、空閒執行緒,並啟動排程器。
rt_hw_board_init() 中完成系統時鐘設定,為系統提供心跳、串列埠初始化,將系統輸入輸出終端繫結到這個串列埠,後續系統執行資訊就會從串列埠列印出來
keil
linking...
program size: code=48008 ro-data=5660 rw-data=604 zi-data=2124
說明:
code: **段
ro-data:唯讀,存放程式定義的常量
rw-data: 讀寫,存放初始化為非 0 值的全域性變數
zi-data: 0 資料段,存放未初始化的全域性變數及初始化為 0 的變數
對應的 .map 檔案說明各個函式占用的尺寸和位址
total ro size (code + ro data) 53668 ( 52.41kb) totalro size 表示 flash 占用的空間大小rw size (rw data + zi data) 2728 ( 2.66kb) total
rom size (code + ro data + rw data) 53780 ( 52.52kb)
rw size 執行時 ram 占用的空間大小
rom 表示燒寫程式所占用的 flash 空間大小
自動化初始化
初始化順序
巨集介面描述
1init_board_export(fn)
非常早期的初始化,此時排程器還未啟動
2init_prev_export(fn)
主要是用於純軟體的初始化、沒有太多依賴的函式
3init_device_export(fn)
外設驅動初始化相關,比如網絡卡裝置
4init_component_export(fn)
元件初始化,比如檔案系統或者 lwip
5init_env_export(fn)
系統環境初始化,比如掛載檔案系統
6應用初始化,比如 gui 應用
只要在相關函式定義用巨集定義宣告即可
int rt_hw_usart_init(void) /* 串列埠初始化函式 */
init_board_export(rt_hw_usart_init);/* 使用元件自動初始化機制 */
```
PHP curl setopt函式用法介紹補充篇
1.curl資料採集系列之單頁面採集函式get html 單頁面採集在資料採集過程中是最常用的乙個功能 有時在伺服器訪問限制的情況下 只能使用這種採集方式 慢 但是可以簡單的控制 所以寫好乙個常用的curl函式呼叫是很重要的。url ch curl init url curl setopt ch,c...
PHP curl setopt函式用法介紹補充篇
1.curl資料採集系列之單頁面採集函式get html 單頁面採集在資料採集過程中是最常用的乙個功能 有時在伺服器訪問限制的情況下 只能使用這種採集方式 慢 但是可以簡單的控制 所以寫好乙個常用的curl函式呼叫是很重要的。url ch curl init url curl setopt ch,c...
Android核心介紹
android 還新增了其他的東西,比如 real time clock,switch,timed gpio。power management 5 files 電源管理對於移動裝置來說相當重要,也是最複雜,開發難度最高的乙個功能。google新增了乙個新的電源管理系統,並沒有原先apm,dpm等。其...