[quote=引用 22 楼 knate 的回复:] 怎么就结贴了. 还以为还会聊下去呢!\ 问题已经解决了? 怎么没看出来
怎么就结贴了. 还以为还会聊下去呢!\ 问题已经解决了? 怎么没看出来
看着看着怎么感觉我俩说的不是同一个事? 算了,先说下我的测试结果吧. keil4 9.50,MDK4.54应该是这个,由于手上安装文件有好几个,只能保证是比较新的,芯片STM32比你的低端. 我的第二个hex文件是通过IAP写进去的,相信两个分散加载合并后一起写进去情况也是一致的,芯片没保护. (对比过一两次,两者的文件基本一样,后面的省事没管了) 考虑实用性,编译都是和平时相同的编译优化条件. 如果调用的函数有全局变量,基本大部分都会有问题,不知道是不是倒霉的原因. 静态变量情况好些还是会出现,原因不明. 局部变量多过也会偶尔出问题.如果只有一两个局部变量的话,似乎都没有问题. 另外如果由于调用过深或者递归造成堆栈溢出这个错误,没考虑进去,这个和本贴无关. 动态内存申请也没测试.估计问题更大. 分析: 全局变量基本确定是由于两工程内存分配不一致造成的. 静态变量未知, 局部变量过多原因未明,可能是栈哪里出问题了,这个还没细查.
看了半天,发现是创建一个静态库的问题.
今天上来早了,随便写写吧. [quote=引用 17 楼 schlafenhamster 的回复:] 看了半天,发现是创建一个静态库的问题.
code型数据可能好处理些. 这个跟代码差不多. 如果是内存数据,就悬了, 估计只能统一指定位置. 要不然,这些数据很可能关联到栈信息或者其他优化处理了,MCU里资源稀缺不同工程间的资源利用很容易 冲突或者相互覆盖. 如果是栈信息或者其他关键数据给破坏掉了. 呵呵,等着菊花残吧!. PS: 不知道你是怎么处理这个不调用函数这个警告的,这个函数很可能直接就在编译阶段会直接优化掉的 另外很好奇你用的是什么MCU,
重新规划这三个工程,把代码公共的部分放到一个工程中,另外两个声明函数指针,通过指针来访问公用的函数。
坐下来听听,好像很高级的样子
27,375
社区成员
28,770
社区内容
加载中
试试用AI创作助手写篇文章吧