uboot启动代码

u-boot-2014.07.tar
Directory Hierarchy:
====================


/arch Architecture specific files
  /arc Files generic to ARC architecture
    /cpu CPU specific files
      /arc700 Files specific to ARC 700 CPUs
    /lib Architecture specific library files
  /arm Files generic to ARM architecture
    /cpu CPU specific files
      /arm720t Files specific to ARM 720 CPUs
      /arm920t Files specific to ARM 920 CPUs
/at91 Files specific to Atmel AT91RM9200 CPU
/imx Files specific to Freescale MC9328 i.MX CPUs
/s3c24x0 Files specific to Samsung S3C24X0 CPUs
      /arm926ejs Files specific to ARM 926 CPUs
      /arm1136 Files specific to ARM 1136 CPUs
      /pxa Files specific to Intel XScale PXA CPUs
      /sa1100 Files specific to Intel StrongARM SA1100 CPUs
    /lib Architecture specific library files
  /avr32 Files generic to AVR32 architecture
    /cpu CPU specific files
    /lib Architecture specific library files
  /blackfin Files generic to Analog Devices Blackfin architecture
    /cpu CPU specific files
    /lib Architecture specific library files
  /m68k Files generic to m68k architecture
    /cpu CPU specific files
      /mcf52x2 Files specific to Freescale ColdFire MCF52x2 CPUs
      /mcf5227x Files specific to Freescale ColdFire MCF5227x CPUs
      /mcf532x Files specific to Freescale ColdFire MCF5329 CPUs
      /mcf5445x Files specific to Freescale ColdFire MCF5445x CPUs
      /mcf547x_8x Files specific to Freescale ColdFire MCF547x_8x CPUs
    /lib Architecture specific library files
  /microblaze Files generic to microblaze architecture
    /cpu CPU specific files
    /lib Architecture specific library files
  /mips Files generic to MIPS architecture
    /cpu CPU specific files
      /mips32 Files specific to MIPS32 CPUs
      /mips64 Files specific to MIPS64 CPUs
    /lib Architecture specific library files
  /nds32 Files generic to NDS32 architecture
    /cpu CPU specific files
      /n1213 Files specific to Andes Technology N1213 CPUs
    /lib Architecture specific library files
  /nios2 Files generic to Altera NIOS2 architecture
    /cpu CPU specific files
    /lib Architecture specific library files
  /openrisc Files generic to OpenRISC architecture
    /cpu CPU specific files
    /lib Architecture specific library files
  /powerpc Files generic to PowerPC architecture
    /cpu CPU specific files
      /74xx_7xx Files specific to Freescale MPC74xx and 7xx CPUs
      /mpc5xx Files specific to Freescale MPC5xx CPUs
      /mpc5xxx Files specific to Freescale MPC5xxx CPUs
      /mpc8xx Files specific to Freescale MPC8xx CPUs
      /mpc824x Files specific to Freescale MPC824x CPUs
      /mpc8260 Files specific to Freescale MPC8260 CPUs
      /mpc85xx Files specific to Freescale MPC85xx CPUs
      /ppc4xx Files specific to AMCC PowerPC 4xx CPUs
    /lib Architecture specific library files
  /sh Files generic to SH architecture
    /cpu CPU specific files
      /sh2 Files specific to sh2 CPUs
      /sh3 Files specific to sh3 CPUs
      /sh4 Files specific to sh4 CPUs
    /lib Architecture specific library files
  /sparc Files generic to SPARC architecture
    /cpu CPU specific files
      /leon2 Files specific to Gaisler LEON2 SPARC CPU
      /leon3 Files specific to Gaisler LEON3 SPARC CPU
    /lib Architecture specific library files
  /x86 Files generic to x86 architecture
    /cpu CPU specific files
    /lib Architecture specific library files
/api Machine/arch independent API for external apps
/board Board dependent files
/common Misc architecture independent functions
/disk Code for disk drive partition handling
/doc Documentation (don't expect too much)
/drivers Commonly used device drivers
/dts Contains Makefile for building internal U-Boot fdt.
/examples Example code for standalone applications, etc.
/fs Filesystem code (cramfs, ext2, jffs2, etc.)
/include Header Files
/lib Files generic to all architectures
  /libfdt Library files to support flattened device trees
  /lzma Library files to support LZMA decompression
  /lzo Library files to support LZO decompression
/net Networking code
/post Power On Self Test
/spl Secondary Program Loader framework
/tools Tools to build S-Record or U-Boot images, etc.




大多数bootloader都分为阶段1(stage1)和阶段2(stage2)两大部分,uboot也不例外。依赖于CPU体系结构的代码(如CPU 初始化代码等)通常都放在阶段1中且通常用汇编语言实现,而阶段2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。


阶段1(stage1): 
start.s
cpu_init_crit: setup important registers,setup memory timing
lowlevel_init: 
bl _main

crt0.s //C-runtime startup Code for ARM U-Boot
bl board_init_f
ldr pc, =board_init_r


阶段2(stage2):
board_init_f
=> zero_global_data
=> init_sequence_f
   => arch_cpu_init
   => serial_init
   => ..

board_init_r
=> init_sequence_r
   => ..
   => run_main_loop
      => main_loop

ifndef CONFIG_SYS_GENERIC_BOARD


board_init_f
=> gd partly assignment
=> dram_init_banksize

board_init_r
=> board_init
=> main_loop

移植过程举例:
① 在宿主机上建立交叉编译开发环境
 
② 修改cpu/arm926ejst目录中的文件内容,
主要包含cpu.C,start.S,interrupts.C以及seria1.C,speed.C等文件
 
③ 在board目录下创建自己的目标板(开发板)目录leopard2a
在目录下创建leopard2a.C,flash.C,memsetup.S
以及Makefile,u-bot.1ds,config.mk文件
 
④在include/configs目录下创建leopard2a.h
 
⑤ 打开u-bot目录下Makefile文件,加入如下两行:
leopard2a_config :      unconfig
@./mkconfig $(@:_config=) arm arm926ejs leopard2a
 
⑨ 编译。运行命令:
1. make leopard2a_config
2. make
编译成功.生成基本的uboot
 
⑦ 烧写.把编译成的uboot.bin
至此移植uboot过程结束.

两种运行方式
1,加载到ram中
“tftp a00000 u-boot.bin” <= 下載程序到SDRAM
“go a00000” <= 從SDRAM 執行程序
2,加载到flash

todo



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值