随笔分类 - B1.嵌入式开发基础
摘要:大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是Cortex-M中断向量表原理及其重定向方法。 接着前文 《嵌入式Cortex-M裸机环境下临界区保护的三种实现》 继续聊,嵌入式代码设计里有时候一些特殊操作(比如 XIP 下 Flash 擦写、低功耗模式切换)不能被随意打断,或者一些
阅读全文
摘要:大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是Cortex-M裸机环境下临界区保护的三种实现。 搞嵌入式玩过 RTOS 的朋友想必都对 OS_ENTER_CRITICAL()、OS_EXIT_CRITICAL() 这个功能代码对特别眼熟,在 RTOS 里常常会有多任务(进程)处理,
阅读全文
摘要:大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是嵌入式MCU中标准的三重中断控制设计。 我们知道在 MCU 裸机中程序代码之所以能完成多任务并行实时处理功能,其实主要是靠中断来调度的,没有中断,CPU 就只能按顺序"呆板"地执行代码。很多人都说是中断能力赋予了 MCU 真正的灵魂,能
阅读全文
摘要:大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是串行NOR Flash的页编程模式对于量产效率的影响。 任何嵌入式产品最终都绕不开量产效率话题,尤其是对于主控是非内置 Flash 型 MCU(比如恩智浦的 i.MXRT 系列、意法半导体的 H7 系列等),单片量产时间直接决定了工厂生
阅读全文
摘要:大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是嵌入式里串口(UART)自动波特率识别程序设计与实现。 本篇是 《串口(UART)自动波特率识别程序设计与实现(中断)》 的续集,上一篇我们利用 GPIO 模块自带的下降沿中断功能实现了 RXD 电平跳变捕捉与计时,今天我们再试试古老的
阅读全文
摘要:大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是嵌入式里串口(UART)自动波特率识别程序设计与实现。 串口(UART)是嵌入式里最基础最常用也最简单的一种通讯(数据传输)方式,可以说是工程师入门通讯领域的启蒙老师,同时串口打印也是嵌入式项目里非常经典的调试与交互方式。 最精简的串口
阅读全文
摘要:大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是嵌入式里通用微秒(microseconds)计时函数框架设计与实现。 在嵌入式软件开发里,计时可以说是非常基础的功能模块了,其应用也非常广泛,比如可以辅助计算信号脉冲宽度时间,也可以直接用于常规延时等。相信很多人初次领略 MCU 的神奇
阅读全文
摘要:大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是内存读写正确性压力测试程序memtester。 在嵌入式系统中,内存(RAM)的重要性不言而喻,系统性能及稳定性都与内存息息相关。关于内存性能有很多个不同指标,其中最基础的指标便是访问可靠性(即读写的正确性),只有稳定可靠的内存访问才能
阅读全文
摘要:大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是国内车规级MCU厂商及其产品。 在汽车电子领域,MCU的应用非常广泛,大到车身控制与动力总成,小到雨刷车窗等控制单元,都离不开MCU的身影。但汽车领域产品必须要是高可靠、高安全的,因此车规级MCU与消费电子类MCU本质上是不同的,国际汽
阅读全文
摘要:大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是国内Cortex-M内核MCU厂商高性能产品。 在8/16位中低端MCU领域,国内厂商的本土化产品设计以及超低价特点,使得其与国外大厂竞争时是有优势的,因此国内厂商份额相当之高。但在32位中高性能MCU领域,国外大厂仍有一定的技术领先优
阅读全文
摘要:大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是串行NOR Flash的DQS信号功能。 串行NOR Flash在嵌入式里的应用相当广泛,既可用作数据存储也可以用作代码(XiP)存储,串行NOR Flash种类很多,最早期有Standard SPI(一线),后来发展到QuadSPI(
阅读全文
摘要:痞子衡最近一直在参与恩智浦SBL项目(就是一个适用LPC和i.MXRT的完整OTA方案),这个项目近期会和大家见面,项目需要同时支持GCC, IAR, MDK三大开发环境,项目所属i.MXRT1170工程在GCC和IAR下编译链接一切正常,但是在MDK下出现了链接对齐报错问题,痞子衡花时间研究解决了这个问题,这个问题算是和MDK工具本身紧紧相关,痞子衡觉得挺有意思(其实主要是想吐槽MDK),特分享给大家
阅读全文
摘要:痞子衡之前写过两篇关于IAR中自带CRC校验功能的文章,算是把这个功能细节介绍得比较清楚了,但是俗话说得好,理论懂得再多,不能用于实践那等于没学。今天痞子衡就利用这个功能来解决一个实际需求
阅读全文
摘要:痞子衡之前写了一篇 《在IAR开发环境下为工程开启CRC完整性校验功能的方法》,有同事在使用CRC校验功能时遇到了关于.out/.bin文件先后生成顺序的问题。我们在线调试IAR工程时,调试器下载的其实是可执行文件(.out),CRC校验功能在.out文件里没有任何歧义,但是更多时候我们会使用镜像文件(.bin)来下载量产,有时候CRC校验功能在.bin文件里却没有正常开启,这是怎么回事?
阅读全文
摘要:IAR是个非常老牌的嵌入式开发集成环境,它的功能非常强大,有很多宝藏功能值得我们去发掘。痞子衡自毕业之后就一直在使用IAR,算是一路看着它从古典画风的v6.50.x升级到现在潮流的v8.50.x,对于经典的CRC校验功能的支持,IAR当然不会放过,今天痞子衡就来介绍IAR下如何使用其自带的CRC校验功能
阅读全文
摘要:为什么需要JLink Script文件?有些情况下,需要定制J-Link执行的某些操作,比如J-Link连接顺序或者执行复位的方式等,或者一些定制的硬件板需要一些特殊处理,这些动作没法直接集成到J-Link软件的通用处理里,因此需要被放在单独的JLink Script文件里,根据连接的具体目标对象来指定加载执行。
阅读全文
摘要:过去的三天里我花了一些时间做了一个基于 PyQt5 的 GUI 工具,可以帮助检查你的代码风格是否符合恩智浦 SDK 驱动开发规范,如今这个工具的第一个预览版(v0.4)出来了
阅读全文
摘要:上周痞子衡受领导指示,给 SE 同事做了一个关于 SDK 代码风格的分享。随着组内新人的增多,这样的培训还是很有必要的。一是可以让新同事通过代码风格来快速了解 SDK 驱动代码结构,另一方面也有利于新同事养成良好的编码习惯。
阅读全文
摘要:栈这种结构在嵌入式里其实是非常常用的,比如函数调用与返回就是典型的栈应用,虽然很多时候栈都是CPU系统在自动管理,我们只需要在链接文件里分配栈大小以及栈存放位置,但稍微了解一下栈的原理会更加利于我们去理解嵌入式代码执行机制,以及帮助我们进一步去调试。
阅读全文
摘要:今天要分享的这篇就是2013年痞子衡刚入职飞思卡尔半导体MCU软件团队时为了学习C编码规范所翻译的(外企嘛,各种资料都是洋文),当时飞思卡尔刚成立MCU软件团队不久,那时候Kinetis SDK也还没有正式推出,整个团队必须要有一个统一且良好的编码风格,这样写出来的SDK才符合大厂身份。
阅读全文