![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式
文章平均质量分 87
无人等人
穷且益坚
展开
-
使用 VSCode 远程 图形化 GDB 调试 嵌入式linux
目录标题引言环境步骤vscode remote ssh 配置Linux编译机配置设备板端配置vscode launch设置调试引言之前说了,通过core dump找程序bug,但是有些时候排查问题的还是不够高效,命令行形式gdb还是太简陋了,在IDE debug代码打断点,查堆栈变量那些习以为常的东西,在gdb这里怎么用怎么不习惯,可视化操作不比敲命令行来的香吗?最近正好研究了下vscode remote ssh + gdbserver 调试。相对来说体验比较像IDE了,基本的单步,直接代码上打断点原创 2021-06-07 16:46:04 · 1950 阅读 · 4 评论 -
OOP面向对象程序设计的理解
这里写目录标题软件设计六大原则基本概念如何设计高可用,高复用,易拓展的软件高可复用性一个简单的例子嵌入式软件如何实现硬件无关控制反转易用性类的易用性组件的易用性可拓展性业务可拓展性接口可拓展性不要过度设计软件设计六大原则基本概念最少依赖(迪米特)任何一个类只能使用本身的方法和属性及根据参数传递进来的值,每一个类尽量减少对其他类的依赖,减少类藕合,高内聚,利于提高代码复用。迪米特栗子单一职责一个类应只负责一个职责,各个职责变动不应影响其他职责,提高代码可读性(责任链完美诠释)接口隔离即接口原创 2021-04-20 09:44:38 · 230 阅读 · 0 评论 -
嵌入式项目 lua 的一些简要说明
lua简介,易于与C\C++相互调用,执行效率高。嵌入式项目lua移植上难度不大,打包进项目,实现printf和fopen之类函数底层实现重定向即可但MCU选型上,对于lua的硬件占用还是需要注意下,对照参考选型以下是5.4.2最新版本未经过裁剪优化的基础要求。堆:32K,lua分配内存用的是realloc,部分芯片需要自行实现,可能有碎片问题,lua脚本里面程序栈:2KROM: 132K网上资料旧版本对于硬件的要求要似乎少很多,未做验证。github有elua这个专门为嵌入式设备优化的原创 2021-02-02 11:15:42 · 1258 阅读 · 1 评论 -
嵌入式芯片加密防抄板技巧简析
目录标题背景外部IC加密简易MCU端加密MCU端加密优化版ID地址混淆代码混淆校验区混淆固件防修改芯片混淆总结背景随着嵌入式和物联网的快速发展,越来越多的嵌入式产品推向市场,如何保证产品程序的安全和知识产权不受侵害呢,目前主要有两种方式:MCU端加密和外加加密IC来进行相关的产品和知识产权保护。最近跟几个朋友讨论了以下相关加密的技巧,在这里分享一下。外部IC加密一般来说就是,在主控芯片和加密芯片都预存一个密码,STM32读取一个加密芯片生成的随机数,然后与8位密码做一个加密运算,把这个结果发给加密原创 2020-11-27 12:18:08 · 2308 阅读 · 1 评论 -
LVGL 优化帧率技巧
目录标题前文LVGL帧率限制代码优化等级前文LVGL——PC模拟器仿真模拟+VS2017f429 discovery开发版 LVGL移植(带操作系统)首先就个人用过的几个芯片而言,可能还是要F4系列这种性能以上,跑出来的效果才能让人满意,最常见的103芯片使用场景受限,总体不太好。在F429平台上尝试LVGL过程中,也总结出几种优化提高帧率的方法。这里我们还是直接用官方测试例程 benchmark做直观的帧率展示LVGL帧率限制首先,LVGL是有一个帧率刷新周期的宏定义,LVGL会通过LVG原创 2020-10-28 15:08:59 · 33265 阅读 · 20 评论 -
NXP KV30 擦写flash跑飞的问题解决
之前验证功能就擦除后写五六个字节的flash没发现什麼问题,但最近调试iap,一次写入512的字节的发现芯片会跑飞重启。后来发现是使能的SysTick这个中断的问题,项目没用操作系统内核,用systick做了个ms级延时,写flash写到十几二个个字节就进了一次中断导致跑飞,知道原因解决也简单,写flash的时候关中断就好。void FlashWrite(void *pBuffer, uint32_t WriteAddr, uint32_t ByteNumToWrite){ static ft原创 2020-10-24 19:13:34 · 781 阅读 · 0 评论 -
arm compiler v6 + M4内核 iap跳转失败的问题分析及解决
这里写目录标题一级目录二级目录三级目录背景AC5 迁移至AC6iap一级目录二级目录三级目录背景在用一块nxp的m4内核的低功耗芯片做项目,iap遇到一些问题。由于这块芯片寄存器较多,为了快速上手用了nxp自家的sdk库驱动外设,该sdk必须使用arm compiler v6。AC5 迁移至AC6arm compiler v6和arm compiler v5的区别与如何迁移不过多介绍,官方有具体说明,主要是一些关键字的修改及内联汇编的格式修改。内联汇编格式。如果在使用上FREERTO原创 2020-10-21 11:38:09 · 869 阅读 · 2 评论 -
f429 discovery开发版 LVGL移植(带操作系统)
文章标题准备STM32F429I-DISC1 开发版CUBEMX 工具移植CUBEMX生成基础代码LTDC驱动插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入准备之前的f103的开发版用分辨率240*320屏幕移植了LVGL,如果只有Gauge这种界面局部刷新的控件效果差强人意,但只要全原创 2020-10-14 16:46:18 · 6739 阅读 · 17 评论 -
LVGL——PC模拟器仿真模拟+VS2017
目录LVGL介绍移植说明资源下载环境搭建编译运行LVGL介绍官网 :https://lvgl.io/官方在线文档:https://docs.lvgl.io/latest/en/html/intro/index.htmllittleVGL是一个开源的嵌入式图形控件库,MIT协议, 图形美观,硬件无关,移植方便,可移植性强,占用资源少。硬件要求:16, 32 or 64 bit microcontroller or processor16 MHz clock speed is recommend原创 2020-09-26 15:00:23 · 8032 阅读 · 3 评论 -
FREERTOS源码解析——heap4.c
目录内存管理heap4无法解决的内存碎片:HEAP4简析分配内存在哪,大小多少如何管理重要源码解析内存管理freertos目前提供了以下5种内存管理,特点如下heap1:最简单的内存管理,管理的其实是一个静态全局变量,只允许分配,不允许释放,设计之初就是用于创建信号量、任务、队列一般不需要释放的数据,不过在FreeRTOS V9.0.0及其以后版本添加 support for static allocation基本就被替代了。heap2.:比1多了内存释放,分配也因为有内存释放原因多了一个最佳适配原创 2020-09-09 13:47:13 · 2109 阅读 · 0 评论 -
nxp Kinetis KV30 芯片及 sdk 使用问题
目录NXP MKV30F64VFM10问题 error: 'RTE_Components.h' file not found问题 error: A1137E: Unexpected characters at end of line例程执行异常MDK自建的例程附件NXP MKV30F64VFM10MKV30F64VFM10是我最近在用了一颗nxp的芯片,网络上这块芯片使用的很少,使用过程也遇到一点问题,就自己怎么解决这些问题坐下筆記,希望能給別人提供些許的幫助。nxp芯片有个 MCUXpresso原创 2020-08-29 16:28:55 · 2309 阅读 · 4 评论 -
flash 磨损均衡处理
FLASH磨损均衡原理及实现背景磨损均衡原理磨损均衡实现定长数据读写不定长数据读写多个不定长数据存储读写总结背景flash为嵌入式设备中常见的存储器,优点:便宜,容量大,但缺点也比较明显,最大的缺点是寿命问题,flash编程只能将bit由1位置0,不能将0位置1,将0置1只能擦除扇区,而扇区往往比编程单位要大很多,哪怕我们只对对一个地址写两个字节的数据,也需要擦除整个扇区来完成数据更新,频繁擦写导致flash坏块。本人这边做的一个小玩意里面需要存储一些掉电保存的数据,但修改频次又有点多,硬件上没有掉电原创 2020-08-16 18:23:23 · 4214 阅读 · 0 评论 -
FATFS 挂载 exFAT卡报 FR_NO_FILESYSTEM
目前一些大容量sd卡,win10格式化只能格式化exFAT与NTFS。直接挂载exFAT报 FR_NO_FILESYSTEM,看了下fatFS更新日志,从0.10开始就支持exFAT的我用的版本0.13,扔报FR_NO_FILESYSTEM。然后看到源码里有 FF_FS_EXFAT 编译开关修改ffconfig,问题解决...原创 2020-07-27 12:32:35 · 2714 阅读 · 4 评论 -
NXP KV30 ADC转换时间计算及高速ADC采样配置
TODO原创 2020-07-25 18:05:51 · 1042 阅读 · 0 评论 -
嵌入式设备系统日志记录及调试技巧
2020-05-31 00:00:36.063 DEBUG [cloud-data-communication-service,a4d26cd44853a39b,a4d26cd44853a39b,false] 5888 --- [http-nio-15050-exec-5] c.s.s.c.c.a.interceptor.UserInterceptor : //TODO 校验token:null2020-05-31 00:00:36.064 DEBUG [cloud-data-communication原创 2020-07-25 12:40:23 · 4715 阅读 · 0 评论 -
扩展卡尔曼滤波的理解与对加入高斯噪声的正弦信号进行滤波实例
文章目录卡尔曼滤波拓展卡尔曼滤波正弦波滤波卡尔曼滤波卡尔曼滤波是一个线性状态估似算法,对高斯噪声有良好的滤波效果,也可做多传感器融合算法,如九轴。具体推导网络上,网络上很多。珠玉在前我就不过多赘述了。卡尔曼滤波包含预测、更新两大步,五大公式如下。预测过程Xk′=FX^k−1+BukPk′=FPk−1FT+QX{}'_{k} = F\hat{X}_{k-1}+Bu_{k}\\P{}'_{k} = FP_{k-1}F^{T}+QXk′=FX^k−1+BukPk′=FPk−1FT+Q原创 2020-07-22 13:28:10 · 5033 阅读 · 4 评论 -
嵌入式固件的自校验方案(keil + arm)
嵌入式固件的自校验方案背景环境方案步骤背景嵌入式项目大多都有iap固件升级功能,而网络传输或者复制粘贴传输过程,升级这些损坏的固件很有可能导致仪器死机成砖的情况,这样在无人值守的情况下,仪器死机会造成很多麻烦,所以仪器iap固件的自校验就很有必要,在这里介绍一种侵入代码少,方便快捷的自校验方案。环境开发环境 keil + stm32+SRecordSRecord 是一个开源工具可以很方便快捷的解析转换映像文件。官网里面有更详尽的资料使用说明介绍。方案根据keil及SRecord 编译生成he原创 2020-06-02 19:59:17 · 4166 阅读 · 0 评论 -
hardfault问题分析解决及记一次ucosIII环境下的hardfault解决
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2020-05-13 16:13:47 · 2600 阅读 · 1 评论 -
stm32散列加载及作用
通过编辑scatter file即可划分出keil uVision help中 ”Scatter-Loading“章节有非常详尽的介绍相关博客 https://www.cnblogs.com/qiyuexin/p/9026365.html原创 2019-10-22 11:44:29 · 503 阅读 · 0 评论 -
stm32iap程序相互跳转hardfault的问题
在原来的程序做了一个串口升级,bootloader:无系统,app:ucosiii,bootloader烧写app没问题,boot跳转app也正常,但app跳回bootloader成功后,中断向量表偏移也配置过了,中断也确实可以进,但出串口中断会进hardfault,orz。试过跳转前加用 USART_DeInit和DMA_DeInit复位boot用到的串口和dma通道,无效目前解决方法是软件...原创 2019-02-22 22:18:45 · 1496 阅读 · 0 评论 -
9轴陀螺仪数据融合
//! Auxiliary variables to reduce number of repeated operationsstatic float q0 = 1.0f, q1 = 0.0f, q2 = 0.0f, q3 = 0.0f; /** quaternion of sensor frame relative to auxiliary frame */static float dq0 ...原创 2019-02-13 10:42:07 · 4282 阅读 · 6 评论 -
FATFS添加多线程支持
FATFS的多任务支持其实就是一个互斥锁管理(信号量会有优先级反转)以ucosiii,fatfsR0.13B为例ffconf.h修改以下下配置#define FF_FS_REENTRANT 1 //可重入支持#define FF_FS_TIMEOUT 1000 //超时时间#define FF_SYNC_t OS_MUTEX //同步管理变量类型/* The option...原创 2019-02-13 16:30:37 · 2810 阅读 · 1 评论 -
MSP430FG479芯片的 IAP
MSP430以一款TI出品的16位超低功耗、具有精简指令集(RISC)的混合信号处理器,优点就是低功耗,运算快。在公司内用在一款开发中的低功耗传感器上,主要开发人员出国旅游一段时间,暂时给我代码熟悉一下,方便在旅游期间仪器暴露出来的问题帮忙解决。第一个要搞明白的就是msp芯片的IAP,方便远程升级的功能。开发使用TI官方出品的开发环境Code Composer Studio (CCS) 集成开...原创 2019-02-28 16:49:10 · 1013 阅读 · 0 评论 -
stm32 串口+DMA+环形FIFO缓存收发数据
优点,快,不用频繁进中断,收发不定长数据帧重要几点1.配置DMA,串口及环形buff之间的关系;2.USART_IT_IDLE空闲中断接收完一帧数据,处理环形buff入口指针;3.发送数据无需利用环形buff,直接将待传数据作为DMA的源地址,再使能相应DMA通道;4.用户程序中读取buff;环形FIFO buff...原创 2019-02-14 14:27:07 · 19157 阅读 · 6 评论 -
优先级反转及ucos对该情况的处理
如图所示,三个任务L,M,H,中等优先级的任务M抢占cpu,已获取信号量的低优先级任务L无法执行并释放信号量,导致等待信号量而阻塞的高优先级任务H必须等中等任务M释放CPU而使L任务执行释放信号量才可继续执行,从用户宏观使用角度来看,任务M运行优先级似乎比任务H还要高,这就是优先级反转。优先级提权:ucos解决方法就是占用信号量的任务的优先级会根据当前任务的高低而进行是否提权,上图例子在...原创 2019-02-20 20:32:24 · 760 阅读 · 0 评论 -
ucosIII任务调度原理解析
μcosIII任务调度原理解析前言μcosIII任务调度相关的数据结构任务控制块 OS_TCB就绪任务表结构μcosIII时间节拍轮任务阻塞表任务调度实现细节任务调度点时钟节拍轮相关调度任务阻塞表相关调度就绪任务表相关调度其他前言μcosIII是一个源码公开的的商业嵌入式实时操作系统内核,在公司的前人留下的几个项目都运行在该内核上,在一次添加功能发现软delay时间到后该任务无法正常唤醒,即使...原创 2019-01-22 21:12:39 · 4514 阅读 · 1 评论