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号进程