
虚拟机环境搭建虚拟机环境电脑型号surface pro6 i5-8250U 8G内存256G硬盘WIN11(先用官方镜像U盘重装家庭版然后升级专业版)版本 Windows 11 专业版版本号 25H2安装日期 2026/8/24操作系统版本 26200.9168功能包 Windows 功能体验包 1000.26100.344.0虚拟机版本WSL 版本: 2.7.12.0内核版本: 6.18.33.2-2WSLg 版本: 1.0.73.2MSRDC 版本: 1.2.7214Direct3D 版本: 1.611.1-81528511DXCore 版本: 10.0.26100.1-240331-1435.ge-releaseWindows: 10.0.26200.9168ubuntu版本22.04WSL网络配置 Mirrored这样局域网的开发板可以直接访问WSL-ubuntu的服务器2. 搭建tftp服务器sudo apt-get install tftpd-hpasudo vi /etc/default/tftpd-hpa 后添加TFTP_DIRECTORY/home/lian/tftpboot(关闭防火墙对应目录自己创建权限放宽把zImage和dtb拷进来)sudo service tftpd-hpa restart 启动3. 搭建nfs服务器sudo apt-get install nfs-kernel-serversudo vi /etc/exports 添加 /home/lian/nfs *(rw,sync,no_root_squash) 前面是自己的nfs目录记得把目录权限打开4. 搭建编译环境sudo apt install -y make bison flex libssl-dev lzop libncurses5-dev gcc交叉工具https://mirrors.cstcloud.cn/armbian-releases/_toolchain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xzTOOCHAIN/home/lian/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/binexport PATH$PATH:$TOOCHAIN注意这里要用绝对路径不然make 找不到Uboot未测试git clone GitHub - nxp-imx/uboot-imx: i.MX U-Boot · GitHub -b rel_imx_4.1.15_2.1.0_gamake mx6ull_14x14_evk_defconfigmake ARCHarm CROSS_COMPILEarm-linux-gnueabihf-uboot中相关配置如下我是用imx6ull直连电脑电脑IP设置为192.168.3.9serverip192.168.3.9netmask255.255.255.0ipaddr192.168.3.99bootargsconsolettymxc0,115200 root/dev/nfs rw nfsroot192.168.3.9:/home/lian/nfs,vers3,prototcp ip192.168.3.99::192.168.3.1:255.255.255.0::eth0:off rootwaitbootcmdtftp 80800000 zImage; tftp 83800000 imx6ull-14x14-evk.dtb; bootz 80800000 - 83800000Linuxgit clone GitHub - nxp-imx/linux-imx: i.MX Linux kernel · GitHub -b rel_imx_4.1.15_2.1.0_gamake ARCHarm imx_v7_defconfigmake ARCHarm menuconfig 确认自己开发的芯片System Type --- [*] Freescale i.MX family --- [*] i.MX6 ULL supportmake ARCHarm CROSS_COMPILEarm-linux-gnueabihf- -j12编译报错重复yylloc把其中一个加extern即可make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- dtbscp arch/arm/boot/zImage /home/lian/tftpboot/cp arch/arm/boot/dts/imx6ull-14x14-evk.dtb /home/lian/tftpboot/文件系统https://busybox.net/downloads/busybox-1.35.0.tar.bz2make menuconfig:Settings --- --- Build Options () Cross compiler prefix (NEW)然后输入arm-linux-gnueabihf-Settings --- --- Build Options [*] Build static binary (no shared libs) 静态库链接make -j12make installcp _install/* ~/nfs/ -acp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib ~/nfs/ -a //这是交叉编译工具的库mkdir dev proc mnt sys tmp rootmkdir etc/init.d -pvim etc/init.d/rcS 输入以下内容#!/bin/sh PATH/sbin:/bin:/usr/sbin:/usr/bin:$PATH LD_LIBRARY_PATH$LD_LIBRARY_PATH:/lib:/usr/lib export PATH LD_LIBRARY_PATH mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev /proc/sys/kernel/hotplug mdev -schmod 777 etc/init.d/rcSvim etc/fstab# proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0vim etc/inittab::sysinit:/etc/init.d/rcS ::askfirst:-/bin/sh ::restart:/sbin/init ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r ::shutdown:/sbin/swapoff -avim etc/profile#!/bin/sh export HOSTNAMESmartCar export USERroot export HOMEroot export PS1[$USER$HOSTNAME \W]\# PATH/bin:/sbin:/usr/bin:/usr/sbin LD_LIBRARY_PATH/lib:/usr/lib:$LD_LIBRARY_PATH export PATH LD_LIBRARY_PATHVscode开发Linux环境搭建通过vscode打开WSL的内核目录VSCODE中安装clangd插件并且弹窗提醒安装WSL的clangd插件在wsl中安装bearmake cleanbear -- make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- -j12驱动编译脚本ifeq($(KERNELRELEASE),)X86_KERNEL_BUILD /1ib/modules/$(shelluname -r)/buildARM_KERNEL_BUILD /home/lian/kernel/linux-imxMODULE_PATH$(shellpwd)arm_module:make -C$(ARM_KERNEL_BUILD)M$(MODULE_PATH)modules ARCHarm CROSS_COMPILEarm-linux-gnueabihf-cp myDriver.ko /home/lian/nfs/test/x86_module:make -C$(X86_KERNEL_BUILD)M$(MODULE_PATH)mOdulesclean:make -C$(X86_KERNEL_BUILD)M$(MODULE_PATH)cleanelseobj-m myDriver.oendif解释ARM_KERNEL_BUILD是Linux源码目录myDriver对应驱动代码myDriver.c输入make arm_module就会编译驱动代码并且拷贝到/home/lian/nfs/test/目录