注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小白的博客

嵌入式爱好者

 
 
 

日志

 
 

最小bootloader程序之start.S  

2012-08-09 17:11:44|  分类: 韦东山视频第二轮 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
共有6个文件:start.S、nand.c、setup.h、boot.c、boot.lds、Makefile

start.S文件如下:

#define WTCON 0x53000000
#define MPLLCON 0x4C000004
#define CLKDIVN 0x4C000014
#define FCLK_400MHZ ((0x5c<<12) | (1<<4) | (1<<0))
#define BWSCON  0x48000000 
#define GPFCON 0x56000050
#define GPFDAT 0x56000054

.text
.global _start
_start:
    bl watchdog_disable
    bl clock_init
    bl icache_init
    bl memset
    
    mov sp , #0x34000000
    bl nand_init
    
    mov r0 , #0
    ldr r1 , =_start
    ldr r2 , =__bss_start
    sub r2 , r2 , r1
    bl copy_to_sdram
    
    bl clear_bss
    ldr lr , =loop
    ldr pc , =main
loop:
    b loop

watchdog_disable:
    ldr r0 , =WTCON
    mov r1 , #0
    str r1 , [r0]
    mov pc , lr

clock_init:
    ldr r0 , =MPLLCON
    ldr r1 , =FCLK_400MHZ
    str r1 , [r0]

    ldr r0 , =CLKDIVN 
    mov r1 , #5
    str r1 , [r0]
    
    mrc  p15,0,r0,c1,c0,0 
    orr  r0,r0,#0xc0000000
    mcr  p15,0,r0,c1,c0,0
    mov pc , lr

icache_init:
mrc p15, 0, r0, c1, c0, 0
orr r0, r0, #(1<<12)
mcr p15, 0, r0, c1, c0, 0  
mov pc , lr

memset:
    ldr r0 , =BWSCON
    adr r1 , memconf_val
    add r2 , r0 , #13*4
1:
    ldr r3 , [r1] , #4
    str r3 , [r0] , #4
    cmp r0 , r2
    bne 1b
    mov pc , lr

memconf_val:
    .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   0x008C07A3      @ REFRESH
    .long   0x000000B1      @ BANKSIZE
    .long   0x00000030      @ MRSRB6
    .long   0x00000030      @ MRSRB7

程序比较简单,需要说明一下的是icache:简单来说,icache就是个代码的缓存,执行的代码同时会保存到icache中,下次执行的时候先去icache查看,有的话直接用,如何存在很多重复代码的话,就会大大加快执行速度。nand_read中重复代码很多,不用icache速度会很慢!!!
  评论这张
 
阅读(553)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018