使用CW32的RAM修改自定义协议 本案例仅仅是简单方案,可供调试,不推荐在量产程序上。因为安全性较低,自由度较高。
该方法原理: MCU中的RAM可分为大概三块(与代码相关)栈 堆 静态区。
1.栈是代码运行中,针对临时变量开辟的临时空间。
2.堆是代码中主动开辟的空间,但是往往不会使用,容易导致内存泄漏与内存碎片化。
3.静态区是用于存放全局变量,静态变量的地方。
该方案就是在得知某(全局)变量的地址,通过串口或其他方式访问RAM
效果图:通过串口可以读取全局变量数据并修改全局变量数据。


在定时器中定义一个全局变量为 gTimTick 并会自加,周期在串口中打印数据。

定义为全局变量,可以map 中找到该变量的地址。

然后通过自定义协议,在仅仅知道ram地址的情况下可对该数据读写。
!!!因为非常自由,所以在实际调试中应添加诸多措施进行限制。包括且不限于CRC校验,获取安全权限,访问地址的限制,读写权限的限制
将两部分简易代码发出,仅供学习。


全部0条评论
快来发表一下你的评论吧 !