2013年8月29日 星期四

ProtoThreads於VS2010下編譯問題

過了許久才動作。先將ProtoThreads編起來。
在VS2010下竟然編不出來。
錯誤訊息是說將巨集的東西做變數是不行的。
奇怪了,不是只有取用行號。
發出錯誤的是debugger。

查了一下,要將Debug Information Format設定從/ZI改為/Zi
這個應是除錯用外部資料,可能是有干涉。
總算動起來了。

不過使用行號嵌入巨集應是可以做的。只是少人用。
另外一個C/C++先進功能,將Label做為變數值這個功能在VS2010也是不支援。
手上已有二支程式需要使用Label做為變數值的程式了。
分別用於Coroutine及動態編譯。
但二者皆有函式域限定問題。不過VS2010連這個功能都沒有也不用試了。
寫程式這麼久,開始出現程式寫得出來,編譯器編不出來的狀況。

真的不能限定使用單一語言,編不出來是Compiler的問題,不是人的問題。
程式創作也不應被語言限定。只要CPU可以執行,就一定可以寫得出來。

2013年8月8日 星期四

Protothreads結合簡單多工之構想

簡單多工在閱讀上有Task及Function不易分別的問題。這個部分用Protothreads來補強。
因為Protothreads功能限定在單一函式內。
所以Task在程式結構上會分成二部分。
一個是狀態及時間控制,此部分以Protothreads為主要描述。
另外的是資料處理,基本上這部分還是沒有改變。
工作元仍採用動態加入,主要是要限定反應時間。

一度還想用Protothreads為主結構,但發現有限制。
所以仍以簡單多工為主要結構,這樣在簡單多工上產生出來的動作行為仍可以使用。

這樣的程式結構和FPGA上寫法相似,程式分為狀態控制及資料處理。
這種調整,應可以使程式在有作業系統及無作業系統下看起來更為相似。