星期六, 3月 26, 2005

Runs

果然真的是OSTaskStkInit出了問題…多push了一個register的值在stack裡,所以在作context switch的時候回復到register的值都是錯的。
Enable OSTicker's interrupt也必須在OSStart之後才能把它打開,也就是必須在第一個Task裡才能把該interrupt enable.因為OSStart是不會return的。
想不到這樣的修改以後它就能動了…

星期四, 3月 17, 2005

System crash..

原本一心只想讓OS能動起來,練習怎麼寫OS的code...看來還有一段距離。
把認為Porting好的uC/OS-II在MCU run後
它就馬上當給我看.......哎......網路上捉來的看來不怎麼好用
當掉的時候PC的內容看來錯的和其它Reg.的內容都差了一個byte的位址…
所以猜想應該是task stack initialize的問題

星期五, 3月 11, 2005

Nothing

身為一個Firmware Engineer的價值在那裡(Dr.Wu ask me)...

以前都沒注意到的,個人寫code的style...想要怎麼標、空幾行、註解要怎麼寫..........都太不一致,這樣自己看code也不太容易回想起來

Porting uC/OS II For HCS12.

終於把它給porting好了…
OH Yeah ... Y(@@)

Implement ENTER_Critical section.

在uC/OS中可選擇三種enter critical section的模式:
Method 1: Do not save CCR and directly disable interrupt.
Method 2: Save CCR into stack and disable interrupt.
Method 3: Before enter critical section uses a local variable to save CCR. and then disable interrupt.
作者建議使用第三種模式..

星期五, 3月 04, 2005

西堤吃晚飯



想不到還遇到高中同學…
鱈魚和原始人,原始人已經有中年男子的
身材了,我想他應該要減肥了 (∩_∩)

星期四, 3月 03, 2005

Class

class Node{
public:
Node(int,int);
....
....
};

const Node* f();
Node *const f();
兩個函數回傳值的差異?老實說我有點搞不清楚
哎…


如果宣告成
const Node n(1,2);
那n's member是在run time才決定的?應該是吧…
從程式執行的結果看來好像是這樣,但是執行的結果
似乎是錯的…所要初始的兩個member並沒有被初始化
成功...
是因為當n宣告成const時,它的位址就被配置在MCU
的ROM,所以當程式執行constructor的時候並不能
對ROM寫入。
看來要將class變數配置在ROM好像沒辦法!

星期三, 3月 02, 2005

老闆請喝咖啡.....

M先生請喝咖啡.....
真的是有點讓人害怕.....