自己写bootloader1 - start.S,基于s3c2440
来源:互联网 发布:算法视频教程 编辑:程序博客网 时间:2024/05/22 03:15
bootloader的目的是启动内核。主要做两方面的工作:把内核从nand读入sdram,跳转执行。bootloader分成两步走:第一是硬件相关的初始化,然后跳转到main中执行。首先是硬件相关初始化:关看门狗,设置时钟,初始化SDRAM,代码重定位,跳转到main中执行。start.S里面的代码(start.S不能是start.s) #define S3C2440_MPLL_200MHZ ((0x5c<<12)|(0x01<<4)|(0x02))#define S3C2440_MPLL_200MHZ ((0x5c<<12)|(0x01<<4)|(0x02))#define MEM_CTL_BASE 0x48000000text.global _start _start:/*1关看门狗*/ldr r0, =0x53000000mov r1, #0 str r1, [r0]/* 2: 设置时钟*/ldr r0, =0x4c000014mov r1, #0x03;str r1, [r0]mrc p15, 0, r1, c1, c0, 0orr r1, r1, #0xc0000000mcr p15, 0, r1, c1, c0, 0ldr r0, =0x4c000004ldr r1, =S3C2440_MPLL_200MHZstr r1, [r0]/* 3: 初始化sdram*/ldr r0, =MEM_CTL_BASE adr r1, sdram_config /*得到当前的地址,不是链接地址*/add r3, r0, #(13*4)1: ldr r2, [r1], #4str r2, [r0], #4cmp r0, r3bne 1b/* 4: 重定位:把bootloader 的代码从flash到sdram中*/ldr sp, =0x34000000bl nand_initmov r0, #0 ldr r1, =_startldr r2, =__bss_startsub r2, r2, r1bl copy_to_sdrambl clean_bss/* 5: 调用main*/ldr lr, =haltldr pc, =main halt:b haltsdram_config:.long 0x22011110//BWSCON.long 0x00000700//BANKCON0.long 0x00000700//BANKCON1.long 0x00000700//BANKCON2.long 0x00000700//BANKCON3 .long 0x00000700//BANKCON4.long 0x00000700//BANKCON5.long 0x00018005//BANKCON6.long 0x00018005//BANKCON7.long 0x008C04F4// REFRESH.long 0x000000B1//BANKSIZE.long 0x00000030//MRSRB6.long 0x00000030//MRSRB7
0 0
- 自己写bootloader1 - start.S,基于s3c2440
- 自己写bootloader1 - start.S,基于s3c2440
- 自己写bootloader2 -跳转执行,基于s3c2440
- 自己写bootloader2 -init.c,基于s3c2440
- [Funkunux] 自己写MMU实验 基于S3C2440
- 自己写bootloader2 -跳转执行,基于s3c2440
- 自己写bootloader2 -init.c,基于s3c2440
- 基于S3C2440的U-BOOT的start.S分析
- 自己写bootloader(1)——start.S
- 自己写bootloader笔记2---start.S分析
- 自己写bootloader笔记2---start.S分析
- S3C2440启动代码分析 start.s
- s3c2440启动文件start.s分析
- 04-S3C2440学习之自己写bootloader
- s3c2440学习系列4(uboot start.S说明)
- U-BOOT中start.s包含S3C2440代码分析
- U-BOOT中start.s包含S3C2440代码分析
- UBOOT start.S 关于S3C2440时钟设置的理解
- Ruby Programming
- 安卓IPC之aidl使用(一)--aidl常见使用
- CSS盒子模型
- Android Bitmap面面观
- JVM学习笔记(四)------内存调优
- 自己写bootloader1 - start.S,基于s3c2440
- 你应该知道的那些Android小经验
- <C++学习篇>C++中的智能指针auto_ptr,unique_otr,shared_ptr
- apache服务器配置虚拟主机,使用自己的域名
- dataTable的当前页面刷新draw操作
- hihocoder1459 震荡数组
- 漫步微积分三十六——曲面的面积
- Sql Server 2008——查询(3)——IN的用法
- ubuntu14常见问题解决