ZHDA191 June   2026 TDA4VE-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2运行时代码覆盖后台
    1. 2.1 TDA4x 的存储器架构
    2. 2.2 静态代码分配的挑战
    3. 2.3 为什么选择运行时代码覆盖?
  6. 3运行时代码覆盖方法
    1. 3.1 概述
    2. 3.2 驻留运行时
    3. 3.3 覆盖有效载荷包
    4. 3.4 共享 SRAM 覆盖区域
    5. 3.5 运行时覆盖序列
  7. 4运行时代码覆盖架构
    1. 4.1 软件架构
    2. 4.2 覆盖包格式
    3. 4.3 存储器布局
    4. 4.4 运行时映像加载
    5. 4.5 运行时执行
  8. 5演示实现
    1. 5.1 软件组织
    2. 5.2 覆盖 SRAM 配置
    3. 5.3 有效载荷生成
    4. 5.4 有效载荷加载和执行
    5. 5.5 构建配置
  9. 6运行时代码覆盖验证
    1. 6.1 PayloadA 执行
    2. 6.2 PayloadB 执行
    3. 6.3 PayloadC 执行
    4. 6.4 共享 SRAM 覆盖槽重用
    5. 6.5 完整运行时验证
  10. 7总结
  11. 8参考资料

覆盖 SRAM 配置

保留用于运行时覆盖执行的专用 SRAM 暂存区域。

当前演示使用

• 覆盖基址:0x41C70000

• 覆层大小:16KB

以下是示例链接器命令文件“emmc_overlay_payload.cmd”。

--entry_point=emmc_overlay_payload_entry
--stack_size=0x400
--heap_size=0x0

MEMORY
{
    SRAM_OVERLAY_SLOT (RWX) : origin = 0x41C70000, length = 0x00004000
}

SECTIONS
{
    .text       : {} palign(64) > SRAM_OVERLAY_SLOT
    .rodata     : {} palign(64) > SRAM_OVERLAY_SLOT
    .const      : {} palign(64) > SRAM_OVERLAY_SLOT
    .cinit      : {} palign(64) > SRAM_OVERLAY_SLOT
    .pinit      : {} palign(64) > SRAM_OVERLAY_SLOT
    .init_array : {} palign(64) > SRAM_OVERLAY_SLOT
    .data       : {} palign(64) > SRAM_OVERLAY_SLOT
    .bss        : {} palign(64) > SRAM_OVERLAY_SLOT
    .sysmem     : {} palign(64) > SRAM_OVERLAY_SLOT
    .stack      : {} palign(64) > SRAM_OVERLAY_SLOT
}

覆盖区域用作所有有效载荷的临时执行槽。一次只有一个有效载荷占用覆盖区域。加载新的有效载荷时,之前的有效载荷将被覆盖。