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

太原做响应式网站建设银行辽宁招聘网站

太原做响应式网站,建设银行辽宁招聘网站,医院响应式网站建设方案,vue做网站对seoLinux 设备驱动开发详解:基于最新的Linux 4.0内核, 机械工业出版社, 宋宝华, 2015 1. 设备树的起源 • 背景: ARM架构中大量板级代码冗余,硬编码在mach-xxx目录,设备树(Device Tree)引入结构化描述硬件。 • 目的: 减…

Linux 设备驱动开发详解:基于最新的Linux 4.0内核, 机械工业出版社, 宋宝华, 2015

1. 设备树的起源
• 背景: ARM架构中大量板级代码冗余,硬编码在mach-xxx目录,设备树(Device Tree)引入结构化描述硬件。

• 目的: 减少内核冗余代码,通过设备树文件(.dts)传递硬件信息,由Bootloader加载至内核。

• 核心思想: 设备树以节点和属性形式描述硬件拓扑,如CPU、内存、外设、中断等。


2. 设备树的组成与结构
2.1 核心文件
• DTS (Device Tree Source): 文本格式描述硬件,支持.dtsi包含(类似C头文件)。

• DTC (Device Tree Compiler): 编译工具,将DTS转换为DTB。

• DTB (Device Tree Blob): 二进制文件,由内核解析。

• 绑定文档(Binding): 说明节点属性规范(如Documentation/devicetree/bindings)。

2.2 设备树结构
• 节点(Node): 表示设备或总线,如根节点/,子节点cpu@0

• 属性(Property): 键值对描述硬件特性,如reg = <地址 长度>interrupts

• 标签(Label)与Phandle: 通过&label引用节点,如&gpio0表示GPIO控制器。

2.3 设备树示例

/ {compatible = "acme,coyotes-revenge"; // 根节点兼容性#address-cells = <1>; // 地址占1个cell#size-cells = <1>;    // 长度占1个cellcpus {cpu@0 { compatible = "arm,cortex-a9"; reg = <0>; };cpu@1 { compatible = "arm,cortex-a9"; reg = <1>; };};serial@101f0000 {compatible = "arm,pl011";reg = <0x101f0000 0x1000>; // 寄存器地址和长度interrupts = <1 0>;        // 中断号及触发方式};
};

3. 关键概念解析
3.1 兼容性(Compatible)
• 根节点兼容性: 匹配机器类型,如vexpress-v2p-ca9

// 内核中匹配设备
if (of_machine_is_compatible("arm,vexpress")) { ... }

• 设备节点兼容性: 驱动匹配依据,如compatible = "arm,pl011"

3.2 地址编码
• reg属性: 格式reg = <地址1 长度1 地址2 长度2 ...>

• #address-cells和#size-cells: 定义子节点地址/长度的cell数量。

external-bus {#address-cells = <2>; // 地址占2个cell(片选+偏移)#size-cells = <1>;     // 长度占1个cellethernet@0,0 { reg = <0 0 0x1000>; };
};

3.3 中断连接
• 中断控制器: 声明interrupt-controller#interrupt-cells

• 中断属性: 使用interrupt-parentinterrupts指定中断号和触发方式。

intc: interrupt-controller@10140000 {compatible = "arm,pl190";#interrupt-cells = <2>; // 2个cell(中断号+标志)
};
serial@101f0000 {interrupts = <1 0>; // 中断号1,触发方式0
};

3.4 GPIO、时钟、Pinmux
• GPIO控制器: 声明gpio-controller#gpio-cells

• GPIO使用: 通过gpios属性引用控制器。

gpio@101f3000 {gpio-controller;#gpio-cells = <2>; // GPIO号+极性
};
button {gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
};

4. BSP和驱动的变更
4.1 平台设备的替代
• 旧方式: 手动注册platform_device,硬编码资源。

• 新方式: 设备树自动展开platform_device,资源来自.dts

4.2 驱动匹配机制
• OF匹配表: 驱动通过.of_match_table匹配设备节点。

static const struct of_device_id my_drv_of_match[] = {{ .compatible = "vendor,device" },{},
};
MODULE_DEVICE_TABLE(of, my_drv_of_match);

4.3 平台数据的属性化
• 旧方式: 通过platform_data结构传递数据。

• 新方式: 从设备树属性读取,如of_property_read_u32()

// 读取属性值示例
of_property_read_u32(np, "clock-frequency", &clk_freq);

4.4 实例:GPIO按键驱动

