uboot学习第一天

来源:互联网 发布:window7安装ubuntu 编辑:程序博客网 时间:2024/06/05 09:57
Windows操作系统
BIOS(设置)  Windows系统  文件系统  驱动程序  应用程序


linux操作系统

bootloader(引导系统)  kernel(内核) 文件系统  驱动程序 应用程序

交叉编译:程序编译与执行不在同一台机器

交叉编译工具链:交叉编译需要使用的工具


gcc编译流程
1、预处理   cpp test.c -o test.i
2、编译 ./cc1 test.i (test.s  /usr/lib/gcc/i686-linux-gnu/4.8)
3、汇编 as test.s 
4、链接 ld -L 链接库文件(目录) -I 链接头文件(目录)(不推荐)

命令特点:对于elf文件的处理
elf:常用语linux/unix系统的二进制文件

补充命令
readelf -h test(elf)查看头部信息
readelf -a test
magic 魔数 表示了文件类型

size test 显示elf文件中四个段大小

nm test 显示链接标号

重要命令
file test 查看elf文件的基本信息

strip test 瘦身命令
注意:不能对中间文件瘦身

objdump  -d test > test.dis(反编译文件)(反汇编)
使用条件:1、内核调试时  2、走投无路时

addr2line 内核调试命令

objcopy --gap-fill=0xff -O binary test test.bin 

  字符填充 指明转换文件类型 elf格式文件目标文件

objcopy --gap-fill=0xff -O srec test test.srec  摩托罗拉格式文件

网络配置(图形界面)

/etc/network/interface
  1 # interfaces(5) file used by ifup(8) and ifdown(8)
  2 auto lo
  3 iface lo inet loopback  


tftp服务器(文件传输服务)
1、sudo service tftpd-hpa restart (重启服务,当前有tftp服务器)
2、sudo apt-get install tftpd-hpa(服务器端) tftp-hpa(客户端)
3、tftp服务器配置(/etc/default/tftpd-hpa)
  3 TFTP_USERNAME="tftp"
  4 TFTP_DIRECTORY="/tftpboot"  (自行指定,自行创建,加777权限) 建议创建到根目录下
  5 TFTP_ADDRESS="0.0.0.0:69"   端口号
  6 TFTP_OPTIONS="-c -s -l"
记得在修改过配置后重启服务

4、本机测试(127.0.0.1)
tftp + ip
tftp> get + 文件名 下载
tftp> put + 文件名  上传
tftp > q 退出
 
nfs服务器(网络文件系统)---- 共享文件夹
1、服务器端(Ubuntu) 客户端(开发板)
2、sudo service nfs-kernel-server restart (重启nfs服务,当前有nfs服务器)
3、sudo apt-get install nfs-kernle-server
4、nfs服务器配置(/etc/exports )
 11 /source/rootfs    *(rw,sync,no_subtree_check,no_root_squash)   
 (自行指定,自行创建,加777权限)
 记得修改配置后重启服务

bootloader:Bootloader是硬件启动的引导程序,是运行操作系统的前提

bootloader:两种模式

1、交互模式:完成环境变量设置,能完成自启动模式设置
2、自启动模式:自行启动预设程序,代码

bootloader的基本功能
1、初始化相关硬件
2、把bootloader自搬运到内存中
3、执行用户的命令
4、加载并执行内核

bootloader选用原则:

1、支持当前开发板体系架构
2、支持板级结构
3、功能

选择了uboot 
uboot版本:2013

uboot命令
环境设置
print 显示当前环境设置
serverip 服务器ip(Ubuntu)
ipaddr 开发板ip
setenv  +环境变量 +参数
saveenv 保存设置
setenv + 环境变量 删除操作

数据传输
ping + 服务器ip 查看网络连接
tftp 41000000 文件名
物理地址(40000000-8000000)

调试
mm + 内存地址 (地址递增)
nm + 内存地址 (不递增)
0x1进行修改值
q退出

存储器访问
movi write kernel 41000000 
写入 emmc分区物理地址

movi read  kernel 41000000
读到   emmc分区物理地址

fdisk -c mmc 格式化(此格式化是指格式化为那种文件系统)

加载运行(自启动模式)   分隔 空格空格
      自启动命令 | 自启动顺序        |                |
setenv  bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm    41000000           -                    42000000
下载 (内核程序         )  (       设备树文件       )  内核程序执行         (省略,文件系统)       设备树程序执行


自启动参数(设置挂载方式执行文件系统)
setenv bootargs root=/dev/nfs nfsroot=192.168.4.4:/source/rootfs rw console=ttySAC2,115200 init=/linuxrc    ip=192.168.4.8
指明了根文件显示方式    根文件系统目录                   可读可写  串口显示             文件第一个执行程序开发板ip




0 0