1. 程式人生 > >對嵌入式底層開發學習的一點看法

對嵌入式底層開發學習的一點看法

不知不覺中,學習嵌入式已經有差不多兩年的時間了,從大二的時候開始學習 DSP ,現到開始接觸 ARM9 ,有很大的感觸,所以寫出來,讓大家進行指正,首先說明,這些只是個人學習中的看法,如果你,我親愛的讀者,我的看法與你的不同,那麼請把你的看法分享出來。讓本人也進行一下學習。

      在老師的要求下。把 51 微控制器著為入門嵌入式的接觸 MCU ,現在想起來,老師做得很對,因為他當時要求我在兩個月的時間內把 51 開發闆闆上的介面驅動都寫出來,但是,不要求我把 51 搞太長的時間。只要知道怎麼進行控制外設,但是有一點。 UART , IIC , SPI 等常見的驅動程式設計必須瞭解其真正的原理。這為後來的學習打下了強有力的基礎。

     在大二的暑假,由於專案的關係,開始接觸 TMS320F2812 DSP ,老師沒有說什麼,給我一本 2812 晶片手冊,再給一個模擬器,一個開發板,就讓我在一天之內完成一個 LED 點陣進行顯示漢字。還好,看了一天的晶片手冊,在晚上的時候把 GPIO 看了一下,加上在 51 的時候也寫過數碼管的實驗,所以,不一會兒就寫出來。之後的所有的介面驅動都是一邊看手冊一邊寫驅動。由於 DSP 更偏重於演算法。對 LCD 的支援不太好,所以不得不又得了解一下 ARM 。

     在學習 ARM 的過程中,我個人認為最重要幾章應該是前 10 章,加上後面的中斷控制這一章,這幾章才是 ARM 體系結構的重點,看一下開發板的起動程式,特別對 MMU

 的重定向不是那麼簡單,小弟不才,到現在還不敢自己動手寫起啟動程式。後面的介面驅動程式與其它的 MCU 的差不多,就只是暫存器的配置不同罷了。

     眼下 Linux 與 WCE 這兩個作業系統在嵌入比較熱,所以有很多初學者都只去進行學習基於作業系統的驅動程式開發,其實,以其說那叫驅動程式開發,還不如是呼叫驅動程式模組功能函式開發。因為作業系統中已經對很多的介面驅動進行了模組化,所以,只需進行相應的呼叫與註冊,管理就可以實現對硬體的控制,可是,各位有沒有想過,你真正的操作硬體還是別人給你遮蔽了硬體。

     所以,個人認為,如果想真正的瞭解驅動程式的實現過程。還是基於裸機的驅動程式更加好,因為這樣可以讓你真正的知道某個介面是怎麼進行驅動的,這樣對個人的能力的修行應該更加為重要,因為學嘛,總得自己的能力提高。不要搞到最後沒有作業系統就不知道怎麼寫一個驅動程式。這意味著什麼呢。在論壇上經常見到尋找 Linux

 核心 API 的問題,如果真正的動手開發過裸機的驅動程式,直接到核心裡的相應位置去看 .H ,或者 .C 檔案,這樣不就知道作業系統提供給我們的介面函數了嘛。還能更加清楚各個引數的約束條件。

     當然,如果是產品化的驅動程式,還是基於操作系的驅動更好,因為作業系統模組化的驅動程式都是經過嚴格的測試的,經典的程式,這樣對產品的開發週期與產品的穩定性可以得到保證。

     不管什麼方向,牛人都是從基礎一步一步的走出來的,因為他們對每一個介面驅動都瞭解,所以,他們寫出來的基於作業系統的驅動程式,那是一件藝術品,是經過效率考慮後的成品。不真正瞭解介面驅動實現的人寫出來的基於作業系統的驅動程式,那是程式碼的堆砌,形似而神非。對於嵌入式這一個特殊行業,需要的是神真而非形似,這就是底層驅動程式的特別之處。

     所以,對於初學者來說,特別向我這樣的初學者,在實驗過程中最好先寫基於裸機的驅動程式,再去看看別人寫的,對照一下,這樣對個人的能力提高有很大的幫助。當裸機驅動程式達到令自己滿意後,再去寫基於作業系統的驅動程式,這樣你會對這一介面驅動有一個質的提高而非好像懂了,其實什麼也不懂。

        其實 ,uC/OS-II 是一個最不錯的學習系統,因為其只提供我們核心的排程,所以,要想真正的瞭解核心排程,多工的實現過程等, uC/OS-II 是一個不錯的選擇,雖然 ARM9 以上的 CPU 跑 uC/OS-II 有點浪費資源,但是對學習來說,這是一個很好的作業系統,因為每一個介面的驅動程式都得自己動手一個位元組一個位元組的寫入,同時訊號量的控制,多工的建立,同步非同步機制,死鎖等問題都得自己去思考。

