開始學習arm裸機程序,之前就在準備著,可是一直進展的不是很順;原因是自己效率不是很高,怕失敗;不過突然頓悟了,與其慢慢的做自己會的東西不如突破下自己往前走因為怕失敗的人終究是要失敗的;但是有個前提--得有目標不能今天學linux,明天又學arm裸機;所以從今天開始學arm裸機程序。于是決定,早睡早起,遇到問題勇于嘗試而不是死命的想,做技術的可以先會做了再明白為什么這么做。
前面開題,下面說說學習過程中遇到的問題,無論是硬件問題還是軟件問題,無論是板子的問題還是自身的問題都將記錄在日志中便于今后學習。
今天遇到問題:1.ads編譯不出arm可執行的二進制文件2.bin程序下不近開發板。
解決方案:
問題1:
用codewarrior編譯程序值錢需要對環境設置;
步驟1:先建立工程還有包括main.c和Init.s;
步驟2:將main.c和Init.s加進工程中;
步驟3:設置DebugRel Setting 中所有關于langue setting中的選項都要設置成處理器的型號,如S3C2440設置為ARM920T;
步驟4:Target中的Target setting有一項Post-link設置為ARM fromELF;
步驟5:ARM Linker中的output中的R0 base選項設置為運用程序的地址,如FL2440開發板設置為0x32000000;
步驟6:ARM Linker中的layout中的object/symbol選項中設置為Init.o(和Init.s對應,因為編譯生成的*.o是來自源文件) ;
步驟7:進行make,在debugrel文件夾中可以找到*.bin的文件,下載執行;
問題2:
下載自己編寫的運用程序時,開發板啟動boot,但是不能只啟動boot,就是說開發板本來是啟動linux或wince的,下載程序的時候讓他停在 boot中。FL2440中有一種啟動方式是只啟動boot就不動作了,在這個模式下是下不近程序的。
后記:這些只是問題和解決方案但是問題2沒明白為什么這么做,看看今后能不能明白。