注意从中体会
资料剪切一
设置完了“Language Settings”后接下来就是“Linker”选项了,在该选项里面有和硬件紧密相关的设置,首先进入“ARM Linker”子选项,在该子选项内需要设置入口地址(entry)、RO地址、RW地址。
首先设置R0/RW地址,RO表示Read Only,RW表示Read Write,RO栏默认是0x8000,需要根据实际硬件进行更改,一般为FLASH地址,RO也可以设置在SDRAM中,启动代码中包含COPY的部分,会将代码移动到SDRAM中运行,这对44B0特别适合,因为SDRAM很大,而且对速度的提升也很明显。entry point必须同RO一致,以提供连接器定位信息
本44B0板的FLASH地址即为0x00000000;RW栏默认为空,一般为SDRAM地址,本44B0板的地址即为0x0C000000(RO也可以设置在SDRAM中但entry point必须同RO一致)。
资料剪切二
RO Base:用来设置程序代码存放的起始地址。 RW Base:用来设置程序数据存放的起始地址。
这两项的地址均由硬件决定,并应该在SDRAM的地址范围内。本实验箱使用的是64M SDRAM,其地址范围是0x30000000—0x33FFFFFF,故采用首地址作为程序代码的存放的首地址,即在RO Base文本框中输入0x30000000, RW Base文本框用户自定义,只要保证在SDRAM地址空间内,并且是字对齐即可,这里我们可以输入0x31000000。
此处的设置也就是说在地址为0x30000000--0x31000000之间是只读区域,用来存放程序代码,从0x31000000开始用来存放程序数据。
本选项卡只对Image entry point进行设置,该项是程序代码的入口地址。如果程序在SDERAM中运行,针对本试验箱可选择的地址范围0x30000000--0x31000000。通常程序代码的入口地址与RO Base中程序代码的首地址相同,这里为0x30000000。其他默认即可。
资料剪切三
2. 设置程序入口地址
单击Options标签,在Image entry point一栏中设置程序的入口地址。程序的入口地址是指代码通过Multi-ICE仿真器下载到硬件板卡上的存储器之后,用户调试程序之前PC指针所指向的地址。一般将入口地址设置为中断向量表代码的起始地址。中断向量表部分代码被下载到片内RAM,所以入口地址设置为片内RAM的起始地址0x2000,0000,见图10。
资料剪切四
其中set_peri_port函数是必须要添加的,这样才能访问到s3c6410的外设空间。
setup_peri_port:
ldr r0,=0x70000013 @base addres:0x70000000,size:256MB
mcr p15,0,r0,c15,c2,4
mov pc,lr
把外设的基地址告诉CPU对于6410来说,内存(0x00000000~0x60000000),外设(0x70000000-0x7fffffff)