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.

[参考译文] SK-AM64B:配置更改后、我无法启动处理器并执行裸机基准测试程序

Guru**** 2864870 points

Other Parts Discussed in Thread: SYSCONFIG, UNIFLASH

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1635961/sk-am64b-i-am-unable-to-bring-up-processors-and-execute-a-baremetal-benchmarking-program-after-configuration-changes

器件型号: SK-AM64B
Thread 中讨论的其他器件: SYSCONFIG、UNIFLASH

我尝试在 AM64 上的各个内核上运行一个裸机基准测试程序、以捕获特定 porgam 的精确时序统计数据。 在尝试首次执行该程序并更改 SysConfig 以便为大型程序分配足够的内存后、CCS20.5 无法连接以逐步调试器。 调试器似乎正在连接到目标和内核、但由于内核未处于活动状态、调试器无法执行存储器读取或写入。  

我上次用于按照这些 指令启动内核的 soc 初始化过程 也不起作用。 在上传脚本之前、我甚至没有从 UART 打印字符、因为说明中提到了应该会执行该操作。  

我还完成了使用 SD 卡引导模式初始化内核的尝试、并按照说明尝试连接无引导模式。

我附加了 SysConfig 文件的文本文件版本、我对其进行了更改、以便为正在运行的程序创建足够的内存(我认为这可能是最有可能的罪魁祸首;也许我不小心覆盖了一些刷写/初始化固件)

我的程序唯一的硬件特定功能是启用和读取性能监控周期计数器并配置高速缓存。 我还附上了用于执行此操作的主 c 文件。 附加特定于程序的信息可能会暴露某些 IP。  

理想情况下、我想找出一种方法将评估板恢复出厂状态、以便更仔细地更改 SysConfig 配置并执行基准测试程序

BenchmarkUtils.c

sysconfig.txt 

此致、

Cristian Pompey

嵌入式软件工程师

 

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

    尊敬的  Cristian Pompey:

    您还能分享吗 linker.cmd 、我要验证内存映射并确认任何 SysConfig 更改是否可能影响链接器放置或覆盖关键的引导/初始化区域。

    谢谢、

    JOMY  

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

     /* This is the stack that is used by code running within main()
      * In case of NORTOS,
      * - This means all the code outside of ISR uses this stack
      * In case of FreeRTOS
      * - This means all the code until vTaskStartScheduler() is called in main()
      *   uses this stack.
      * - After vTaskStartScheduler() each task created in FreeRTOS has its own stack
      */
    
     --stack_size=16384
    /* This is the heap size for malloc() API in NORTOS and FreeRTOS
    * This is also the heap used by pvPortMalloc in FreeRTOS
    */
     --heap_size=32768
    --retain="*(.vectors)"  /* This is the entry of the application, _vector MUST be placed starting address 0x0 */
    
    
    
    
    SECTIONS
    {
        .vectors  : {
        } > M4F_VECS   , palign(8) 
    
        .text  : {
        } > DDR_ALL_X   , palign(8) 
    
        .bss  : {
        } > M4F_DRAM   , align(8) 
        RUN_START(__BSS_START)
        RUN_END(__BSS_END)
    
        .data  : {
        } > MEMORY_REGION0   , palign(8) 
    
        .rodata  : {
        } > MEMORY_REGION0   , palign(8) 
    
        .sysmem  : {
        } > MEMORY_REGION0   , palign(8) 
    
        .stack  : {
        } > MEMORY_REGION0   , palign(8) 
    
        .ARM.exidx  : {
        } > MEMORY_REGION0   , palign(8) 
    
        .init_array  : {
        } > MEMORY_REGION0   , palign(8) 
    
        .fini_array  : {
        } > MEMORY_REGION0   , palign(8) 
    
        .bss.user_shared_mem (NOLOAD) : {
        } > DDR_ALL_X    
    
        .bss.log_shared_mem (NOLOAD) : {
        } > DDR_ALL_X    
    
        .bss.ipc_vring_mem (NOLOAD) : {
        } > DDR_ALL_X    
    
    
    }
    
    
    MEMORY
    {
        M4F_VECS   : ORIGIN = 0x10000 , LENGTH = 0x1E848 
        M4F_IRAM   : ORIGIN = 0x200 , LENGTH = 0xFE00 
        M4F_DRAM   : ORIGIN = 0x30000 , LENGTH = 0x10000 
        DDR_ALL_X   : ORIGIN = 0x80000000 , LENGTH = 0x30000 
        MEMORY_REGION0   : ORIGIN = 0x70000000 , LENGTH = 0x30D40 
    
        /* For memory Regions not defined in this core but shared by other cores with the current core */
    
    
    }
    

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

    您好、Cristian、

    t o 恢复电路板、您可以尝试通过 Uniflash 使用 JTAG 方法进行刷写。 这应恢复引导加载程序/初始化固件并使器件恢复到已知良好的状态。

    JTAG_UNIFLASH

    恢复后、最好从已知的工作示例开始、然后仔细调整内存布局。

    谢谢、

    JOMY