2023年代码输出总结

来源:公众号【鱼鹰谈单片机】

作者:鱼鹰Osprey

家好,我是鱼鹰。

从过年到现在,基本没什么输出,小说、微信、头条视频刷一刷,时间就悄咪咪地过去了。还好最近在准备第二期的培训课程,有外部因素推动着自己,终于可以逼着自己强行进入工作状态了。

本人自制力还是比较差的,也是比较懒的那种,但是又有比较多想法,因此开了这个课,除了赚点辛苦钱,更重要的是能把自己想法实现出来。

鱼鹰不想让满怀希望报名的道友失望,因此即使开始时说过要满10人才开班,但还是选择坚持完成这一期,后面就不搞了(后面可能会开始录制一些系统课程,单独售卖,并且这些视频会对第一期和第二期学员免费提供,以感谢他们对鱼鹰的支持)。

目前的学习工程,比较完善的功能有:

1、ucos ii 操作系统(非常适合初学者学习的RTOS源码)

2、串口日志打印功能,实现了串口+dma 高效发送和接收功能

3、底层框架,实现类似Linux 设备树的功能,使设备 IO 信息和驱动代码分离。

早期的 Linux 驱动代码还是使用代码方式,后面采用设备树,直接把硬件相关的信息由一个文件提供,然后由相关代码自动解析这些硬件信息,完成了解耦,这样就能减少一大堆的硬件信息代码。

而在嵌入式开发中,如果多项目同时开展,硬件 PCB 可能是不一样的,但是驱动基本一致,比如 spi、uart、串口等驱动代码,只是涉及到的外设不一样,因此我们可以把这部分信息提取出来,和我们的项目绑定即可。

这样一来,即使我们的驱动代码需要优化或者修复 BUG,也不需要重复修复多个项目分支的代码,简化了开发时间。

而鱼鹰要做的是,不停地优化或增加驱动代码即可,并不会影响项目的使用(当项目需要新的驱动时,只要更新一下 submodule 的信息即可)。

比如同时进行 A 、B、C 项目,都会使用到串口驱动,那么这些项目只要把鱼鹰实现的驱动仓库地址加入到自己的项目中作为子模块,并且提供对应的设备信息即可完成对硬件的操作(当然,目前鱼鹰的代码只支持103,后面会支持更多芯片)。

这就是鱼鹰费尽心思想出来的框架,只是为了减少开发时间,同时能不断积累工作中遇到的优秀代码,让后面的项目开发更加简单(说白了,还是不怎么相信别人的代码,除非是那种历经考验的,如 fatfs、lwip 等)。

4、完成 tinyUSB 的移植工作,并且实现了 7 个 cdc 设备和 lwip 类似 usb 网卡的功能。

5、CmBacktrace 功能,方便在离线情况下输出hardfault 信息,更快定位问题

万事开头难,正因为有第一期课程的敦促,才有这些输出,否则随着时间的流逝,估计慢慢都会遗忘。

但是也有很多待完成的功能,比如:

0、日志功能优化

目前只有串口打印,但是很多时候并不能满足要求,特别是产品外发到客户现场时更是如此,因此能让日志循环保存、甚至让日志远程输出到Linux服务器保存起来,显得尤为重要。因此在整个工程功能完成差不多时,鱼鹰会着手优化这部分功能。

1、i2c 、spi 、can 功能增加

这些驱动代码在工作中基本是绕不开(除非是纯业务开发,但是驱动写的不好,业务开发也会心累的),因此如果有这些经过时间验证过的驱动在手,那么做新项目时就会很舒服了。这些其实也不难,只是目前在不断的让驱动代码兼容性更好,因此需要晚些时间完成,到时候后会用 eeprom、oled、nrf2401、w25q32(flash)做测试。

2、sd (emmc)、eth 

这些外设比较少的可能会遇到,不过鱼鹰也会在后期有时间加上,因为有些联网或需要存储大量数据的情况下确实有可能用上

3、dap (hid+winusb)+ cdc + 无线 + 拖曳烧录 + 联网 + can 

这是鱼鹰的终极项目工程,这个完成了,应该就会做一款工具出来卖了,硬件成本控制在 100 以内,只要前期工作做好了,完成这些功能还是比较简单的,只是我要求这个工程可以适用于多种平台、如 ST、ESP32、CH系列,之前花了比较多时间整理 usb 相关的时间,等 i2 、spi 这些初级驱动完成后,就可以着手这个功能了。很久之前完成了 nrf2401 的无线传输功能,但好像数据传输有些问题,后面准备把这些代码再整合回来。刚好移植了 tinyUSB 代码,可以很好地兼容 hid + winusb + cdc,而前段时间也完成了对 dap 协议的 IO 速度优化,因此问题不大。

4、UI 

准备使用一些开源的 UI 框架,比如 emWin、TouchGFX等,不过这部分工作应该只会进行简单的移植,不会过多深入,毕竟鱼鹰不是真正做产品,没必要搞个界面,如果确实需要,使用网页形式或许会更方便。

5、SystemView

在复杂的 RTOS 环境中,可以很好的分析各个任务的运行情况,所以这个功能也会优先增加。

图片来源于网络

以上这些,应该基本攘括了嵌入式开发的驱动技能,很多项目基本都是依靠这些运行,剩下的就是业务相关了。所以鱼鹰今年的计划就是完成这些工作,如果能顺利完成(如果不懒的话),那么明年应该就能彻底往Linux发展了,目前的工作很大部分也是和 Linux 相关,所以工作之内学 Linux,工作之外完善工程,还可以。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 3
关注 151
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