0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于MCU工程师项目开发感悟经验详解

MCU开发加油站 来源:CSDN技术社区 作者:嵌入式ARM 最后一个 2021-04-12 09:23 次阅读

今天跟大家分享一位嵌入式工程师的项目开发感悟,写得非常的接地气,学习和开发过程可以进行相应参考!自从我(原作者)去年被调到了嵌入式组,终于和以前研究生阶段搞的开发经历一致了。

但以前用的是ADS工具,还有用Linux平台上的交叉编译工具链,还有看linux 内核的驱动代码。

现在搞起对日外包了。日本人不爱用linux,凡事总是搞出自己的一套。现在用的ut-kernel(看成一个RTOS就好), 开发工具则有RVDS,DS-5,MTK和IAR, 硬件调试器有Dstream, Realview ICE。现在对应的是富士通半导体部门,做的MCU(基于arm cm3,cm4, ca5核的富士通芯片) 的软件开发测试。

本来自己的想法是搞搞嵌入式,熟悉下硬件东西,这样可以加深的我的底层编程功底。

以下是几个阶段的工作感悟:

1ut-kernel/FA5 测试修复BUG工作:

日本人做的ut-kernel属于嵌入式RTOS范畴,这块同类的产品有uc/os, vxworks等,共同特征是高度可裁减,想塞到片内那有限的容量内。还有实时性好吧。实时性不仅表现在可抢占式进程调度,还有快速响应中断的能力。

RTOS的设计毕竟和通用操作系统(linux)的设计思想还是有很大的差别的。感觉这个领域更适合微内核结构的发挥,宏内核结构如linux可裁剪性方面是个缺点。这个ut-kernel算是代码量比较简单,里面的修复BUG工作我觉得也不难,期间有timer相关的BUG,最后一看发现timer相关的代码根本没改造。

印象深刻的是后期做性能测试,对FA5和FM3芯片做比较时,因为两个各基于Cortex-m3和cortex-a5架构,架构不同,发现这里面还是很有意思的。一开始FA5的性能没有发挥出来,找到原因,cache没打开。高档次的CPU是要靠cache发挥威力的。

于是查找芯片手册,正确地初始化了cache并打开它。后来又发现还有些功能如指令分支预测等这些也得打开,于是又修改了相关寄存器。完了,感觉FA5的性能比以前好了很多。于是对CM3和CA5的架构差别方面,我又充满了兴趣。我觉得知道这些,对以后并行多核程序开发,物联网领域的一些东西都有帮助。

感觉FA5这种档次高的芯片应该用到手持设备开发中去。那些工控级别的应用应该是FM3这类51单片机取代者的天下。ut-kernel是配着FM3芯片开发的,感觉配上FA5的话,ut-kernel架构就应该进行大改变了,或者直接用linux等内核比较好。

期间做了个初始化外接的DDR芯片工作,我们直接从UBOOT社区那边拷过来该芯片的初始化代码。然后针对该代码做成一个具有初始化DDR单一功能的AXF可执行文件。以此来方便我们测试。还有测试中间差点闹出来一个大问题,当时日方客户见我们的初始化DDR代码中还残留有GPL版权信息,他们大怒,拷贝代码惯了,对版权从来没怎么看重。日本人对这块比较看重,听说在日本下载盗版音乐好像要被起诉。

下来经过这场事,我们对版权方面的东西特别敏感,搞好代码后,首先要在代码包中扫描版权信息。

2micro.NET framework 在FM3平台上的移植

这个项目做起来还是非常有发展前途的。看看现在物联网炒得多么火热就知道了,可惜做了不到一半,日本人就给咔嚓掉了。不是我们做的不好,而是他们又想让我们做别的是事情了。做对日外包就是这样,没自主权,得按别人指令办事。这个项目的做的过程中,终于我对串口,timer,GPIO移植熟悉了很多,自己也做了些特性改造。而且我也会根据开发板的板子布线原理图以及芯片手册来写一些简单的驱动代码了。

还有对scatfile,分散加载也熟悉了很多,对于MDK, RVDS,DS-5调试工具以及ICE,Dstream等硬件调试器的灵活运用也掌握了不少。

3ut-kernel/M3及M4F的测试

我亲自参与并熟悉了怎么在片外再扩接一个SRAM,因为我们的测试代码体积还比较庞大,无法放到片内中。想想自己以前本科学电子的,那时对示波器,万用电表掌握的特别熟练。现在却全部都忘完了(因为后来一直都搞的是纯软件)。

看到项目组同事在使用示波器时,我想到自己还是有基础的,快速学习能力还是有的。因为做驱动开发,不可避免要用到示波器等这些设备。可惜当时外接SRAM硬件并没多大问题,而且示波器等还是借的,所以我没太多机会熟悉这些硬件测量设备。

想想自己本科数字电路,模拟电路等一些硬件课程,实验课程都学的不错的。哎,如果我这些功底都恢复并加强的话,那么自己的底层软件编程也会加强不少,最主要的是编程视野也会相当开阔。毕竟最高层的软件算法分析设计,我研究生阶段都掌握了。没事以后会有机会继续窥探到这一领域的。

可惜外接ram又不稳定,后来我们又不得不移到片内进行测试。这时为了能把程序放到片内去跑,就要对ut-kernel里面占用内存空间的地方进行剪裁了,好在ut-kernel都是可裁剪的,在我们裁剪完之后,发现放到片内ram中测试比片外ram稳定多了。还有对嵌入式系统的软件BUG调试也有所掌握,感觉嵌入式里面的软件调试时,发现东西跑飞了。

