原创 U-Boot 第一阶段代码分析

2009-2-14 12:01 2819 5 7 分类: MCU/ 嵌入式

出去注释外,我们关心如下几行:


     28 #include <config.h>
     29 #include <version.h>
     30
     31
     32 /*
     33  *************************************************************************
     34  *
     35  * Jump vector table as in table 3.1 in [1]
     36  *
     37  *************************************************************************
     38  */
     39
     40
     41 .globl _start
     42 _start: b       reset
     43         ldr     pc, _undefined_instruction
     44         ldr     pc, _software_interrupt
     45         ldr     pc, _prefetch_abort
     46         ldr     pc, _data_abort
     47         ldr     pc, _not_used
     48         ldr     pc, _irq
     49         ldr     pc, _fiq
当然我比较差就暂时不关心43~49行。


    110 reset:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


    111         /*


    112          * set the cpu to SVC32 mode


    113          */


    114         mrs     r0,cpsr


    115         bic     r0,r0,#0x1f


    116         orr     r0,r0,#0xd3


    117         msr     cpsr,r0


    118


    119 /* turn off the watchdog */


    120 #if defined(CONFIG_S3C2400)


    121 # define pWTCON         0x15300000


    122 # define INTMSK         0x14400008      /* Interupt-Controller base addresses */


    123 # define CLKDIVN        0x14800014      /* clock divisor register */


    124 #elif defined(CONFIG_S3C2410)


    125 # define pWTCON         0x53000000


    126 # define INTMSK         0x4A000008      /* Interupt-Controller base addresses */


    127 # define INTSUBMSK      0x4A00001C


    128 # define CLKDIVN        0x4C000014      /* clock divisor register */


    129 #elif defined(CONFIG_S3C2440)           //add by yannzi


    130 # define pWTCON         0x53000000


    131 # define INTMSK         0x4A000008      /* Interupt-Controller base addresses */


    132 # define INTSUBMSK      0x4A00001C


    133 # define CLKDIVN        0x4C000014      /* clock divisor register */


    134 #endif


这几行是define 一些寄存器的地址。


可能是初生牛犊不怕虎吧,我自己加上了129~133几句。


暂时还没测试,以移植我的S3C2440。


接下来是turn off the watchdog 。


    136 #if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)


    137         ldr     r0, =pWTCON


    138         mov     r1, #0x0                //disable watchdog yz


    139         str     r1, [r0]


    140


    141         /*


    142          * mask all IRQs by setting all bits in the INTMR - default


    143          */


然后是mask all IRQs by setting all bits in the INTMR - default


    144         mov     r1, #0xffffffff


    145         ldr     r0, =INTMSK


    146         str     r1, [r0]


    147 # if defined(CONFIG_S3C2410)


    148         ldr     r1, =0x3ff


    149         ldr     r0, =INTSUBMSK


    150         str     r1, [r0]


    151 # endif


    152 # if defined(CONFIG_S3C2440)            //add by yannzi


    153         ldr     r1, =0x7fff


    154         ldr     r0, =INTSUBMSK


    155         str     r1, [r0]


    156 # endif


    157


设置FCLK:HCLK:PCLK


    158         /* FCLK:HCLK:PCLK = 1:2:4 */


    159         /* default FCLK is 120 MHz ! */


    160         ldr     r0, =CLKDIVN


    161         mov     r1, #3                  //the same as 2440 yz


    162         str     r1, [r0]


这里忘了当HDIVN非0,要改变CPU总线模式了。我下午去改。改了后,163~167如下:


    163 # if defined (CONFIG_S3C2440)           //MMU_SetAsyncBusMode   add by yannzi


    164         mrc p15, 0, r0, c1, c0, 0


    165         orr r0, r0, #R1_nF:OR:R1_iA


    166         mcr p15, 0, r0, c1, c0, 0


    167 #endif 


    168 #endif  /* CONFIG_S3C2400 || CONFIG_S3C2410 || CONFIG_S3C2440 */


 

文章评论2条评论)

登录后参与讨论

yannzi 2009-2-17 23:43

很不好意思,我自己都没有移植成功。 刚学习,谢谢大家的点击。

用户741296 2009-2-17 15:30

过来看看
相关推荐阅读
yannzi 2009-08-14 22:45
C++课程设计指导书之二 媒體庫管理系統
一、課程設計目的l        通過設計、實現媒體庫管理系統,熟悉面向對象的設計思想;l        進一步熟悉、掌握STL中有關類型及其使用方法,泛型編程的風格。二、系統設計要求在這個課程設計中...
yannzi 2009-08-10 16:17
C++课程设计指导书之一 学生考勤管理系统,已添加自己的程序
https://static.assets-stash.eet-china.com/album/old-resources/2009/5/15/cc35849a-1226-4015-829a-f5fe...
yannzi 2009-08-10 11:54
痛苦并快乐着
今天图书馆下了一堆资料,可能是猛过头了,所以用死了两台电脑,还有一台电脑根本开不了机。。。帮同学影印了九章奖状,有机会可以剥削人家一把,影印太费时了。在宿舍,还有工人忙着修宿舍,噪音很吵,就快开始看资...
yannzi 2009-08-09 22:21
实用软件介绍 (Q-Dir、UE编辑器、Beyond Compare)
Q-Dir 3.93http://www.onlinedown.net/soft/66200.htmUltraEdit-32 (文本编辑器)http://www.orsoon.com/Soft/780...
yannzi 2009-08-09 22:09
实习第8天
      昨天也没什么好写的,就这样跳过了,都是自己在看一些有关嵌入式的视频。      原本今天也没什么好写的,倒数第二天了,发现有些东西还是挺人性化的,比如不用现在就把电脑还了之类的,要不然还真...
yannzi 2009-08-09 22:08
实习第6天
       这天吃了早餐来到公司,过了半个钟,就退还了两本Windows相关的编程书,放弃MFC相关的编程了,然后再借了两本与嵌入式有关的书。       就这样开始一天的读书之旅。看来要开始准备辞...
我要评论
2
5
关闭 站长推荐上一条 /2 下一条