嵌入式秋招必备项目(一):简单介绍
前言如果你在学习完RTOS相关的知识后,为进一步的应用感到苦恼?或者简历上空空如也,感觉没项目可写?那你可算来对的,在这个仓库里的项目是我的简历上的一段项目经历这段项目经历在秋招的时候还是很靠谱的(经历过华为、中兴、小米、大疆、小鹏等企业的拷打,而且对项目的反馈都还不错),我会在接下来对这个项目里的内容进行拆分讲解,不仅讲实现,而且把部分面试问题插入其中(印象比较模糊了QAQ),还会讲一下其它可能会问到的问题。希望对以后的你招聘有帮助(当然简历怎么写就不会告诉你啦 .)。项目地址:https://gitee.com/Lumin_ChaLearn/BOOTCSDN博客地址:https://blog.csdn.net/qq_45731845/article/details/160327453项目架构APP文件夹(RTOS环境) QT上位机这是一个基于ov2640的网络图传摄像头,用到的技术栈主要有:LWIP QT RTOS 自定义通信协议(既然都用TCP还要额外定义一个通信协议,是不是在多次一举?好吧确实是,不过学习嘛就得重复造轮子)QT上位机实现一个TCP链接和图传的显示(AI太好用了你们知道吗?我完全没学过QT),代码是前年的AI写的,emmm现在来看还是有点丑陋,几乎没有参考意义LWIP基于以太网接口的LWIP协议栈移植,底层就是参考正点原子给的例程就行自定义通信协议在这个项目里只是这个协议的一个实例化,更加完整的实现可以参考 /主机程序/protocol文件夹下内容,内是一个在linux下的实例代码。这个自定义的通信协议可以实现如下功能:校验(可选):包括包数校验,CRC校验等超时重传机制应答机制全双工通信自定义通信帧格式,可实现自动分包发送ov2640驱动基本就是正点原子的例程,不过在这里做了进一步的封装,因为原来的例程里各种extern感觉不太好看时间同步文件夹 和 TimeSync文件夹(RTOS环境)这俩好像是一个工程?年代有点久远了。具体来说是基于udp的multi-broadcast机制和stm32的MAC控制器的硬件时间戳实现的微秒级时间同步,具体可以直接看之前的博客:https://blog.csdn.net/qq_45731845/article/details/152609468?spm1001.2014.3001.5502marvell88w8801文件夹(RTOS环境)marvell88w8801是一个SDIO WIFI模块,可以在网上找到大量基于SDIO驱动的实现,不过基于SPI通信的很少,而我的板子正好SDIO引脚被占用了,所以我结合现有资料实现了一个SPI驱动的marvell88w8801模块,具体功能如下:RTOS支持。之前的实现很多是在裸机下的,这里给出了在RTOS下的实现参考LWIP协议栈移植。因为此时底层不是以太网而是这个WIFI模块,要做好LWIP协议栈的移植DMA中断的驱动模式。不是轮询,而是通过SPI DMA 中断,减少对CPU不必要占用基于zephyr的SPI驱动系统移植。对SPI通信的进一步封装(重复造轮子,就当学习一下)SPI驱动下的SDIO协议实现。参考正点原子的代码做了一些改进WIFI具体功能实现,这里也是参考了https://github.com/sj15712795029/stm32_sdio_wifi_marvell8801_wifi代码Bootloader文件夹(裸机环境)实际上你会发现上述几个工程的.sct文件都被我改了,原因是我想测试我的Bootloader的实现的正确性Bootloader里的具体功能如下:支持串口(DMA)和以太网两种升级模式,具体的服务器代码可以参考 /主机程序/*.py文件支持A/B分区,当APP新分区运行出现问题,自动跳转旧分区保证稳定性支持数字签名验签(基于RSA-2048),可以对APP的数字签名进行验签工作(基于mbedtls库),生成数字签名可以参考 /主机程序/enctrypt_app传输过程支持AES加密,进一步提高传输可靠性协议层基于Ymodem协议实现,保证数据包的有效性,提供了一个Ymodem协议的封装支持APP错误校验、超时自动跳转、崩溃现场打印等功能TEST_APP文件夹(裸机环境)纯测试用,就是让PC指针指向空触发错误,看看Bootloader能否正确处理SD_LFS文件夹(RTOS环境)这个是一个我觉得很杂但是很有参考的工程(),挺有意思的,具体功能如下一个基于链表的简单shell。(今年AI写的,明显比前年的AI有进步),支持指令动态注册与反注册基于SD卡(SDIO驱动) LittleFS 的掉电安全日志系统。如果你需要一个掉电安全的日志系统,可以参考一下这部分的代码。同时配合https://gitee.com/eming/LittleFS-Explorer-for-Windows 就可以实现在windows下查看日志(非常方便),通过shell指令也可以访问到日志系统。同时还支持崩溃现场转储一个基于状态机的按键驱动(到时候面试问按键消抖不要在delay啦)多级日志串口打印系统(这个很常用,设置不同打印等级打印不同日志)支持和Bootloader的相互跳转以及看门狗结语后面我将逐步为这些工程编写博客,如果对你有帮助还请多多收藏点赞啦
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2538476.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!