这时可以有多个途径查找。也许是没禁掉看门狗,或者那些pend_sv中断在内存中根本没有初始化正确, 或者中断向量表被冲掉了,或者对照着汇编指令看看寄存器状态有没有正确。要卡住出问题的地方来进行多方面原因的判断调查。另外也要结合map文件,看看地址链接和加载得是否都正确,有没有越界。

在测试M4F FPUT时,曾经发现一个诡异现在,一些调用子函数换个先后顺序去执行时,就崩溃了,再换过了就不崩溃了。这时我调查了下,发现崩溃前代码执行时用的栈遭到了破坏。

具体我往前推,发现在调用某个API返回之后,就会破换掉待返回的正确栈上的值。具体再调查时,发现是执行某条汇编指令时,栈遭到了破坏。不过这时候这个调查上面中止了,事情实在太多了又去做其他事情了。不过我相信只要掌握了方法和本质,这些问题都只是时间问题。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17458

    浏览量

    354413
  • 嵌入式
    +关注

    关注

    5103

    文章

    19265

    浏览量

    309979

原文标题:MCU工程师几个阶段的开发感悟

文章出处:【微信号:mcugeek,微信公众号:MCU开发加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何成为嵌入式开发工程师

    如何成为嵌入式开发工程师? 成为嵌入式开发工程师通常需要掌握一系列技能和知识,并且在实践中不断积累经验。以下是一些基本步骤和建议: 1. 基
    发表于 02-19 10:39

    电子工程师的电源设计经验分享

    作为一名电子工程师,电源设计一直是我在工作中重点关注的领域。电源设计不仅需要扎实的理论基础,还需要丰富的实践经验。以下是我多年工作中总结的一些经验: 一、电源设计的核心理念 电源设计的核心是高效
    的头像 发表于 01-21 15:53 188次阅读

    电子工程师的PCB设计经验

    本文分享了电子工程师在PCB设计方面的经验,包括PCB布局、布线、电磁兼容性优化等内容,旨在帮助初学者掌握PCB设计的关键技术。
    的头像 发表于 01-21 15:15 549次阅读

    电子工程师的电源设计经验

    本文分享了电子工程师在电源设计方面的经验,包括电源电路的设计要点、电源管理芯片的选择、电源完整性优化等内容,旨在帮助初学者掌握电源设计的关键技术。
    的头像 发表于 01-21 15:14 198次阅读

    电子工程师的电路设计经验分享

    本文分享了电子工程师在电路设计方面的丰富经验,包括项目开发步骤、电路设计核心思想、元器件选择与优化等内容,旨在帮助初学者快速提升电路设计能力。
    的头像 发表于 01-21 15:13 284次阅读

    电子工程师经验分享

    电子工程师在实际工作中积累了丰富的经验,这些经验对于新手工程师和电子专业的学生具有重要的参考价值。 一、电路设计经验 电路设计核心思想 电路
    的头像 发表于 01-14 10:14 215次阅读

    为什么嵌入式驱动开发工程师可以拿高薪?

    为什么嵌入式驱动开发工程师可以拿高薪? 嵌入式驱动开发,属于需求量大、薪资断崖式升高的热门岗位,在市场的发展驱动下成为“风口”。从市场的整体需求来看,嵌入式系统的应用随着5G、物联网、大数据、云
    发表于 01-07 16:56

    KiCon 演讲回顾(十三):嵌入工程师的硬件梦之 KiCad 经验项目分享

    “  在KiCon Asia 2024,我们有幸听到了@IAMLIUBO 的分享——嵌入式工程师的硬件梦之KiCad经验分享。   ” 以下是完整演讲视频: 为什么选择KiCad? 跨平台支持
    的头像 发表于 12-09 01:02 365次阅读
    KiCon 演讲回顾(十三):嵌入<b class='flag-5'>工程师</b>的硬件梦之 KiCad <b class='flag-5'>经验</b>和<b class='flag-5'>项目</b>分享

    求LORA技术开发工程师合作

    求LORA技术开发工程师合作
    发表于 09-02 10:21

    寻求专业工程师帮助设计USB多口充电器

    嗨, 我正在开发一款USB多口充电器,现寻求一位专业工程师或产品设计的帮助。希望能够与有经验工程师合作,共同完成产品设计。以下是我们的需
    发表于 08-05 12:03

    找STM32硬件开发兼职工程师

    上海做传感器的公司,找STM32硬件开发兼职工程师,会硬件开发,嵌入式软件开发,可项目外包。有意联系:15900460170
    发表于 06-22 19:12

    嵌入式软件工程师如何提升自己?

    的发展打下坚实的基础。 2.掌握专业技能 除了基础知识外,嵌入式软件工程师还需要掌握专业的技能。这包括熟练掌握嵌入式系统的开发工具、硬件平台和软件开发流程。建议通过参加培训课程、实习经验
    发表于 06-12 11:20

    嵌入式软件工程师和硬件工程师的区别?

    ,并且了解嵌入式系统的工作原理。此外,他们还需要具备良好的逻辑思维能力,能够快速解决复杂的软件问题。嵌入式软件工程师在软件开发方面有着丰富的经验,能够编写高效稳定的嵌入式软件,并且熟悉实时系统
    发表于 05-16 11:00