1. 启动代码
1.1 功能:ARM处理器初始化
- 硬件初始化
- 程序代码的搬移
- 程序为C,硬件无法识别,须初始化程序运行环境
1.2 代码实现流程步骤
-
建立异常中断向量表
- 硬件固有的向量表,硬件实现,简单跳转
- 软件设定的向量表,进一步确定中断源
初始化各模式的堆栈
-
初始化硬件
- 关闭看门狗
- 屏蔽所有中断
- 初始化pll和系统时钟
- 初始化存储系统(SDRAM...)
- 对存储器控制器的初始化
- 即是对13个寄存器的初始化
- 与存储器控制器相关
- 设定外部数据总线相关参数
初始化应用程序执行环境
将代码和数据全部复制到SDRAM中-
跳转到主程序
- 方法一:b Main
- 方法二:调用标准C库函数__main()
1.3 相应外部中断的pro执行流程
- 切换模式
- 处理器执行完当前指令
- 将当前cpsr保存到IRQ模式下spsr上
- PC-4存放到IRQ模式下的R14上
- 硬件强制将PC指向中断向量表0x18处
- b HandlerIRQ
- 执行HandlerIRQ,获取IsrIRQ地址
- 跳到该地址2次查表,找具体中断服务函数地址
- 跳到中断服务程序执行
- 执行中断,返回
2. ARM可执行程序的映像文件
- 文件结构
- ZI: 未初始化的数据段
- RW: 可读/写数据段
- RO: 代码,只读数据段
- 域
- 加载域
- 运行域
3. Nand/Nor
3.1 Nand:
- 对应PC硬盘,容量大,断电数据不丢失
- 无法直接寻址
- 须有控制器控制
3.2 Nor:
- 容量小,断电数据不丢失
与SDRAM的区别 - 可直接寻址
- 用于执行小程序
3.3 启动方式:
- nor启动
- 上电后直接执行nor中程序
- 执行一小段后,将程序搬移到SDRAM中
- nand启动
- 上电后,将nand前4k数据复制到Stepping Stone
- 执行SStone中的程序
该程序中会实现将所有程序从搬到SDRAM中 - 跳到SDRAM执行
4、系统时钟
4.1 S3C2440处理器有关时钟
- Fin: 外部晶振频率
- FCLK用于CPU核
- HCLK
- 用于AHB总线互连的设备上
- AHP上的外设
- 存储器控制器
- LCD控制器
- 中断控制器
- PCLK
- 用于APB总线互连的低速设备上
- ADC/UART/GPIO/RTC/IIC/SPI
4.2 锁相环(MPLL、UPLL):实现倍频
4.3 相关控制寄存器
MPLLCON: 控制FCLK和Fin的比例关系
CLKDIVN: 控制FCLK、HCLK、PCLK比例关系
4.4 系统时钟初始化流程
- 刚上电,FCLK=Fin
- 复位信号nRESET恢复高电平,开始生成时钟频率
- 锁相环捕获,需要一定时间(LockTime)
- 锁相环输出新频率值
5、中断
5.1 定义
ARM处理器与各类外部设备进行通信的方式之一
5.2 中断类型
- 硬中断: 硬件设备出发的中断
- 软中断:
- 软件触发
- 具体是由某段程序代码触发的
- 该函数需加swi关键字
5.3 相关寄存器
- 中断寄存器
- SRCPND
- SUBSRCPND
- 中断屏蔽寄存器
- INTMSK
- INTSUBMSK
- INTOFFSET
- 中断模式寄存器
- INTMODE
- 中断优先级寄存器
5.4 中断处理流程
-
中断源将中断请求发送给中断控制器
- 中断产生,SUBSRCPND相应位置1
- 如果INTSUBMSK不对相应位进行屏蔽,SRCPND也置一
中断控制器将最需要处理的中断请求发送给CPU
-
cpu保存现场,切换工作模式(IRQ),响应中断
- 非独立寄存器放该模式下的堆栈
- 将该模式下的CPSR保存到即将进入的模式的SPSR中
- ???将pc减4存进R14
* R14=PC-4
* 减4的原因: 要返回发生中断指令的下一条指令处执行 - PC值设为0X00000018,中断向量表中IRQ的入口地址
调用中断处理程序,识别具体中断源,并进行处理
从中断处理程序中返回,恢复现场,接着执行
5.5 清除中断
- 对中断寄存器清除中断,与其他寄存器不同
- 写1清除中断标志,清除之后相应位值为0
5.6 相关要点
- 切换cpu工作模式时,非独立的寄存器值需要入堆栈
- 为什么FIQ比IRQ中断响应速度快?
FIQ独立寄存器数多于IRQ,独立寄存器不需入栈保存
6 存储器控制器
6.1 用途:提供CPU访问外部设备所需的信号
6.2 地址空间:128MB/BANK、8个BANK,总寻址空间1GB
- s3c2440的cpu具有32位地址、数据总线
- 但地址线只引出27根,即最大寻址空间128M
- 每个128m作为一个BANK,引出8跟片选信号nGCSx,实现1G
- 理论物理地址空间可达4g
- 除去1G外设空间
- cpu内部使用的特殊功能寄存器地址空间
6.3 SDRAM
- 同步动态随机存取内存
- 内部结构: 存储阵列,由行、列、逻辑存储体组成
6.3.1 工作原理:
- 读操作需控制线、地址线配合发出一系列命令来完成
- 发出L-BANK激活命令,锁存相应L-BANK地址
- 指定行、列,找到所需单元格