1>linux 0.11 這本書 ---學這個主要是懂核心結構和心臟,他專門實現作業系統,不太注重效率
2.6為了實現效率出現了好多新的資料結構和概念,直接看不行,抓不著頭腦
2>微控制器 微控制器好多外圍介面,比如iic usb sdio spi uart都是直接操作控制器的
學習這個更直接,更明白硬體,比如學習usb usb協議+usb主從硬體+3**
linux 驅動把微控制器程式封裝在乙個架構裡面,直接看跟本不行,要有微控制器基礎
3>學習2.6核心 《linux核心設計與實現》為主,《深入理解linux核心》為附,
前一本講的不深能入門,後一本講的深,直接深入不進去
---這兩本書 快取管理,檔案系統,塊層,我都是大體的看下,沒有太深入
intertupt,workqueue,tasklet,waitq,kthread,notification_chain,kfifo,klist,
這些核心元件是核心**組成的根本,會用不行,要搞明白原理,比如 waitq
他由派生出來的 訊號量,互斥體,完成變數,這些都會修改cpu的執行順序,
核心**或驅動**跟應用層不太一樣,他不是按 main函式順序呼叫走下去的,
他是在程序間排程來排程去,好多你看到的都是**片段,跟本不能按函式順序
呼叫跟蹤**
------帶著這個問題可以研究下,為什麼中斷上下文中不能用延時函式
cnblog裡面有人寫《linux核心設計與實現》讀書筆記,相當的好,
4>開發板子,開始學習 移植uboot 核心 檔案系統,先搞明白arm的硬體組成,和板子的組成
這個主要用到編譯的知識,就是makefile+shell
要求搞明白那個 zimage生成過程和組成結構,uboot和核心啟動過程,
《深入理解linux網路技術內幕》有一章《元件初始化的核心基礎架構》很好
要求明白檔案系統的掛載過程,各種檔案系統的區別,多看核心啟動日誌
5>看驅動程式,/linux/drivers/。。。工作中用著那個研究那個去吧
----不了解上面的基本元件和排程原理,根本不知道程式怎麼順序走--------
如果基本元件搞明白了,5就很容易懂了,,,
看看你少那塊知識,不是你看不懂,而是你還沒有學習相關的知道
直接上來就驅動,,,頭大,
1 2並行學
2 3 並行學
5 就是把
例如 usb協議+操作usb控制器**+用核心基本元件裝到了乙個架構裡面為了提高效率
我當時是先學習的 1 3 4 5 ,2 沒有學,不過現在知道這個2的重要性了,好多時候,
我都看stm32的書,stm32資料寫的太全了
上面是我學習核心之路,高人不笑啊,哈哈,,有了上面的基礎,真正的學習才剛剛開始
這是一位兄群裡兄弟的學習之路,拿出來分享下
Linux核心學習
交叉工具鏈 核心相關知識 linux系統的構成 使用者空間 核心空間 思考 為什麼劃分為兩個層次?目的其實是為保護作業系統,防止應用程式的異常導致作業系統崩潰。核心空間與使用者空間是程式執行的兩種不同狀態,通過系統呼叫和硬體中斷能夠完成從使用者空間到核心空間的轉移。那麼linux的核心由哪些構成呢?...
linux 核心學習
linux核心獲取 官網 linux作業系統的核心是模組化,可以使用lsmod命令檢視核心模組,下面展示已載入系統的模組 root 172.16.0.55 vendor composer test lsmod module size used by nfnetlink queue 8111 0 nf...
linux 核心學習(2)
linux核心原始碼樹大體結構 由於linux的原 持續在變化,所以不可能給出太詳細的內容,只能指出乙個特殊的驅動大概會出現在什麼地方。makefile 這是整個的原始碼樹的最頂層的makefile。它定義了很多的有用的變數和規則,如預設的gcc編譯標誌。arch 所有的特殊的體系結構的 都在這個目...