求救LPC1788 emwin 移植 为什么 运行到 GUI_Init(); 卡死
本帖最后由 stm8s 于 2014-1-22 13:02 编辑网上找了一个现成的貌似英蓓特LPC1788emwin 无OS 代码 仿真时 为什么 运行到 GUI_Init(); 就卡死
先谢
194莫元 已是全部家当 估计是你的SDRAM配置不对,导致GUI内存管理出问题了,你看看你的SDRAM配置,你板上的SDRAM是32bit的吗? nongxiaoming 发表于 2014-1-24 18:14
估计是你的SDRAM配置不对,导致GUI内存管理出问题了,你看看你的SDRAM配置,你板上的SDRAM是32bit的吗? ...
搭车问个问题,LPC1788使用两片16bit的SDRAM K4S561632组成64MB 32bit后,程序从使用一片32MB 32bit SDRAM K4M563233的代码修改的话,是不是只要把SDRAM_SIZE改为0x04000000就行了?其他参数都不用修改吧? 本帖最后由 stm8s 于 2014-1-26 15:50 编辑
nongxiaoming 发表于 2014-1-24 18:14
估计是你的SDRAM配置不对,导致GUI内存管理出问题了,你看看你的SDRAM配置,你板上的SDRAM是32bit的吗? ...
UCGUI 牛人 nongxiaoming终于出现了,SDRAM是 K4S561632 这是我的开发板电路图。{:3_48:} shandian 发表于 2014-1-24 18:25
搭车问个问题,LPC1788使用两片16bit的SDRAM K4S561632组成64MB 32bit后,程序从使用一片32MB 32bit SDRA ...
不是的呢,还有几个参数配置不同,具体看数据手册上有讲,官方历程里面也有的,你可以看看,我之前提供的工程中也有写,上面直接配置一个宏定义就可以打开是16bit还是32bit了。区别你自己去看看就好。 本帖最后由 shandian 于 2014-1-24 21:18 编辑
nongxiaoming 发表于 2014-1-24 21:08
不是的呢,还有几个参数配置不同,具体看数据手册上有讲,官方历程里面也有的,你可以看看,我之前提供的 ...
总线位宽是一样的,都是32bit。只是由一片32bit位宽32MB的SDRAM,变为由两片16bit位宽SDRAM组成的32bit 64MB,只要修改长度就够了吧?总线宽度没变的。
我只修改了SDRAM_SIZE后,运行SDRAM测试是通过了。但是在memory窗口查看内存,发现超出SDRAM地址范围一点的区域,0xA4000000之后的内容也变成了内存测试时使用到的数据。开始我以为是调试器内存缓冲问题引起的。但是在J-link设置里面关闭了内存和代码缓冲功能,还是和之前一样。所以我怀疑是不是哪里不对。 stm8s 发表于 2014-1-24 18:33
UCGUI 牛人 nongxiaoming终于出现了,SDRAM是 K4S561632 这是我的开发板电路图。...
ucgui牛人谈不上,这些都是之前在学校有时间玩玩而已,现在工作都没有用这个,都是用的RTGUI,希望有一天RTGUI也能像emwin这么优秀。你这个SDRAM是三星的,你那个工程里面用的是海力士的,里面的配置不懂你有没有改,SDRAM的参数有些可能不一致,具体要看你使用的SDRAM的数据手册。有些也是相兼容的。还有看你的工程里面,应该是从emwin官方给的工程改的,链接脚本里面有RW_RAM1 0xA0000000 UNINIT 0x02000000{; RW data
* (VRAM, GUI_RAM, GUIDEMO_STACK, FS_RAM, IP_RAM, USB_RAM)
}
3上定义的这堆东西已经不再使用了,你可以看看我之前提供的工程,我之前提供的一个16bit SDRAM的工程应该可以在你这个板子上跑起的,我那时候用的sdram也是K4S561632。 shandian 发表于 2014-1-24 21:11
总线位宽是一样的,都是32bit。只是由一片32bit位宽32MB的SDRAM,变为由两片16bit位宽SDRAM组成的32bit 6 ...
这个是可以的,我以为你是16bit的换成两片组成32bit,搞错了。对于你查看0xA4000000以外的地址数据来说是没有意义的。也就是说0xA4000001地址的数据其实等于0xA0000001的数据。为什么会这样呢?因为实际上MCU发出0xA4000001地址的时候,地址线已经超出你sdram的数据,你的SDRAM收到的是低位的地址,最高位丢失。也就是你的SDRAM收到的是0x01,那个0x4000001最高位已经丢掉,但你的MCU还说认为是这个地址的数据,读取数据的时候读出的数据其实是0x01处的数据。 nongxiaoming 发表于 2014-1-24 21:29
这个是可以的,我以为你是16bit的换成两片组成32bit,搞错了。对于你查看0xA4000000以外的地址数据来说是 ...
恩,好。感谢~
页:
[1]