u_boot移植学习笔记

bootloader 初始化硬件设备


启动过程
单阶段(single-stage)
多阶段(multi-stage)


bootloader大多采用两阶段
stage1 
完成初始化硬件
准备内存空间,将stage3复制到内存中,设置堆栈,跳转到stage2的c入口点
stage2 
初始化本阶段要用到的硬件设备
检测系统内存映射,检测哪些地址被实际对应到外部的sdram
将kernel映像和根文件映像从flash读到ram空间
为内核设置启动参数
调用内核


 
交叉工具链


参考
http://blog.csdn.net/retacn_yue/article/details/8510952


编译器arm-linux-gcc


反汇编工具arm-linux-objdump


elf文件查看工具arm-linux-readelf
-d参数可以查看依赖动态链接库






uboot
支持多种嵌入式cpu(mips x86 arm xscale powerpc)
支持多种嵌入式操作系统(vxworks qnx linux netbsd rtems)


目录结构
board 和开发板有关的文件
common 实现uboot支持的命令
cpu    特定cpu架构相关的代码
disk 对磁盘的支持 
doc 文档目录
drivers 设备驱动程序
dtt
examples
fs  文件系统
include  uboot使用的头文件
lib_arm
lib_avr32
lib_blackfin
lib_generic
lib_i386
lib_m68k
lib_microblaze
lib_mips
lib_nios
lib_nios2
lib_ppc
nand_spl
net
post
rtc
tools 




uboot编译
1 选择要使用的board
2 编译


uboot命令
help
printenv 查看环境变量
setenv 添加、删除、修改环境变量 (setent 变量名 值)
saveenv 保存环境变量(保存到flash中)






文件下载
tftp通过网络下载文件


setenv ethaddr 12:34:56:78:9A:BC (mac地址)
setenv ipaddr 192.168.1.11(开发板ip地址)
setenv serverip 192.168.1.12(tftp服务器地址)
tptp c0008000 uImage




内存操作
md(memmory display)显示内存区的内容
 md c0008000
mm修改内存
 mm c0008000 不修改按回车,退出空格后回车


nand info 查看flash信息
nand flash芯片每一位只能从1变为0,在对其进行写入操作之前需将其
相应块擦除,擦除即是将相应块的位全部变为1 
命令格式如下:
 nand erase start length
 start 开始位
 length 长度


nand write写入数据
  nand write [内存地址] [flash地址] length
nand read 读出数据
  nand read [内存地址] [flash地址] length
flinfo查看flash 扇区信息






nor flash
protect flash 写保护
 protect off all 关闭
 protect on all 打开
 protect off start end (按起始位置关闭)
 protect on start end (按起始位置打开)


erase 擦除
 erase start end (写入数据前必须先擦除)
cp 数据拷贝
cp[.b,.w,.l] saddress daddress len


 
程序执行
go 执行内存中的二进制代码 
 go addr[arg...]
bootm  执行内存中的二进制代码
 bootm [addr [arg...]]




bdinfo 显示开发板信息


设置自动启动
setenv bootcmd tftp c0008000 uImage \; bootm c0008000

saveenv


移植过程未完成

你可能感兴趣的:(u_boot移植学习笔记)