当前位置: 首页 > article >正文

写定制程序容易遇见的问题(FLASH不够时)

做了一个关于定制两条串口协议的活,主要是要在源代码基础上进行修改。源代码只剩了200多字节flash。本来最初我的想法很奇特,用结构体来模仿寄存器的写法。当我写完几行代码后,编译链接,立马就报CODE内存超了。

然后最终还是选择去修改原协议关于数据包解析的底层,其实就是一些值和字符串的互转函数,如果直接用c的库就是sprintf。

思路就是在原处理函数内新增新协议的解析。如果有其他需求就在别的地方稍作修改。重要的是我把前面写的字符串与值进行互转的函数合并了一堆,为了节省内存,原来用5个字节的地方(单个10进制值或者16进制值转字符串就是2个位 例如 11 --> '1','1',但是字符串应该是'1','1','\0'),我改成了2个,最后造成了添加不上字符串结束符的错误,造成数组越界了。这个问题其实不是很严重,debug能出来,但是对于仿真器仿真速度奇慢,还老是软甲卡死的情况下,这简直就是煎熬,就是求它别卡。

这里我的心得就是别的值转字符串一定要留出加结束符'\0'的位置。整个程序改完,我还剩下50字节的容量。我的天哪,省内存可太难了。最初改的时候试过各种方法,只有改原有的底层接口才能缩减内存占用。

后记:如果是要改定制程序,过来人的意见。

1.备份初始程序(我中间找大哥要了好几次源程序)。

2.检查硬件问题。仿真器线序,硬件的烧录接口。

3.如果仿真器和串口助手同时插上,打不开串口助手的原因可能是 供电不够。改了jlink供电加串口模块才够用,原仿真器是msp430的不够用(这点真是我试出来的)。

4.如果改新功能请(内存不够)先缩减源程序内存,调试好老程序再添加新的。不然的话新的调通了还得回去调老的。

5.先确定好方案,再去写。对于有些古早的单片机,找不到对应例程就很难。比如我想使用msp430某个系类芯片的定时器。我找了好久没找到解决方法,也没怎么看数据手册,我想不就是一个定时中断清标志位的事吗,初始化定时器不就解决了。关键就是这个中断标志位,问钉钉的ai才问出来。

6.改完代码,自测。测完就要了解后续是干什么,是提交什么文件和表单还是干什么。我以为提交给老哥就没事了,谁知道后面还复杂着呢。

7.记得写个类似于日记的东西,你的记忆力没有你想的那么强。

有的时候,我常常感叹。如果前人给我一个经验手册,那我就不必那么误打误撞。在此,感谢每个愿意发自己经验分享给后辈的伟大先驱者。


http://www.kler.cn/a/444809.html

相关文章:

  • 详解 Qt WebEngine 模块
  • 文心一言对接FreeSWITCH实现大模型呼叫中心
  • arcgisPro相接多个面要素转出为完整独立线要素
  • 关于如何做技术文档
  • 允许某段网络访问Linux服务器上的MariaDB
  • 记一次mysql故障排除和硬盘扩容
  • ArcGIS Pro 3.4新功能2:Spatial Analyst新特性,密度、距离、水文、太阳能、表面、区域分析
  • 功能篇:JAVA8实现数据去重
  • API网关基础知识
  • 怎麼在模擬器中實現換IP
  • pyQt5基本需求v1.0
  • C语言基础(五)【控制语句与循环综合应用篇猜数字游戏】
  • gcd 生成4d
  • 关于如何做技术文档
  • Android Java Ubuntu系统如何编译出 libopencv_java4.so
  • Linux文件属性 -- 文件大小
  • Suno Api V4模型无水印开发「续写」 —— 「Suno Api系列」第4篇
  • 自动图像标注可体验
  • day24文件操作--标准IO
  • 前端项目发布后打开报错Uncaught SyntaxError: Unexpected token ‘<‘ (at chunk-vendors)
  • 微信小程序实现画板画布自由绘制、选择画笔粗细及颜色、记录撤回、画板板擦、清空、写字板、导出绘图、canvas,开箱即用
  • [创业之路-199]:《华为战略管理法-DSTE实战体系》- 3 - 价值转移理论与利润区理论
  • 基于Spring Boot的校园车辆管理系统
  • 鸿蒙NEXT游戏|Cocos参展2024华为开发者年度盛典
  • 【时时三省】(C语言基础)通讯录1
  • 理解支持向量机