泰山派3M-RK3576-Linux内核驱动教程-Linux驱动基础-设备树-添加简单设备节点

04. 添加简单设备节点

一、设备树节点的基本结构

设备树节点=一组属性的大括号集合,包含这些常用字段:

  • compatible:和驱动里的匹配字符串相同
  • reg:物理编号/基地址(没有也可写<0>
  • status:启用状态,"okay"表示有效
  • 其它自定义属性,如myparambuffer-len

二、添加新的设备树节点

1、找到主板 .dts 文件

泰山派3M-RK3576开发板的设备树文件在SDK中的:

  • TaishanPi-3-Linux/kernel-6.1/arch/arm64/boot/dts/rockchip/tspi-3m-rk3576.dts

2、新增自定义节点

可直接放在根节点 **/ { ... }** 内部,也可以根据项目放在soc {}或合适的peripherals {}下。

/*-----------------------------------------------------------
 * 板子基础信息配置
 *----------------------------------------------------------*/
/ {
    model = "LCKFB TaishanPi 3M RK3576 Board";
    compatible = "lckfb,tspi-3m-rk3576", "rockchip,rk3576";

  /*
   * 用户LED
   * 用于提示系统状态
   */
    leds: leds {
        status = "okay";
        compatible = "gpio-leds";

        work_led: work {
            linux,default-trigger = "heartbeat";
            gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
        };
    };

  /*
   * 自定义添加的mychardev设备节点
   */
  mychardev: mychardev@0 {
    compatible = "lckfb,mychardev"; // 驱动匹配字段
    reg = <0x0>; // 寄存器地址,随意设定
    buffer-len = <64>; // buff长度
    dev-id = <0xFFA8>; // 预设设备ID
    status = "okay";
  };
};

mychardev节点字段讲解:

  • mychardev: 标签。被后续其他地方或 phandle 引用(可省略)。
  • mychardev@0 节点名,@0可为编号、基址等。
  • compatible 最关键,后续你的驱动将靠它与此节点自动关联。
  • reg 仅表示唯一标识,如无实际寄存器填 <0x0>
  • buffer-lendev-id 等都可以自定义,随你需要。
  • status = "okay" 必须有,不然设备默认禁用。

三、编译验证

我们根据 Debian12内核编译 的教程,重新编译内核生成 boot.img,并单独烧录内核镜像的方式实现替换设备树。

烧录完成之后,板子开机,进行校验设备树节点:

查看解包后的设备树节点

ls /sys/firmware/devicetree/base/mychardev@0

看到 buffer-len/dev-id/compatible 字段说明生效!

查看下 buffer-len 是不是我们设定的 64 大小:

# 方法一:使用hexdump工具
hexdump -C /sys/firmware/devicetree/base/mychardev@0/buffer-len

# 方法二:使用python工具
python3 -c "print(int.from_bytes(open('/sys/firmware/devicetree/base/mychardev@0/buffer-len','rb').read(), 'big'))"

说明:

buffer-len = <64>; 这个 <64> 存到 dtb 后相当于“4字节大端二进制”,而不是文本数字。

使用 python 可以解释称整数

已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 在信息技术领域,特别是软件编程行业,微软公司推出的集成开发环境(IDE)Visual Studio,凭借其卓越的功能和广泛的适用范围,成为了众多程序员的常用工具。不过,在实际操作期间,用户可能会遭遇各种挑战,其中一种较为普遍的挑战是“Visual Studio遭遇了异常情况,这或许与某个附加组件有关”。本文将详细研究这一现象的成因、潜在后果以及最终的应对措施。 ### 原因剖析 Visual Studio通过支持多种插件和附加组件来扩展其功能,这些组件通常由第三方开发者设计,旨在为用户提供更多个性化和专业化的工具。然而,这些插件的质量良莠不齐,部分可能未经过充分的测试或与特定版本的Visual Studio存在兼容性难题,从而在执行时引发异常。异常的出现可能源于以下几个因素: 1. **代码缺陷**:若附加组件中的代码存在逻辑问题或资源管理不当,就可能导致运行时异常。 2. **资源竞争**:多个插件同时占用相同的资源(例如内存、文件句柄等),可能会产生资源冲突,进而触发异常。 3. **依赖不匹配**:插件可能需要特定版本的库或框架,如果系统中安装的版本不一致,也可能导致异常。 4. **安全隐患**:部分插件可能存在安全漏洞,一旦被恶意利用,可能会导致更严重的问题,包括但不限于异常崩溃。 ### 后果分析 当Visual Studio遇到由附加组件引发的异常时,不仅会中断当前的工作进程,降低开发效能,还可能带来以下潜在风险: 1. **数据遗失**:若异常发生在保存操作之前,可能会导致未保存的工作内容遗失。 2. **稳定性减弱**:频繁的异常会导致Visual Stud...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值