[X]关闭
0

LINUX篇 基于debian9系统 CH14_gpio_leds设备树驱动

摘要: 14.1概述 在上一节课中我们学习了platform device driver,是在字符驱动后发展起来的,注册的时候把驱动分成了device和driver两部分开发,通过compatible在总线匹配,达到触发probe函数,进而进行初始化、读写等操 ...

14.1概述

      在上一节课中我们学习了platform device driver,是在字符驱动后发展起来的,注册的时候把驱动分成了device和driver两部分开发,通过compatible在总线匹配,达到触发probe函数,进而进行初始化、读写等操作。在本节课中我们将要学习gpio_leds设备树驱动,也是我们之后教程里使用的驱动方式。

14.2 gpio_leds设备树驱动

1>首先我们打开debian下的fpga工程,本节课我们使用的axi_gpio_led。

2>可以查看一下地址空间。可以看到偏移地址是0x4121 0000,地址长度是64K。

3>进入SDK我们可以看到系统设备树的信息,但是需要注意的是我们一般自动产生的设备树文件是不能利用的,需要进行修改。

4>以上设备树的产生需要说明下,产生设备树需要注意首先设置路径,这个dtg的路径就是设备树源码。

5>新建设备树工程

6>选择device_tree新建设备树工程,单击Finish

7>单击OK

这样就能完成前面的设备树工程了

8>接下来我们详细查看pl.dts内容,下面是我pl.dts的一些理解。

①gpio-cells属性是一个GPIO controller必须定义的属性,它描述了需要多少个cell,(1)和(2)是对单个pin的配置进行读取或者设定,(3)和(4)是对pin group的配置进行读取或者设定。

②reg后面的内容以此是地址及长度。

③设备树通过查找compatible属性内容查找相关驱动,内核在编译的时候会查看compatible,匹配成功,驱动才能被加载。

④gpios = <&axi_gpio_led 0 0>;括号内的内容包括地址,位号和触发方式。

⑤编写完成设备树后需要在system-top.dts中添加pl.dts和zynq-7000.dts,也可以把不经常改动的内容放在里面。

 

9>接下来进入我们的编译部分,课程是以debian系统为例,所以我们需要在settings64.sh的ZN_PROJECT_NAME选择debian。

10>首先我们执行settings64.sh。

11>根据xilin-wiki网站提示打开相应开关,修改/mnt/workspace/osrc-lab/sources/kernel/arch/arm/configs路径下的xilinx_mz7x_defconfig文件,保存。

12>进入kernel文件夹,执行cfg_kernel.sh脚本。

13>执行编译内核脚本make_kernel.sh。

14>在编译内核的过程中,下面路径下的dts文件就会调用,并且在内核里面重新进行编译。

15>通过create_image.sh脚本产生image文件。

16>如果我们的开机系统本身就是debian9的,我们可以只替换boot内的内容,替换文件的路径如下,如果不是,还需要执行分区和烧录工作。

17>退出SD卡,插入开发板中,window下打开putty软件,上电开机启动开发板。

18>使用ssh软件连接开发板,注意开发板、虚拟机和PC要在同一网段。

19>进入/sys/class/leds目录查看驱动是否存在。

20>使用scp –r命令把driver_app复制到开发板上。

21>使用gcc命令生成.out文件。

22>执行.out文件,查看led循环点亮。

2

路过

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (2 人)

最新评论

本文作者
2019-10-9 17:23
  • 1
    粉丝
  • 2614
    阅读
  • 0
    回复

关注米联客

扫描关注,了解最新资讯

联系人:汤经理
电话:0519-80699907
EMAIL:270682667@qq.com
地址:常州溧阳市天目云谷3号楼北楼201B
热门评论
排行榜