关于嵌入式开发中上下游分工的思考
每一款芯片的软件开发,其实涉及了从芯片厂商到产品厂商的协调,这其中有明确的分工。
对于芯片厂商,设计/生产出来一块芯片以后,需要建立对这款芯片的支持,首先是基于该芯片设计一块开发板,然后基于该开发板提供各个功能的例程、支持库。
以STM32为例,ST公司基于cortex-m架构设计并生产出某一型号的STM32芯片(如STM32F103C8T6)以后,它会基于该芯片设计一个开发板,实现开发板上的功能并向外发布。为了帮助客户快速开发产品,ST公司负责该芯片的启动代码实现,并且对芯片的寄存器地址及操作进行封装,以支持包的形式提供给客户,这样客户就不需要花费太多的精力去查看芯片手册,而将主要精力聚焦在产品的业务功能实现和算法实现上面。
嵌入式开发者在学习的时候,对所有的过程肯定是都要了解的,然后根据自己的职业规划以及实际工作的岗位来深入学习其中某一方面。
我在初学的时候,觉得直接操作寄存器才是真的嵌入式开发,这种想法是错误的,也会阻碍我们的学习进度。实际情况应该是初学时都要了解一下,特别是芯片上电以后的工作流程是怎么样的,这个一定要搞清楚,然后从这个流程中理解各个部分是有分工的。如果未来是想进芯片原厂做开发,那么应该注重芯片启动代码、ARM体系架构、ARM汇编方面的学习,理解芯片的架构是怎么样的,各种通用寄存器的作用等等。学习时可以归纳一些通用的东西,并能够深入某一型号的芯片进行学习,做到举一反三,窥一斑而见全貌。如果未来是想做产品,那么芯片上电后的工作流程也是需要了解的,然后主要学习芯片的应用开发。


浙公网安备 33010602011771号