资讯详情

嵌入式学习 day61-62:IMX6ULL驱动——系统移植

📅 2026/10/8 18:44:02 | 华诺云谱 👁 阅读
嵌入式学习 day61-62:IMX6ULL驱动——系统移植
一、环境搭建1. 双网卡配置嵌入式开发中Ubuntu 需要同时满足两个需求上外网用 apt-get 下载软件。和开发板通信用 tftp 传文件、nfs 挂载根文件系统。所以需要双网卡网卡模式用途ens33NAT上外网ens37桥接连接开发板配置要点桥接模式必须桥接到有线网卡不能选“自动”。Windows 端有线网卡 IP 设为192.168.1.200子网掩码255.255.255.0网关留空。关闭 Windows 防火墙。Ubuntu 端ens37设为192.168.1.100。2. tftp 服务器tftp 用于从 Ubuntu 下载内核镜像和设备树到开发板。bashsudo apt-get install tftpd-hpa tftp sudo mkdir -p /home/linux/tftpboot sudo chmod 0777 /home/linux/tftpboot sudo vim /etc/default/tftpd-hpa配置文件textTFTP_USERNAMEtftp TFTP_DIRECTORY/home/linux/tftpboot TFTP_ADDRESS:69 TFTP_OPTIONS--secure -l -c重启服务bashsudo systemctl restart tftpd-hpa3. nfs 服务器nfs 用于开发板挂载 Ubuntu 的根文件系统。bashsudo apt-get install nfs-kernel-server sudo vim /etc/exports添加text/home/linux/nfs/rootfs *(rw,sync,no_subtree_check,no_root_squash)重启服务bashsudo systemctl restart nfs-kernel-server sudo showmount -e4. 交叉工具链PDF 指定的是gcc-linaro-4.9.4-2017.01不能用 Ubuntu 自带的 11.4.0会导致GLIBC_2.34 not found。bashsudo mkdir -p /home/linux/tools/opt sudo tar -xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz -C /home/linux/tools/opt vim ~/.bashrc添加放在 $PATH 前面bashexport PATH/home/linux/tools/opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin:$PATH生效并验证bashsource ~/.bashrc arm-linux-gnueabihf-gcc -v # 应显示 4.9.4二、模式三U-Boot tftp nfs模式三是开发阶段最常用的方式U-Boot 烧写到 SD 卡。zImage 和 dtb 通过 tftp 下载。rootfs 通过 nfs 挂载。U-Boot 配置bashsetenv ipaddr 192.168.1.50 setenv ethaddr 00:04:9f:04:d2:35 setenv gatewayip 192.168.1.1 setenv netmask 255.255.255.0 setenv serverip 192.168.1.100 saveenv # 分段设置 bootcmd避免单条命令过长被截断 setenv bootcmd1 tftp 80800000 zImage setenv bootcmd2 tftp 83000000 imx6ull-alientek-emmc.dtb setenv bootcmd3 bootz 80800000 - 83000000 setenv bootcmd run bootcmd1; run bootcmd2; run bootcmd3 setenv bootargs consolettymxc0,115200 root/dev/nfs nfsroot192.168.1.100:/home/linux/nfs/rootfs rw ip192.168.1.50:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off saveenv启动成功textVFS: Mounted root (nfs filesystem) on device 0:14. Please press Enter to activate this console. / #三、四个核心文件模式三启动依赖四个关键文件各自作用不同1. U-Bootu-boot.imx作用引导加载程序负责硬件初始化、加载内核镜像、传递参数。烧写位置SD 卡。启动流程芯片上电 → bootROM → SPL → U-Boot → 内核。核心功能初始化 DDR、时钟、串口、网卡。提供命令行交互提示符。通过 tftp 下载内核和设备树。通过bootz启动内核。2. zImagezImage作用Linux 内核镜像操作系统的核心。加载方式通过 tftp 下载到内存地址80800000。功能进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。启动后根据bootargs挂载根文件系统。3. 设备树imx6ull-alientek-emmc.dtb作用描述硬件平台的资源信息寄存器地址、中断、时钟、GPIO 等。加载方式通过 tftp 下载到内存地址83000000。来源由.dts文件编译生成。意义Linux 3.x 以后硬件信息从内核独立出来驱动通过设备树获取硬件信息实现设备与驱动分离。4. 根文件系统rootfs.tar.bz2作用Linux 系统运行的基础提供文件资源管理、用户交互等功能。挂载方式通过 nfs 挂载 Ubuntu 的/home/linux/nfs/rootfs。内容/bin、/dev、/etc、/lib、/usr等目录。制作方式用 BusyBox 构建后续章节会讲。四个文件的关系textU-Boot (SD卡) ↓ 初始化硬件提供命令行 ↓ tftp 下载 zImage (内存 80800000) 设备树 (内存 83000000) ↓ bootz 启动 内核启动 ↓ 根据 bootargs 根文件系统 (nfs 挂载 /home/linux/nfs/rootfs) ↓ 进入 Linux 系统简单理解U-Boot搬运工负责把内核和设备树搬到内存。zImage操作系统核心负责管理硬件和进程。设备树硬件说明书告诉内核硬件长什么样。根文件系统用户空间提供命令、库、配置文件。四、内核编译及裁剪内核编译是驱动开发的基础重点搞懂1. 编译流程bashmake ARCHarm CROSS_COMPILEarm-linux-gnueabihf- distclean make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- imx_alientek_emmc_defconfig make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- menuconfig make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- all -j16生成arch/arm/boot/zImage内核镜像。arch/arm/boot/dts/imx6ull-alientek-emmc.dtb设备树。2. 内核源码结构目录内容arch架构相关代码drivers设备驱动重点fs文件系统kernel内核核心mm内存管理net网络协议栈3. 设备树Linux 3.x 以后硬件信息从内核独立出来称为设备树.dts设备树源码。.dtb编译后的二进制。驱动通过设备树获取寄存器地址、中断、GPIO 等信息。4. 内核里的汇编内核里 95% 以上是 C 语言汇编只在架构相关启动代码head.S。上下文切换。原子操作。写驱动不需要汇编用 C 语言就行。五、总结嵌入式开发环境搭建是驱动开发的基础核心要点如下双网卡配置Ubuntu 需要同时满足上外网和与开发板通信两个需求。NAT 模式负责上外网桥接模式负责与开发板连接桥接必须桥接到有线网卡。tftp 服务器用于开发板从 Ubuntu 下载内核镜像和设备树文件管理目录为/home/linux/tftpboot。nfs 服务器用于开发板挂载 Ubuntu 的根文件系统共享目录为/home/linux/nfs/rootfs实现 Ubuntu 与开发板之间的文件实时同步。交叉工具链PDF 指定的是 gcc-linaro-4.9.4用于在 x86 平台上编译能在 ARM 平台运行的代码是驱动开发和应用程序编译的基础。四个核心文件U-Boot引导加载程序负责硬件初始化和加载内核。zImageLinux 内核镜像操作系统的核心。dtb设备树描述硬件资源信息实现设备与驱动分离。rootfs根文件系统提供文件资源和用户交互。内核编译及裁剪内核里 95% 以上是 C 语言汇编只涉及启动代码、上下文切换、原子操作。写驱动不需要汇编用 C 语言即可。设备树是重点驱动通过设备树获取硬件信息。模式三U-Boot 烧写到 SD 卡zImage 和 dtb 通过 tftp 下载rootfs 通过 nfs 挂载。这是开发阶段最常用的方式修改内核或文件系统后无需重新烧录重启即可加载最新版本。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