硬件開發之mcu

架構

作嵌入式硬件開發,要以某個控制器爲核心,引出其它外圍器件。主流上能夠按功能強弱分類爲 51系列8位mcu——cortex Mx系列32位mcu——cortex A系列 SoC,其中51是x86指令,cortex是arm指令,二者都是哈佛結構。Intel最近也推出了使用Linux的物聯網開發芯片,如夸克、伽利略等嵌入式芯片或開發板,及其它移動處理器,但在嵌入式領域,Intel市場要遠落後於arm。架構

51 8位系列是Intel幾十年前的產品,也是mcu的祖先,因爲其市場佔有率及簡單架構、適合教學等因素,51至今還沒退出市場。因爲51系列結構簡單,歷史較早,能夠受權,如今可以生產51的廠家不少,存在必定的兼容問題。經典的51可使用匯編和c語言指針操做寄存器開發,通常沒有官方用c語言封裝的庫,固然若是本身把51的外設都摸索清了,也能夠造成本身用c語言封裝的庫,只是因爲如今的嵌入式開發須要的功能愈來愈多,性能要求更高,51的架構及開發方式受到很大限制。函數

隨着cortex Mx系列的32位mcu出現,不少嵌入式控制領域採用了cortex M方案,因爲cortex M通常是32位,且外設不少,此時再使用相似51使用c語言指針直接操做寄存器開發方式效率很低,故arm公司和mcu開發商通常會給出用c語言結構體和函數對寄存器封裝的標準開發庫,這裏以stm32爲例,其它廠商產品基本同樣。stm32早期到如今一直支持標準庫開發方式,這必定程度上提升了開發效率,可是標準庫開發的方式本質上仍然是操做寄存器,須要開發者瞭解mcu的寄存器參數才能使用。目前stm32又推出了stm32Cube開發方式,進一步進行了抽象,簡化了開發方式。固然除了官方開發庫,還可使用rtos方式開發。性能

可是,面向嵌入式控制的芯片因爲在硬件設計階段比較靈活,多數應用場景所需功能較少,通常不須要上操做系統,這就致使了mcu的開發很大一部分工做是基於特定硬件架構進行的枯燥驅動開發。而官方的標準庫可以提供的抽象有限,上層開發仍須要和底層打不少交道。即便使用操做系統,也須要先進行對應的驅動移植。spa

基於cortex A系列的高性能控制器通常用做面向消費領域的SoC,若是不是用於控制領域,則底層驅動通常參考廠家提供的Linux驅動,須要本身改動的底層驅動較少,而大部分工做是作上層的應用開發,就不會那麼枯燥。固然,若是將SoC用於控制領域,也是須要基於Linux的驅動模型和具體硬件打不少交道,如傳感器信息獲取,只不過上層應用通常只和Linux內核提供的抽象接口打交道,Linux驅動的抽象接口也能夠適當標準化驅動的開發。操作系統

選型

相關文章
相關標籤/搜索