1、Bootloader如何寫入Flash
初學(xué)者一般都會(huì)遇到如何將程序?qū)懭胩幚砥鞯膯栴}。對(duì)于不同的處理器,可以采用不同的方法。例如Intel的Xscale處理器可以使用Intel公司提供的JFlash工具燒寫。對(duì)于具有JTAG調(diào)試工具軟件的處理器,可以使用如下思路:編寫一段程序,這段程序能將位于SDRAM/SRAM 固定地址中的數(shù)據(jù)寫入Flash中。
2、什么是arm-elf-gccarm-elf-gcc是一個(gè)交叉C語言編譯器。我們?cè)赑C平臺(tái)下編譯程序,編譯器運(yùn)行的處理器同生成的代碼將要運(yùn)行的處理器相同。但是,在PC機(jī)上編譯ARM程序時(shí),編譯器運(yùn)行的處理器同生成的代碼運(yùn)行的處理器不同,這種編譯器叫做交叉編譯器,其中的elf是指編譯器生成的目標(biāo)文件格式。
系統(tǒng)程序和驅(qū)動(dòng)程序往往包含很多的編譯選項(xiàng),很多選項(xiàng)都是在編譯時(shí)通過命令行定義的,如果想知道編譯的是那一段程序可以使用如下的方法:
#ifdef PLAT_AAA
#error Code for Platform AAA
#else
#error Code NOT for Platform AAA
#endif
這樣在編譯的時(shí)候就知道,編譯的是哪一條路經(jīng)了。對(duì)于支持#pragma message( “I am here”)的編譯器也可使用#pragma message預(yù)編譯指令。
4、我怎么知道那段代碼在那個(gè)文件中
系統(tǒng)編程中經(jīng)常需要使用在多個(gè)文件中搜索字符串,在windows平臺(tái)下可以使用平臺(tái)提供的多文件字符串搜索工具。在linux平臺(tái)下,可以使用grep來搜索字符串。Grep的搜索功能十分強(qiáng)大,支持正則表達(dá)式搜索,熟練使用grep對(duì)于閱讀系統(tǒng)和驅(qū)動(dòng)程序代碼是很有幫助的。
5、系統(tǒng)是從那個(gè)文件開始運(yùn)行的
對(duì)于Windows CE系統(tǒng),一般從WINCE420PLATFORMYourPlatformKERNELHAL目錄的某個(gè)匯編文件中。對(duì)于Linux系統(tǒng)版本不同會(huì)存在一定差異,以arm處理器為例,一般會(huì)在linux2.4.xarcharmkernel的head-armv.S中。
6、程序執(zhí)行到了那里
可以在程序中插入如下代碼來實(shí)現(xiàn)
printf( “I am here %s, %dn”,__FILE__, __LINE__);
代碼將打出printf語句所在的文件名和行號(hào)。
嵌入式開發(fā)與桌面開發(fā)既有不同,又有非常大的聯(lián)系,以上六大嵌入式系統(tǒng)開發(fā)流程中常見的問題就簡(jiǎn)單介紹這些了,這些常見問題在很多嵌入式工程師在開發(fā)過程中都會(huì)遇到。