linux驱动开发怎么学(linux驱动开发学习)
linux驅動開發和單片機驅動的區別?
.lonux 驅動開發和單片機驅動開發的區別塞以下幾點?ARM-Linux應用開發和單片機lonux:
這里先要做一個說明,對于ARM的應用開發主要有兩種方式:一種是直接在ARM芯片上進行應用開發,不采用操作系統,也稱為裸機編程,這種開發方式主要應用于一些低端的ARM芯片上,其開發過程非常類似單片機,這里不多敘述。
還有一種是在ARM芯片上運行操作系統,對于硬件的操作需要編寫相應的驅動程序,應用開發則是基于操作系統的,這種方式的嵌入式應用開發與單片機開發差異較大。ARM-Linux應用開發和單片機的開發主要有以下幾點不同:
(1)應用開發環境的硬件設備不同
單片機:開發板,仿真器(調試器),USB線;
ARM-Linux:開發板,網線,串口線,SD卡;
對于ARM-Linux開發,通常是沒有硬件的調試器的,尤其是在應用開發的過程中,很少使用硬件的調試器,程序的調試主要是通過串口進行調試的;但是需要說明的是,對于ARM芯片也是有硬件仿真器的,但通常用于裸機開發。(2)程序下載方式不同
單片機:仿真器(調試器)下載,或者是串口下載;
ARM-Linux:串口下載、tftp網絡下載、或者直接讀寫SD、MMC卡等存儲設備,實現程序下載;
這個與開發環境的硬件設備是有直接關系的,由于沒有硬件仿真器,故ARM-Linux開發時通常不采用仿真器下載;這樣看似不方便,其實給ARM-Linux的應用開發提供了更多的下載方式。(3)芯片的硬件資源不同
單片機:通常是一個完整的計算機系統,包含片內RAM,片內FLASH,以及UART、I2C、AD、DA等各種外設;ARM:通常只有CPU,需要外部電路提供RAM以供ARM正常運行,外部電路提供FLASH、SD卡等存儲系統映像,并通過外部電路實現各種外設功能。由于ARM芯片的處理能力很強,通過外部電路可以實現各種復雜的功能,其功能遠遠強于單片機。
(4)固件的存儲位置不同
單片機:通常具備片內flash存儲器,固件程序通常存儲在該區域,若固件較大則需要通過外部電路設計外部flash用于存儲固件。ARM-Linux: 由于其沒有片內的flash, 并且需要運行操作系統,整個系統映像通常較大,故ARM-Linux開發的操作系統映像和應用通常存儲在外部的MMC、SD卡上,或者采用SATA設備等。
(5)啟動方式不同
單片機:其結構簡單,內部集成flash, 通常是芯片廠商在程序上電時加入固定的跳轉指令,直接跳轉到程序入口(通常在flash上);開發的應用程序通過編譯器編譯,采用專用下載工具直接下載到相應的地址空間;所以系統上電后直接運行到相應的程序入口,實現系統的啟動。ARM-Linux:由于采用ARM芯片,執行效率高,功能強大,外設相對豐富,是功能強大的計算機系統,并且需要運行操作系統,所以其啟動方式和單片機有較大的差別,但是和家用計算機的啟動方式基本相同。其啟動一般包括BIOS,bootloader,內核啟動,應用啟動等階段;
(a)啟動BIOS: BIOS是設備廠家(芯片或者是電路板廠家)設置的相應啟動信息,在設備上電后,其將讀取相應硬件設備信息,進行硬件設備的初始化工作,然后跳轉到bootloader所在位置(該位置是一個固定的位置,由BIOS設置)。(根據個人理解,BIOS的啟動和單片機啟動類似,需要采用相應的硬件調試器進行固件的寫入,存儲在一定的flash 空間,設備上電啟動后讀取flash空間的指令,從而啟動BIOS程序。)
(b)啟動bootloader: 該部分已經屬于嵌入式Linux軟件開發的部分,可以通過代碼修改定制相應的bootloader程序,bootloader的下載通常是采用直接讀寫SD卡等方式。即編寫定制相應的bootloader,編譯生成bootloader映象文件后,利用工具(專用或通用)下載到SD卡的MBR區域(通常是存儲區的第一個扇區)。此時需要在BIOS中設置,或者通過電路板的硬件電路設置,選擇bootloader的加載位置;若BIOS中設置從SD卡啟動,則BIOS初始化結束后,將跳轉到SD卡的位置去執行bootloader,從而實現bootloader的啟動。
Bootloader主要作用是初始化必要的硬件設備,創建內核需要的一些信息并將這些信息通過相關機制傳遞給內核,從而將系統的軟硬件環境帶到一個合適的狀態,最終調用操作系統內核,真正起到引導和加載內核的作用。(c)啟動內核 :bootloader啟動完成初始化等相關工作之后,將調用內核啟動程序。這就進入了實際的操作系統相關內容的啟動了,包括相應的硬件配置,任務管理,資源管理等內核程序的啟動。
(d)啟動應用:在操作系統內核啟動之后,就可以開始啟動需要的應用,去完成真正的業務操作了。
我想學嵌入式LINUX驅動開發,很糾結到底選ARM9?
對于初學者來說,C語言最關鍵,接著是微機原理,數據結構,再有是arm體系結構,推薦還是armV4,雖然說很老,但網上資料多,學習方便,當把V4搞熟,在學習其他的很容易。
不推薦M系列,那些是工控用的比較多,操做系統簡單,不利于初學者學習
當然如果零基礎,最好在Linux下,對于初學者來說還是比較難,但Linux可以直接在電腦上仿真,因為arm好大一部分用的Linux操作系統,兩者內核一樣,利于初學者
總結
以上是生活随笔為你收集整理的linux驱动开发怎么学(linux驱动开发学习)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常州房地产备案查询(常州房地产备案)
- 下一篇: 搜狗拼音输入法linux4.0(搜狗拼音