嵌入式Linux--驱动开发常用操作

一、编译内核

嵌入式Linux开发的故事

  • 位置:内核工程的根目录
  • 命令:
    • 1、清除:make clean
    • 2、配置:make imx_v7_mfg_defconfig
    • 3、编译:make -j16
  • 生成文件位置:arch/arm/boot/ 的 zImage

二、编译U-Boot

  • 位置:Uboot工程的根目录
  • 命令:
    • 1、清除:make clean
    • 2、配置:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
    • 3、编译:make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
  • 生成文件位置:根目录下的uboot.imx

三、编译设备树文件

  • 位置:内核工程的/arch/arm/boot/dts
  • 命令:make imx6ull-xxxxx-emmc.dtb
  • 生成文件位置:/arch/arm/boot/的make imx6ull-xxxxx-emmc.dtb

四、自定义启动参数设置

嵌入式Linux–U-Boot(九)通过TFT/NFS网络更新U-Boot、Kernel、DTB文件

  • 在哪里设置:Uboot命令行模式

1、设置从emmc上加载kernel和dtb文件

setenv bootcmd 'fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull_liefyuan_emmc.dtb; bootz 80800000 - 83000000'

=> setenv bootcmd 'fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull_liefyuan_emmc.dtb; bootz 80800000 - 83000000'
=> saveenv
Saving Environment to MMC...
Writing to MMC(1)... done
=> boot

2、设置从nfs服务器上加载根文件系统

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.0.120:/home/liefyuan/linux/nfs/rootfs,proto=tcp rw ip=192.168.0.121:192.168.1.120:192.168.0.1:255.255.255.0::eth0:off'

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.0.120:/home/liefyuan/linux/nfs/rootfs,proto=tcp rw ip=192.168.0.121:192.168.1.120:192.168.0.1:255.255.255.0::eth0:off' 
saveenv

五、写一个驱动文件的流程

  • 确定一个kernel工程,编译出内核zImage
  • 确定一个U-Boot工程,编译出uboot.imx文件
  • 确定一个最小根文件系统
  • 确定一个modules文件,
  • uboot命令行:配置好网络
  • 虚拟机:配置好nfs服务器,用于存放根文件系统、modules文件
  • 虚拟机:配置好tftp服务器,用于更新内核、uboot、设备树
  • uboot命令行:配置自定义从emmc启动内核、设备树
  • uboot命令行:nfs服务器网络挂载根文件系统
  • 写驱动文件,配置c_cpp_properties.json和Makefile文件上面确定好的那个内核地址,编译出xxx.ko文件
  • 修改确定的那个内核工程内的设备树文件dts,编译出dtb文件
  • uboot命令行:更新dtb文件
    • 查看设备节点:ls /proc/device-tree/
    • 查看设备:ls /dev/
  • 写驱动测试文件,编译出可执行文件xxx
  • 拷贝xxx.ko和xxx到nfs服务器下的根文件系统目录/lib/modules/6.6.6/kernel/drivers/xxx目录下
  • 在上一条指定目录下:
    • 执行depmod
    • 执行modprobe xxx.ko
    • 运行./xxx /dev/xxx 1

六、简洁版:驱动开发

  • 编写驱动工程:驱动源码文件、驱动测试文件、驱动应用文件
  • 编译出驱动模块.ko、驱动测试执行文件、驱动应用执行文件
  • 修改设备树文件.dts:
  • 编译出设备树.dtb:
  • u-boot命令行更新设备树.dtb文件,重启
  • 将编译出的编译出驱动模块.ko、驱动测试执行文件、驱动应用执行文件放到网络文件系统的文件夹内,开发板挂了网络文件系统
  • 安装驱动模块,执行驱动测试文件,执行驱动应用执行文件
  • 卸载驱动模块
  • 完成
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页