共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网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |