如何配置读取Eeprom指定偏移的字符串

背景:自研板卡Eeprom格式上,0x13位置有两个字节保存CDR域Offset。CDR域Offset 17的位置保留自定义的组件ID。
现状:

  1. Accessor、Scanner的Offset配置为表达式后,无法读取到有效信息,始终为0;

  2. 配置:Offset配为表达式。


    左图Offset为固定值,右图Offset为动态生成。Offset一致,但是右图无法读取到正常数据。

    实际Eeprom是有值的
    image

  3. Accessor、Scanner读出两字节数据为十六进制拼接。我们定义的组件ID为字符串,是否有块读机制直接以字符串进行读取和转换?

  1. offset当前不支持变更,不会实时读取资源树的值,并且Accessor的值需要访问才会触发硬件读取,同步Accessor的操作实际是没有意义的
  2. Accessor和Scanner的值的类型是无符号整数,需要组件自行转换

Scanner是周期性扫描吗,也无法配置Offset为动态吗?
第二个问题是否有后续扩展计划,你们从Eeprom获取UID也是字符串吧,后续能不能扩展出来一个类,支持更加灵活的字符串读取呢

  1. 对象创建分发时参数即作为读写参数,不是每次周期性扫描重新传递参数
  2. 当前csr的语法配置使用string类型去同步其他类型时会进行强转,理论上U8类型会强转为字符串类型再赋值
    "Scanner_Fan_Presence": {
        "Chip": "#/Smc_FanBoardSMC",
        "Offset": "${Slot} |> expr(402656000 + $1)",

那类似的机制是怎样的?${Slot}为什么能通过表达式来处理呢

${slot}这种用法是直接取上一级connector的属性,在对象初始化时就可以取到