相關推薦

嵌入式底層開發學習一點看法

不知不覺中,學習嵌入式已經有差不多兩年的時間了,從大二的時候開始學習 DSP ,現到開始接觸 ARM9 ,有很大的感觸,所以寫出來,讓大家進行指正,首先說明,這些只是個人學習中的看法,如果你,我親愛的讀者,我的看法與你的不同,那麼請把你的看法分享出來。讓本人也進行一下學習。

嵌入式底層開發學習一點看法

不知不覺中,學習嵌入式已經有差不多兩年的時間了,從大二的時候開始學習 DSP ,現到開始接觸 ARM9 ,有很大的感觸,所以寫出來,讓大家進行指正,首先說明,這些只是個人學習中的看法,如果你,我親愛的讀者,我的看法與你的不同,那麼請把你的看法分享出來。讓本人也進行一下學習。

讀研or工作?計算機類專業學習看法

先來介紹一下自己  中南大學(不知名985雙一流A類)大二計算機專業本科生,才學程式設計1年多一點。大一的時候搞了大半年ACM,現在慢慢轉向專案開發,同時在學習機器學習、大資料等內容,混進了學校的圖靈班。 下面進入正題   以後是讀研還是直接工作?這個問題可能困擾了很多讀計算機類的本科生。大

【原創】答《讀研or工作?計算機類專業學習看法》---如果再來一次,我不會讀研!

題記:謹以此文貢獻給所有本科非211,985,且立志在程式設計屆有所作為的人! 引言 這幾天,在園子裡看到一篇文章《讀研or工作?對計算機專業學習對看法》。坦白說,博主初看之下,就覺得略顯稚嫩,讀研和工作兩邊說好話。對此,博主有一些自己的見解,因此想談談。 觀點 我先說一下,自己的觀點。因為我自己是做java

嵌入式驅動開發學習路線

ARM+LINUX路線,主攻嵌入式Linux作業系統及其上應用軟體開發目標: (1)掌握主流嵌入式微處理器的結構與原理(初步定為arm9) (2)必須掌握一個嵌入式作業系統 (初步定為uclinux或linux,版本待定) (3)必須熟悉嵌入式軟體開發流程並至少做一個嵌入式軟

學習嵌入式linux開發有什麽好的意見嗎?

淩陽教育 嵌入式linux 現在,嵌入式行業的發展是比較讓人困惑的,為什麽會有此一說呢?因為現在很的嵌入式學習愛好者,大家對於學習嵌入式Linux(嵌入式Linux培訓 嵌入式Linux教程 )應用開發和學習系統開發有或者說是驅動開發,這三個方面 ?淩陽教育的老師經過調查得出了一些比較豐富的答案

嵌入式底層軟體開發學習系列之三開發與就業方向

本節首先按開發的層次劃分大類, 對於每一層將分析其主要工作內容。 本節的第2部分將從產品的領域來介紹嵌入式的熱門應用領域。 1. 開發層次 (1) 體系結構層(CPU層)   對於普通的嵌入式產品開發公司, 該層的主要工作目的是選擇哪種CPU(Arm, mips, 等)

Sreekrishnan Venkateswaran 大師嵌入式學習看法(摘抄)

