導航:首頁 > 文檔加密 > arm裸機開發實戰pdf

arm裸機開發實戰pdf

發布時間:2023-05-31 15:38:33

① 如何學習ARM

學習必備條件:
1、一塊開發板——現在淘寶上有很多開發板,建議初學者不要去購買那些ARM9體系結構的,因為作為初學者來說ARM9體系的東西是很復雜的,買塊ARM7的就可以了(先入門,然後再提高);
2、學習必備書籍
《Pointer on C》中文名字叫《C和指針》(美)里科|譯者:徐波 前提你的了解C指針吧(這本書時非常經典的書籍,完全可以看中文版的,作者翻譯的非常到位)
《嵌入式實時操作系統μCOS-II(第二版)》--邵貝貝翻譯的(不能不承認邵貝貝是一個非常好的翻譯者)
《μC/OS-Ⅱ標准教程》--楊宗德
對於英文不好的朋友可以購買《ARM體系結構與編程》--杜春蕾(該書其實還是有很多翻譯錯誤的,大家在看的時候要注意一下,但是不可否認的是這本書到目前為止算得上是我見過最好的講解關於ARM體系結構的書籍了)
對於英文過關的兄弟姐妹可以直接看《ARM+Architecture+Reference+Manual(2nd+Edition)》
3、有條件的兄弟姐妹可以選購一個模擬器 JLINK V8全功能版(這個的感謝中國的優秀工程師,是他們把原價1999多的JLINK變成了幾十元錢的東西
4、開發環境--MDK350或者IARARM
如果要熟悉這些開發環境,就需要好好讀一些這些開發環境的手冊資料,不好意思,這個就只有英文的了。以上4個條件具備下來,可能也不會超過500元錢。下面來講講我的學習經歷: 我剛開始學習的時候,自己走了不少彎路,這里就省略不說了。
第一步:在開發板上跑跑簡單程序
因為你有開發板,所以你就先在網上找一下對應開發板上的ARM晶元的datasheet,你都不先搞懂晶元的手冊,又談何讓自己實現很多功能呢。
熟讀數據手冊後,就盡可能的在開發板上實現晶元對應的每個功能,像GPIO實驗,UART通訊,I2C,ADC,DAC,PWM,RTC,SPI等等。自己寫自己的程序,然後在開發板上好好實踐一下。
當每個功能模塊都實現以後,建議你讓你的開發板實驗一下多個功能復合使用,比如用UART列印出ADC的值什麼的。
第二步:學習uCOS
鑒於你已經購買了《嵌入式實時操作系統μCOS-II(第二版)》,除開以下三個文件:
1、OS_CPU_C.c
2、OS_CPU.H,
3、OS_CPU_A.asm(這個是MDK環境下的匯編文件)或OS_CPU_A.a(這個是IAR開發環境下的匯編)
這三個文件的處理機制暫時可以不用先了解怎麼做的,怎麼移植的,以後再說
第一次讀這本書時,搞清楚什麼是任務,什麼是前後台,為什麼要在系統中加入嵌入式操作系統。
第二次讀這本書時,詳細了解他的TCB(Task Control Block)和ECB(Event Control Block)的數據結構,搞清楚整個uCOS的實現機制(這里不要先就去看uCOS的移植,這樣只會讓你雲里霧里的)
第三次讀這本書是,詳細了解信號量,互斥信號量、消息隊列、郵箱和時間標志組
鑒於你又購買了《μC/OS-Ⅱ標准教程》,你 可以想在VC++ 6.0開發環境下實現對信號量,互斥信號量、消息隊列、郵箱和事件標志組的上機實驗代碼。
如果還是不能了解uCOS怎麼工作的,建議你多看幾遍(我可是足足看了6、7遍了,書都翻得脫頁了。汗說明我很笨,希望各位看官都比我聰明,呵呵)
第三步:建立對uCOS的初步認識
在網上下載對應你的開發板ARM晶元移植好了文件OS_CPU_C.c,OS_CPU.H,OS_CPU_A.asm(當然有的開發板已經提供了這樣的基礎實驗)
在你的開發板上跑跑uCOS,建立起自己對於uCOS在ARM7開發板上的認識。
在你所購買的ARM7開發板上編寫一個自己跑uCOS得任務(這里先不要去搞中斷,初學者對於uCOS下的中斷程序設計根本就搞不清楚)
第四步:熟悉ARM體系結構
因為是基於ARM7的移植,建議英文不好的去看看這本書《ARM體系結構與編程》(雖然這本書的作者在翻譯時有很多操作,但是還是建議初學者去購買來好好 看看),對於英文好的直接在網上下載《ARM+Architecture+Reference+Manual(2nd+Edition)》看就可以了
在看這個《ARM體系結構與編程》或《ARM+Architecture+Reference+Manual(2nd+Edition)》時,務必注意多看幾次,了解以下幾個方面的知識:
1、ARM模式下的指令集
2、Thumd模式下的指令集
3、異常模式及進入異常時ARM如何處理
4、一定能熟悉ARM中的匯編指令
5、熟悉CPSR,R0-R7,R8-R14,R15及在各個模式下,這些寄存器的映射。
熟悉以後,再來自己做uCOS的移植了。
第五步:uCOS移植
當然在自己編寫代碼做移植uCOS之前,有必要看看別人的移植代碼。
其實對於uCOS的移植,我們只需要編寫關鍵的三個文件,文件如下:
1、OS_CPU_C.c(堆棧初始化操作OSTaskStkInit函數)
2、OS_CPU.H:完成在該晶元下的數據定義,比如什麼unsigned char 之類的,注意一下OS_STK和OS_CPU_SR的定義,定義下關中斷和開中斷的方式,有三個只能選擇1個,ARM晶元一般是定義為第三種方式
3、OS_CPU_A.asm(這個是MDK環境下的匯編文件)或OS_CPU_A.a(這個是IAR開發環境下的匯編),這個文件的內容就多了,要做以下幾個函數的重寫:
1、OSStartHighRdy函數
2、任務級的任務切換函數OSCtxSw,
3、中斷級的任務切換OSIntCtxSw,其實只要寫好了OSCtxSw,OSIntCtxSw自然就一下就完了(的時候記者要把保存當前任務的寄存器去掉就可以了。
第六步:測試自己的uCOS移植代碼
第七步:在自己寫的uCOS移植代碼中跑跑任務。
轉自Tony嵌入式論壇,地址: http://www.cevx.com/bbs/thread-26073-1-1.html

② 嵌入式開發要學哪些課程

嵌入式開發的必學課程:C語言,C++,操作系統,計算機組成原理,linux編程,51單片機,arm,硬體編程語言,模擬電路&數字電路。
嵌入式培訓分幾個階段的學習,從基礎到實戰的練習,一點一點學習和掌握這門技術。學習的課程內容包含:嵌入式高級C語言、嵌入式設備及GUI開發、嵌入式Linux高級程序設計、Linux高級網路程序設計、資料庫開發、面向對象高級語言程序設計、物聯網、CotexA53 Linux平台驅動開發及真實的企業實戰項目。
想要學好嵌入式技術,嵌入式軟體開發工程師,從事領域很寬泛,特別是工業控制、消費電子與通信設備三大領域,因為就業面很大,所以人才需求也大。現在智能硬體也比較火,這方面的發展也會大大拓展嵌入式軟體開發工程師的就業機會。再者,嵌入式硬體工程師,需求沒有嵌入式軟體開發工程師大,但因為做硬體門檻會高些,所以這個方向如果做的比較專業,薪資絕對不會低。

③ ARM處理器裸機開發實戰:機制而非策略的目錄

第1篇 基礎篇
第1章 ARM處理器簡介
1.1 處理器工作模式
1.2 寄存器介紹
1.2.1 堆棧指針寄存器R13和鏈接寄存器R14
1.2.2 程序計數器R15
1.2.3 程序狀態寄存器
1.3 工作狀態
1.4 數據長度
1.5 存儲系統
1.5.1 ARM地址空間
1.5.2 ARM存儲器的格式
1.6 天嵌TQ2440開發板硬體資源概述
1.7 本章小結
1.8 擴展閱讀之CISC處理器和RISC處理器簡介
第2章 ADS集成開發環境及程序下載具體流程
2.1 ADS 1.2集成開發環境簡介
2.1.1 CodeWarrior for ARM
2.1.2 AXD調試器的啟動
2.2 工程的編輯與修改
2.2.1 建立一個新工程
2.2.2 建立一個源文件
2.2.3 添加源文件到工程
2.2.4 編譯與鏈接工程
2.2.5 打開已有的工程
2.3 工程的調試
2.3.1 裝載映像文件
2.3.2 調試工具條的使用
2.4 H-JTAG的安裝與調試
2.4.1 H-JTAG的安裝
2.4.2 H-JTAG的設置
2.5 使用U-Boot下載裸機程序
2.6 本章小結
第3章 ARM指令集及匯編語言基礎
3.1 ARM指令集介紹
3.1.1 ARM指令集
3.1.2 ARM定址方式
3.1.3 ARM偽操作和偽指令介紹
3.2 ARM匯編基礎知識
3.3 ARM匯編程序的基本結構
3.3.1 編寫匯編程序基本的格式規范
3.3.2 程序入口和程序結束
3.3.3 段
3.3.4 標號(標志符)
3.3.5 外部標號
3.3.6 文件包含
3.4 用AXD調試ARM匯編程序實驗
3.4.1 建立工程並添加源文件
3.4.2 工程的設置
3.4.3 編譯源文件
3.4.4 啟動AXD調試器
3.4.5 手把手調試匯編程序
3.5 常用匯編語言程序子模塊實例分析
3.5.1 特殊功能寄存器的訪問
3.5.2 內存數據復制
3.5.3 批量載入與存儲
3.5.4 堆棧操作
3.5.5 實現查表功能
3.6 本章小結
3.7 擴展閱讀之內存和I/O地址、前序定址和後序定址
第4章 ARM C語言基礎
4.1 數據類型基礎
4.1.1 用typedef和#define定義類型
4.1.2 用signed和unsigned修飾數據類型
4.1.3 volatile和強制類型轉換
4.2 深入理解位運算符和位運算
4.2.1 按位與運算符(&)
4.2.2 按位或運算符(|)
4.2.3 按位取反運算符(~)
4.2.4 左移和右移運算符(<>)
4.2.5 位運算應用實例分析
4.3 控制結構
4.3.1 選擇結構
4.3.2 循環結構
4.4 防止文件重復包含技巧
4.5 ARM編譯器對C語言的擴展
4.5.1 __irq聲明中斷處理函數
4.5.2 __swi聲明軟中斷
4.5.3 __asm內嵌匯編
4.5.4 __inline定義內聯函數
4.6 本章小結
4.7 擴展閱讀之高速緩存基礎知識
第5章 ARM匯編語言和C語言混合編程基礎
5.1 一個混合編程實例的實現
5.2 APCS規則概述
5.2.1 寄存器的使用
5.2.2 參數傳遞
5.2.3 函數的返回值
5.3 本章小結
第6章 GPIO編程實驗
6.1 GPIO概述
6.1.1 GPIO引腳介紹
6.1.2 GPIO特性分析
6.1.3 GPIO相關寄存器
6.1.4 GPIO應用實例
6.2 基礎實驗:第一個裸機程序——流水燈
6.2.1 硬體電路分析
6.2.2 建立工程並添加啟動代碼
6.2.3 添加源文件
6.2.4 編輯源文件
6.2.5 工程設置、編譯、鏈接
6.2.6 下載程序到開發板運行
6.2.7 由點亮LED引發的思考
6.2.8 再議點亮LED實驗
6.2.9 將點亮一個LED擴展到流水燈
6.3 GPIO擴展實驗
6.3.1 按鍵實驗
6.3.2 蜂鳴器實驗
6.4 本章小結
6.5 擴展閱讀之模塊化編程、NAND FLASH和 NOR FLASH概述
第2篇 提高篇
第7章 啟動代碼分析
7.1 從開發板硬體講起
7.1.1 TQ2440核心板晶元功能介紹
7.1.2 從NAND FLASH和NOR FLASH啟動流程分析
7.2 啟動代碼詳解
7.3 啟動代碼主要功能模塊分析
7.3.1 建立中斷向量表
7.3.2 初始化各個模式的堆棧
7.3.3 初始化系統硬體
7.3.4 初始化應用程序的執行環境並跳轉到主程序執行
7.3.5 跳轉到C語言主程序執行
7.4 本章小結
7.5 本章附錄——完整版啟動代碼
第8章 系統時鍾和定時器
8.1 S3C2440時鍾系統概述
8.1.1 系統時鍾初始化
8.1.2 FCLK、HCLK和PCLK與Fin的關系
8.2 定時器原理與應用
8.2.1 定時器原理
8.2.2 定時器相關的寄存器
8.2.3 定時器基礎實驗代碼詳解及測試
8.2.4 定時器擴展實驗之PWM實驗
8.3 本章小結
第9章 存儲器控制器
9.1 S3C2440地址空間
9.2 操作實例:SDRAM實例分析
9.2.1 SDRAM工作原理
9.2.2 SDRAM介面電路設計
9.2.3 SDRAM初始化過程詳解
9.2.4 回顧啟動代碼中的SDRAM初始化
9.3 本章小結
第10章 通用非同步收發器(UART)
10.1 UART概述
10.2 S3C2440處理器UART工作原理
10.3 引腳描述及相關寄存器
10.4 UART基礎實驗
10.4.1 硬體電路分析
10.4.2 程序設計及代碼詳解
10.4.3 實例測試
10.4.4 UART基礎實驗分析
10.5 UART高級實驗——可變參數函數在UART中的應用
10.5.1 程序設計及代碼詳解
10.5.2 實例測試
10.6 本章小結
第11章 中斷控制系統
11.1 S3C2440中斷系統概述
11.1.1 深入理解CPU的工作模式
11.1.2 中斷控制器
11.2 外部中斷實驗
11.2.1 硬體電路分析
11.2.2 程序分析
11.2.3 中斷執行流程詳解
11.2.4 中斷處理流程引發的思考
11.2.5 實例測試
11.2.6 為什麼進入不了中斷
11.3 定時器中斷實驗
11.3.1 程序代碼分析
11.3.2 實例測試
11.4 串口中斷原理及實驗
11.4.1 如何正確使用中斷
11.4.2 程序代碼分析
11.4.3 實例測試
11.5 ARM中斷之高級應用:軟中斷原理及實驗
11.5.1 程序代碼分析
11.5.2 實例測試
11.5.3 軟中斷所用到的啟動代碼
11.6 本章小結
第12章 NAND FLASH原理與實驗
12.1 FLASH概述
12.1.1 NAND FLASH的基本結構
12.1.2 NAND FLASH介面電路
12.1.3 如何訪問NAND FLASH
12.1.4 S3C2440 NAND FLASH控制器
12.1.5 使用宏代替簡單的函數
12.2 NAND FLASH基礎實驗
12.2.1 NAND FLASH基本操作函數分析
12.2.2 NAND FLASH基礎實驗之頁讀寫
12.2.3 頁讀寫實例測試
12.2.4 NAND FLASH基礎實驗之讀ID
12.2.5 讀ID實例測試
12.3 NAND FLASH高級實驗
12.3.1 隨機讀、寫實驗代碼詳解
12.3.2 隨機讀、寫實例測試
12.4 回顧啟動代碼中的NAND FLASH讀取函數
12.5 本章小結
第13章 LCD控制器原理與實驗
13.1 LCD和LCD控制器工作原理
13.1.1 LCD概述
13.1.2 LCD介面信號
13.1.3 LCD顯示原理
13.1.4 LCD操作時序詳解
13.1.5 S3C2440 LCD控制器
13.1.6 LCD 控制寄存器初始化
13.2 LCD基礎實驗
13.2.1 硬體電路分析
13.2.2 程序代碼分析
13.2.3 實例測試
13.3 LCD基礎實驗之單像素顯示
13.3.1 程序代碼分析
13.3.2 實例測試
13.4 LCD基礎實驗之圖片顯示
13.4.1 如何將圖片轉換為C語言數組
13.4.2 程序代碼分析
13.4.3 實例測試
13.5 LCD高級實驗之漢字顯示
13.5.1 兩種常見的漢字編碼
13.5.2 LCD漢字顯示原理
13.5.3 程序代碼分析
13.5.4 實例測試
13.5.5 LCD顯示高級技巧——可變參函數Lcd_Printf的實現
13.5.6 可變參函數Lcd_Printf測試
13.5.7 漢字區位碼的思考
13.5.8 實例測試
13.6 本章小結
第14章 ADC原理與實驗
14.1 ADC原理
14.1.1 ADC相關寄存器
14.1.2 ADC初始化
14.2 ADC實驗
14.2.1 ADC實驗代碼詳解
14.2.2 ADC實驗測試
14.3 本章小結
第3篇 典型項目分析
第15章 綜合實戰
15.1 實戰1:數據採集系統實現
15.1.1 功能描述
15.1.2 模塊劃分
15.1.3 代碼實現
15.1.4 實例測試
15.1.5 實驗總結
15.2 實戰2:串口控制實驗
15.2.1 功能描述
15.2.2 模塊劃分
15.2.3 代碼實現
15.2.4 實例測試
15.2.5 實驗總結
15.3 實戰3:製作電子相冊
15.3.1 功能描述
15.3.2 模塊劃分
15.3.3 代碼實現
15.3.4 實例測試
15.3.5 實驗總結
第4篇 理論知識擴展
第16章 嵌入式系統電源設計和Linux內核開發基礎
16.1 直流穩壓電源分類
16.1.1 普通線性穩壓器工作原理
16.1.2 低壓差線性穩壓器工作原理
16.1.3 電容式開關電源的工作原理
16.1.4 電感式開關電源的工作原理
16.1.5 嵌入式系統設計中的電源晶元選型
16.1.6 設計實例分析
16.2 Linux內核基礎實驗
16.2.1 實驗一:修改調度演算法實驗
16.2.2 實驗二:添加內核模塊實驗
參考文獻

閱讀全文

與arm裸機開發實戰pdf相關的資料

熱點內容
加密思維幣 瀏覽:688
魅族訪客文件夾 瀏覽:50
添加的文件夾怎麼找 瀏覽:615
程序員涉黃 瀏覽:698
maven編譯resources下的js 瀏覽:519
ubuntu文件移動命令 瀏覽:227
安卓i怎麼查找蘋果手機 瀏覽:949
雲伺服器宕機概率 瀏覽:229
在線買葯用什麼app知乎 瀏覽:813
ubuntu解壓xz文件 瀏覽:674
宏傑加密時電腦關機 瀏覽:388
自己寫單片機編譯器 瀏覽:598
單片機按鍵閃爍 瀏覽:380
為什麼icloud總是顯連接伺服器失敗 瀏覽:888
如何設置域控伺服器 瀏覽:739
想在上海租房子什麼app好 瀏覽:186
編譯程序各部分是必不可少的嗎 瀏覽:887
編程不超過十行 瀏覽:765
數電編譯器的作用 瀏覽:339
時間演算法與現在有什麼區別 瀏覽:164