Chinaunix首页 | 论坛 | 博客
  • 博客访问: 240940
  • 博文数量: 66
  • 博客积分: 290
  • 博客等级: 入伍新兵
  • 技术积分: 342
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-27 15:44
文章分类

全部博文(66)

文章存档

2013年(19)

2012年(47)

分类:

2012-10-16 13:52:08

 
本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接,严禁用于任何商业用途。
作者:fireaxe_hq@hotmail.com
博客:fireaxe.blog.chinaunix.net 
 
Chapter 7:uboot中的设备初始化
1 cpu_init,         /* basic cpu dependent setup */

如果需要,会再设置一次中断栈地址。


2 board_init,            /* basic board dependent setup */

硬件平台相关的初始化,包括时钟、IO、Cache等的初始化。这部分在移植是要重点关注,需要根据芯片手册进行设置。

时钟主要是设置PLL、HCLK、PCLK等寄存器的值,可以通过第五章的时钟设置完成相关设置。


3 interrupt_init,              /* set up exceptions */

这里也是在设置timer,不知道为何叫中断初始化


4 env_init,         /* initialize environment */


5 init_baudrate,             /* initialze baudrate settings */

初始化波特率,此处只是把波特率存储到全局变量中。


6 serial_init,             /* serial communications setup */

 串口通过下面的代码进行设置:

/* value is calculated so : (int)(PCLK/16./baudrate) -1 */

reg = get_PCLK() / (16 * gd->baudrate) - 1;

/* FIFO enable, Tx/Rx FIFO clear */

uart->UFCON = 0x07;

uart->UMCON = 0x0;

/* Normal,No parity,1 stop,8 bit */

uart->ULCON = 0x3;

/* tx=level,rx=edge,disable timeout int.,enable rx error int.,

* normal,interrupt or polling

*/

uart->UCON = 0x245;

uart->UBRDIV = reg;

 

gd->baudrate是在init_baudrate中设置的,其实是宏CONFIG_BAUDRATE。如果想修改串口baudrate,可以修改该宏值。


7 console_init_f,           /* stage 1 init of console */

初始化控制台。


8 dram_init,             /* configure available RAM banks */

设置dram的起始地址与长度。

本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接,严禁用于任何商业用途。
作者:fireaxe_hq@hotmail.com
博客:fireaxe.blog.chinaunix.net 
阅读(799) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~