初级会员

- 积分
- 102
- 金钱
- 102
- 注册时间
- 2019-5-2
- 在线时间
- 43 小时
|
30金钱
本帖最后由 WGW123 于 2020-3-17 18:37 编辑
(C8T6移植过程中的内存溢出问题)
由于疫情原因,学校不开学,本人在淘宝上买了一块STM32F103C8T6的核心板来练习(想要自己做一个电子书阅读器从SD卡[spi通讯]里阅读数据,用OLED[i2c通讯]显示,并可以用键盘操作翻页等),在3月1日左右向板子里烧录了自己改编的OLED与键盘的相关程序,均可以运行。ps:OLED所移植的程序为中景园的i2c源码,键盘所移植程序为 正点原子 战舰板源码.
在昨天(3月13日)进行SD卡程序(正点原子ministm32 SD卡 spi源码)的调试,发现了一些问题:
1.由于SD卡源代码里夹杂了一些LCD的子程序,所以LCD的字库和OLED的字库发生重复,编译不通过 报错为:..\OBJ\OLED.axf: Error: L6200E: Symbol asc2_1206 multiply defined (by lcd.o
2.在翻贴后进行几次程序的修改,最后将字库定义从H文件移动到了C文件中,并把LCD库函数全部删除(手里只有OLED模块,所以根本用不到LCD),解决了上述的字库重复问题。但是,再次编译中发现了新的问题,芯片容量不够,编译报错为:..\OBJ\OLED.axf: Error: L6406E: No space in execution regions with .ANY selector matching malloc.o(.bss).
3.为了解决芯片容量不够的问题,在MDK中重新设置了Device中的芯片型号 修改为:stm32f103ZG,再次编译,编译通过。但是在烧录后,程序无法运行。
4.由于MDK所选择的芯片型号与手中实际操作的芯片型号不同,所以无法运行也在意料之中。最后我又将MDK Device中芯片型号改为C8T6并在C、C++选项中将优化等级从0级调至3级,再次
编译,出现了2.中同样的编译错误:..\OBJ\OLED.axf: Error: L6406E: No space in execution regions with .ANY selector matching malloc.o(.bss).
求万能的论坛大神们指导,有什么可行的途径可以使我此次移植程序成功(完成电子书阅读器的制作)。
|
-
实物照片
|