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