ARM-Linux開發與單片機開發有何不同?

ARM-Linux程序的開發,主要分為三類:應用程序開發、驅動程序開發、系統內核開發,不同種類的軟件開發,有其不同的特點。

ARM-Linux應用開發和單片機開發的不同

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,內核啟動,應用啟動等階段。

ARM-Linux開發與單片機開發有何不同?


分享到:


相關文章: