当前位置: 首页 > news >正文

太原适合网站设计地址网站空间租用

太原适合网站设计地址,网站空间租用,如何做网站的seo优化,一个美工做网站好做吗一、什么是设备树 描述设备树的文件叫做DTS(Device Tree Source),采用树形结构描述板级设备,也就是开发板上的设备信息,比如IIC接口上接了那些设备,内存基地址等 树的主干就是系统总线,枝干就…

一、什么是设备树

描述设备树的文件叫做DTS(Device Tree Source),采用树形结构描述板级设备,也就是开发板上的设备信息,比如IIC接口上接了那些设备,内存基地址等

树的主干就是系统总线,枝干就是对应的控制器,比如IIC控制器,GPIO控制器等都是主线上的分支

二、关于DTS、DTB和DTC

DTS是设备树源码文件

DTB是将DTS编译以后所得到的二进制文件

DTC是将.dts文件编译成.dtb文件所用到的工具

要编译DTS文件的话,需要进入linux源码根目录下,执行命令:

make all
或者
make dtbs

如果只编译设备树的话,直接使用make dtbs命令即可

三、DTS语法

工作中,不会从头到尾写一个.dts文件,大部分是修改.dts文件

1、.dtsi头文件

和 C 语言一样,设备树也支持头文件,设备树的头文件扩展名为.dtsi

#include "stm32mp157.dtsi"
#include "stm32mp15xd.dtsi"

2、设备节点

设备树是采用树形结构来描述板子上的设备信息的文件,每个设备都是一个节点,叫做设
备节点,每个节点都通过一些属性信息来描述节点信息,属性就是键—值对

常用的几种数据形式:

1、字符串

compatible = "arm,cortex-a7";

设置compatible属性的值为字符串“arm,cortex-a7”

2、字符串列表

compatible = "st,stm32mp157d-atk", "st,stm32mp157";

3、32位无符号整数

reg = <0>;

设置 reg 属性的值为 0,reg 的值也可以设置为一组值

3、标准属性

节点由一堆属性组成,节点都是具体的设备,不同的设备需要的属性不同,用户可以自定义属性。其次还有许多标准属性,linux很多外设驱动都会使用这些标准属性。

1、compatible属性

表示“兼容性”属性,值就是一个字符串列表,compatible属性用于将设备和驱动绑定,字符串列表用于选择设备所要的驱动程序。

格式:

compatible = "cirrus,cs42l51";

其中:cirrus表示厂商是Cirrus,Logic,cs42151表示驱动模块名字

设置后,设备就会在linux内核里面查找,找到与之匹配的驱动文件

2、model属性

model 属性值也是一个字符串,一般 model 属性描述开发板的名字或者设备模块信息

比如:

model = "STMicroelectronics STM32MP157C-DK2 Discovery Board";

3、status属性

和设备状态有关的,status 属性值也是字符串,显示okay表示设备可以操作

4、reg属性

reg 属性的值一般是(address,length)对。reg 属性一般用于描
述设备地址空间资源信息或者设备地址信息。

等。

例:设备树下的LED驱动编写

1、修改设备树文件

在根节点“/”下创建一个名为“stm32mp1_led”的子节点,打开 stm32mp157d-atk.dts 文件,
在根节点“/”最后面输入如下所示内容:

stm32mp1_led {compatible = "atkstm32mp1-led";status = "okay";reg = <0X50000A28 0X04 /* RCC_MP_AHB4ENSETR */0X5000A000 0X04 /* GPIOI_MODER */0X5000A004 0X04 /* GPIOI_OTYPER */0X5000A008 0X04 /* GPIOI_OSPEEDR */0X5000A00C 0X04 /* GPIOI_PUPDR */0X5000A018 0X04 >; /* GPIOI_BSRR */}

设备树修改完成以后输入如下命令重新编译一下 stm32mp157d-atk.dts,使用make dtbs

编译完成以后得到 stm32mp157d-atk.dtb,使用新的 stm32mp157d-atk.dtb 启动 Linux 内核。
Linux 启动成功以后进入到/proc/device-tree/目录中查看是否有“stm32mp1_led”这个节点

关键代码(参考正点原子文档):

/* gpioled 设备结构体 */
struct gpioled_dev{dev_t devid;            /* 设备号 */struct cdev cdev;        /* cdev */struct class *class;    /* 类 */struct device *device;    /* 设备 */int major;                /* 主设备号 */int minor;                /* 次设备号 */struct device_node *nd;    /* 设备节点 */int led_gpio;               /* led 所使用的 GPIO 编号*/};
struct gpioled_dev gpioled;    /* led 设备 */
/*打开设备*/
static int led_open(struct inode *inode, struct file *filp)
{}
/*从设备读取数据*/
static ssize_t led_read(struct file *filp, char __user *buf,size_t cnt, loff_t *offt)
{}
/*向设备写数据*/
static ssize_t led_write(struct file *filp, const char __user *buf,size_t cnt, loff_t *offt)
{}
/*关闭释放设备*//*设备操作函数*/static struct file_operations gpioled_fops = {.owner = THIS_MODULE,.open = led_open,.read = led_read,.write = led_write,.release = led_release,};
/*驱动出口函数*/
static int __init led_init(void)
{}

最后,

1、编写makefile文件

2、编写测试APP

编译出来的两个文件拷贝到 rootfs/lib/modules/5.4.31 目录中,重启开发板,进入到目录 lib/modules/5.4.31 中,输入如下命令加载驱动模块。

depmod//第一次加载驱动的时候需要运行此命令
modprobe gpioled//加载驱动

参考:正点原子文档

http://www.zhongyajixie.com/news/8677.html

相关文章:

  • 好搜360网站哈尔滨seo网络推广
  • 教做网站的学校微信营销怎么做
  • 想自己做一个网站百度seo多少钱一个月
  • 顺德互动交流网站成都网站制作费用
  • 建设游戏运营网站开展工作内容百度北京分公司官网
  • 兰州网站建设100优秀软文范例100字
  • 北京西站到八达岭长城最快路线如何做宣传推广营销
  • 手机怎么编辑网页牛排seo
  • 艺术网站模板全国各城市感染高峰进度查询
  • 网线制作实验报告总结江苏短视频seo搜索
  • 小企业网站建设系统哪个好新闻稿发布软文平台
  • wordpress 云服务器配置关键词排名优化报价
  • 医疗类网站建设亚马逊关键词搜索器
  • 找别人做网站可靠吗室内设计培训哪个机构比较好
  • 旅游景区网站建设技能培训学校
  • 通州专业网站制作做seo用哪种建站程序最好
  • 摄影网站建设内容如何拥有自己的网站
  • 麻涌镇网站仿做全国前十名小程序开发公司
  • 网站改版 更换域名2024年最新一轮阳性症状
  • 动画设计视频教程seo教程技术优化搜索引擎
  • 模板网站会影响网站优化吗安徽做网站公司哪家好
  • 如何做1个手机网站可以免费投放广告的平台
  • 俄罗斯做电商网站域名解析查询站长工具
  • 如何做免费的网站推广南昌seo全网营销
  • 中国有色金属建设股份有限公司网站台州seo排名公司
  • 网站在线布局浙江百度查关键词排名
  • 椒江街道招聘建设网站seo研究协会网
  • 用layui做的一个网站模板广州企业推广
  • 建设网站找什么问题免费crm
  • 电商类网站建设价格公司搜索seo