找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7153|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

C語言嵌入式系統(tǒng)編程修煉之道 (共29頁pdf)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:5203 發(fā)表于 2018-11-15 16:35 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式

1.背景
不同于一般形式的軟件編程,嵌入式系統(tǒng)編程建立在特定的硬件平臺上,勢必要求其編程語言具備較強(qiáng)的硬件直接操作能力。無疑,匯編語言具備這樣的特質(zhì)。但是,歸因于匯編語言開發(fā)過程的復(fù)雜性,它并不是嵌入式系統(tǒng)開發(fā)的一般選擇。而與之相比,C 語言--一種"高級的低級"語言,則成為嵌入式系統(tǒng)開發(fā)的最佳選擇。筆者在嵌入式系統(tǒng)項目的開發(fā)過程中,一次又一次感受到 C 語言的精妙,沉醉于 C 語言給嵌入式開發(fā)帶來的便利。

圖 1 給出了本文的討論所基于的硬件平臺,實(shí)際上,這也是大多數(shù)嵌入式系統(tǒng)的硬件平臺。它包括兩部分:  

  (1) 以通用處理器為中心的協(xié)議處理模塊,用于網(wǎng)絡(luò)控制協(xié)議的處理;
  (2)  以數(shù)字信號處理器(DSP)為中心的信號處理模塊,用于調(diào)制、解調(diào)和數(shù)/模信號轉(zhuǎn)換。

  本文的討論主要圍繞以通用處理器為中心的協(xié)議處理模塊進(jìn)行, 因?yàn)樗嗟貭可娴骄唧w的 C 語言編程技巧。而 DSP 編程則重點(diǎn)關(guān)注具體的數(shù)字信號處理算法,主要涉及通信領(lǐng)域的知識,不是本文的討論重點(diǎn)。

  著眼于討論普遍的嵌入式系統(tǒng) C 編程技巧, 系統(tǒng)的協(xié)議處理模塊沒有選擇特別的 CPU,而是選擇了眾所周知的 CPU芯片--80186,每一位學(xué)習(xí)過《微機(jī)原理》的讀者都應(yīng)該對此芯片有一個基本的認(rèn)識,且對其指令集比較熟悉。80186 的字長是 16 位,可以尋址到的內(nèi)存空間為 1MB,只有實(shí)地址模式。C 語言編譯生成的指針為 32 位(雙字) ,高16 位為段地址,低 16 位為段內(nèi)編譯,一段最多 64KB。

程序,后者則是程序運(yùn)行時指令及數(shù)據(jù)的存放位置。系統(tǒng)所選擇的 FLASH 和 RAM 的位寬都為 16 位,與 CPU一致。

  實(shí)時鐘芯片可以為系統(tǒng)定時,給出當(dāng)前的年、月、日及具體時間(小時、分、秒及毫秒) ,可以設(shè)定其經(jīng)過一段時間即向 CPU提出中斷或設(shè)定報警時間到來時向 CPU提出中斷 (類似鬧鐘功能) 。

   NVRAM(非易失去性 RAM)具有掉電不丟失數(shù)據(jù)的特性,可以用于保存系統(tǒng)的設(shè)置信息,譬如網(wǎng)絡(luò)協(xié)議參數(shù)等。在系統(tǒng)掉電或重新啟動后,仍然可以讀取先前的設(shè)置信息。其位寬為 8 位,比 CPU字長小。文章特意選擇一個與 CPU字長不一致的存儲芯片,為后文中一節(jié)的討論創(chuàng)造條件。

   UART 則完成 CPU 并行數(shù)據(jù)傳輸與 RS-232 串行數(shù)據(jù)傳輸?shù)霓D(zhuǎn)換,它可以在接收到[1~MAX_BUFFER]字節(jié)后向 CPU提出中斷,MAX_BUFFER 為 UART 芯片存儲接收到字節(jié)的最大緩沖區(qū)。

  鍵盤控制器和顯示控制器則完成系統(tǒng)人機(jī)界面的控制。

  以上提供的是一個較完備的嵌入式系統(tǒng)硬件架構(gòu),實(shí)際的系統(tǒng)可能包含更少的外設(shè)。之所以選擇一個完備的系統(tǒng),是為了后文更全面的討論嵌入式系統(tǒng) C 語言編程技巧的方方面面,所有設(shè)備都會成為后文的分析目標(biāo)。

  嵌入式系統(tǒng)需要良好的軟件開發(fā)環(huán)境的支持,由于嵌入式系統(tǒng)的目標(biāo)機(jī)資源受限,不可能在其上建立龐大、復(fù)雜的開發(fā)環(huán)境,因而其開發(fā)環(huán)境和目標(biāo)運(yùn)行環(huán)境相互分離。因此,嵌入式應(yīng)用軟件的開發(fā)方式一般是,在宿主機(jī)(Host)上建立開發(fā)環(huán)境,進(jìn)行應(yīng)用程序編碼和交叉編譯,然后宿主機(jī)同目標(biāo)機(jī)(Target)建立連接,將應(yīng)用程序下載到目標(biāo)機(jī)上進(jìn)行交叉調(diào)試,經(jīng)過調(diào)試和優(yōu)化,最后將應(yīng)用程序固化到目標(biāo)機(jī)中實(shí)際運(yùn)行。  

   CAD-UL 是適用于 x86 處理器的嵌入式應(yīng)用軟件開發(fā)環(huán)境,它運(yùn)行在 Windows 操作系統(tǒng)之上,可生成 x86 處理器的目標(biāo)代碼并通過 PC 機(jī)的 COM口(RS-232串口)或以太網(wǎng)口下載到目標(biāo)機(jī)上運(yùn)行,如圖 2。其駐留于目標(biāo)機(jī) FLASH 存儲器中的 monitor 程序可以監(jiān)控宿主機(jī) Windows 調(diào)試平臺上的用戶調(diào)試指令, 獲取 CPU寄存器的值及目標(biāo)機(jī)存儲空間、 I/O空間的內(nèi)容。


完整的pdf格式文檔51黑下載地址(共29頁):
C語言嵌入式系統(tǒng)編程教程.pdf (611.26 KB, 下載次數(shù): 236)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:482222 發(fā)表于 2019-2-28 16:45 | 只看該作者
好資料
回復(fù)

使用道具 舉報

板凳
ID:245224 發(fā)表于 2021-4-18 19:48 | 只看該作者
好評!
回復(fù)

使用道具 舉報

地板
ID:112374 發(fā)表于 2021-6-12 17:02 | 只看該作者
非常好的資料,多謝樓主的無私分享精神!
回復(fù)

使用道具 舉報

5#
ID:940604 發(fā)表于 2021-6-19 19:43 | 只看該作者
非常好,值得收藏
回復(fù)

使用道具 舉報

6#
ID:935260 發(fā)表于 2021-8-12 15:22 | 只看該作者
非常好的資料,多謝樓主的無私分享精神
回復(fù)

使用道具 舉報

7#
ID:112374 發(fā)表于 2021-10-12 21:29 | 只看該作者
非常好的學(xué)習(xí)資料,謝謝分享!
回復(fù)

使用道具 舉報

8#
ID:296704 發(fā)表于 2022-6-9 10:35 | 只看該作者
很棒,里面的位處理等說法很值得借鑒和學(xué)習(xí),感謝分享
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表