Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56072
  • 博文数量: 13
  • 博客积分: 1425
  • 博客等级: 上尉
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-11 22:25
文章分类
文章存档

2014年(4)

2013年(2)

2011年(1)

2009年(3)

2008年(3)

我的朋友

分类: 嵌入式

2009-09-05 18:53:24

-  0x33f80000 <_start>:     b  0x33f80050 ;    (1)

-  0x33f80004 <_start+4>:   ldr   pc, [pc, #20] ; 0x33f80020 <_undefined_instruction>

-  0x33f80008 <_start+8>:   ldr   pc, [pc, #20] ; 0x33f80024 <_software_interrupt>

-  0x33f8000c <_start+12>:  ldr   pc, [pc, #20] ; 0x33f80028 <_prefetch_abort>

-  0x33f80010 <_start+16>:  ldr   pc, [pc, #20] ; 0x33f8002c <_data_abort>

-  0x33f80014 <_start+20>:  ldr   pc, [pc, #20] ; 0x33f80030 <_not_used>

-  0x33f80018 <_start+24>:  ldr   pc, [pc, #20] ; 0x33f80034 <_irq>

-  0x33f8001c <_start+28>:  ldr   pc, [pc, #20] ; 0x33f80038 <_fiq>

 

       /*

       * set the cpu to SVC32 mode

       */

-  0x33f80050 :      mrs   r0, CPSR

-  0x33f80054 :    bic   r0, r0, #31 ; 0x1f

-  0x33f80058 :    orr   r0, r0, #211  ; 0xd3

-  0x33f8005c :   msr   CPSR_fc, r0

   /*关看门狗*/

-  0x33f80060 :   mov   r0, #1392508928  ; 0x53000000

-  0x33f80064 :   mov   r1, #0  ; 0x0

-  0x33f80068 :   str   r1, [r0]

   /*关中断*/

-  0x33f8006c :   mvn   r1, #0  ; 0x0

-  0x33f80070 :   ldr   r0, [pc, #864]   ; 0x33f803d8

-  0x33f80074 :   str   r1, [r0]

 

-  0x33f80078 :   ldr   r1, [pc, #860]   ; 0x33f803dc

-  0x33f8007c :   ldr   r0, [pc, #860]   ; 0x33f803e0

-  0x33f80080 :   str   r1, [r0]

      

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

       /* default FCLK is 120 MHz ! */

-  0x33f80084 :   ldr   r0, [pc, #856]   ; 0x33f803e4

-  0x33f80088 :   mov   r1, #3  ; 0x3

-  0x33f8008c :   str   r1, [r0]

-  0x33f80090 :   bl 0x33f800f8 ; (2)

   /* relocate U-Boot to RAM  _TEXT_BASE */

-  0x33f80094 :   sub   r0, pc, #156  ; 0x9c

-  0x33f80098 : ldr   r1, [pc, #-96]   ; 0x33f80040 <_TEXT_BASE>

-  0x33f8009c : cmp   r0, r1

-  0x33f800a0 :   beq   0x33f800c4 ;(6)

  

-  0x33f800a4 :   ldr   r2, [pc, #-104]  ; 0x33f80044 <_armboot_start>

-  0x33f800a8 :   ldr   r3, [pc, #-104]  ; 0x33f80048 <_bss_start>

-  0x33f800ac :   sub   r2, r3, r2

-  0x33f800b0 :   add   r2, r0, r2

   /*设置堆栈指针*/

-  0x33f800c4 :   ldr   r0, [pc, #-140]  ; 0x33f80040 <_TEXT_BASE>

-  0x33f800c8 : sub   r0, r0, #196608  ; 0x30000

-  0x33f800cc : sub   r0, r0, #128  ; 0x80

-  0x33f800d0 :   sub   sp, r0, #12 ; 0xc

  /*bss段清零*/

-  0x33f800d4 :     ldr   r0, [pc, #-148]  ; 0x33f80048 <_bss_start>

-  0x33f800d8 :      ldr   r1, [pc, #-148]  ; 0x33f8004c <_bss_end>

-  0x33f800dc :      mov   r2, #0  ; 0x0

 

-  0x33f800e0 :       str   r2, [r0]

-  0x33f800e4 :     add   r0, r0, #4 ; 0x4

-  0x33f800e8 :     cmp   r0, r1

-  0x33f800ec :    ble   0x33f800e0

-  0x33f800f0 :    ldr   pc, [pc, #-4] ; 0x33f800f4 <_start_armboot> (7)跳到C函数start_armboot

-  0x33f800f4    start_armboot        ;start_armboot 此处存放的是函数地址 

               

-  0x33f800f8 :       mov   r0, #0  ; 0x0

-  0x33f800fc :    mcr   15, 0, r0, cr7, cr7, {0}

-  0x33f80100 :    mcr   15, 0, r0, cr8, cr7, {0}

-  0x33f80104 :   mrc   15, 0, r0, cr1, cr0, {0}

-  0x33f80108 :   bic   r0, r0, #8960 ; 0x2300

-  0x33f8010c :   bic   r0, r0, #135  ; 0x87

-  0x33f80110 :   orr   r0, r0, #2 ; 0x2

-  0x33f80114 :   orr   r0, r0, #4096 ; 0x1000

-  0x33f80118 :   mcr   15, 0, r0, cr1, cr0, {0}

-  0x33f8011c :   mov   r12, lr

-  0x33f80120 :   bl 0x33f80404 (3)

-  0x33f80124 :   mov   lr, r12

-  0x33f80128 :   mov   pc, lr         ;(5)返回

-  0x33f8012c :   andeq r0, r0, r0

-  0x33f80130 :   andeq r0, r0, r0

-  0x33f80134 :   andeq r0, r0, r0

-  0x33f80138 :   andeq r0, r0, r0

-  0x33f8013c :   andeq r0, r0, r0

 

 

-  0x33f80404 :      ldr   r0, [pc, #32]   ; 0x33f8042c

-  0x33f80408 :    ldr   r1, [pc, #-16]  ; 0x33f80400 <_TEXT_BASE>

-  0x33f8040c :    sub   r0, r0, r1

-  0x33f80410 :   mov   r1, #1207959552 ; 0x48000000

-  0x33f80414 :   add   r2, r0, #52  ; 0x34

-  0x33f80418 :   ldr   r3, [r0], #4

-  0x33f8041c :   str   r3, [r1], #4

-  0x33f80420 :   cmp   r2, r0

-  0x33f80424 :   bne   0x33f80418

-  0x33f80428 :   mov   pc, lr            ; (4)返回

-  0x33f8042c :   mvnscc r0, #805306368 ; 0x30000000

 

start_armboot 为第一个c语言函数 

(7)  start_armboot

(7-1)cpu_init

(7-2)board_init

(7-3)interrupt_init

(7-4)env_init

(7-5)init_baudrate

(7-6)serial_init

(7-7)console_init_f

(7-8)display_banner

(7-9)print_cpuinfo

(7-10)checkboard

(7-11)dram_init

(7-12)display_dram_config

(7-13)flash_init

(7-14)display_flash_config

(7-15)mem_malloc_init

(7-16)env_relocate

(7-17)devices_init

(7-18)jumptable_init

(7-19)console_init_r

(7-20)enable_interrupts

(7-21)cs8900_get_enetaddr

(7-22)eth_initialize

(7-23)main_loop

 

阅读(785) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~