我使用的是IAR嵌入式工作臺,用於MSP430 v5.60.7,它是IAR嵌入式工作臺版本6.6。我正在使用C99。IAR嵌入式工作臺6(MSP430 V5.6)重寫程序啓動
我想覆蓋__program_start()與我自己的符號,稱爲__unit_test_main()函數。我已進入鏈接器配置選項卡,並選中「覆蓋默認程序條目」框,選中「條目符號」選項並在__unit_test_main中鍵入。這編譯和鏈接,但它不會在模擬器中運行。我收到消息「用戶錯誤:在地址0x0處發現非法操作碼」。當我嘗試在目標上運行它時,它不起作用 - 控制器進入低功耗模式。
PC和SP在啓動時都被初始化爲0x00。
那麼我還需要做些什麼/定義才能正確初始化PC和SP?
我的單元測試的主要功能,現在是平凡的,這裏的整個文件及其:
#include <cstdio>
void __unit_test_main(void);
void __unit_test_main(void)
{
printf("Hello World");
for(;;)
{
}
}
我不知道,如果你可以調用庫函數該功能。如果我理解正確,當初始化工作尚未完成時,您正在接管程序; '.bss'節沒有被清零,'.data'節沒有被初始化。這可能意味着庫函數所需的全局變量(我想'printf'有一些)具有垃圾值。注意:這只是一個猜測,我沒有與MSP合作,或者入門覆蓋。 – user694733 2014-12-04 07:56:48
我甚至不能運行到__unit_test_main,雖然 - 不知道爲什麼這將與CLIB有什麼關係。 – Nick 2014-12-04 15:09:09