1. 程式人生 > >Linux開發基本概念

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卡燒寫。都要用到串列埠控制檯。