这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 下载专区 » [原创]4510 bootloader的实现与分析 (附源代码)

共108条 9/11 |‹ 6 7 8 9 10 11 跳转至
菜鸟
2006-04-14 05:11:00     打赏
81楼
谢谢。

菜鸟
2006-04-15 04:37:00     打赏
82楼
PART7做的就是RW段的拷贝,到执行PART7的时候,SDRAM已经被MAP到地址0X0开始的地方去了,而且程序也已经运行在SDRAM里面.PART7做的只是将RW段拷贝到合适的位置去.

菜鸟
2006-04-20 06:28:00     打赏
83楼

我是从网上搜到一篇文章关于<<ARM映象文件及执行机理>>.他就是参考你的程序的.你的东东我还没有看.我用的是S3C44B0X,我是想把FLASH中的程序复制到SDRAM中运行.看你发的帖子应该是对上号了吧?

先咨询一下.

[em01]

菜鸟
2006-04-20 07:27:00     打赏
84楼

应该会有参考作用的.希望对你有帮助.


菜鸟
2006-04-20 23:53:00     打赏
85楼

谢谢楼主!

我想问一下为什么SYSCFG的地址为3FF0000,我查了一下手册,好象里面没有提到啊,

这是固定的吗?SYSCFG里的可指定的特殊寄存器基地址我也没有看明白到底怎么设置?

特殊寄存器是否就是指的SYSCFG ,ROMBAN0 等啊?


菜鸟
2006-04-21 00:21:00     打赏
86楼

4510的手册里有讲的,上电后,系统寄存器的基地址,默认等于0X03FF0000.


菜鸟
2006-04-24 18:04:00     打赏
87楼
在ADS里面,链接器定义了一些内部变量,可以用来定位各个段的位置(RO,RW,ZI).如果需要确切的知道某个变量的位置,你可以自己定义指针,然后自己分配一块内存试一试.

菜鸟
2006-06-05 00:23:00     打赏
88楼
CMP r1, r3 和CMP R3, R1应该是一样的.

菜鸟
2006-06-08 04:03:00     打赏
89楼
谢谢了

菜鸟
2006-06-20 23:59:00     打赏
90楼

多谢了先!

真是好文章,看了两天,终于理解了remap的过程,继续理解init.s中~~~~~~~

不过,我从网上下的4510bsp中的init.s是做完映射之后才进行RW段copy,并且也没有把RO段copy到SDRAM中去。

敢问twentyone

1、是否没有必要进行RO段的copy呢?

2、在我所看的这个init.s中,进行RW段copy的时候,RW段是否仍在flash中?(你提供的由于之前已经搬过一回,所以在ram中了)

再次表示感谢,请有时间帮忙解惑。

部分源代码如下:

SYNC_DRAM_CONFIGURATION
LDR r0, =0x3FF0000
LDR r1, =0x83FFFF90 ; SetValue = 0x83FFFF91
STR r1, [r0] ; Cache,WB disable
; Start_addr = 0x3FF00000

;ROM and RAM Configuration(Multiple Load and Store)
ADRL r0, SystemInitDataSDRAM
LDMIA r0, {r1-r12}
LDR r0, =0x3FF0000 + 0x3010 ; ROMCntr Offset : 0x3010
STMIA r0, {r1-r12}

;=============================
; Exception Vector Table Setup

;=====================================
; Initialise memory required by C code
;=====================================
IMPORT |Image$$RO$$Limit| ; End of ROM code (=start of RAM data)
IMPORT |Image$$RW$$Base| ; Base of RAM to initialise
IMPORT |Image$$ZI$$Base| ; Base and limit of area
IMPORT |Image$$ZI$$Limit| ; to zero initialise

LDR r0, =|Image$$RO$$Limit| ; Get pointer to RAM 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 %1
0 CMP r1, r3 ; Copy init data
LDRCC r2, [r0], #4
STRCC r2, [r1], #4
BCC %0
1 LDR r1, =|Image$$ZI$$Limit| ; Top of zero init segment
MOV r2, #0
2 CMP r3, r1 ; Zero init
STRCC r2, [r3], #4
BCC %2

[em06][em06][em06][em06]

共108条 9/11 |‹ 6 7 8 9 10 11 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]