Linux開發基本概念
1、微控制器屬於微控制器(MCU),高階的arm(ARM9、ARM11、A8、A9)屬於微處理器(MPU)。兩者的區別在於MPU多了兩個部件快取記憶體(CACHE)、記憶體管理單元(MMU)。
2、裸機程式就是直接對CPU進行程式設計,Linux程式設計是基於Linux作業系統進行的程式設計。
3、Exynos4412啟動流程:iROM→BL1→BL2→uboot→zImage(linux 核心)→掛接檔案系統。
0地址就是iROM,iROM在4412內部,是晶片自帶的。4412可以從TF卡啟動,也可以從EMMC啟動,還可以從USB啟動,這些都是4412的作用。
iROM執行以後,會到外部找程式,找到以後,要拷貝8K的程式到內部RAM,這8K的程式就是BL1。
BL1執行以後載入BL2,然後把uboot.bin載入到記憶體去執行。
Linux啟動以後,作業系統會把記憶體管理單元(MMU)開啟。uboot和作業系統的區別:uboot是最大的裸機程式,但是沒有多工執行的機制,不能實現任務排程等作業系統應用的功能。
Linux必須要掛接一個檔案系統。Linux啟動到最後,等所有驅動初始化完成以後,最後一步才掛接檔案系統。Android、QT、Ubuntu都是檔案系統,底層都是Linux核心,可以把Android看作是Linux上跑的一個應用程式。
4、Linux驅動框架:
(1)Linux把所有裝置都看成檔案;
(2)做驅動就是做led_open()、led_read()、led_write()等函式;
(3)裝置檔案(/dev)包含主裝置號和次裝置號資訊;
(4)裝置檔案就是上層應用和底層驅動的橋樑;
(5)驅動做好以後,要通過register_chrdev()函式註冊到系統,這樣自己寫的驅動函式和裝置就關聯起來了。
(6)上層應用通過呼叫系統函式open()、read()等,再通過裝置檔案,間解找到led_open()、led_read()等並執行。
5、建議Linux入門學習步驟:
(1)理解uboot、kernel(核心)、檔案系統的概念;
(2)學會燒寫系統;
(3)學會編譯系統,把上述檔案編譯生成出來;
(4)學習Linux應用程式的編寫和除錯;
(5)學習最簡單的字元類驅動的編寫和除錯;
(6)kernel原始碼。
6、uboot、kernel、檔案系統在PC機Ubuntu系統上交叉編譯。編譯後生成uboot映象、kernel映象和檔案系統映象。
kernel和uboot通過交叉編譯器arm-2009q3
android系統原始碼通過jdk和gcc
7、映象如何下載到開發板上執行:
Windows上使用otg介面,使用fastboot燒寫;
Ubuntu上使用tf卡燒寫。都要用到串列埠控制檯。