您好,登錄后才能下訂單哦!
這篇文章給大家介紹大數(shù)據(jù)嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中的常見(jiàn)問(wèn)題和解決方法是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
1. Bootloader如何寫(xiě)入Flash ?
初學(xué)者一般都會(huì)遇到如何將程序?qū)懭胩幚砥鞯膯?wèn)題。對(duì)于不同的處理器,可以采用不同的方法。例如Intel的Xscale處理器可以使用Intel公司提供的JFlash工具燒寫(xiě)。對(duì)于具有JTAG調(diào)試工具軟件的處理器,可以使用如下思路:編寫(xiě)一段程序,這段程序能將位于SDRAM/SRAM 固定地址中的數(shù)據(jù)寫(xiě)入Flash中。燒寫(xiě)時(shí),首先,將這段軟件下載到SDRAM 中,然后通過(guò)調(diào)試軟件將要寫(xiě)入Flash的數(shù)據(jù)下載到SDRAM/SRAM的某個(gè)固定地址開(kāi)始的緩沖區(qū),然后通過(guò)調(diào)試器開(kāi)始執(zhí)行程序,將數(shù)據(jù)寫(xiě)入Flash。除此以外,網(wǎng)絡(luò)上還提供了很多專用的寫(xiě)Flash的工具,開(kāi)發(fā)者可以根據(jù)自己的需要選用。(現(xiàn)在明白了我在學(xué)的那個(gè)BF533為什么先下個(gè)flashProgramer.dxe先了)
2.什么是arm-elf-gcc?
arm-elf-gcc是一個(gè)交叉C語(yǔ)言編譯器。我們?cè)赑C平臺(tái)下編譯程序,編譯器運(yùn)行的處理器同生成的代碼將要運(yùn)行的處理器相同。但是,在PC機(jī)上編譯ARM程序時(shí),編譯器運(yùn)行的處理器同生成的代碼運(yùn)行的處理器不同,這種編譯器叫做交叉編譯器。其中的elf是指編譯器生成的目標(biāo)文件格式。(其實(shí)我們平時(shí)用的單片機(jī)編譯器如GCC—AVR等已是交叉編譯器了,我到現(xiàn)在才弄清楚什么是交叉編譯器)
3.走了哪條編譯路徑?
系統(tǒng)程序和驅(qū)動(dòng)程序往往包含很多的編譯選項(xiàng),很多選項(xiàng)都是在編譯時(shí)通過(guò)命令行定義的,如果想知道編譯的是那一段程序可以使用如下的方法:
#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來(lái)搜索字符串。Grep的搜索功能十分強(qiáng)大,支持正則表達(dá)式搜索,熟練使用grep對(duì)于閱讀系統(tǒng)和驅(qū)動(dòng)程序代碼是很有幫助的。
5. 系統(tǒng)是從那個(gè)文件開(kāi)始運(yùn)行的?
對(duì)于Windows CE系統(tǒng),一般從WINCE420\PLATFORM\YourPlatform\KERNEL\HAL目錄的某個(gè)匯編文件中。對(duì)于Linux系統(tǒng)版本不同會(huì)存在一定差異,以arm處理器為例,一般會(huì)在linux2.4.x\arch\arm\kernel的head-armv.S中。
6.程序執(zhí)行到了那里?
可以在程序中插入如下代碼來(lái)實(shí)現(xiàn)
printf( “I am here %s, %d\n”,__FILE__, __LINE__);
代碼將打出printf語(yǔ)句所在的文件名和行號(hào)。
推薦書(shū)目
Jean J.Labrosse MicroC/OS-II The Real-Time Kernel,Second Edition這本書(shū)是筆者接觸嵌入式實(shí)時(shí)系統(tǒng)的入門(mén)書(shū),在國(guó)內(nèi)能夠買(mǎi)到中文版。這本書(shū)較為清楚地講述了實(shí)時(shí)系統(tǒng)的概念,各個(gè)組成部分的工作原理,特別是公開(kāi)了實(shí)時(shí)系統(tǒng)內(nèi)核的源代碼,仔細(xì)研究定會(huì)受益匪淺。有個(gè)小的提示,對(duì)于初學(xué)者,這本書(shū)可以先不看第一章,直接從第二章看起。
Abraham Silberschatz, Peter Baer Galvin,Greg Gagne Operating System Concepts筆者在教學(xué)過(guò)程中發(fā)現(xiàn),無(wú)論是計(jì)算機(jī)還是電子工程專業(yè)都有很多學(xué)生對(duì)于操作系統(tǒng)的基本概念都沒(méi)有搞清,很少有學(xué)生有完整的系統(tǒng)編程經(jīng)驗(yàn)。Operating System Concepts這本書(shū)對(duì)操作系統(tǒng)的概念講述只能用經(jīng)典來(lái)形容。對(duì)于嵌入式系統(tǒng)有興趣深入研究的同學(xué),首先要把基礎(chǔ)打好,這本書(shū)就成了必讀之物了。
Andrew S. Tanenbaum Computer Networks 提起Andrew S. Tanenbaum 學(xué)習(xí)計(jì)算機(jī)的同學(xué)一定都知道OPERATINGSYSTEMs:Design and Implementation這本書(shū),筆者對(duì)于Tanenbaum這樣的教授由衷佩服。網(wǎng)絡(luò)協(xié)議棧是嵌入式系統(tǒng)中的支柱性組成部分。愿意致力于網(wǎng)絡(luò)深層技術(shù)研究的同學(xué),這本書(shū)將為你們建立一個(gè)堅(jiān)實(shí)的網(wǎng)絡(luò)基礎(chǔ)。
Karim Yaghmour Building Embedded Linux Systems本書(shū)詳盡的介紹了嵌入式linux系統(tǒng)的組成,基本概念和如何去建立各個(gè)部分。全書(shū)篇幅較小,可謂短小精悍。即可以作為嵌入式linux系統(tǒng)的入門(mén)讀物,又是開(kāi)發(fā)過(guò)程各個(gè)部分的指南。
Advanced RISC Machines Ltd (ARM) ARM7 TDMI Data Sheet Advanced RISC Machines Ltd (ARM) ARM920T Technical Reference Manual學(xué)習(xí)嵌入式系統(tǒng)不了解當(dāng)前應(yīng)用最廣泛的嵌入式處理器怎么行? ARM7 TDMI 的 data sheet是學(xué)習(xí)ARM編程模型,指令集的好東西。在嵌入式系統(tǒng)中,MMU(內(nèi)存管理單元)是很重要的部分,又是較難理解和掌握的部分。ARM920T Technical Reference Manual 正好可以幫你講解這方面的內(nèi)容。
Perter Van Der LinDen Expert C Programming嵌入式系統(tǒng)級(jí)編程最常用的語(yǔ)言還是C 。很多同學(xué)都自認(rèn)為自己的C語(yǔ)言學(xué)的很好,那好,就看看這本書(shū)吧,找找自己和Experts差距。
嵌入式開(kāi)發(fā)與桌面開(kāi)發(fā)既有不同,又有非常大的聯(lián)系,而且十分注重實(shí)際操作能力。搞桌面開(kāi)發(fā)的人在一開(kāi)始接觸嵌入式的時(shí)候,通常轉(zhuǎn)換不過(guò)來(lái),這主要體現(xiàn)在定位上。如文中所說(shuō),你是誰(shuí),你要做什么?我對(duì)硬件的了解僅限于編程領(lǐng)域,PCB設(shè)計(jì)一竅不通,但并不能說(shuō)你不懂硬件就不能從事嵌入式開(kāi)發(fā)。一個(gè)系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)方方面面,在自己感興趣和熟悉的領(lǐng)域做出自己的貢獻(xiàn)才是最主要的。
(1)硬件設(shè)計(jì): 需要有硬件設(shè)計(jì)的經(jīng)驗(yàn),對(duì)各種嵌入式器件有很好的了解。
(2)系統(tǒng)移植:需要匯編經(jīng)驗(yàn),操作系統(tǒng)原理以及底層驅(qū)動(dòng)的了解
(3)應(yīng)用程序:需要桌面編程經(jīng)驗(yàn)
關(guān)于大數(shù)據(jù)嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中的常見(jiàn)問(wèn)題和解決方法是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。