浅谈嵌入式系统开发的方法、技巧
时间:2021-11-03 14:36:11
手机看文章
扫描二维码
随时随地手机看文章
[导读]星标「嵌入式大杂烩」,一起进步!来源:技术让梦想更伟大作者:李肖遥开头的话嵌入式开发是一个比较苦、容易背锅、可能仍然需要996而且拿钱较少,但也有些许乐趣的活,我一直称之为跳坑里了。如果你在里面深耕,那终究会成为大佬,软硬结合的高手;如果你刚入坑,我可能劝你转,但是可能你自己还有...
开头的话
嵌入式开发是一个比较苦、容易背锅、可能仍然需要996而且拿钱较少,但也有些许乐趣的活,我一直称之为跳坑里了。如果你在里面深耕,那终究会成为大佬,软硬结合的高手;如果你刚入坑,我可能劝你转,但是可能你自己还有点舍不得。
从裸机思维开始
嵌入式系统是一个面向应用高度裁减的专用计算机系统,嵌入式软硬件也可以这样定义
-
软件:人们借助某种语言,“尝试”固化下来的,自己的思维
-
硬件:业已固化下来的逻辑,可以稳定的提供确定的服务和功能
注重方法
思维的设计有很多辅助工具,如大家熟知的流程图、UML图、数据流图等等。然而,具体代码往往并不是一个好的辅助工具。
-
v1:“实时性” = “越快越好”
-
Lv2:“实时性” = RTOS,认为选一个好的RTOS,或者会用RTOS就可以保证实时性;
-
Lv3:“实时性” = 任务拆分;
-
Lv4:开始思考实时性模型的特点;
-
Lv5:到了这个阶段,不仅脑洞大开、战斗力惊人
注重技巧
为大家庖丁解牛、由浅入深,就要不惧怕优化,不要把编译器的行为看作是玄学,深入底层,才能把编译器、内存、寄存器、语言本质理解的透彻。
XXXXX_IO_REG_BASE_ADDRESS,则对应的寄存器可以定义为如下的形式:
#defineXXXXX_IO_REG ( *((volatile uint32_t*)XXXX_IO_REG_BASE_ADDRESS) )
而应用中很多针对外设寄存器的连续操作都可以通过优化来大幅度提高效率,在保证程序逻辑正确的情况下,应该尽可能减少volatile的使用,或者是限制其使用的范围,那么你知道为什么吗?
这就是编译器、语言本身、变量的一些特别之处,搞定这些底层原理知识,必定让我们打开语言的大门。
最后的话
嵌入式开发所涉及到的思维训练、C语言以及编译器相关的关键知识、裸机环境下的开发者模型等等,可以帮助我们深入理解底层原理知识,以不变应万变,最终对知识点实现完整和全面的覆盖。