Linux驱动:设备树的使用基于pinctl和gpio子系统

1.驱动程序的三种写法

                                         图中介绍了驱动程序的三种写法

 2.使用设备树点亮led灯

        操作说明:imx6ULL开发板、搭建了ubuntu以及网络文件系统。(没有的看第一篇文章

     2.1内核路径

/home/fjq/100ask_imx6ull-sdk/Linux-4.9.88/arch/arm/boot/dts

       2.2内核文件

100ask_imx6ull-14x14.dts

        2.3 使用imx6ull设备树工具选择led指定的引脚

        2.4 添加Pinctrl 信息

&iomuxc_snvs {

    myled_for_gpio_subsys: myled_for_gpio_subsys{
    fsl,pins = <
        MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03 0x000110A0
    >;
};

#在文件中寻找iomuxc_snvs结点,添加到这个节点里面

        2.5 设备节点信息(放在根节点下)

myled {
    compatible = "100ask,leddrv";
    pinctrl-names = "default";
    pinctrl-0 = <&myled_for_gpio_subsys>;
    led-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
};

#参数说明: 1:compatible 要与程序中的名字相同,用于内核寻找相应的驱动程序

        2.6 编译(回到Linux-4.988 目录进行编译)


fjq@ubuntu:~/100ask_imx6ull-sdk/Linux-4.9.88$ make dtbs 

        2.7 编译成功提示

fjq@ubuntu:~/100ask_imx6ull-sdk/Linux-4.9.88$ make dtbs
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
  CHK     include/generated/bounds.h
  CHK     include/generated/timeconst.h
  CHK     include/generated/asm-offsets.h
  CALL    scripts/checksyscalls.sh
  DTC     arch/arm/boot/dts/100ask_imx6ull-14x14.dtb

        2.8 将dtb文件复制到网络文件系统

cp arch/arm/boot/dts/100ask_imx6ull-14x14.dtb /home/book/nfs_rootfs/

        2.9 开启开发板

//复制网络文件系统中的dtb文件 到 boot目录中  重启

[root@imx6ull:/mnt]# cp 100ask_imx6ull-14x14.dtb /boot/
[root@imx6ull:/mnt]# reboot

        2.10编译编写的驱动程序 挂载驱动程序

// 执行makefile文件
make

//打开内核打印信息
echo "7 4 1 7" > /proc/sys/kernel/printk
//挂载驱动程序
insmod insmod led_drv.ko

//执行
./led_text /dev/100ask_led0 on

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值