自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中的常見(jiàn)問(wèn)題

開(kāi)發(fā)
嵌入式操作系統(tǒng)(Embedded Operation System,EOS)是一種用途廣泛的系統(tǒng)軟件,過(guò)去它主要應(yīng)用與工業(yè)控制和國(guó)防系統(tǒng)領(lǐng)域。嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時(shí)高效性、硬件的相關(guān)依賴性、軟件固化以及應(yīng)用的專用性等方面具有較為突出的特點(diǎn)。本文列舉了嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中的幾個(gè)常見(jiàn)問(wèn)題,希望能夠在大家的學(xué)習(xí)過(guò)程中提供些許幫助。

  嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中的常見(jiàn)問(wèn)題

  Bootloader如何寫入Flash ?

  初學(xué)者一般都會(huì)遇到如何將程序?qū)懭胩幚砥鞯膯?wèn)題。對(duì)于不同的處理器,可以采用不同的方法。例如Intel的Xscale處理器可以使用Intel公司提供的JFlash工具燒寫。對(duì)于具有JTAG 調(diào)試工具軟件的處理器,可以使用如下思路:編寫一段程序,這段程序能將位于SDRAM/SRAM 固定地址中的數(shù)據(jù)寫入Flash 中。燒寫時(shí),首先,將這段軟件下載到SDRAM 中,然后通過(guò)調(diào)試軟件將要寫入Flash的數(shù)據(jù)下載到S D R A M / S R A M 的某個(gè)固定地址開(kāi)始的緩沖區(qū),然后通過(guò)調(diào)試器開(kāi)始執(zhí)行程序,將數(shù)據(jù)寫入Flash。除此以外,網(wǎng)絡(luò)上還提供了很多專用的寫Flash的工具,開(kāi)發(fā)者可以根據(jù)自己的需要選用。(現(xiàn)在明白了我在學(xué)的那個(gè)BF533為什么先下個(gè)flashProgramer.dxe先了)

  什么是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)在才弄清楚什么是交叉編譯器)

  走了哪條編譯路徑?

  系統(tǒng)程序和驅(qū)動(dòng)程序往往包含很多的編譯選項(xiàng),很多選項(xiàng)都是在編譯時(shí)通過(guò)命令行定義的,如果想知道編譯的是那一段程序可以使用如下的方法:

  1. #ifdef PLAT_AAA  
  2. #error Code for Platform AAA  
  3. #else  
  4. #error Code NOT for Platform AAA  
  5. #endif 

  這樣在編譯的時(shí)候就知道,編譯的是哪一條路經(jīng)了。對(duì)于支持#pragma message( “I am here”)的編譯器也可使用#pragma message預(yù)編譯指令。

  我怎么知道那段代碼在那個(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)程序代碼是很有幫助的。

  系統(tǒng)是從那個(gè)文件開(kāi)始運(yùn)行的?

  對(duì)于W i n d o w s C E 系統(tǒng),一般從W I N C E 4 2 0 \PLATFORM\YourPlatform\KERNEL\HAL 目錄的某個(gè)匯編文件中。對(duì)于Linux 系統(tǒng)版本不同會(huì)存在一定差異,以arm處理器為例,一般會(huì)在linux2.4.x\arch\arm\kernel的head-armv.S中。

  程序執(zhí)行到了那里?

  可以在程序中插入如下代碼來(lái)實(shí)現(xiàn)

  1. printf( “I am here %s, %d\n”,__FILE__, __LINE__); 

  代碼將打出printf語(yǔ)句所在的文件名和行號(hào)。

【編輯推薦】

  1. 嵌入式系統(tǒng)的開(kāi)發(fā)流程簡(jiǎn)要概括
  2. 嵌入式系統(tǒng)和嵌入式操作系統(tǒng)的概念
  3. 嵌入式系統(tǒng)軟件中的質(zhì)量保證
  4. 熱點(diǎn):如何平衡嵌入式系統(tǒng)中內(nèi)存的成本和效能
  5. 嵌入式系統(tǒng)開(kāi)發(fā)學(xué)習(xí)如何起步、如何深入?
責(zé)任編輯:韓亞珊 來(lái)源: 中國(guó)IT實(shí)驗(yàn)室
相關(guān)推薦

2010-08-10 15:09:55

Flex開(kāi)發(fā)

2010-04-06 17:26:26

Windows Pho

2011-01-06 15:11:09

嵌入式linux

2010-09-27 13:45:38

2010-03-04 09:54:24

Android開(kāi)發(fā)

2015-09-10 09:55:36

移動(dòng)web開(kāi)發(fā)問(wèn)題

2009-12-16 10:08:07

2009-06-17 14:33:08

java項(xiàng)目開(kāi)發(fā)

2012-08-02 11:47:38

綁好鞋帶 嵌入式系統(tǒng)開(kāi)

2009-06-17 16:10:37

Java網(wǎng)站優(yōu)勢(shì)

2011-07-06 16:00:28

ASP

2011-05-13 14:56:44

SybaseOracle

2016-12-27 09:24:13

Python系統(tǒng)開(kāi)發(fā)

2010-06-09 18:04:26

2009-11-23 20:39:21

ibmdw敏捷開(kāi)發(fā)

2015-09-25 10:02:52

BlocksDelegates開(kāi)發(fā)

2011-01-26 09:40:42

.NET開(kāi)發(fā)

2024-07-01 08:23:20

2009-06-10 15:36:25

ubuntu netb開(kāi)發(fā)過(guò)程

2011-01-14 13:13:23

嵌入式Linux開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)