SOGO論壇
標題:
請教韌體 C 語言程序中怎麼接流程?
[列印本頁]
作者:
hola0183
時間:
2015-5-30 02:39:50
標題:
請教韌體 C 語言程序中怎麼接流程?
以往我在 ASM 語言下執行每個程序都有各自的 CALL 或用 RAM 儲存 Program Counter 記錄下次返回位址。
所以可以建立數個獨立的程序讓它自己跑。
每個程序若 polling 檢查到執行的任務結束後,會從 main loop 返回繼續接下一個任務,讓每個程序都能獨立執行,直到程序流程作完。
但現在碰到新 IC 用到 C 寫,不知道怎麼接。
目前用比較笨的方法每個程序都用 ram 去記 step 跑完流程或建立 command 的方式去依照 command 做對應的任務。
是否有其他架構設計的建議或參考書籍和文章,這笨方法困擾很久…。
//main loop
while(1)
{
......
check_process1_return()
check_process2_return()
......
}
process1()
task1()
...
task2()
...
task3()
...
end
process2()
task1()
...
task2()
...
task3()
...
task4()
...
task5()
...
...
...
taskN()
end
作者:
alphi
時間:
2015-8-9 18:54:56
你可以嘗試使用RTOS (RealTime Operation-System) 市面上有許多免費的例如FreeRTOS,RT-thread,....
要快速上手可以看uC-OSII/III 或者Keil,或者自行開發
用C寫其實概念也跟ASM一樣需要記錄PC,SP(Stack Point),通用暫存器等這部分大多數也是使用組合語言去完成Context-Switch(內文交換).若是最簡單的方法就是寫一個Switch ...Case 作FSM(Finate-State-Manchine)
作者:
hola0183
時間:
2015-11-7 19:50:52
感謝兩位的提醒,受益良多。
歡迎光臨 SOGO論壇 (https://oursogo.com/)
Powered by OURSOGO.COM