OSAL操作系统
事件驅動型OSAL操作系統原理分析
任務就是一個函數,每一個任務都要有一個函數,形成函數列表(函數指針數組)
以上就是任務處理函數,都是任務調度之前做的事情。
那事件是怎么來的?
操作系統輪詢,發現不為0的事件,怎么發現的?
osal_set_event設置這個事件,輪詢的時候就會發現這個事件,發現這個事件就會去調用某個任務,任務處理完就會osal_clear_event清除這個事件,清除的本質就是取反操作
OSAL消息收發過程
以串口通信為例
進入osal_msg_send函數
進入osal_msg_receive函數
消息收發的本質:
往消息隊列里面放了一塊自己申請的空間,通過事件的機制osal_set_event把某個事件置位,讓操作系統在輪詢調度的過程中發現這個事件從而去調度相應的任務去處理這個消息。
向OSAL系統添加自定義任務
OSAL創建任務:
1、添加任務的本質就是創建一個自己的任務函數,返回值和參數要遵循函數指針數組里面的定義,發生了某件事(事件被置位)這個函數就被執行
2、還要定義任務初始化函數并保存相應的任務ID
任務個數通過計算任務數組得到
數組里面的函數指針形式如下所示:
以前面講的串口為例:
第372行:
編譯運行:
打印端口、長度、數據
總結
- 上一篇: 算法图解思维导图
- 下一篇: WPF DataGrid