《精通Linux裝置驅動程式開發》                 作者 Sreekrishnan Venkateswaran 對學習嵌入式的建議 Linux嵌入式開發流程一覽表 (

嵌入式開發學習(1)<ARM體系結構>

特點 如何 現在 訪問 任務 物聯網 嵌入 專用 arm1 SoC : 在cpu 裏內嵌了很多外設,現在所說的cpu 實際上都是SoC。 32位cpu指的是數據總線是32位的。 32位的地址總線尋址範圍是4G。2的32次方。 CISC complex instruction

嵌入式開發學習(2)<S5PV210啟動過程詳解>

nan ios eight img 啟動方式 margin 需要 外部 啟動 基本概念: 內存:   SRAM 靜態內存 特點:容量小、價格高,優點:不需要軟件初始化,上電就能用。   DRAM 動態內存 特點:容量大、價格低,缺點:上電不能用,需要軟件初始化。  

嵌入式開發學習(5)<S5PV210開發板刷系統那點破事兒之二>

串口驅動 超級 mage idt android4 securecrt linux命令 log 這一 刷系統:利用刷機工具,向開發板中燒錄預先編譯好的鏡像。使之在開發板上跑起來。   S5PV210廠家默認安裝的是android4.0.4。   1、安裝usb轉串口驅動(如

學習嵌入式4412開發板-手把手配套視頻_2000人群組在線交流

錄制 海量 2.0 分享 研發工程師 host pan 控制 dmi 物聯網學習開發板_迅為4412開發板_視頻教程從入門到精通 共享海量學習資料、學不會才是奇跡一. 視頻教程:免費視頻教程(迅為一線研發工程師錄制-不斷更新) 第一部分 迅為電子開發板入門視頻 (數量:5

Overwatch的一點看法

pos 這也 裏的 現在 比賽 不容易 這樣的 容易 上線 說一下我對ow玩家流失的看法 主要的原因是,天梯陣容設置不合理 現在天梯主流陣容是222,兩c兩t兩奶,共有兩個c位四個輔助位 而這四個輔助位的遊戲體驗經常不是很好,如果兩個c位打不出輸出,這把遊戲輸了被氣的就是輔

學習嵌入式技術開發難得不難,看你自己怎麽規劃?三個月幫助你成功,0基礎可學

嵌入式 就業規劃學IT技術,找好工作,就來信盈達。信盈達中國IT培訓實力機構,辦學10年,已經培養IT技術人才20萬。 信盈達IT培訓現可“先學習,後付款“,名額有限,趕快咨詢微信/電話:1/7/7/2/7/6/5/9/3/0/3,如果你想學技術改變現狀,這是一個機會。深圳信盈達嵌入式技術實訓學院已有10年

python學習看法

暑假 簡單 一點 爬蟲 文件 實踐 網絡 同學 設計 我對python的認識:1、人工智能主要應用的計算機語言就是python,它將在未來大放異彩。2、python語言較為簡潔,易於編寫操作。3、python有很多庫,方便做很多東西。 我是一個理工科的同學,上學期學過c語言

嵌入式開發學習(持續記錄)

http make all 安裝 sta none oid tool 助手 (1)安裝工具(在Ubuntu下面的工具)   1.安裝交叉編譯工具鏈 https://www.veryarm.com/arm-none-linux-gnueabi-gcc 在這個裏面可以下載一個

安卓開發學習筆記(二):Android Stuidio無法引用Intent來創建象,出現cannot resolve xxx

編譯器 port stact 消失 click first 紅色 xxx font 筆者在進行安卓開發時,發現自己的代碼語法完全沒有問題。尤其是創建intent對象的時候,語法完全是正確的,但是Android Stuidio卻顯示報錯,Intent類顯示為紅色,如圖所示:

linux驅動開發學習--中斷和核心定時器的學習筆記

一 中斷理解                             &nb

嵌入式ARM開發學習方法步驟

  嵌入式開發就是指在嵌入式作業系統下進行開發,一般常用的系統有linux,android。 平臺:Cortex-A9開發板   嵌入式技術學習如何入手,從何學起呢, 以下內容簡單介紹嵌入式開發的學習步驟及如何成為一位合格的嵌入式工程師,   一、首先要掌握

學習deque/defaultdict/orderedict的一點總結

關於deque的使用 collections.deque([list[, max_length]]) # 不限定長度,可隨意新增沒有上限>>> from collections import deque>>> q = deque()>>> q.appe