作為乙個新人,怎樣學習嵌入式Linux? 韋東山)

2021-06-20 15:00:19 字數 1542 閱讀 1575

三、驅動:

驅動包含兩部分:硬體本身的操作、驅動程式的框架。

又是硬體,還是要看得懂原理圖、讀得懂晶元手冊,多練吧。

說到驅動框架,有一些書介紹一下。ldd3,即,老外寫的那本,裡面介紹了不少概念,值得一讀。但是,它的作用

也就限於介紹概念了。我基本上是入門之前用它來熟悉一下概念,入門後就扔掉了。

驅動方面比較全的介紹,應該是宋寶華的了,老實說我只看過目錄,有不少人說好,這裡推薦一下。

要想深入了解某一塊,絕對是超5星級推薦。你別指望把它讀完,1800多頁,上下兩冊呢。我是某一塊不清楚

時,就去翻一下它。任何一部分,這書都可以講上2、3百頁,非常詳細。並且是以某個目標來帶你分析核心原始碼。它以linux 2.4為例,

但是原理相通,同樣適用於其它版本的linux。

把你手上的開發板所涉及的硬體,都去嘗試寫乙個驅動吧。有問題就先"痛苦地思考",思考的過程中你會把很多不相關的知識

串聯起來,最終貫通。

四、根檔案系統:

大家有沒有想過這2個問題:

1. 對於linux做出來的產品,有些用作監控、有些做手機、有些做平板。那麼核心啟動後,掛載根檔案系統後,應該啟動哪乙個應用程式呢?

答:核心不知道也不管應該啟動哪乙個使用者程式。它只啟動init這乙個應用程式,它對應/sbin/init。

顯然,這個應用程式就要讀取配置檔案,根據配置檔案去啟動使用者程式(監控、手冊介面、平板介面等等)

這個問題提示我們,檔案系統的內容是有一些約定的,比如要有/sbin/init,要有配置檔案

2. 你寫的hello,world程式,有沒有想過裡面用到的printf是誰實現的?

答:這個函式不是你實現的,是庫函式實現的。它執行時,得找到庫。

這個問題提示我們,檔案系統裡還要有庫。

簡單的自問自答到這裡,要想深入了解,可以看一下busybox的init.c,就可以知道init程序做的事情了。

當然,也可以看< linux>裡構建根檔案系統那章。

說一下我的學習經歷吧。

1. 我在學校時讀的是物理電子專業,其實課程裡沒有教怎麼設計電路,只是教了些電子電路方面的知識。pcb的設計

是在實驗室裡自學的,只設計過2層板,現在忘記得差不多了。但是保留了看原理圖、看晶元手冊的能力。

2. 選修了軟體學位,對軟體設計挺感興趣,但是也只是學了c語言、資料庫而已。憑著興趣做了不少競賽題。沒能力去

參加競賽,但是把c語言練得很紮實。

3. 在實驗室、在第1家公司,就是設計些簡單的pci卡,寫一下windows的驅動程式

4. 在第2家公司,用51微控制器做車載**,開始走上純軟體的道路。

5. 開始感到微控制器的不足,辭職半年閉門學linux,從red hat怎麼操作開始。步驟就是先看,

再自己寫裸板程式操作硬體,接著到分析u-boot。同時看,對linux框架有所了解。

在寫裸板時,建議各位加強對中斷的理解,核心就是用中斷來完成各種功能的。

6. 分析完u-boot,就開始進行簡單的驅動程式設計了,這時候,能力還很弱。

7. 開始去中興上班,工作2年,編寫各類驅動、解決各類問題(驅動問題、幫助定位應用問題),能力得到煅煉。

作為乙個新人,怎樣學習嵌入式Linux? 韋東山)

這篇文章是引用韋老師的部分關於新人怎麼學習嵌入式linux的經驗,引用如下 1.電腦一開機,那些介面是誰顯示的?是bios,它做什麼?一些自檢,然後從硬碟上讀入windows,並啟動它。答 這個函式不是你實現的,是庫函式實現的。它執行時,得找到庫。這個問題提示我們,檔案系統裡還要有庫。簡單的自問自答...

開乙個嵌入式學習的坑

2.3版本的stm32f10x dfp與5.15版本的mdk並不相容,開始新建專案會有message函式沒辦法正常讀取的問題。有前輩說將keil.stm32f1xx dfp.pdsc中的message函式注釋掉會解決,親測無效,有可能是別的原因。在解除安裝舊版本的mdk時,原本的韌體包不會被解除安裝...

乙個嵌入式的成長

記得那是 2006 年的第一場雪,比 2005 年來的稍晚了些。在 2006 年初,我們公司開始涉及嵌入式領域,其實就是開始涉及基於 arm的嵌入式式開發。原來一直搞微控制器開發,上大學時幫助老師調點 pic的微控制器程式這樣的經歷使我積累了點關於硬體的經驗。當時國內的嵌入式式開發還幹幹起步,基本上...