u-boot实验

三大部分:  bootloader(uboot)       linux内核       文件系统

嵌入式系统:

以应用为中心, 计算机技术为基础,  软、硬件均可裁剪, 满足应用对 功能、稳定性、体积、功耗、成本等的要求

gcc -v --save-temps  ---------- 查看编译过程

crosstool-ng 制作交叉编译工具链

下载源码包:

http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.23.0.tar.xz

autoreconf

./configure --enable-local

make

make install

命令:

./ct-ng help

./ct-ng list-samples

./ct-ng menuconfig

./ct-ng build

linux下的几个命令: binutils

elf 格式: 可执行 可链接的格式

readelf  -S  a.out -------------- 查看都a.out 可执行程序的段的信息,

./a.out ------------ 执行a.out ,

vi a.out ---------- :%!xxd 以16进制的方式打开a.out

ar 打包命令:

gcc -c a.c

gcc -c b.c

ar cr libtest.a a.o b.o  ------------ 打包a.o b.o生成静态库test

ar t libtest.a ---------------- 查看静态库test 包含的.o文件

ar x  libtest.a  ---------- 解压libtest.a  

strip libtest.a ---------- 去除掉libtest.a 的调试信息

nm libtest.a  ----------  查看libtest.a 的符号信息 ( 包含全局变量, 函数名)

ldd a.out  ----------- 查看a.out 依赖 的动态库

objdump -dl a.out 反汇编a.out 到汇编语言

bootloader 的操作模式:

自启动模式:

在这种模式下,Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入

交互模式:

在这种模式下,目标机上的Bootloader将通过串口或网络等通信手段从开发主机(Host)上下载内核映像和根文件系统映像等到RAM中。

u-boot:

命令:

?---------- 查看支持的命令

boot ----------- 执行bootcmd 变量的内容

run var1 ---------- 执行变量var1 所描述的几条指令

pri -------- 查看支持的变量

setenv  ---------  设置、修改、删除变量

save -------- 保存变量到emmc

tftp -------- u-boot的tftp客户端命令

tftp 41000000 uImage ------------- 从服务器的tftp文件夹下载uImage 到内存41000000

 问题: 1, ip同一网段? 2, ping 通? 3, sudo service tftpd-hpa restart

电子硬盘的movi 命令:

movi write kenel  41000000

烧写内存41000000 开始的内容到电子硬盘的内核(kernel) 分区

movi write dtb 41000000

烧写内存41000000 开始的内容到电子硬盘的设备树(dtb) 分区

movi write u-boot 41000000

烧写内存41000000 开始的内容到电子硬盘的u-boot  分区

movi  write rootfs  41000000   size

烧写内存41000000 开始的内容大小是size  到电子硬盘的文件系统分区

movi read kernel 41000000   从电子硬盘读kerenl分区的内容 到 41000000

movi read dtb   42000000   从电子硬盘读dtb分区的内容 到 42000000

movi read rootfs 43000000 size  从电子硬盘读文件系统分区的内容 到 43000000 大小限制为size

bootm ----------- 从内存启动命令, 后跟3个参数 , 依次是内核在内存的地址,文件系统在内存的地址(如果是nfs , - )  , 设备树在内存的地址

bootm 41000000 43000000 42000000

变量:

serverip ------------- 告诉u-boot 服务器的ip

ipaddr --------- 告诉u-boot 板子自身的ip,

bootcmd -------- 在启动时,默认执行该变量的内容, 该变量的内容是几条命令

自启动:

setenb  bootcmd movi read kernel 41000000\; movi read dtb 42000000\;movi read rootfs 43000000 300000\;bootm 41000000 43000000 42000000

交互模式:

setenb  bootcmd tftp xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

bootargs :  启动参数的变量

setenv bootargs root=/dev/nfs nfsroot=192.168.222.145:/home/farsight/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.222.146

root=/dev/nfs ---------- 内核使用的是nfs

init=/linuxrc -------- 内核启动后, 挂载文件系统之后,执行的1号进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值