作嵌入式硬件开发,要以某个控制器为核心,引出其它外围器件。主流上能够按功能强弱分类为 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驱动的抽象接口也能够适当标准化驱动的开发。操作系统