第7课系统时钟,串口UART实验 对应课本第10章第11章
1. S3C2440系统时钟
异常
2. 串口操作方法
3. 源码分析
PC机的CPU可以跑1G,2G内存可能只能跑133M
同样道理开发板CPU最高能跑400M ------------àFCLK
SDRM:100M~133M------------àHCLK
UART与定时器 50M------------àPCLK
2440 soc system on chip
因为一块chip上集成cpu, 存储管理器,uart, i2c等偏上外设。
通过设置PLL(锁相环),把晶振12M变成400M
400M再通过某个寄存器分频100M,50M等等满足不同的频率。
MPLL 的M指的是Main
PLL需要时间设定不是瞬间完成的,所以有锁定时间
关看门狗后初始化时钟 clock_init
MPLL是指主时钟
UPLL指的是USB时钟
时钟初始化函数
MPLLCON就是负责记载分频信息的寄存器。
芯片手册上记载着分频的公式
PC上怎么用串口
对应到开发板
把引脚设为UART模式
什么是FIFO (First-In-First-Out )
如果使用FIFO,比如接收器使用FIFO,接收到得数据存储到Buffer得最低端,这样提取数据时就会先提取先接收到得数据。
FIFO寄存去控制buffer里有多少个数据时发生中断。
本节程序的连接脚本
位置无关码
位置无关码
举个例子,以下是reset的反汇编
bl disable_watch_dog的PC值是3000 0004
bl 就属于一种位置无关码,新的PC值等于现PC值+8(ARM架构决定)+偏移。由此计算出偏移是3000 000C 与 3000 0034的差0x28
翻阅 S3C2440A的使用手册可以看出机器码格式
对应的机器码是
eb00 000a,1110 101 1(1代表bl,0代表b),offset代表偏移量,
offset要左移两位才是真正的地址a左移两位编程0x28。
位置相关码
把程序改成位置相关的:
ldr pc, =disable_watch_dog
pc的地址等于disable_watch_dog的编译地址,但是这个地址SDRAM还没有初始化,随意程序会崩溃。
怎么写位置无关码:
把程序copy到SDRAM之后就没有限制了不需要用位置无关码