This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM6442:AM6442

Guru**** 2553420 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1121088/am6442-am6442

器件型号:AM6442

尊敬的所有人:

    AM64TRM 在 chanptter 2.1、2.2和2.3中记录了三种类型的存储器映射。

  

      主域存储器映射中的 PSRAMECC0_RAM 与 处理器视图存储器映射中的 R5FSS0/1_ATCM 之间有何区别?这两个地址都是0x00000000。 如果我读取地址0x00000000、 那么访问哪个地址?  

谢谢、

jimin.Li

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    jimin.Li、您好!   

    感谢您的查询。

    我发现其中一些问题与驱动程序有关、需要一些有关用例的其他信息。

    您能否 提供一些有关应用用例的其他信息、以及您是否看到任何问题。

    任何日志或相关信息都会有所帮助。

    对此,

    Sreenivasa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kallikuppa Sreenivasa:

    我想通过修改的 Linux SDK ti-processor-sdk-linux-am64xx-evm-08.02.00.23-linux-x86源代码在 R5FSS0 SPL 上加载 ELF 可执行文件。

    elf  可执行  文件的向量地址是0x00000000、所以我想知道这个 地址是 R5FSS0 或  PSRRAMECC0_RAM 的 TCM 区域吗?

    我的观点是、在 R5F 内核中、0x00000000是 TCM 区域、而在 A53 内核中、它是  PSRRAMECC0_RAM。

    此外、 运行 elf 可执行文件时、我似乎遇到了系统重置。您能给一些建议吗?

    以下是我的步骤:

    elf 可执行文件  是 由 CCS 安装路径\MCU_PLUS_SDK_am64x_08_02_00_31\examples\drivers\fsi\fsi_loopback _interrupt\am64x-evm\r5fss0-0_nortos\ti-arm-clang 和 linker.cmd 构建的 CCS 演示、如下所示:


    /*这是由在 main()中运行的代码使用的堆栈
    *对于 NORTOS、
    *-这意味着 ISR 之外的所有代码都使用此堆栈
    *如果是 FreeRTOS
    *-这意味着在 main()中调用 vTaskStartScheduler()之前的所有代码
    *使用此堆栈。
    *-在 vTaskStartScheduler()之后,在 FreeRTOS 中创建的每个任务都有自己的堆栈
    *
    --stack_size=16384
    /*这是 NORTOS 和 FreeRTOS 中 malloc() API 的堆大小
    *这也是 FreeRTOS 中 pvPortMalloc 使用的堆
    *
    --heap_size=32768
    -e_vectors /*这是应用程序的条目,_vector 必须被加带起始地址0x0 */

    /*这是 R5处于 IRQ 模式时的堆栈大小
    *在 NORTOS 中、
    *-这里的中断嵌套截至目前已禁用
    *-这是注册为 IRQ 类型的 ISR 使用的堆栈
    *在 FreeRTOS 中、
    *-这里启用了中断嵌套
    *-这是在接收到 IRQ 时初始使用的堆栈
    *-但随后该模式切换到 SVC 模式、并且 SVC 堆栈用于所有用户 ISR 回调
    *-在 FreeRTOS 中、IRQ 堆栈尺寸更小、SVC 堆栈尺寸更小
    *
    _IRQ_STACK_SIZE = 256;
    /*这是 R5处于 IRQ 模式时的堆栈大小
    *-对于 FIQ、NORTOS 和 FreeRTOS 嵌套都被禁用
    *
    __FIQ_STACK_SIZE = 256;
    __SVC_STACK_SIZE = 4096;//这是 R5处于 SVC 模式时的堆栈大小*/
    __abort_stack_size = 256;//这是 R5处于中止模式时的堆栈大小*/
    __undefined_stack_size = 256;//这是 R5处于 UNDEF 模式时的堆栈大小*/

    部分

    /*这具有 R5F 入口点和矢量表,必须位于0x0 */
    向量:{}palign (8)> R5F_VECS

    /*这在启用 MPU 之前具有 R5F 引导代码,此代码必须位于地址< 0x8000000处
    即、这不能放置在 DDR 中
    *
    第{
    text.hwi:palign (8)
    .text.cache: palign (8)
    text.mpu:palign (8)
    text.boot:palign (8)
    .text:abort:palign (8)/*这有助于在使用 XIP 模式时加载符号*/
    }> SRAM

    /*这是剩余的代码。 如果 DDR 可用且需要、可将其置于 DDR 中*
    第{
    .text:{}palign (8)/*这是代码所在的位置*/
    rodata:{} palign (8)/*这是 const 的位置*/
    }> MSRAM

    /*这是其余的已初始化数据。 如果 DDR 可用且需要、可将其置于 DDR 中*
    第{
    .data:{} palign (8)/*这是初始化全局变量和静态 GO 的位置*/
    }> MSRAM

    /*这是剩余的未初始化数据。 如果 DDR 可用且需要、可将其置于 DDR 中*
    第{
    .bss:{}palign (8)/*这是未初始化的全局变量转到的位置*/
    RUN_START (_BSS_START)
    RUN_END (_BSS_END)
    .sysmem:{} palign (8)/*这是 malloc 堆的位置*/
    stack:{} palign (8)/*这是 main()堆栈的位置*/
    }> MSRAM

    /*这是不同 R5F 模式的堆栈所在的位置*/
    第{
    irqstack:{. =。 +_IRQ_STACK_SIZE;}对齐(8)
    RUN_START (_IRQ_STACK_START)
    run_end (__IRQ_STACK_END)
    fiqstack:{。 =。 +__FIQ_STACK_SIZE;}对齐(8)
    RUN_START (_FIQ_STACK_START)
    RUN_END (_FIQ_STACK_END)
    svcstack:{. =。 +_SVC_STACK_SIZE;}对齐(8)
    RUN_START (_SVC_STACK_START)
    RUN_END (_SVC_STACK_END)
    .abortstack:{. =。 +_abort_stack_size;}align (8)
    run_start (__abort_stack_start)
    run_end (__abort_stack_end)
    未定义的堆栈:{。 =。 +_未定义_堆栈_size;}align (8)
    run_start (__undefined_stack_start)
    run_end (__undefined_stack_end)
    }> MSRAM

    /* C++项目所需的段*/
    第{
    arm.exidx:{}palign (8)/*需要用于 C++异常处理*
    init_array:{}palign (8)/*包含 main 之前调用的函数指针*
    .fini_array:{}palign (8)/*包含 main 之后调用的函数指针*
    }> MSRAM

    /*通用用户共享存储器,在某些示例中使用*/
    .bss.user_shared_mem (NoLoad):{}> USER_SHM_MEM
    /*这在调试日志到共享存储器启用时使用,否则不使用*/
    .bss.log_shared_mem (空载):{}> log_shm_MEM
    /*这仅在启用 IPC RPMessage 时使用,否则不使用*/
    .bss.ipc_vring_mem (空载):{}> rtos_NORTOS_IPC_SHM_MEM
    /*通用不可高速缓存存储器,在某些示例中使用*/
    .bss.nocache (NoLoad):{}> non_cache_MEM

    /*
    注:以下内存保留供 DMSC 使用
    -在引导过程中,直到安全关闭完成
    0x701E0000 - 0x701FFFFF (128KB)
    -完成"安全移交"后(即在运行时)
    0x701F4000 - 0x701FFFFF (48KB)

    当此消息发送到 DMSC 时、安全交接已完成、
    TISCI_MSG_SEC_TURSION

    应在加载所有内核和所有应用程序后发送该消息
    设置特定的防火墙调用。
    *

    存储器

    R5F_VECS:origin = 0x00000000,length = 0x00000040

    /*内存段,用于保存 CPU 特定的非高速缓存数据,添加 MPU 条目以将其标记为非高速缓存*/
    NON_Cache_MEM:origin = 0x80060000,length = 0x8000

    //使用多核应用程序时,确保多个 R5F/M4F 处于活动状态
    *此存储器与其他 R5F 不重叠
    *
    SRAM:origin = 0x70080000,length = 0x40000
    MSRAM:origin = 0x80080000,length = 0x40000

    /*此部分可用于将应用程序的 XIP 部分放入闪存中,确保不会与重叠
    *其他 CPU。 此外、请确保为此段添加一个 MPU 条目、并将其标记为缓存和代码可执行文件
    *
    闪存:origin = 0x60100000,length = 0x80000

    /*共享内存段*/
    R5F 上的/*、
    *-确保有一个 MPU 条目将以下区域映射为非高速缓存
    *
    USER_SHM_MEM:origin = 0x801D0000,length = 0x80
    LOG_SHM_MEM:origin = 0x801D0000 + 0x80,length = 0x00004000 - 0x80
    RTOS_NORTOS_IPC_SHM_MEM:origin = 0x801D4000,length = 0x0000C000

    和一行{0x00000000、4、PRIV_RW_USR_RO、O_I_WW_RD_WR_ALLOC 14}、位于 SDK 安装路径/boadr-support/u-bootxxxx/arch/arm/mach-K3/R5_MPU.c:struct MPU_REGION K3_MPU_CONFIG K3_MPU_REGION、16]

    然后添加函数 load_run_elf ()以实现将 ELF 文件加载到 DDR 特定地址、 在 arch/arm/mach-k3/common.c 函数 juo_to _image_no_args release_resources_for_core_shutdown ()步骤之前将 elf 文件头和条目解析为 elf 可执行条目; 此外、load_run_elf() 函数在 A53 uboot load 中已验证正常并运行 A53 elf 文件。我只想清除此函数不是系统复位的根本原因。

    4.然后打开电源,打开串行终端,显示以下日志:

    U-Boot SPL 2021.01-00001-gf0a5b8927d-m脏(2022年7月28日- 04:23:58 -0400)
    SYSFW ABI:3.1 (固件版本0x0016 '22.1-v2022.01 (极好的 lam')
    SPL 初始堆栈使用:13392字节
    NINA 打印 elf 标头条目地址:0x0

    U-Boot SPL 2021.01-00001-gf0a5b8927d-m脏(2022年7月28日- 04:23:58 -0400)
    K3_system_controller sysctrler:K3_sysctrler_start:引导通知响应失败。 RET =-110
    固件初始化在 rproc (-110)上失败

    谢谢,

    jimin.Li

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    jimin.Li、您好!   

    感谢您的详细解释。

    让我在内部 回顾一下输入并返回。

    此致、

    Sreenivasa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jimin、

    我将您的查询路由至我们的 MCU+ SDK 团队以获取评论。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [~ userid="522430" url="支持/processors-group/processors/f/processors-forum/1121088/am6442-am6442"]       主域存储器映射中的 PSRAMECC0_RAM 与 处理器视图存储器映射中的 R5FSS0/1_ATCM 之间有何区别?这两个地址都是0x00000000。 如果我读取地址0x00000000、 那么访问哪个地址?  [/报价]

    jimin.Li、您好!  

    很抱歉耽误你的回答。

    您可以使用 TCM 存储器来保存关键例程、例如中断处理例程或高速缓存确定性极不理想的实时任务。  

    如果您在 RF5内核中定义了一个以下地址、它将被映射到 R5FSS0/1_ATCM 存储器位置。

      R5F_VECS :origin = 0x00000000,length = 0x00000040。

    SOC 包含 ATCM 存储器的物理连接、它从0x078000000至0x07800FFFF (64KB)(针对 R5F0_CORE0)开始。

    当 R5F_0内核0想要从 R5F_VECS 存储器空间读取/写入数据、并且它直接从物理 ATCM 存储器读取/写入数据、即从0x078000000至0x07800FFFF、而不是从 PSRAMECC0_RAM 读取/写入数据时。

    此致、

    S.Anil。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  

     谢谢!

     R5F_0 core0要访问  R5FSS0/1_ATCM 需要直接从 0x078000000读取/写入到0x07800FFFF 地址。

     如果 A53内核从 0x078000000至0x07800FFFF,读/写物理地址,则意味着 A53内核访问   R5FSS0/1_ATCM ?

     无论从 A53角度还是从 R5F 角度来看、 0x078000000至0x07800FFFF 始终是   R5FSS0/1_ATCM?

    Thnaks、

    jimin.Li

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    jimin.Li、您好!  

    我可以知道 ATCM 存储器专用于 R5FSS 内核、而不是 A53。

    请查看 R5FSS 内核的方框图。

    有关更多详细信息,请参阅 TRM 的6.2.3.2.2紧密耦合存储器(TCM)。

    如果这有助于、请关闭主题。

    此致、

    S.Anil。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  

    当然、只有 R5F 具有 TCM、通常 TCM 用于 ARM v7架构、而不是用于 ARM V8 (A53)。

    我无法理解 第2.1章和第2.3章中的 AM64TRM 说明了三种类型的存储器映射。

    为什么是第2.3章 表2-3。 R5FSS0/1内存映射显示   R5FSS0/1_ATCM 区域从 0x00000000到0x0000FFFF。 但是、如果 R5希望访问 R5FSS0/1_ATCM 区域、则需要读取  /写入0x078000000至0x07800FFFF。

    谢谢、

    jimin.Li

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 

     R5F_0 core0要访问  R5FSS0/1_ATCM 需要直接从 0x078000000读取/写入到0x07800FFFF 地址。

     如果 A53内核从 0x078000000至0x07800FFFF,读/写物理地址,则意味着 A53内核访问   R5FSS0/1_ATCM 

     无论从 A53角度还是从 R5F 角度来看、 0x078000000至0x07800FFFF 始终是   R5FSS0/1_ATCM?

    我明确指出 了 A53访问 R5 ATCM、而不是 A53访问其自己的 ATCM。

    谢谢、

    jimin.Li

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [~用户名="522430" url="支持/处理器组/处理器/f/processors-forum/1121088/am6442-am6442/4188992#4188992"]

    当然、只有 R5F 具有 TCM、通常 TCM 用于 ARM v7架构、而不是用于 ARM V8 (A53)。

    我无法理解 第2.1章和第2.3章中的 AM64TRM 说明了三种类型的存储器映射。

    [/报价]

    jimin.Li、您好!  

    是的、我理解您的担忧。

    当 TRM 描述 R5FSS /其他内核的存储器架构时、它描述了总存储器大小详细信息、并且地址定义应该从0x00位置开始。 查看其他处理器存储器映射时、它们从位置0x00开始、这意味着该位置与主存储器映射的位置0x00不完全匹配。
    我正在考虑您的反馈、并将与相关团队分享这些信息。

    此致、

    S.Anil。