共2条
1/1 1 跳转至页
OS,2440,ram 不用OS调试2440,请教代码帮运到ram和一些怪问题
问
买了个s3c2440开发板,没有用linux。我们打算把他当超级单片机用。移植了我们公司以前买的商业tcp、ip协议。
现在有几个问题,一个就是把代码加载到sdram中去运行的问题。还有一个就是读写nor flash的问题,这两天搞的头晕:
1。代码加载问题的疑惑:39vf160:0x0000_0000。 SDRAM:0X3000_0000. 我的想法是和bootLoader一样,把2M byte的falsh内容统统给mov到sdram,然后把sdrem remap到0x0000_0000的地址。这样中断服务程序也在sdram。速度应该很快,同时也可以读写39vf160,这样可以实现对自己程序flash 的程序升级,通过tcp/ip。我看了twentyone大侠的那个4510的文章,由于twentyone大侠4510地址分配是0~2M,2M~18M连续地址。我可以理解remap后程序可以继续在sdram立顺序运行,可是我这个应用flash地址和sdram地址差几百M,用这个方法可以吗? 比方我把ro设定为0x00000000,
rw设定为0x3000_0000+2M的地址。这样sdram中的前面2M是程序,后面是变量(ZI+RW),但是remap后,sdram地址变成0x0000_0000开始了,长度是32M ,变量(ZI+RW)可以自然的从0x3000_0000+2M变成0x0000_0000+2M的地址吗?
我想不明白,请高手指点。
2。我测试了一个读写flash的程序,在关闭mmu的情况下,可以正常的erase和写,但是erase_block后,居然我原来设定的2个定时器不能正常工作了,我查来查去。在erase_block的程序中有个
CMD_ADDR0 = 0xaaaa;
CMD_ADDR1 = 0x5555;
CMD_ADDR0 = 0x8080;
CMD_ADDR0 = 0xaaaa;
CMD_ADDR1 = 0x5555;
*(volatile U16 *)sector = 0x3030;
DelayMs(25);
这个几句,把 *(volatile U16 *)sector = 0x3030;这个语句屏蔽居然就不会影响到我的定时器,尔一开上就不行。真是奇怪。
小弟是ARM菜鸟,问题就比较菜,希望大侠不用见怪。
答 1: 这里ARM论坛太冷了啊,没有人回答问题 答 2: 楼主买的什么tcp?多少米?功能如何? 答 3: 万把块钱吧,速度 不错 答 4: 方法可以不设rw地址,在程序reset处开始未进入c代码时就复制及remap,那样ro、rw就一块都过去了,然后初始化zi。 答 5: 2440没有remap的功能,不用想了 答 6: remap 是 philps的ARM7上的功能三星的好象没有吧
不用remap 就把中断向量设置好就可以,或用mmu应该也可以。 答 7: 其实很简单,和44b0的方法差不多。现在搞定了
现在有几个问题,一个就是把代码加载到sdram中去运行的问题。还有一个就是读写nor flash的问题,这两天搞的头晕:
1。代码加载问题的疑惑:39vf160:0x0000_0000。 SDRAM:0X3000_0000. 我的想法是和bootLoader一样,把2M byte的falsh内容统统给mov到sdram,然后把sdrem remap到0x0000_0000的地址。这样中断服务程序也在sdram。速度应该很快,同时也可以读写39vf160,这样可以实现对自己程序flash 的程序升级,通过tcp/ip。我看了twentyone大侠的那个4510的文章,由于twentyone大侠4510地址分配是0~2M,2M~18M连续地址。我可以理解remap后程序可以继续在sdram立顺序运行,可是我这个应用flash地址和sdram地址差几百M,用这个方法可以吗? 比方我把ro设定为0x00000000,
rw设定为0x3000_0000+2M的地址。这样sdram中的前面2M是程序,后面是变量(ZI+RW),但是remap后,sdram地址变成0x0000_0000开始了,长度是32M ,变量(ZI+RW)可以自然的从0x3000_0000+2M变成0x0000_0000+2M的地址吗?
我想不明白,请高手指点。
2。我测试了一个读写flash的程序,在关闭mmu的情况下,可以正常的erase和写,但是erase_block后,居然我原来设定的2个定时器不能正常工作了,我查来查去。在erase_block的程序中有个
CMD_ADDR0 = 0xaaaa;
CMD_ADDR1 = 0x5555;
CMD_ADDR0 = 0x8080;
CMD_ADDR0 = 0xaaaa;
CMD_ADDR1 = 0x5555;
*(volatile U16 *)sector = 0x3030;
DelayMs(25);
这个几句,把 *(volatile U16 *)sector = 0x3030;这个语句屏蔽居然就不会影响到我的定时器,尔一开上就不行。真是奇怪。
小弟是ARM菜鸟,问题就比较菜,希望大侠不用见怪。
答 1: 这里ARM论坛太冷了啊,没有人回答问题 答 2: 楼主买的什么tcp?多少米?功能如何? 答 3: 万把块钱吧,速度 不错 答 4: 方法可以不设rw地址,在程序reset处开始未进入c代码时就复制及remap,那样ro、rw就一块都过去了,然后初始化zi。 答 5: 2440没有remap的功能,不用想了 答 6: remap 是 philps的ARM7上的功能三星的好象没有吧
不用remap 就把中断向量设置好就可以,或用mmu应该也可以。 答 7: 其实很简单,和44b0的方法差不多。现在搞定了
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |