chenyuanjiyi 发表于 2021-5-24 16:27

使用AT芯片,移植emwin碰到的问题


之前的显存是放在CCM中的,然后用这个AT的芯片,就打算将其放在RAM的后64k的位置(该芯片通过例程,配置为224K),然后我定义了一个大数组menu[],里面包含了界面的信息,但是当我调用到这个大数组的时候,使用keil的调试,要点三次‘运行’才会跑起来,并且下载到芯片上,上电没反应,只有调试才有现象?

请问这是什么原因哦?
这是未调用到大数组menu[]时,关于flash和RAM的大小
这是调用到大数组menu[]时,关于flash和RAM的大小

chenyuanjiyi 发表于 2021-5-24 16:42

AT有关于emwin的例程吗?或者关于RAM的应用例程?

muyichuan2012 发表于 2021-5-24 16:55

这个应该是emwin移植的问题,将menu[]逐渐调小再试试呢?

chenyuanjiyi 发表于 2021-5-24 17:03

本帖最后由 chenyuanjiyi 于 2021-5-24 17:16 编辑

muyichuan2012 发表于 2021-5-24 16:55
这个应该是emwin移植的问题,将menu[]逐渐调小再试试呢?
刚试了下 现象还是一样的,要调试的时候才会有现象就剩其中两个也是一样的,ST的情况下没碰到过这个现象,最大的区别也就定义显存的的方式不一样:
#ifdef AT32F403AVGT7
static U32 aMemory __attribute__((at(0x20028000+1024*58)));//0x20028800
#else
static U32 aMemory __attribute__((at(CCMDATARAM_BASE+1024*58)));
#endif

muyichuan2012 发表于 2021-5-24 17:13

堆栈配置调整没

chenyuanjiyi 发表于 2021-5-24 17:17

muyichuan2012 发表于 2021-5-24 17:13
堆栈配置调整没

按照之前的代码配置 都改成了400

chenyuanjiyi 发表于 2021-5-24 17:21

muyichuan2012 发表于 2021-5-24 17:13
堆栈配置调整没

你好 请问你们这边有使用到emwin的例程吗? 你们显存地址是怎么定义的呢?

chenyuanjiyi 发表于 2021-5-26 15:41

将keil 的编译器优化的等级 从 0 改成 3 (-O0:最少的优化    -O3:最大程度优化),发现就没有调试要点三次才运行和下载进去没反应的问题了
优化等级为-O0:Program Size: Code=88700   RO-data=147252 RW-data=6304 ZI-data=98864

优化等级为-O3:Program Size: Code=103244 RO-data=194008 RW-data=6840 ZI-data=106936
现在只是初步解决了现象,但是根本原因不清楚,请问有什么思路可以找到根本问题吗?

编译器优化的是具体有是什么呢?
百度查了下编译器优化的:https://www.cnblogs.com/w-smile/p/10012749.html
对于如何解决这个根本性问题 没找到有啥帮助的

请大佬指点

hejun96 发表于 2021-5-27 10:55

chenyuanjiyi 发表于 2021-5-26 15:41
将keil 的编译器优化的等级 从 0 改成 3 (-O0:最少的优化    -O3:最大程度优化),发现就没有调试要点三 ...

https://bbs.21ic.com/icview-3134924-1-1.html 我的就是AT32F403A+emwin下的

Stack_Size      EQU   0x0000800;///0x00000400

栈空间要改成0x800

chenyuanjiyi 发表于 2021-5-27 11:56

hejun96 发表于 2021-5-27 10:55
https://bbs.21ic.com/icview-3134924-1-1.html 我的就是AT32F403A+emwin下的

Stack_Size      EQU      ...

要改这么大的吗?之前的ST芯片就是用的400完全够用了
页: [1]
查看完整版本: 使用AT芯片,移植emwin碰到的问题