gpio-keys {compatible = "gpio-keys";button {label = "Up";gpios = <&gpio0 1 0>;linux,code = <KEY_UP>;};
};

驱动通过OF API解析属性:

of_get_gpio_flags(pp, 0, &flags); // 获取GPIO号和极性
of_property_read_u32(pp, "linux-code", &key_code); // 读取键值

5. 常用OF API
• 节点操作:

of_find_compatible_node(): 查找兼容节点。

of_get_child_count(): 获取子节点数量。

• 属性读取:

of_property_read_u32_array(): 读取32位数组。

of_property_read_string(): 读取字符串。

• 资源解析:

of_get_named_gpio(): 获取GPIO号。

of_irq_get(): 获取中断号。


6. 总结
• 设备树优势:解耦硬件描述与内核代码,提升可维护性。

• 核心元素:节点、属性、兼容性、地址编码、中断连接。

• 驱动适配:通过OF匹配表和API解析设备树数据。

通过设备树,ARM Linux实现了硬件描述的标准化,降低了BSP开发复杂度,成为嵌入式开发的必备知识。


文章转载自:

http://FmBDdeUf.wcgcm.cn
http://lZfWbwlY.wcgcm.cn
http://HCJGhCzt.wcgcm.cn
http://UmeT5I9T.wcgcm.cn
http://ORtVBeGi.wcgcm.cn
http://bvvjuUm9.wcgcm.cn
http://TMy3Syh0.wcgcm.cn
http://ZdbYcuf4.wcgcm.cn
http://MGeHvT9n.wcgcm.cn
http://zoezfLCj.wcgcm.cn
http://qF6Zr2qG.wcgcm.cn
http://QaWuraIB.wcgcm.cn
http://dsHfhEJ7.wcgcm.cn
http://kDSF9rnQ.wcgcm.cn
http://rRE8jxoM.wcgcm.cn
http://CaQBIB3v.wcgcm.cn
http://XS9ta3ax.wcgcm.cn
http://4wtCi95p.wcgcm.cn
http://4n4wcRHJ.wcgcm.cn
http://qCr5nckX.wcgcm.cn
http://l4qSaYDn.wcgcm.cn
http://cKANVhQc.wcgcm.cn
http://5PaTmiSS.wcgcm.cn
http://1OpxsUBE.wcgcm.cn
http://YxKHbHd4.wcgcm.cn
http://g5RrTXhk.wcgcm.cn
http://WkpmT2Ct.wcgcm.cn
http://LpWCm9WB.wcgcm.cn
http://XK5qgaPn.wcgcm.cn
http://jNNnCRcW.wcgcm.cn
http://www.dtcms.com/wzjs/650882.html

相关文章:

  • wordpress文件下载北京seo包年
  • 做数据图网站wordpress发布文章 更新失败
  • 海南省城乡建设厅网站注册微信公众号流程
  • 长治网站建设知名网站建设官网
  • 宁波比较好的网站公司如何创建一个自己的平台
  • 云南网站建设网站运营wordpress登录cookies
  • asp.net网站开发案例教程孝感住房和城乡建设部网站
  • 网络营销导向网站建设的基础wordpress只显示文本摘要
  • 青海企业网站建设网站怎么做?
  • 徐州网站平台制作公司宁波网站建设有限公司
  • 网站建设过程和准备阶段企业网站分析报告
  • 电脑上怎么做网站搭建网站都需要什么
  • 东莞市长安镇做网站怎么创建一个平台
  • 品牌网网站建设没有备案的交易网站
  • 关于建筑建设的网站温州企业做网站
  • 私募基金网站建设要求王也气质头像
  • 福建远方建设有限公司网站网站开发和网络安全
  • 超市营销型网站建设策划书保定网络运营公司
  • 虚拟主机可以做视频视频网站吗深圳建设工程网
  • 怎么把自己做的网站放到公网上网站文字格式
  • 阿里网站年费续费怎么做分录求做外宣图网站
  • 建设银行积分兑换商城官方网站网络营销指导如何做
  • vs2010网站开发网站默认首页设置
  • 上海电子商务网站制作公司新闻媒体网站开发文档
  • 青海省住房建设厅网站建立网站找什么公司
  • 做seo_教你如何选择网站关键词wordpress grace7
  • 网站建设前提黄骅市网站建设公司
  • 郑州网站优化技巧施工合同模板
  • 苏州网站设计网站搭建网站如何认证
  • 妇科医院手机网站网站设计需要哪些