利用uboot下载引导Kernel(TFTP)以及挂载网络Rootfs(NFS)
2024-09-03 00:26:24
背景:
在嵌入式开发中,经常需要对系统的各个部分进行修改。倘若每次修改都烧写到板子中,一来浪费时间,其次影响存储介质寿命。
所以,需要一些手段来避免此类问题。
概览:
编译uboot
将uboot写入SD卡,并通过硬件设置从sd卡启动uboot程序
编译kernel,设置其可以通过NFS挂载根文件系统
开发环境安装TFTP服务器、NFS服务器
目标环境设置uboot参数,并进行测试
制作根文件系统(optional)
将uboot参数改回,烧写各部分到板子上
第2步不一定是用sd卡,根据硬件特性的差异决定,也可以考虑将uboot写入板子中,再进行此后的操作。
在这里我们重点介绍第三步以及第五步。其他步骤请参考其他资料。第三步以修改bootcmd为主,第五步以修改bootargs为主。
设置uboot,使其通过下载并引导内核
1.确保配置好了tftp服务器,并在tftp服务器指定的根目录下存放kernel镜像
2.明白镜像的运行地址位于何处(第三步中需要用到)
3.在uboot的下载模式中,设置bootcmd
setenv bootcmd 'tftp 0x42000000 kernel;bootm 0x42000000'
saveenv
嵌入式系统Linux内核对nfs文件系统的支持:
这里只做简单的介绍,具体细节可以参考:《配置uboot指定nfs挂载根文件系统》
1.进入内核配置页,根据以下参数进行配置
-> Networking support
-> Networking options
[*] IP: kernel level autoconfiguration
-> File systems
[*] Network File Systems
<*> NFS client support
<*> NFS client support for NFS version
[*] NFS client support for the NFSv3 ACL protocol extension
[*] Root file system on NFS
2.uboot修改bootargs(最好是备份好bootargs) 添加下划线部分*其中的ip根据自己的实际情况进行修改
setenv bootargs 'root=/dev/nfs nfsroot=${serverip}:/xxx/fs,v3,tcp rw ip=${ipaddr}:${serverip}:${gatewayip}:${netmask} ::eth0:on init=/linuxrc console=ttyAMA0,115200'
saveenv
这样一来,调试就非常方便而且高效了。
改编自:《Tiny210v2( S5PV210 )平台下: 利用uboot启动远程Kernel(TFTP)以及挂载远程ROOTFS(NFS) 》
最新文章
- table首行固定
- 70多G的Kindle电子书合集
- 基于SVG的web页面图形绘制API介绍
- c# 调用 ShellExecute
- treap 1296 营业额统计
- iOS - 导航控制器
- js方法在iframe父子窗口
- HttpMessageConverter 专题
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(2)- Boot配置(BOOT Pin/eFUSE)
- nginx——location匹配流程图
- [数]昨天欠下的一道立体几何题HDU-4741
- CAN总线相关的几个gitlab代码
- halcon应用案例探究
- [Socket]Socket聊天小程序
- Git 合并多次 commit 、 删除某次 commit
- Shiro学习笔记五(Shiro标签,及通配符)
- c# 主机和网络字节序的转换 关于网络字节序和主机字节序的转换
- 微信小程序的功能开发工具跟公众号的差别,小程序是一种减负思维对简单APP是巨大打击
- Banana
- BZOJ4917: [Lydsy1706月赛]Hash Killer IV(模拟)