编辑视点

  • 三分天下的封测环节,为何增速低

    尽管近年来国内一些龙头企业的先进封测关键技术正在不断……

  • 高通与Arm接连向华为抛出“橄榄枝

    近日,高通与Arm相继表示将为华为持续供货,美国这盘棋输……

  • 颠覆想象!AI竟发展到这种地步,

    除了文中介绍的14款"硬科技"之外,你还了解哪些让人颠……

  • 嵌入式
  • 电源
  • 汽车电子
  • 单片机
  • 消费电子
  • 测试测量
  • 显示光电
  • 物联网
  • 模拟
  • 通信技术
  • EDA
  • 智能硬件
  • 工业控制
  • 医疗电子
  • 资讯

  • 浙江移动完成首例基于华为鲲鹏处理器的CRM及
  • 中科视维与华为达成合作,共创“5G+科技文旅
  • 5G套餐已至 是时候入手5G手机了吗?
  • 新品

  • 5G商用首体验:速度上不去的真正“门槛”在
  • 雷军晒小米CC9 Pro/iPhone 11 Pro Max夜景对
  • Redmi Note 8T配置曝光:现已通过台湾NCC认
  • 应用

  • 设备树使用简介
  • 热电偶测量原理
  • 技术专访

  • 三星Galaxy Note10引以为豪的SPe

    尼吉康在CEATEC 2019为21ic中国电子网记者揭秘了三星Gal……

  • Arm首推主流市场NPU/GPU/DPU IP,

    市场需要的是一套软件硬件相结合的,能够发挥生态系统的……

  • 基础知识

  • 单片机MCU如何实现让部分代码运行在RAM中?看这里
  • 关于SPI-Flash的一些基础知识
  • 单片机MCU相关基础知识整理篇
  • 电平控制LED灯,电平转换电路
  • 技术交流
  • 侃单片机
  • 开源创客
  • 模拟技术
  • 新手园地
  • ST MCU
  • 无人机
  • 情感天地
  • 编辑推荐

  • MDK,和谐到2032年,你懂的
  • 使用nanoVNA测量电容频率特性!!!
  • 【图解实用电子技术丛书】18本合集下载,全网最全整理!
  • 北京网友北海聚会游记,有爆照哟~
  • 通信协议开发利器, 通信协议CRC校验码计算工具
  • 【STM32H7系列】+基于STM32 H7的视觉识别调试
  • 【CH9141蓝牙评估版试用】初步测试试用
  • 【AC7811开发板试用活动】从0开始创建AC7811工程
  • 【AC7811开发板试用活动】简单串口打印
  • 【改装】+小音箱上个人工智能“度秘”
  • 厂商

  • 十大热门

  • 《ARM嵌入式体系结构与接口技术》.pdf -arm嵌入式学习资源...
  • 请教LDO电路输入处能不能用电阻分压?
  • 滤波器如何设计
  • 有人成功安装了MPLAB X IDE v5.30吗?
  • 稳压管和MOS管降压电路问题
  • MOS管道通电压很高???
  • 二分频电路
  • 用N76E003做无刷电机控制器(BLCD)原创、连载
  • Microchip开发板月月送11月
  • 数字量 模拟量的“串扰”
  • 高级工程师嵌入式之系统移植经验精讲(36课时)
  • 零基础入门到精通之最全实战单片机视频
  • 千锋物联网:最全的嵌入式C语言教程
  • 零基础电子工程师入门视频-趣味制作-计算器、跑马灯、模数转换、单片机
  • 西门子S7-200PLC入门到精通70讲(精)
  • 在线研讨会

  • 低成本,全功能8位MCU开发套件的灵活应用

    演讲人:邱意

    时间:2019-10-23 10:00:00

  • “英”工“艾”业-SEED-XMC4800开发套件实现EtherCAT + 电机控制

    演讲人:白松

    时间:2019-10-29 10:00:00

  • 安森美半导体完整的USB Type-C和供电(PD)方案

    演讲人:黄民乐

    时间:2019-11-14 10:00:00

  • TI在线培训中心

  • THS6222宽带PLC线路驱动器概述
  • 42/5000 以太网供电(PoE)培训系列
  • 用升降压转换芯片延长真无线或助听系统的电池续航
  • 嵌入式课程
  • 电源课程
  • 汽车电子课程
  • 信号链课程
  • AM335X样板基本功能调试

    预算:¥5000013小时前

  • nRF51822蓝牙芯片驱动程序编写

    预算:¥2000017小时前

  • 单片机控制esp8266建立服务端和客户端,与上位机通信

    预算:¥2000018小时前

  • 分类

  • 通信
  • 工业
  • 电路设计
  • 消费
  • 汽车
  • 智能家居/家电
  • 智能穿戴
  • 安防监控
  • 医疗电子
  • 半导体/EDA
  • 机器人/无人机
  • 软件/系统开发
  • 测量/模拟
  • 电池电源
  • 光电显示
  • 游戏/办公
  • 其他
  • FPGA 工程师

    上海市13天前

  • 嵌入式开发工程师

    广东省13天前

  • FPGA工程师

    北京市16天前

  • 分类

  • 电子/电器/半导体/仪器仪表
  • 质量管理/安全防护
  • 软件/互联网开发/系统集成
  • 硬件开发
  • IT质量管理/测试
  • 电信/通信技术
  • 汽车制造
  • 其它
  • GB7258-2017机动车运行安全技术条件
  • Elasticsearch 权威指南
  • Effective Go,Go语言经典书籍
  • C++ Templates The Complete Guide,C++ 模板的经典书籍
  • Practical Clojure,Clojure 编程语言的经典书籍
  • 松下 MN34906BL TOF Sensor 与 ADI AFE 配合的电路图
  • GB 7258-2017《机动车运行安全技术条件》
  • 基于STM32 W5500的TCP客户端通信源码
  • 电路图

  • 无线温湿度测试系统电路设计图
  • 车用语音手机来电提醒器电路图
  • 车载手机充电器电路图
  • 电力拖动控制线路图13例
  • 单片机蜂鸣器的控制程序与驱动电路图
  • 可控硅控制电路图解及制作13例
  • 激光枪射击游戏的电路图
  • 索尼PS2主机故障维修原理电路图
  • TI designs 参考设计库

  • 用于 2 线、4 到 20 mA 电流环路系统的 RTD 温度发送器
  • 汽车类高电流无刷直流 (BLDC) 电机驱动器
  • 采用 iBeacon 技术的 SensorTag
  • (有奖)加入myTI,深度学习,挖掘你最感兴趣的小亮点

    [活动时间]:即日起-11.25

  • BusyBee开发板免费送,前100位申请人人有礼

    [活动时间]:活动时间:10.22-11.2

  • 营业中:Silicon Labs阅览室,来此一览满载而归

    [活动时间]:2019.09.25-12.25

  • TI 金秋福气大礼包,Pick 你心中的”My TI”

    [活动时间]:9月24日-10月24日

  • 安森美半导体Fan Club换新—第三期Lucky star 等你点亮

    [活动时间]:2019.09.23-12.23

  • 九芒星相 金风送礼

    [活动时间]:2019.09.10-10.31

  • EP专题

    [活动时间]:即日起-10.19

  • “电子大改造”,快来参赛吧--这不是你以为的世界

    [活动时间]:即日起-10.08

  • 热门:
  • 电源|
  • 嵌入式|
  • 汽车电子|
  • 下载|
  • 图酷|
  • 外包|
  • 公开课|
  • Datasheet|
  • 会展|
  • 在线研讨会|
  • TI在线培训中心|
  • 库存|
  • 评测|
  • 技术专题|
  • 开发板共享库
  • 首页 > 应用 > 工业控制
    [导读]摘要:是不是所有的Linux内核都是完美的?毕竟诸多黑客效力于此,当然不是,至少在内核3.x版本之前不是,之前的代码臃肿,代码利用率较低,直到设备树的引入,彻底改善这一情况;一、FDT的概念系统启动时,Bootloade

    摘要:是不是所有的Linux内核都是完美的?毕竟诸多黑客效力于此,当然不是,至少在内核3.x版本之前不是,之前的代码臃肿,代码利用率较低,直到设备树的引入,彻底改善这一情况;

    一、FDT的概念

    系统启动时,Bootloader开始加载,将内核文件,如zImage读取到内存中,内核按照我们的代码,逐一去配置每个寄存器,每个外设,似乎没有什么问题。但是试想一下,100种ARM芯片,就要写100个配置文件么?当然,如果你非要这么做,我也无话可说。如果能抽象出一种数据结构,它可以直接抽象出内核需要配置的所有硬件以及硬件属性,BootLoader预读取到内存中,在内核启动以后,可以直接配置,对于用户而言,配置MCU的外围时我们直接面对的就只是这个DTS文件,极其方便快捷。FDT准确来讲是一种数据结构,使得硬件可以用形如XML的描述语言来描述。

    二、设备树结构

     

    图一 设备树结构

    设备树一般包含以上内容:

    根节点“/”下的model ,这个一般为字符串类型,它描述了厂商以及板子名称;

    根节点“/”下的compitable,这个一般为字符串类型,用以匹配model选定的开发板对应的代码;包括后续外围驱动的匹配均是有这个compitable来完成;

    根节点“/”下的aliases,这个设备节点只能放在根节点目录,主要用以存放外设的别名,简单讲,"/soc/aips-bus@02000000/spba-bus@02000000/serial@02020000"其实是一个串口,但是开发人员自己看起来并不直观,我可以在aliases中写作:serial ="/soc/aips-bus@02000000/spba-bus@02000000/serial@02020000";serial即可代替刚才的串口设备;

    根节点“/”下的chosen:这个并非物理设备节点,而是内核启动参数的节点,类似于uboot阶段的bootargs参数;

    当然,这个节点也可以是子节点,不一定要在根节点下;

    实例:chosen {

    stdout-path = &uart1;

    };

    snvs@020b0000:除以上节点,剩下的我一般称之为物理设备节点(可能不准确),以snvs外设举例,直接举例;

    实例:snvs@020b0000{

    conpitable = “fsl,imx6ul-snvs”;

    reg = <0x020b0000 0x4000>;

    interrupts = <0x0 0x4 0x4>;

    };

    (1)“@”后面紧跟就是该外设在MCU总线的地址,这个不难理解,可以理解为外设的基地址,外设模型 name@addresss;” 

    (2)“compitable”:如上陈述,非常关键的属性,匹配外设驱动,属性模型 compitable = “[manufacture,[model]]”;

    (3)“reg”:该属性为外设地址属性,第一个参数为该节点总线地址,后者为地址长度;

    (4)“interrupt”:顾名思义,该外设的中断,para1表示该中断是不是SPI中断(shared peripheral interrupt),注意名词区分,参数值为1表示为SPI中断,反之不是SPI中断;para2是该中断号;para3表示触发方式,参数值为1,表示上升沿触发,为4表示高电平触发;如果需要低电平以及下降沿触发,硬件需要加非门; 

    三、编译设备树与反编译

    设备树编译,我们都知道使用如下命令编译:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  dtbs  或者

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  all

    实际上,是dtc这个文件在负责把dts解释成dtb文件,该文件在内核源码根目录 ./scripts/dtc

    编译命令:

    ./scripts/dtc/dtc –I dts –O dtb /home/gyh/tmp/imx6y2c-256m.dtb  ./arch/arm/boot/dts/imx6y2c-256m.dts

    反编译命令:

    ./scripts/dtc/dtc -I dtb -O dts -o /home/gyh/tmp/imx6y2c_asm.dts   ./arch/arm/boot/dts/imx6y2c-256m.dtb

    对于Linux命令的使用,可以使用help cmdname 或者man cmdname,对于dtc,非内建命令,man dtc:

      -I <input format>

                  Input formats are:

                  dts - device tree source text

                  dtb - device tree blob

                  fs - /proc/device-tree style directory

      -O <output format>

                  Output formats are:

                  dts - device tree source text

                  dtb - device tree blob

                  asm - assembler source

    系统提供的dts一般引用dtsi这个母设备树,所以大量外设都是直接引用dtsi中的,因此很难理解这些字符串是怎样的匹配驱动程序的,但是一旦将已经生产的dtb文件反编译,生产的dts文件将更直观;但是易读性也更差。这并不矛盾;我选择,” /”  ,”chosen” ,”aliases”三个节点来对比。

     

    图二 BSP提供的dts文件

     

    图三 反编译的dts文件

    对同一个chosen节点:BSP中dts描述为stdout-path = &uart1;这样很难想象它是怎样把该外设定义为标准输出的,但是如果看反编译文件可以较好的理解,标准输出被重定向到某个可以作为输出的外设地址;

    四、设备树节点添加与验证

    (1)直接在dts文件中查找,是否已经存在你需要的外设节点;如果有,且该外设支持多从机或者多节点,直接在该节点下面,添加子节点,以GPIO_LED为例。

     

    图四 GPIO_LEDS节点

    (2)假设,你需要添加一个黄色的LED,那么仿照已经存在的节点,复制一个节点在母节点下,命名为green-led,同时用GPIO3_4为该LED驱动引脚;你希望在arm板上叫他,My_Cute(这个名字不好),那么最后修改如下:

     

    图五 增加yellow-led节点

    (3)节点添加完成,引用了GPIO3_4,所以你需要确认该MCU引脚已经配置为GPIO功能,这里直接贴出配置代码:MX6UL_PAD_LCD_RESET__GPIO3_IO04 0x40017059

     

    图六 引脚配置为GPIO

    该宏定义MX6UL_PAD_LCD_RESET__GPIO3_IO04在./arch/arm/boot/dts/imx6ull-pinfunc.h中;针对同一个引脚的全部复用,均定义了宏,可以直接调用;该dts并未直接包含imx6ull-pinfunc.h,在其他dtsi中已经包含该头文件;

    (4)如果之前已经完全编译过内核,可以直接编译dtb,注意不要make menuconfig或者defconfig,否则会覆盖zImage的配置文件.config; 

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  dtbs

    (5)编译完成后,开发板直接进入uboot模式,tftp网络烧写dtb,reset重启生效;

    run updtb 

    (备注:updtb为组合命令updtb=if tftp ${fdt_file}; then nand erase.part dtb; nand write ${loadaddr} dtb ${filesize}; fi;) 

    (6)如果dtb按照我们理解修改是正确的,那么我们将在开发板的/sys/class/leds下面看到我们的My_Cute这个LED节点;结果如下:

    图七 开发板设备截图

    其实,可以看到/sys/class/leds下面的设备节点都是指向/devices/platfome/leds目录的连接文件,也就是这里仅仅是这个设备的“快捷方式”,我们也可以进行文件IO操作;

    (7)文件IO操作:打开My_Cute节点,可以看到以下接口可以操作,但是我们在添加GPIO_LEDS并没有添加这些属性。Brightness, trigger—led亮度以及触发方式比较常用,那么问题来了,为什么会有这些接口。因为它们继承了母节点的属性,所以我们需要找到母节点设备的定义。

     

    图八 yellow-led的操作接口

    (8)讲道理,所有的内核驱动你都可以尝试在 ./driver/下面去找,针对led类,我们直接进入leds文件夹,发现leds的驱动leds-gpio.c在,在这里就可以理解led的接口为什么是这样;当然优秀的驱动应该还有一份清晰的文档,你同样可也尝试去源码根目录的. /Documentation 中查找leds-gpio的使用文档;这里也会解释,我为什么会去开发板的/sys/class/leds下面去查看我增加的My_Cute节点;

     

    图九 驱动使用文档

    (9)增加一个驱动或者一个设备节点到设备树中,你可以先查看内核源码的/ Documentation目录,其中包含了几乎所有驱动的使用说明以及设备树属性的解释,同时也包括大量优秀的内核调试技巧;再去写节点,也可以先模仿,针对不懂的地方再来看文档,印象更为深刻。

    五、结语

    设备树相比于传统的配置文件,无疑是降低了Linux外设开发与使用的门槛,但是也隐藏了大量的细节,难以了解其底层的驱动原理;对于LINUX内核的了解,我所认识的还不及冰山一角,单希望对你有一点帮助。

  • 换一批

    延伸阅读

    [通信技术] 浙江移动完成首例基于华为鲲鹏处理器的CRM及BOSS系统大规模商用

    浙江移动完成首例基于华为鲲鹏处理器的CRM及BOSS系统大规模商用

    本次商用过程中,浙江移动将自研的大中台架构和华为TaiShan服务器成功融合,新构建出鲲鹏容器云平面,基于鲲鹏处理器和通用CPU的双平面容器云承载全部CRM中心和BOSS解码模块服务,实现业务流量在两个平面间均衡负载,充分保障业务安全。......

    关键字:IT CT 鲲鹏处理器

    [智能硬件] 中科视维与华为达成合作,共创“5G+科技文旅”新时代

    中科视维与华为达成合作,共创“5G+科技文旅”新时代

    中科视维与华为签署了“5G+科技文旅”战略合作协议,双方将基于5G MEC打造AR/VR应用、虚拟视觉、人机交互,以及文化大数据等技术在智慧科技文旅领域的融合应用示范,共同在科技文旅领域探索5G创新示范与实际应用。......

    关键字:5G AR MEC

    [消费类电子新闻] 400余大学生参与实验:玩手机真的可以放松吗?

    400余大学生参与实验:玩手机真的可以放松吗?

    前不久,《行为成瘾期刊》发表了一篇关于使用不同媒介进行休息的认知成本的论文。结论是,使用手机进行休息会增加心理的认知负担,而不是减轻它。换句话说,如果想为后续的工作保存精力,最好休息时别碰手机。......

    关键字: 手机 智能手机 大脑

    [消费类电子新闻] 潘多拉魔盒被打开?美国打开军用AI军事化的闸门

    潘多拉魔盒被打开?美国打开军用AI军事化的闸门

    近年来,美国军方显著加快了人工智能应用的速度,试图借助这一新颠覆性技术,彻底改变美军的作战模式。11月3日,美国国防部下属的国防创新委员会推出了最终版的《人工智能伦理道德标准》。其实该标准酝酿已有数年。基于这份报告,美国很有可能成为全世界首......

    关键字:人工智能 AI 军事化

    [消费类电子新闻] 三星Galaxy S10 Lite电池容量曝光:4370mAh 后置三摄

    三星Galaxy S10 Lite电池容量曝光:4370mAh 后置三摄

    近日slashleaks网站上曝光了三星Galaxy S10 Lite手机的电池容量,信息显示这款手机的电池为4370mAh。此次爆料信息显示,三星Galaxy S10 Lite手机的电池容量为4370mAh(典型值或为4500mAh)。......

    关键字:电池容量 S10三星 Galaxy

    [消费类电子新闻] 小米Note 10手机的跑分曝光:骁龙855 Plus处理器

    小米Note 10手机的跑分曝光:骁龙855 Plus处理器

    近日小米Note 10手机的跑分出现在Geekbench网站上,这也进一步确认这款手机为小米CC9 Pro海外版本,这款手机将采用骁龙730G处理器;目前,这些信息还有待官方正式公布。......

    关键字: 小米Note 骁龙

    [消费类电子新闻] iOS 13.1.3惹祸:iPhone 11系列续航再爆问题

    iOS 13.1.3惹祸:iPhone 11系列续航再爆问题

    目前,作为iOS 13系统发布以来坚持时间最长的iOS 13.1.3版本,却出现了续航上的问题,一夜把苹果在iPhone 11系列上做出的妥协、努力打回到之前。而iOS系统被部分网友认为是苹果手机最大的优势之一。......

    关键字:iPhone 续航

    [消费类电子新品] 5G商用首体验:速度上不去的真正“门槛”在哪里?

    5G商用首体验:速度上不去的真正“门槛”在哪里?

    2019年11月1日是个值得纪念的日子,在这一天国内正式迈入了5G的新篇章。此前在5G试商用阶段,我们曾经在北京、上海、深圳等率先开通5G的城市先后进行了一些体验。......

    关键字:5G 套餐

    [消费类电子新品] 雷军晒小米CC9 Pro/iPhone 11 Pro Max夜景对比样张 一亿像素到底怎么样?

    雷军晒小米CC9 Pro/iPhone 11 Pro Max夜景对比样张 一亿像素到底怎么样?

    小米官方早前正式“官宣”采用一亿像素CMOS的小米CC9 Pro,小米CC9 Pro将于11月5日正式与大家见面,敬请期待。......

    关键字:小米 iPhone

    [消费类电子新闻] 三星Note10推送安卓固件更新:问题修复+改善指纹识别算法

    三星Note10推送安卓固件更新:问题修复+改善指纹识别算法

    此前三星也面向S10+国行手机推送了改善指纹识别算法的固件更新。据网友反馈,三星Note10系列国行手机开始推送了最新的安卓固件更新,带来了问题修复,改善了指纹识别的算法。......

    关键字:国行 指纹识别

    [消费类电子新闻] 苹果:为让用户更容易入手iPhone 11,我们倾尽所有

    苹果:为让用户更容易入手iPhone 11,我们倾尽所有

    11月2日,众所周知,iPhone11超过了所有人的预期。今天,苹果公司透露了他们是如何通过引入三种新途径来让消费者更容易入手新iPhone的。......

    关键字:苹果公司 iPhone

    [通信技术] 5G手机手机使用4G套餐,会不会受影响?

    5G手机手机使用4G套餐,会不会受影响?

    今年9月,中国联通和中国电信签署《5G网络共建共享框架合作协议书》,两家运营商将政府分配的不同5G频率拿出来共享建设一张接入网。这将有助于高效建设5G网络,降低网络建设和运维成本,提升网络效益和资产运营效率。......

    关键字:中国联通 中国电信 5G

    [消费类电子新闻] 谷歌宣布实现“量子霸权”让人鼓舞:破解密码成应用潜力

    谷歌宣布实现“量子霸权”让人鼓舞:破解密码成应用潜力

    11月1日电,量子计算机的一大应用潜力是在破解密码方面。近日,澳大利亚新南威尔士大学量子物理学教授米歇尔·西蒙斯日前在一场关于量子计算的演讲中表示,谷歌宣布实现“量子霸权”让人鼓舞,量子计算领域竞争激烈,但研究人员仍需要分享和合作。......

    关键字:量子计算 科研人员

    [消费类电子新闻] 为近3万人提供VPN“翻墙” 提供“翻墙”服务4万余次 嫌疑人被逮捕

    为近3万人提供VPN“翻墙” 提供“翻墙”服务4万余次 嫌疑人被逮捕

    今日,从杭州拱墅区人民检察院获悉,10月30日,检方以涉嫌提供侵入、非法控制计算机信息系统程序、工具罪,依法对犯罪嫌疑人朱某某批准逮捕。案件正在进一步侦查中。男子通过网店租用境外服务器架设、倒卖VPN地址链接,先后为2.9万人提供“翻墙”......

    关键字:VPN 非法服务 被捕

    我 要 评 论

    网友评论

    技术子站

    更多

    项目外包

    更多

    推荐博客