CPU 的初始化(ARM & u-boot)
来源:互联网 发布:淘宝网纯棉免熨短裤 编辑:程序博客网 时间:2024/05/18 01:31
1. 设定 CPU 内部寄存器, 包括状态寄存器和SP等.
start_code:/* * set the cpu to SVC32 mode */mrsr0, cpsrbicr0, r0, #0x1forrr0, r0, #0xd3msrcpsr, r0
2. 关闭看门狗.
ldrr0, =pWTCONmovr1, #0x0strr1, [r0]
3. 设定中断向量表.
/* * mask all IRQs by setting all bits in the INTMR - default */movr1, #0xffffffffldrr0, =INTMSKstrr1, [r0]# if defined(CONFIG_S3C2410)ldrr1, =0x3ffldrr0, =INTSUBMSKstrr1, [r0]# endif
4. 设定 CPU 内部各单元(包括 CPU 核与内置的其他设备如定时器, 电源管理, SDRAM控制器, LCD控制器, 时钟等)的 Clock 时钟.
/* FCLK:HCLK:PCLK = 1:2:4 *//* default FCLK is 120 MHz ! */ldrr0, =CLKDIVNmovr1, #3strr1, [r0]
Bus设置------设置各个外部内存的特性, 包括要插入几个 waiting cycle, 操作该内存的基本单位宽度(8/16/32bit)等.
// 见 MMU 设置.
5. 设置 CPU 各个 PIN 引脚的用途使其符合系统或应用程序的要求. 一般都是设置选择输入输出或者其他第二功能的寄存器.
6. 设置 CPU 的工作模式, 刚开始一般都为 Full run mode.
// 如上面
7. 设置 MMU等存储相关的设备.
/* ************************************************************************* * * CPU_init_critical registers * * setup important registers * setup memory timing * ************************************************************************* */#ifndef CONFIG_SKIP_LOWLEVEL_INITcpu_init_crit:/* * flush v4 I/D caches */movr0, #0mcrp15, 0, r0, c7, c7, 0/* flush v3/v4 cache */mcrp15, 0, r0, c8, c7, 0/* flush v4 TLB *//* * disable MMU stuff and caches */mrcp15, 0, r0, c1, c0, 0bicr0, r0, #0x00002300@ clear bits 13, 9:8 (--V- --RS)bicr0, r0, #0x00000087@ clear bits 7, 2:0 (B--- -CAM)orrr0, r0, #0x00000002@ set bit 2 (A) Alignorrr0, r0, #0x00001000@ set bit 12 (I) I-Cachemcrp15, 0, r0, c1, c0, 0/* * before relocating, we have to setup RAM timing * because memory timing is board-dependend, you will * find a lowlevel_init.S in your board directory. */movip, lrbllowlevel_initmovlr, ipmovpc, lr#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
8. 其他内部设备的初始化.
=============================================================================================================================
- CPU 的初始化(ARM & u-boot)
- U-BOOT中SDRAM的初始化分析
- u-boot的usb模块初始化
- U-Boot中初始化序列的说明
- 分析 u-boot 的第一阶段代码(cpu/arm920t/start.S)
- U-Boot学习笔记(二):U-Boot--arm--Start.S的分析
- U-Boot串口初始化详解
- U-Boot串口初始化详解
- U-Boot串口初始化详解
- U-Boot串口初始化详解
- u-boot串口初始化全过程
- U-Boot串口初始化详解
- 创建虚拟的U-boot和ARM Linux学习环境
- ARM开发板系统移植-----u-boot的编译
- arm-linux-gcc的安装/编译u-boot错…
- U-Boot中ARM协处理器CP15的操作分析
- arm系统文件的制作-去除U-BOOT头
- u-boot移植过程中SDRAM相关寄存器的初始化
- C STL Qsort使用
- 30分钟理解STL
- PDO简介
- Debian/Ubuntu 常见开发环境安装
- VirtualBox中centos网络配置
- CPU 的初始化(ARM & u-boot)
- 大数据下的旅游网站:Hopper为你推荐最爱的景点
- 如何通过无线网络连接adb
- Linux shell脚本的字符串截取
- JDK和CGLB分别实现的动态代理
- 生活随笔:国庆放假了
- Linux下安装jdk1.6
- hdu 3062 Party(2-sat入门)
- 派生类构造与析构函数