- 博客(20)
- 资源 (3)
- 问答 (8)
- 收藏
- 关注
原创 程序内存分布分析记录
ZI Data 是指那些在编译时被声明但未显式初始化的全局或静态变量(未被初始化的全局变量、全局静态变量和函数内部定义的静态变量)。*(.rodata) /* .rodata sections (constants, strings, etc.) 常量、字符串等*/*(.rodata*) /* .rodata* sections (constants, strings, etc.) 常量、字符串等*/.data:存放已初始化的全局和静态变量(非 const)。
2024-12-06 18:30:32
260
原创 rt_thread 自动初始化组件分析记录
rt_thread有一个开机不用显示调用函数,可以自动进行初始化函数调用的功能。前提是需要在定义函数处通过INIT_BOARD_EXPORT(fn)、 INIT_PREV_EXPORT(fn)、INIT_DEVICE_EXPORT(fn) 、INIT_COMPONENT_EXPORT(fn)、 INIT_ENV_EXPORT(fn)、INIT_APP_EXPORT(fn) 等宏定义进行声明;原理就是在进行INIT_BOARD_EXPORT(my_test_fun);
2024-12-06 15:54:29
239
原创 RT-Thread 源代码解读之:双向链表数据结构
双向链表是一种数据结构,它是由一系列节点组成的数据集合,每个节点包含三个部分:一个存储数据的元素、一个指向前一个节点的引用(或称为指针)以及一个指向后一个节点的引用。该双向链表结构中只有两个成员变量,一个指向下一个节点的后向指针,和一个指向前一个节点的前向指针,没有其他数据变量,这样可以通过该双向链表结构类型变量作为其他需要构建双向链表的数据对象构建链表。rt_list_t链表结构的几个基本操作:初始化、在当前节点后插入一个节点、在当前节点前插入一个节点、删除一个节点n。在节点l之后插入一个新节点n。
2024-11-23 18:13:06
482
原创 rt_mq_send 发送失败,返回-3 (-RT_EFULL)问题分析及解决
问题描述:通过rt_mq_init函数创建一个消息队列,队列元素个数4,单元素数据size 1 Byte,队列总size 4;rt_mq_init返回创建成功,也未发现有内存不足或异常操作的情况,但是rt_mq_send 返回失败-3 (-RT_EFULL)创建队列时队列buffer的大小(元素大小*元素个数)要满足大于等于8的最低要求。
2024-11-18 11:39:30
274
原创 使用单项链表存储多行字符串数据
在嵌入式软件开发中,涉及到双机通信过程中,接收方有多条数据接收,并要逐条处理的情况,这样就需要先接收,存储到缓存中,然后再从缓存中读取并逐一处理。针对这种场景,通常有两种方式,一是建立一个多维数组,每一纬用于存储一条数据,这种方式比较直观,操作方便,涉及到多维数组的遍历,数组的数据写入和读取等常规操作,缺点是因为是多维数组,在定义时就要确定数组的维数和数组的长度,比如data_list[4][512];数组的维数和长度都要按照实际情况的最大值来设定,这样有可能带来空间上的浪费,为了确保某一条不
2024-11-14 11:11:23
373
1
原创 嵌入式软件设计之:标识符与命名规则
1. unix like 风格:单词用小写字母,单词之间用'_'连接。如:driver_led_init();2. windows 风格:单词连在一起,每个单词首字母大写。如:GetMainPwr();像windows系统不区分大小写字母,linux系统区分大小写字母,所以统一使用小写字母命名文件。数值或字符串等常量的定义,采用全大写字母+‘_’的方式。以函数要执行的动作命名,一般用动词或动词+名词的方式。如:get_current_time();文件命名统一采用小写字符。
2024-08-12 19:51:23
389
原创 嵌入式软件设计之:函数设计原则
最佳实践:一个函数代码行不要超过一个屏幕,尽量整屏可以显示全部,避免来回翻页,提高效率。7.对函数的返回值做异常处理,尽早拦截异常情况,避免本行函数调用已经异常,程序还继续往下走。代码控制块 if、for、while、switch 等相互包含的层数不要超过4层。C语言函数设计的基本原则是:整洁、简单、有效、直截了当。5.可重入函数避免使用共享变量,如果需要则要增加互斥锁。1.一个函数只完成一个功能,确保函数功能单一,明确。3.函数长度避免过长,一般不超过50行。4.函数代码控制块嵌套不要超过4层。
2024-07-30 20:04:17
312
原创 git push出错:ERROR: commit fcf5889: missing Change-Id in message footer
git push 代码时 失败,失败现象是提示:remote: ERROR: commit fcf5889: missing Change-Id in message footer。解决方法一:根据出错提示中的操作来进行:(Hint:to automatically insert a Change-Id,install the hook:)解决方法二:ssh 拉代码时使用 Clone with commit-msg hook 的ssh路径;然后重新push 就能成功;
2024-03-27 10:57:49
681
1
原创 rt-thread take mutex 失败:(rt_object_get_type(&mutex->parent.parent) == RT_Object_Class_Mutex) 问题解决
但是其实程序一开始就初始化了互斥量,说初始化没问题;可能是中间被破坏,所以打开map文件,查看信号量定义的位置,发现该变量的上一个变量是个数组,长度为32,在操作过程存在越界的可能,查看log果然发现在做该数组操作时实参长度大于32,把互斥信号量给踩到了。教训:1.定义数组时数组长度一定要长度合理;2.要做长度检查避免越界,造成严重问题。1.互斥量未初始化;
2024-01-05 14:42:05
1522
原创 设备上报的GPS 帧里的unix时间戳怎么转换成java.sql.Timestamp 格式?
unix时间戳怎么转换成java.sql.Timestamp 格式?
2022-07-30 15:32:58
293
原创 STM32FXX IAP 功能应用介绍
ST MCU 提供了一个IAP功能,即STM32 in-application programming (IAP),这个程序通过ST 原始方式(比如常见的拉BOOT管脚进BOOT,然后进行升级)烧录至用户代码起始位置(0x8000000),作为第一级用户软件,有了这个第一级用户软件后,可以支持烧录用户第二级用户软件(App)、读取用户第二级软件、跳转执行第二级用户软件,其中烧录用户软件使用的协议是YModem协议。这样开发者开发基于STM32的用户软件时可以将软件分成Boot+App两个部分,Boot
2022-05-20 10:20:01
977
原创 嵌入式物联网软件开发实战系列(STM32+FreeRTOS)
一、使用STM32CubeMx 创建物联网项目软件工程二、STM32CubeMx 配置时钟三、STM32CubeMx 配置GPIO 及 GPIO 相关接口在软件工程中的形式及使用四、STM32CubeMx 配置USART 串口五、USART 串口在物联网项目中的使用之不定长数据接收(DMA+空闲中断方式)六、USART 串口在物联网项目中的设计模式之双机通信七、USART 串口在物联网项目中的使用之 串口调试日志功能(可以日志输出和接收调试指令)八、STM32CubeMx 配置R
2022-03-30 22:13:15
8889
STM32 官方 OpenBootloader IAP 例程; 使用OpenBootloader 做IAP升级示例
2022-05-20
ST32 OpenBL 官方文档:应用笔记(OpenBootloader) 功能详细介绍
2022-05-20
STM32 IAP 官方应用笔记 AN4657
2022-05-20
电子体重秤唤醒是怎么实现的? HX711
2025-03-15
嵌入式软件多功能模块架构设计
2024-06-07
云服务器的目录怎么找
2024-01-31
微信小程序流量主(激励视频)盈利模式如何
2024-01-15
Springboot 配置SSL后编译报错
2023-11-18
Error parsing HTTP request header
2023-08-18
设备二维码如何做到扫码启动小程序
2023-06-15
蓝牙芯片52832 板载天线PCB设计
2023-04-18
sscanf如果遇到中间是空字符的情况会怎么样?
2023-03-24
Vscode+EIDE STM32编译开发环境设置代码FLASH起始地址该如何设置?
2022-09-23
相同C代码在函数内运行堆栈溢出,在函数外就可以
2022-09-08
引入log4j2不生效,会和logback冲突,默认使用的还是logback
2022-08-10
GPS数据在后端怎样存储
2022-07-25
mybatis-plus 如何获取最后一条GPS 记录
2022-07-15
Mybatis-Plus 创建的deviceMapper 查询会卡死,程序不往下执行
2022-07-14
后端和APP 前端是如何做到及时状态同步的?
2022-06-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人