专栏算法工具链J5 DVB实战教程(4)-基于J5芯片的BoardID增加及驱动适配指南

J5 DVB实战教程(4)-基于J5芯片的BoardID增加及驱动适配指南

Jin2022-11-28
158
1

概述

Board ID是J5 DTS中根节点下属性board_type的值,此board_type 属性顾名思义,它是为了区分不同J5板级差异的标记。当需要增加内核DTS与产品Board ID映射关系时,需要根据本文档描述流程进行修改,以保证启动时能根据读取到的Board ID找到期望的DTB文件。

定义

内核程序中根据board_type决定使用哪一份DTS文件,各个DTS文件描述板级之间存在差异的J5 Board。目前我们使用J5芯片的两路ADC电压范围(具体详情请见原理图)来区分不同单板,分别是VS0_IN1与VS1_IN5,通过读取ADC_SENSOR_0和ADC_SENSOR_1的通道电压值来选择对应的Board ID。针对board_type的节点在J5系统软件分为Uboot和Kernel两部分。以下通过J5 EVM DTS文件举例说明。

Uboot 部分节点说明

代码路径:uboot/arch/arm/dts/hobot-j5.dtsi
};

代码说明如下:

使用adc_sensor_0的通道1与adc_sensore_1的通道5获取电压值,单位mv。

如果J5从adc_senesor_0读取到的电压值在651mv至740mv,adc_sensor_1读取到的电压值在 251mv至340mv,则赋值该板子的Board ID = J5_EVM2_EP_BOARD_ID。

数组的意思是:利用线性数组的特性,依次匹配。如果J5从adc_senesor_0/adc_sensor_1读取到 的电压值不在数组已知映射关系内,则赋值该板子的Board ID = J5_BOARD_ID。
其中宏J5_BOARD_ID定义请参考以下。
代码路径:uboot/include/dt-bindings/board/hb_board_id.h
目前J5 uboot中新增了btype-bus驱动,可以通过不同的boardid适配对应的dts配置,参考如下配置。
代码路径:uboot/arch/arm/dts/hobot-j5-evm.dtsi

代码说明如下:

btype-bus驱动会根据support-btype适配当前单板boardid,如果匹配上则根据该节点下配置进行驱动初始化。

Kernel 部分节点说明

代码路径:kernel/arch/arm64/boot/dts/hobot/hobot-j5-evm2-rc.dts
/ {
model = "Horizon Robotics Journey 5 EVM2 RC";
board_type = <0x524>;
};
...

代码说明如下:

在内核启动过程中,会依次校验DTB中board_type内容,如果与当前单板匹配则选择该DTB 启动。

实现方法

复用旧有Board ID

如果复用现有的Board ID,只需要修改Uboot下电压与Board ID对应关系。例如当前单板电压 为VS0_IN1:500mV,VS1_IN5:400mV,复用J5_EVM2_EP_BOARD_ID,则只需要将uboot/arch/arm/dts/hobot-j5-evm.dtsi中以下:

修改成为:

修改完成后重新编译与刷写即可生效,具体流程请参考开发手册编译镜像一节。

使用新增Board ID

  1. 修改Uboot下uboot/arch/arm/dts/hobot-j5.dtsi数组board_type_array。
    如当前单板电压为VS0_IN1:500mV,VS1_IN5:400mV,使用Board ID为 J5_SAMPLE_BOARD_ID, 则需要在uboot/arch/arm/dts/hobot-j5-evm.dtsi中新增以下:

    并在uboot/include/dt-bindings/board/hb_board_id.h中新增,以数值0x999為例:

    注意:新增的J5_SAMPLE_BOARD_ID值不能与已有Board ID相同

  2. 增加Kernel之DTS并同步修改Board ID值。
    在下述路径增加对应DTS文件,例如增加hobot-j5-sample.dts:

    添加完DTS文件后,在下述文件中增加所需编译选项:

    以hobot-j5-sample.dts为例,增加:

    在hobot-j5-sample.dts中board_type需要与新增boardid匹配,如下:

  3. 当前系统进程启动脚本根据hardware而有差异,需要编译镜像与硬件对应的Board ID匹配。
    如build/device/horizon/$sample/debug-env.sh中的编译选项BOARD_TYPE:

    以及uboot/board/hobot/j5/j5_fpga_common.c的hb_boot_hardware_get接口返回值如下:

验证方法

hobotboot.hardware

使用以下命令读取console打印之hobotboot.hardware值,确认可否读取hardware:

dmesg

在系统中通过dmesg查阅内核log寻找Machine model的值。

hrut_boardid

使用hrut_boardid此工具来获取与验证Board ID,显示为十进制。

算法工具链
征程5官方教程
评论1
0/1000
  • 费小财
    Lv.5

    mark一下,学习学习

    2023-01-16
    0
    0