当前位置: 首页 > news >正文

Linux驱动开发学习---移植uboot、内核及根文件系统

这里使用的开发板是正点原子IMX6ULL的mini板,使用的LCD是4.3寸800x480的。

移植是为了后续的驱动开发,这里就不分析代码了,直接用正点原子给的代码移植即可。

目录

1、移植uboot

1.1 修改LCD参数

1.2 修改网络驱动

1.3 编译烧录

1.4 设置bootargs 和 bootcmd

2、移植linux内核

2.1 设置tftp服务

2.2 使用tftp下载zImage和设备树文件

3、移植根文件系统

3.1 设置nfs服务

3.2 busybox根文件系统


1、移植uboot

1.1 修改LCD参数

修改uboot中mx6ull_alientek_emmc.c中的structdisplay_info_tconstdisplays[]

这里需要修改LCD的参数,改成对应你使用的LCD参数。原代码用的是7寸显示屏,如下图。

将其修改为4.3寸800x480,如下图。

1.2 修改网络驱动

给的代码里在mx6ull_alientek_emmc.c中的static void setup_iomux_fec(int fec_id)函数结尾少了延时,需要加上。

修改成如下图:

1.3 编译烧录

修改完直接编译烧录尽可,如果有使用和我一样型号的板子以及LCD的小伙伴也可以用下面的u-boot.bin

通过网盘分享的文件:u-boot.bin
链接: https://pan.baidu.com/s/1ktoFp59AEZCOhD9nVNcURg 提取码: 2026

1.4 设置bootargsbootcmd

进入u-boot的命令行界面设置bootargsbootcmd如下,为方便后续驱动开发,设置为从网络启动linux系统。

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw' setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000' saveenv

2、移植linux内核

2.1 设置tftp服务

#1. 停止 TFTP 服务 sudo systemctl stop tftpd-hpa #2. 编辑配置文件 sudo nano /etc/default/tftpd-hpa #找到以下内容,将路径修改为自己的tftp目录 TFTP_USERNAME="tftp" TFTP_DIRECTORY="/new/tftp/dir" # 修改为你的新目录 TFTP_ADDRESS=":69" TFTP_OPTIONS="--secure --create" #3、重启服务 sudo systemctl start tftpd-hpa # 设置开机自启 sudo systemctl enable tftpd-hpa

2.2 使用tftp下载zImage和设备树文件

通过网盘分享的文件:zImage
链接: https://pan.baidu.com/s/1cY0WYlX4AsYjUQSfc07WrQ 提取码: 2026

通过网盘分享的文件:imx6ull-alientek-emmc.dtb
链接: https://pan.baidu.com/s/1ZBsbg3mP7Xxc-OKhk3hSAg 提取码: 2026

直接使用编译好的文件即可。将zImage和设备树文件放在tftp目录下,启动开发板进入uboot命令行,输入以下命令:

tftp 80800000 zImage tftp 83000000 imx6ull-14x14-evk.dtb bootz 80800000 - 83000000

3、移植根文件系统

3.1 设置nfs服务

将nfs目录修改为需要挂载的根文件系统目录下:

#修改nfs挂载目录 sudo vi /etc/exports #改为自己的nfs路径 /home/pengmouren/linux/nfs *(rw,sync,no_root_squash)

进入uboot命令行设置bootargs环境变量:

setenv ipaddr 192.168.1.251 #开发板 IP 地址 setenv ethaddr b8:ae:1d:01:00:00 #开发板网卡 MAC 地址 setenv gatewayip 192.168.1.1 #开发板默认网关 setenv netmask 255.255.255.0 #开发板子网掩码 setenv serverip 192.168.1.250 #服务器地址,也就是 Ubuntu 地址 setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.250: /home/pengmouren/linux/nfs/rootfs,proto=tcp rw ip=192.168.1.251:192.168.1.250:192.168.1.1: 255.255.255.0::eth0:off' #设置 bootargs,上面的192.168.1.250是服务器(电脑)的ip,192.168.1.251是客服端(开发板)的ip。192.168.1.1是网关ip,都修改为自己的ip即可。 saveenv #保存环境变量

3.2 busybox根文件系统

将下面压缩包解压到nfs目录下即可。

通过网盘分享的文件:rootfs.tar.bz2
链接: https://pan.baidu.com/s/10FCtptGVYHCF_O0xCEzp2g 提取码: 2026

http://www.jsqmd.com/news/853271/

相关文章:

  • STM32 FSMC驱动8080液晶屏:地址映射、时序配置与避坑指南
  • 2026年石家庄墙布服务优质商家参考:长安区馨妍建筑装饰材料商行,石家庄贴墙布、老房翻新贴墙布、新房装修贴墙布,以专业服务守护家装墙面质感 - 海棠依旧大
  • 2026年5月最新 农业灌溉超声波液位计选型:国产与进口对比 - 仪表品牌榜
  • 5分钟搞定AI背景移除!OBS虚拟背景插件终极使用指南
  • 3D-FAMM:模块化模具技术如何革新微流控芯片的快速原型开发
  • 如何用ImageToSTL将平面图片变为3D打印模型:完整指南
  • JavaQuestPlayer深度解析:QSP游戏开发与运行平台的技术实现与实战指南
  • 甄选厦门优质开发团队 打造放心小程序定制服务 - 软件测评师
  • 对比直接使用厂商API体验Taotoken在多模型选型与成本上的优势
  • Windows上运行安卓应用:APK安装器完整指南
  • 嵌入式数据存储终极指南:5分钟快速上手FlashDB超轻量级数据库
  • YOLO-ONNX-Java分布式推理架构设计与实现
  • 从飞思卡尔智能车竞赛视频拆解嵌入式系统设计:感知、控制与工程实践
  • CANN/cann-learning-hub:Swan LLM 大模型实战课程
  • 2026年AI语音聊天工具横评:6款实测对比,哪款真的能聊?
  • Multisim 14.0卸载后重装总失败?可能是这3个隐藏文件夹和注册表项在捣鬼
  • Kubernetes Operator 开发实践:从 CRD 到控制器
  • 2026年河南少林武术学校最新推荐榜:少儿武术培训/青少年武术集训/专业武术深造/武术考级辅导/国际武术交流 - 海棠依旧大
  • Purple Pi OH开发板Android 11系统ROOT权限获取与Magisk实战指南
  • changzengli/yolo-onnx-java容错机制实现详解
  • 深入理解ops-tensor架构:模块化算子库的设计哲学与实现
  • 5. 损失函数
  • CANN数学不相等算子V2
  • 鸣潮游戏体验重塑:WuWa-Mod模组深度解析
  • 2026深度分析罗兰艺境B2B企业服务-仪器校准GEO技术案例,测评广州中广测计量检测优化过程与效果验证 - 罗兰艺境GEO
  • HC32F4A0外设引脚自由配置全攻略:如何像STM32重映射一样灵活规划你的原理图?
  • 解析2026年耐高温PPS塑料厂家的专业特性与应用优势
  • 一套代码适配四种屏幕——StyleConfiguration 键盘多设备适配方案
  • CANN ops-fft安全最佳实践:确保AI计算平台FFT算子的安全运行
  • 别再只用DS18B20了!用51单片机+ADC0804做个PT100温度计(附完整代码和Proteus仿真)