一、编写 s3c24x0 的 bootloader——介绍、看门狗及时钟设置
1.1 介绍
1.1.1 bootloader 的作用
bootloader 的终极功能就是为了启动内核。

- 从上面可以知道最简单的 uboot 编写的步骤:
- 初始化硬件:关看门狗、设置时钟、设置 SDRAM、初始化 nandflash
- 如果bootloadre 比较大,要把它重定位到 SDRAM
- 把内核从 nandflash 读到 SDRAM
- 设置内核启动参数
- 跳转执行内核
1.1.2 norflash 启动
norflash 可以像内存那样读,但是不能像内存那样写。

1.1.3 nandflash 启动

1.2 看门狗及时钟设置
1.2.1 看门狗设置
2440 必须在启动的时候关闭看门狗,不然就会隔一段时间重启芯片。
看门狗定时器控制(WTCON)寄存器允许用户使能或禁止看门狗定时器、从 4 个不同源选择时钟信号、使能或禁止中断和使能或禁止看门狗定时器输出。看门狗定时器是用于恢复 S3C2440 上电后若有故障重时新启动;如果不希望控制器重新启动,则应该禁止看门狗定时器。
如果用户希望使用看门狗定时器作为普通定时器,则应使能中断并且禁止看门狗定时器。

#define pWTCON 0x53000000 /** 看门狗定时器控制寄存器 */
/** 1. 关看门狗 */
ldr r0, =pWTCON
mov r1, #0x0
str r1, [r0]
1.2.2 时钟设置
S3C2440 中的时钟控制逻辑可以产生必须的时钟信号,包括 CPU 的 FCLK,AHB 总线外设的 HCLK 以及 APB 总线外设的 PCLK。S3C2440A 包含两个锁相环(PLL):一个提供给 FCLK、HCLK 和 PCLK,另一个专用于 USB 模块(48MHz)。、
时钟控制逻辑可以不使用 PLL 来减慢时钟,并且可以由软件连接或断开各外设模块的时钟,以降低功耗。
时钟源的选择与启动模式有关,引导启动时,时钟源的选择如下:

- FCLK,HCLK 和 PCLK
- FCLK 是提供给 ARM920T 的时钟。
- HCLK 是提供给用于 ARM920T,存储器控制器,中断控制器,LCD 控制器,DMA 和 USB 主机模块的 AHB 总线的时钟。
- PCLK 是提供给用于外设如 WDT,IIS,I2C,PWM 定时器,MMC/SD 接口,ADC,UART,GPIO,RTC 和 SPI 的 APB 总线的时钟。
- S3C2440 支持对 FCLK、HCLK 和 PCLK 之间分频比例的选择。该比例由 CLKDIVN 控制寄存器中的 HDIVN 和 PDIVN 所决定。

对于 S3C2440,芯片手册有这一段需要注意的:

我们必须将 CPU 总线模式改变为 异步总线模式。
前面已经说明,S3C2440A 包含两个锁相环(PLL):一个提供给 FCLK、HCLK 和 PCLK,另一个专用于 USB 模块(48MHz)。
所以还必须要设置锁相环,来给 FCLK、HCLK 和 PCLK 来提供时钟源:

UPLL 是提供给 USB 使用的,我们需要设置 MPLL,对于 MPLLCON,可以对应芯片手册提供的表进行设置:

- input frequence:输入时钟源,外部 12M 的晶振,原理图设计的
- output Frequence:输出时钟源,也就是 MDIV,选择 400M,则 MDIV 值是 0x5c
1 #define CLKDIVN 0x4C000014 /** 时钟分频控制寄存器 */ 2 #define MPLLCON 0x4c000004 3 #define S3C2440_MPLL_400MHZ ((0x5c<<12)|(0x01<<4)|(0x01)) /** 400M 时钟源 */ 4 5 /** 3. 芯片手册上要求: 6 * 如果 HDIVN 非0, CPU 的总线模式应该从 fast bus mode 变为 asynchronous bus mode */ 7 mrc p15, 0, r1, c1, c0, 0 /* 读出控制寄存器 */ 8 orr r1, r1, #0xc0000000 /* 设置为 asynchronous bus mode */ 9 mcr p15, 0, r1, c1, c0, 0 /* 写入控制寄存器 */ 10 11 /** 4. 设置时钟频率 */ 12 ldr r0, =MPLLCON 13 ldr r1, =S3C2440_MPLL_400MHZ 14 str r1, [r0] 15 16 /** 5. 初始化 SDRAM */ 17 mov ip, lr /** 保存当前程序地址到 ip 寄存器 */ 18 bl sdram_init /** 执行 SDRAM 的初始化 */ 19 mov lr, ip

浙公网安备 33010602011771号