Linux 中的驱动开发的初学者体会
Linux 中的驅動開發的初學者體會
很多年前,心里就存下這樣一個愿望。就是把Linux 的驅動開發搞清楚。
但是一開始上上這樣的開發難度天大了,對著一堆的寄存器發愁。
于是就從簡單的STM8,PIC16FXXX ,51 等板子入手開發一些單片機例程。一路上上做做小家電,而后從開發STM32下的開發。如今終于可以大闊步的學習Linux的驅動開發了。
其實Linux的驅動開發并沒有想象的那么難,就是要耐心,耐心,再耐心。
51 或者 STM32 等。單片機開發很難接觸到
更高層次的系統方面的知識,單片機開發由于工業上成本控制的原因,基本能跑裸機就裸機,上系統的,一般都是項目比較龐大,在通信領域的模組一般都會用到RTOS。
比如 UCOS、FreeRTOS 等等,這些
操作系統都是一個 kernel,如果需要網絡、文件系統、GUI 等這些就需要開發者自行移植。而
移植又是非常痛苦的一件事情,而且移植完成以后的穩定性也無法保證。即使移植成功以后后
續的開發工作也比較繁瑣,因為不同的組件其 API 操作函數都不同。
但是FREERTOS 等操作系統相比Liunx 開銷少多了。多以對資源不豐富的硬件設備,還是需要用到FREERTOS的。
Linux 就是這樣一個系統:具有統一的標
準;提供完善的多任務管理、存儲管理、設備管理、文件管理和網絡等。
強烈建議在學習嵌入式Linux 驅動開發之前一定要學一下 STM32 這種 Cortex-M 內核的 MCU,因為 STM32 這樣的MCU 其內部資源基本和可以運行 Linux 的 CPU 差不多,如果會 STM32 的話上手 Linux 驅動開發就會容易很多。
STM32 學習者順利的轉入 Linux 驅動
開發的學習路徑:
1、選取合適的 CPU
一款外設和 STM32H7 這樣的 MCU 差不多的
CPU 就非常適合 Linux 入門,三星的 2440 就非常合適,但是 2440 早已停產了,學了以后工作上肯定又用不到了,又得學習其他的 CPU,有點浪費時間。作者花了不少時間終于找到了一款合適的 CPU,那就是 NXP 的 I.MX6UL!
2、開發環境講解
是嵌入式 Linux 驅動開發需要的主機是 Linux 平臺的,也就是你必須先在自己的電腦上安裝
Linux 系統,Linux 系統發行版有 Ubuntu、CentOS、Fdeora、Debian 等等,選擇一種一款如 Ubuntu操作系統就可。
3、合理的裸機例程
Linux 驅動開發非常龐大、繁瑣。要想進行 Linux 驅動開發,必須要先移植Uboot、然后移植 Linux 系統和根文件系統到你的開發平臺上。而 Uboot 又是一個超大的裸機綜合例程,因此如果你沒有學習過裸機例程那么 Uboot 移植將會有點困難,尤其是當要修改 Uboot代碼的時候。
4、Uboot、Linux 和根文件系統移植
學習完裸機例程以后就是 Linux 驅動開發了,但是在進行 Linux 驅動開發之前要先在使用
的開發板平臺上移植好 Uboot,Linux 和根文件系統。這是 Linux 驅動開發的第一個攔路虎。
5、嵌入式 Linux 驅動開發
當我們把 Uboot,Linux 和根文件系統都在開發板上移植好了以后就可以開始 Linux 驅動
開發了。Linux 驅動有三大類:字符設備驅動、塊設備驅動和網絡設備驅動。
總之,學習是一件痛苦地事情,尤其是找不到學習路徑地時候,這時候有三點個人覺得很重要:
1、做好學習的規劃
2、構建一個學習環境,軟件開發環境+硬件(開發板)+ 學習資料。
3、做好階段性的過程總結。
總結
以上是生活随笔為你收集整理的Linux 中的驱动开发的初学者体会的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cortex-A 的内核寄存器组
- 下一篇: rca接口_音频线怎么区别?几种音频接口