Skip to main content

Entry Table

Entry Table 是一种类似设备树的数据结构,用于固件阶段提供板级描述信息给固件进行必要的初始化,有时也提供必要的描述性信息。

简单来说,Entry Table 将描述和配置信息打包为二进制文件,与固件约定好预定义的数据结构,固件加载并提取所需的描述或配置信息。

功能描述

在 MTT E300 平台上,通过修改 Entry Table 可以实现板级描述信息、GPIO 信息以及 DDR 参数配置。


配置流程

步骤 1:安装 Python 环境

Entry Table 使用 Python 版本,依赖以下库:

  • xlrd==1.2.0
  • pyinstaller
python --version # Python 3.8.10
pip3 install xlrd==1.2.0
pip3 install pyinstaller

步骤 2:修改 GPIO 配置

大多数情况下,Entry Table 对支持的板子有默认配置,因此本节主要介绍 GPIO 配置的修改方法:

  1. 在 Windows 中打开 m1000-entry-table-tool/product/table/gpio_config.xlsx 中需要修改 gpio cfg 的 sheet。

    E300 004 图示

  2. 修改对应 GPIO S-X 列(GPIO initial 态)及 AK 列(Voltage_Config)的内容,S 列之前属于描述内容,normal 及 lowpower 状态暂未使用,如下图所示:

    E300 005 图示

    列配置说明及配置值:

    • S 列(Function):功能模式,可选值:(Function_0, Function_1, Function_2, Function_3),Function_0 通常为 GPIO 模式,其他模式参考 GPIO 文档
    • T 列(Pull_Type):上下拉类型,可选值:(NP, PU, PD),NP: 不上拉不下拉,PU: 上拉,PD: 下拉
    • U-V 列:当功能模式为 GPIO 模式时有效,非 GPIO 模式时 U-V 列填 -
      • U 列(GPIO 方向):可选值:(DI, DO),DI: 方向输入,DO: 方向输出
      • V 列(GPIO 输出值):当 GPIO 方向为 DO(方向输出)时有效,非 DO 时 V 列填 -,可选值:(H, L),H: 高,L: 低
    • W 列(Slew Rate):压摆率,可选值:(Fast, Slow)
    • X 列(Driver Strength):驱动强度,可选值:(2mA, 4mA, 8mA, 16mA)
    • AK 列(Voltage Config):电压配置,可选值:(1.8V, 2.5V, 3.3V)
  3. 修改完成保存后,将 Windows 环境中修改后的 gpio_config.xlsx 替换掉编译环境中的 gpio_config.xlsx

  4. 在编译环境中切换到 m1000-entry-table-tool/product 路径,执行:

    python autoTranslate.py

    执行成功后会有 [PARSE_INFO] auto translate success 打印

  5. 修改完成后,重新编译 soc-firmware-image


开发参考

  1. 本例将 GPIO 0 的功能模式修改为 Function_0, DO, H

    E300 006 图示

  2. 执行上述步骤 3-4 后,运行 git statusgit diff 查看 CSV 文件的修改情况

    E300 007 图示

    E300 008 图示

  3. 修改完成后,重新编译 soc-firmware-image


调试方法说明

  1. 测量信号或测试 GPIO 引脚功能,验证是否符合预期

  2. 使用 ac_tooldevmem 抓取 GPIO 寄存器信息


常见问题

Q:Python 是否支持其他版本?

A:目前仅支持特定版本,注意 xlrd 仅支持 1.2.0 版本。

Q:除了 GPIO,如何配置 Entry Table 其他内容?

A:目前仅需关注 GPIO 配置,其他部分已有默认配置。

Q:编译失败的可能原因?

A:可能原因包括:

  1. 检查 Python 及相关库版本是否正确。
  2. 如果使用 Samba 等工具在编译机器上打开 Excel 表格,修改完成后编译前请先关闭 Excel 文件。