共2条
1/1 1 跳转至页
FLASH,SDRAM 从FLASH把程序拷贝到SDRAM
问
大家好!
我用的三星的S3C44B0X 我烧写了FLASH 但是在程序当中我要对FLASH进行操作。所以我想做一段程序,把在FLASH中烧写的所有程序在SDRAM中运行,我觉得这样不仅运行速度快了,而且不会造成在对FLASH操作过程中的冲突。
我现在主要的麻烦是:不知道该怎么下手做?
我初步认为:本来在FLASH 中烧写的程序首先是 进行存储器设置,和其它设置。然后程序跳转到中程序MAIN,我认为应该在主程序刚一开始就执行,把FLASH中除了初始化程序外所有的程序都复制到SDRAM 然后使程序跳转到SDRAM 中开始执行,当然要考虑代码量,给SDRAM 留出足够的堆栈,数据交换空间。
请哪位能给我指点一下,提供点思路,要是有例子让我参考一下就更好了。 答 1: 顶一下顶一下 答 2: 看u-boot代码 答 3: 参考 at91rm9200的loaderextern void AT91F_DBGU_Printk(char *);
extern char _stext,_etext,_sdata,_edata;
#define BOOT_VERSION "boot 1.01"
#define SRC 0x10020000
#define DST 0x21f00000
#define LEN 0x020000
void boot() {
int i;
char* ptr1=(char*)DST;
char* ptr2=(char*)SRC;
AT91F_DBGU_Printk ("\n\n\r"BOOT_VERSION" (" __DATE__ " - " __TIME__ ")\n\r");
AT91F_DBGU_Printk("\n\rCopying image...\n\n\r");
for(i=0; i<LEN; i++)
*ptr1++=*ptr2++;
asm("mov pc,%0" : : "r" (DST));
};
void recover(char* s) {
for(;;);
}; 答 4: 我的看法 S3C44B0X我毕设的时候玩过,不过没玩好.你说的不就是从计算机中把程序下载到SDRAM里吗?
只要在计算机上设置好下载到SDRAM的地址就可以了吧,那时我调试的时候,导师就是叫我这么做的. 答 5: 偶是在跳到MAIN之前执行程序COPY。 答 6: 各位都说的有各的道理我先弄弄先品 那是用仿真器 把程序全部下载到SDRAM 的.我说的是不用仿真器.要是没有COPY 到SDRAM 中的程序.下载的代码还是存储在FLASH当中运行的. 答 7: 参考以下以下一段代码这是philips的LPC2000系列ARM启动代码的一部分,实现的就是从FLASH中把数据区搬移到SRAM中。
.extern Image_RO_Limit /* End of ROM code (=start of ROM data) */
.extern Image_RW_Base /* Base of RAM to initialise */
.extern Image_ZI_Base /* Base and limit of area */
.extern Image_ZI_Limit /* to zero initialise */
ldr r0, =Image_RO_Limit /* Get pointer to ROM data */
ldr r1, =Image_RW_Base /* and RAM copy */
ldr r3, =Image_ZI_Base /* Zero init base => top of initialised data */
cmp r0, r1 /* Check that they are different */
beq NoRW
LoopRw: cmp r1, r3 /* Copy init data */
ldrcc r2, [r0], #4
strcc r2, [r1], #4
bcc LoopRw
NoRW: ldr r1, =Image_ZI_Limit /* Top of zero init segment */
mov r2, #0
LoopZI: cmp r3, r1 /* Zero init */
strcc r2, [r3], #4
bcc LoopZI 答 8: .u-boot-1.1.4/cpu/s3c44b0/start.S
被改烂了代码.
我用的三星的S3C44B0X 我烧写了FLASH 但是在程序当中我要对FLASH进行操作。所以我想做一段程序,把在FLASH中烧写的所有程序在SDRAM中运行,我觉得这样不仅运行速度快了,而且不会造成在对FLASH操作过程中的冲突。
我现在主要的麻烦是:不知道该怎么下手做?
我初步认为:本来在FLASH 中烧写的程序首先是 进行存储器设置,和其它设置。然后程序跳转到中程序MAIN,我认为应该在主程序刚一开始就执行,把FLASH中除了初始化程序外所有的程序都复制到SDRAM 然后使程序跳转到SDRAM 中开始执行,当然要考虑代码量,给SDRAM 留出足够的堆栈,数据交换空间。
请哪位能给我指点一下,提供点思路,要是有例子让我参考一下就更好了。 答 1: 顶一下顶一下 答 2: 看u-boot代码 答 3: 参考 at91rm9200的loaderextern void AT91F_DBGU_Printk(char *);
extern char _stext,_etext,_sdata,_edata;
#define BOOT_VERSION "boot 1.01"
#define SRC 0x10020000
#define DST 0x21f00000
#define LEN 0x020000
void boot() {
int i;
char* ptr1=(char*)DST;
char* ptr2=(char*)SRC;
AT91F_DBGU_Printk ("\n\n\r"BOOT_VERSION" (" __DATE__ " - " __TIME__ ")\n\r");
AT91F_DBGU_Printk("\n\rCopying image...\n\n\r");
for(i=0; i<LEN; i++)
*ptr1++=*ptr2++;
asm("mov pc,%0" : : "r" (DST));
};
void recover(char* s) {
for(;;);
}; 答 4: 我的看法 S3C44B0X我毕设的时候玩过,不过没玩好.你说的不就是从计算机中把程序下载到SDRAM里吗?
只要在计算机上设置好下载到SDRAM的地址就可以了吧,那时我调试的时候,导师就是叫我这么做的. 答 5: 偶是在跳到MAIN之前执行程序COPY。 答 6: 各位都说的有各的道理我先弄弄先品 那是用仿真器 把程序全部下载到SDRAM 的.我说的是不用仿真器.要是没有COPY 到SDRAM 中的程序.下载的代码还是存储在FLASH当中运行的. 答 7: 参考以下以下一段代码这是philips的LPC2000系列ARM启动代码的一部分,实现的就是从FLASH中把数据区搬移到SRAM中。
.extern Image_RO_Limit /* End of ROM code (=start of ROM data) */
.extern Image_RW_Base /* Base of RAM to initialise */
.extern Image_ZI_Base /* Base and limit of area */
.extern Image_ZI_Limit /* to zero initialise */
ldr r0, =Image_RO_Limit /* Get pointer to ROM data */
ldr r1, =Image_RW_Base /* and RAM copy */
ldr r3, =Image_ZI_Base /* Zero init base => top of initialised data */
cmp r0, r1 /* Check that they are different */
beq NoRW
LoopRw: cmp r1, r3 /* Copy init data */
ldrcc r2, [r0], #4
strcc r2, [r1], #4
bcc LoopRw
NoRW: ldr r1, =Image_ZI_Limit /* Top of zero init segment */
mov r2, #0
LoopZI: cmp r3, r1 /* Zero init */
strcc r2, [r3], #4
bcc LoopZI 答 8: .u-boot-1.1.4/cpu/s3c44b0/start.S
被改烂了代码.
共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分 |