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