1、汇编:初始化 堆栈 SP指针 DDR 中断向量表等 。_start 程序的入口地址,完成C环境的搭建。
启动文件
startup_stm32f10x_hd.s
这个汇编文件就是完成
C
语言环境搭建的,当然还有一
些其他的处理,比如
中断向量表
等等。
2、用C完成我们业务层的代码。
startup_stm32f10x_hd.s 把 C 语言环境初始化完成以后 就会进入 C 语言环境。设置处理器进入 SVC 模式,在 6.2 小节的“Cortex-A 处理器运行模型”中 我们说过 Cortex-A 有九个运行模型,这里我们设置处理器运行在 SVC 模式下。处理器模式的 设置是通过修改 CPSR(程序状态)寄存器来完成的。
I.MX6U-ALPHA
开 发 板 上 的 DDR3 地 址 范 围 是 0X80000000~0XA0000000(512MB) 或 者
0X80000000~0X90000000(256MB)
,不管是
512MB
版本还是
256MB
版本的,其
DDR3
起始地
址都是
0X80000000
。由于
Cortex-A7
的堆栈是向下增长的,所以将
SP
指针设置
0X80200000
,
因此
SVC
模式的栈大小
0X80200000-0X80000000=0X200000=2MB
,
2MB 的栈空间已经很大了
, 如果做裸机开发的话绰绰有余。
用
SDRAM
或者
DDR
之前必须先初始化
SDRAM
或者
DDR。 DCD 数据包含了 DDR 配置
参数,
I.MX6U
内部的
Boot ROM
会读取
DCD
数据中的
DDR
配置参数然
后完成 DDR 初始化
的
。