S3C2410A复位后执行的第一条指令存放首地址是什么?

发布于2022-01-13 03:53:29
1个回答
admin
网友回答2022-01-13
下面是我个人的一点认知,希望对你有帮助。1、从nor flash启动则存在地址0x00000000,也就是说要用FLASH做程序启动,FLASH必须放BANK0,且地址从0x0开始,你可以直接在nor flash 中运行程序,也可把程序用自己写在启动代码拷入SDRAM运行。2、若从NAND FLASH启动,则存放在NAND FLASH的开始区域,上电后系统会硬拷贝到内部的4KBRAM运行。下面是我写的一个直接从nor启动的程序代码:只有init.s与led.c两个文件,我调试过,运行正常ADS环境参数设置中把:RO-BASE设为0x00000000,RW-BASE设为0x30000000(根据具体硬件来定)image entry point 设为:0x00000000,设置好的合令为:-info totals -entry 0x00000000 -ro-base 0x00000000 -map -symbols -rw-base 0x31000000 -first init.o(Init) -xrefinit.s文件内容: AREA Init,CODE,READONLY ;该伪指令定义了一个代码段,段名为Init,属性只读 ENTRY ;程序的入口点标识ResetEntry ldr sp,=0x31000000 ;定义堆栈指针(根据具体硬件来定) IMPORT Main ;声明主函数Main BL Main ;调用主函数 END ;程序结束符 led.C代码:/*led.c*/ /*用GPB5~GPB8控制四个发光二极管闪烁*/#define GPBCON (*(volatile unsigned *)0x56000010) //Port B control#define GPBDAT (*(volatile unsigned *)0x56000014) //Port B data#define GPBUP (*(volatile unsigned *)0x56000018) //Pull-up control B void Main(void) { int i; GPBCON &= ~((0x3

回到
顶部