嵌入式开发分享
简述
最近学习了ARM裸机,对嵌入式开发有了更深入的理解。嵌入式系统开发的目标是实现符合需求的专用计算机系统,如:消费电子产品,工业控制等等,多领域的专用的系统,其核心是微处理器。而操作微处理器的基本方法是汇编指令,汇编指令是硬件可执行的,不过现实一点更多一点的是C语言操作寄存器,本质读写寄存器,就是指针赋值。
什么是寄存器?
寄存器就芯片厂商设计生产芯片时,给外设地址起与外设功能对应的名字,目的,便于芯片开发人员开发自己的产品和系统。假如:0X1234 5678 对应GPIOA_IO1,也对应SPI1_TXD等,这就涉及到了很多问题。如,IO引脚复用,IO引脚配置。
过程原理
这些依据的原则就是根据电路图原理设定自己需要的功能,不同位的组合可以得到对应的不同的功能,ARM对应就是32位,如:0X1234 5678 = 0X5; // 101,对应bit[2:0]。但是不能这么些,需要用C语言把地址映射为指针,#define OBJ *((unsigned int *) 0x1234 5678)
OBJ = 0X5;
本质是操作寄存器,操作寄存器就是写0 or 写1,
// 向 0x 1234 5678的第6位 bit[5]写1
OBJ |= (1 << 6 ) ;
// 写0
OBJ &= ~(1 << 6 );
就是读写寄存器。也可以确定好要写如的值直接写入。
总结
最底层的本质是读写寄存器,前提是要有开发外设的基本思路和框架,这些是需要学习的,读写寄存器开发又叫裸机开发,往上抽象一层就得到了官方给的HAL库。一层层向上走就到了操作系统。你写的程序最后都转换成数字0 1电路门的转换,嵌入式开发常用的还是C语言,简单高效,只有少部分的汇编语言,我觉得作为嵌入式系统工程师,最底层的汇编语言,开发用的C语言,应用层的C++,都要掌握,本着对产品系统负责去学习知识。学过裸机开发后,感觉开发的思想和思路框架都是一样的,区别就是实现方式不一样了,裸机就是你从寄存器开始编程实现所需功能,在往上就是借助厂家提供的硬件外设抽象库直接调用开发,显然,使用厂家的效率更高。工程讲究的是,最简单,性能效率最好的方法就是好方法。不过对于学习来讲,要了解深入一些。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)