os_idletaskinit(p_err); /* 初始化空閒任務 */
空閒任務棧預設為 128*4=512 位元組
os_ticktaskinit(p_err); /* 初始化時鐘節拍任務 */
dwt(data watchpoint and trace),是用於系統除錯及跟蹤,
它有乙個 32 位的暫存器叫 cyccnt,它是乙個向上的計數器,記錄的是 核心時鐘執行的個數,核心時鐘跳動一次,該計數器就加 1,當 cyccnt 溢位之後,會清零重新 開始向上計數。
核心時鐘是 72m,那精度就是 1/72m = 14ns,而程式的執行時間都是微秒級別的,所以 14ns的精度是遠遠夠的。
最長能記錄的時間為: 2^32 /72000000=60s
時鐘節拍的頻率表示作業系統每 1 秒鐘產生多少個 tick, tick即是作業系統節拍的時鐘週期,
時鐘節拍就是系統以固定的頻率產生中斷(時基中斷),並在中斷中處理與時間相關的事件,推動所有任務向前執行。
os_cpu_systickinit() 用於初始化時鐘節拍中斷,初始化中斷的優先順序,systick中斷的啟用等等
在系統任務的第乙個任務開始的時候進行呼叫,如果在此之前進行呼叫中斷,可能會造成系統奔潰,因為系統還沒有初始化好就進入中斷,可能在進入和退出中斷的時候會呼叫系統未初始化好的一些模組
1000hz 1ms,與時鐘頻率相關,w/1000hz=cnt;
在系統建立任務之前,就必須將系統必要的東西進行初始化
採用一塊連續的大陣列作為系統管理的記憶體cpu_int08u mem_heap[lib_mem_cfg_heap_size]
建立任務
因為建立僅僅是把任務新增到系統中,osstart()排程任務開始執行作業系統
刪除任務
Bootloader 之U boot啟動流程
一 u boot的儲存位置 u boot 一般是放在硬體 本地 電路板 的flash內,也有可能放在sd卡上,但是肯定不會放在記憶體或網路上。二 u boot的意義 u boot是嵌入式linux作業系統中執行的第乙個程式 可將u boot和核心看做是兩個不同的程式 其終極目的是引導載入核心進而使l...
4412之啟動流程分析
前面一階段的學習,我掌握了通過adb或者tf開燒寫系統 通過撥碼開關設定系統的啟動介質,今天我就要來詳細 一下這裡面的原理。撥碼開關是怎麼控制啟動介質的選擇的,燒寫的都是些什麼東西?被燒寫到了什麼地方?晶元內部有怎樣的機制去配合這些燒寫過程?這都是我們要詳細 的問題。這些問題其實都是屬於乙個大問題 ...
spring boot之啟動流程分析
啟動流程 執行run方法,準備環境,引數等 列印banner,並決定是否建立web專案 重新整理應用上下文 執行commandlinerunner 主要註解分析 springbootconfiguration 自動載入配置檔案,裝配事務等 enableautoconfiguration 根據依賴自動...