2012年12月29日 星期六

STM8 Low Power Run引發的問題

STM8 Low Power Run是最省電的執行模式,省電省到連Flash ROM的電都關閉,只使用SRAM執行程式。
但引發一個有趣的問題:如何將程式載入到RAM中。

有些編譯器支援inram這個函式修飾字。
但bee個人是覺得1KB的RAM中若是有幾個函式都是inram,是會有問題的。
因為inram也是有分不同狀況,不會全部狀況的都是要用到inram。
也就是不同狀況inram的函式不同,為了節省RAM,都是要用時才使用Flash複製到RAM。

這樣就會產生程式是存於Flash中,但執行時在RAM中。
這樣子並不符合一般編譯器運作原理,且會引發程式重定位問題。
比較簡單的方式是,在RAM中執行的程式用另一個專案去編。
再將Machine Code以data的方式存於Flash ROM中,執行inram前再將程式複到到RAM中。


沒有留言:

張貼留言