硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1392|回复: 5
收起左侧

[其它] 如何在单片机中开发高质高效代码?

[复制链接]

19

主题

72

回帖

129

积分

初级会员

积分
129
发表于 2021-11-17 14:53:08 | 显示全部楼层 |阅读模式

1. 基础数据结构必须掌握: 链表,队列等;

2. 常用设计模式需要掌握:状态模式,命令模式,观察者模式,发布订阅模式等等

3. 了解几款常用的RTOS(Freertos,threadx等等)

4. 架构的设计:事件驱动模型(发布订阅);

5. 单片机中定时器:用一个硬件定时器实现一组软件定时器(支持单次触发和周期触发);

6. 注释规范 (Doxygen)
    格式化工具(AStyle)


7. 单元测试基本上是项目中必不可少的,有许多现成的C单元测试框架 (cmocka,unity等等),支持mock;
    cmake:编写cmakelists.txt去生成makefile文件,包含所有的测试文件 (一般源码占3成,测试代码占7成)

    测试覆盖率:使用gcovr/生成html和xml报告;
    Jenkins: 拉取gitlab项目,执行单元测试,发布单元测试报告和doxygen等等


8. 集成测试和系统测试:使用python实现自动化测试;可以选择树莓派或者一些其他的平台;

9. 存储保护:固件可以使用读保护,eeprom或者外置flash可以使用认证,签名,hash,压缩(miniLZO)等方式保证安全性;

10. 看门狗的问题:裸机直接使用系统独立看门狗;RTOS的话,如果需要监控任务,可以使用任务看门狗,任务每隔一段时间kick一下;

11. 尽量使用一些标准协议,而非自定义协议,比如常用的modbus,canopen等等;

12. 软件升级:
一般产家有内置bootloader,这是一种方式,毕竟内置的bootloader是经过市场验证过。
单bank存储器升级:bootloader+app+backup方式,可能这种比较常用;
双bank存储器升级:使用swap bank的特性做升级,不需要bootloader,只有app;




对于软件开发来说,实现一个软件可能不难,但是想将一个软件做稳定做好,还是需要花很多功夫的。

想进阶为中级甚至是高级开发工程师,还是需要很多的修炼,一些技术和工具可能需要我们掌握:
工具类(简单说几个):Vmware Exsi(可以装多个系统比如ubuntu),Jira/bugzilla, Gitlab(git),Jenkins, Artifactory, msys2,等等等等,

其他:c,python,shell,cmake,json,html/css/js/ajax....










回复

使用道具 举报

5

主题

536

回帖

551

积分

金牌会员

积分
551
发表于 2021-11-17 15:55:14 | 显示全部楼层
不错。。。。。顶。
回复

使用道具 举报

84

主题

407

回帖

679

积分

金牌会员

积分
679
QQ
发表于 2021-11-17 17:51:43 | 显示全部楼层
多看硬汉代码。
武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

6

主题

646

回帖

664

积分

金牌会员

积分
664
QQ
发表于 2021-11-17 23:31:57 来自手机 | 显示全部楼层
我感觉我就是一个新人,甚至新人都算不上,大佬太牛逼了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107776
QQ
发表于 2021-11-18 09:09:50 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

13

主题

196

回帖

235

积分

高级会员

积分
235
发表于 2021-11-18 10:09:07 | 显示全部楼层
我们卡在了你说的7,8 这里。测试这里有什么经验可以分享吗?感觉很不好做,而且我们是C和C++的混合编程。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-13 12:21 , Processed in 0.219871 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表