硬件开发之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的开发很大一部分工作是基于特定硬件架构进行的枯燥驱动开发。而官方的标准库能够提供的抽象有限,上层开发仍需要和底层打很多交道。即使使用操作系统,也需要先进行对应的驱动移植。

基于cortex A系列的高性能控制器一般用作面向消费领域的SoC,如果不是用于控制领域,则底层驱动一般参考厂家提供的Linux驱动,需要自己改动的底层驱动较少,而大部分工作是做上层的应用开发,就不会那么枯燥。当然,如果将SoC用于控制领域,也是需要基于Linux的驱动模型和具体硬件打很多交道,如传感器信息获取,只不过上层应用一般只和Linux内核提供的抽象接口打交道,Linux驱动的抽象接口也可以适当标准化驱动的开发。

选型

 

转载于:https://my.oschina.net/assange/blog/691257

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值