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.

[参考译文] TMDS64EVM:TMDS64EVM、AM64xx

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1527300/tmds64evm-tmds64evm-am64xx

器件型号:TMDS64EVM
主题:SysConfig 中讨论的其他器件

工具/软件:

您好:

问题:

  1. 该应用在调试模式下工作、但在释放模式下失败(将应用刻录到闪存时)。 开机时的执行错误如下:(在终端窗口上)

“映像加载完成、切换到应用程序…

错误:Bootloader rprcImageLoad: 317:应用程序映像在 SBL 保留内存范围内有一个加载地址 (0x70020000)!!“

问题在于何时需要超出 MSRAM (2MB) 容量的堆存储器。 所以

在“内存配置“部分中、在“常规“下、将堆大小增加为:

在“内存段“部分下、我 将 DDR 的内存拆分为以下两个部分:

我的应用程序是从 0x100000 到 0x280000 开始读取闪存区域中用户的数据、并根据“default_sbl_ospi.cfg"文件“文件将应用程序编程到 0x80000。 在我的应用程序中、我会将此用户的数据加载到指针变量(在堆存储器中)中。

借助此配置、我可以在应用程序中对指针变量进行 malloc 操作、这样就可以正常使用

调试模式。 但在打开应用程序电源时、将释放内容刻录到闪存时失败、如图所示。

  1. 解决闪存执行问题的方法是 以减少堆以适应 MSRAM 为了使应用能够使用闪存而不使用上述 DDR4 扩展、需要以块的形式传输用户的数据、并模拟“ospi_flash_io"示“示例的闪存读取。 以下是相关信息:

#define APP_OSPI_FLASH_BASE (0x100000)//用户数据的起始地址

#define heap_size                 (262144U)

#define APP_DATA_SIZE       (1241804U)   //这是闪存中的用户数据大小

uinit32_t 商、remainder、byteUsed;

uint8_t *prgmBuffer ___attribute__((aligned (32u)))=(unit8_t *) malloc (heap_size);

//所以指针的堆 *prgmBuffer 变得更小

……μ s

商          = app_data_size/heap_size;

remainder      = APP_DATA_SIZE % heap_size;

              //现在是从闪存中获取数据的循环、每个闪存为 256KB、而不是一个大堆

//大于 1.5MB

              对于 (uint8_t loopcnt = 0;loopcnt <(商+1);coopcnt++)

              {

byteUsed        =(loopcnt ==商)? remainder : heap_zise.

OFFSET = APP_OSPI_FLASH_BASE +(loopcnt*heap_size);

Flash_offsetToBlkPage (gFlashHandle[CONFIG_FLASH0]、偏移、&blk、&page);

状态= FlashHandle[CONFIG_FLASH0]、偏移、prgmBuffer、byteUsed);

……μ s。

//应用程序代码继续

……μ s。

              }             //偏移量确实是页面对齐

问题在于循环运行第一个循环= 0、然后对于第二个循环运行 flash_read() 已挂起 (带断点验证)。 因此在 Flash_offsetToBlkPage () 之前添加了 Flash_Reset (gFlashHandle[CONFIG_FLASH0]) 以使其无效。

根据“ospi_flash_io"示“示例代码、第二个偏移量的闪存读取正常、不知道此处被打乱。

我需要有关如何解决此问题的帮助。

 

  1. 这是小而好奇。 的设置 存储器区域 SysConfig 中的闪存为:

起始地址:0x60100000

大小                   :0x80000

它是什么 0x60100000 而不是的偶数边界 0x60000000 以及为什么仅使用尺寸 0x80000 (512K)、而不是 0x4000000 (64MB 或 512Mbit) 是多少?

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

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

    您好、

    让我们从您所使用的 SDK 版本开始。 请告诉我。

    此致、

    Vaibhav

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

    MCU_PLUS_SDK_am64x_10_01_00_32

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

    您好、

    状态= FlashHandle[CONFIG_FLASH0]、偏移、prgmBuffer、byteUsed);

    每次执行此行时、请提供偏移值。 在每个循环中使用 prgmBuffer 和 byteUsed。

    也请将您的 default_sbl_ospi.cfg 文件发送给我。

    此致、

    Vaibhav

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

    第二个环路是 卡在 Flash_read () 处 并且永远不会出现断点。

    #define APP_DATA_SIZE              (1241804U)

    #define heap_size                        (262144U)

    uint8_t *prgmBuffer __attribute__((aligned (32u)))=(uint8_t *) malloc (heap_size);

    以下是 CIO 信息:

    商和余数为:4193228

    loop is、offset、prgmBuffer、byteUsed:01048576、 1879874,224,262144

    循环周期就在这里!!!

    loop is、offset、prgmBuffer、byteUsed:1, 1310720, 1879874,224,262144

    ----------------------------------------

    这是 default_sbl_ospi.cfg

    #-----------------------------------------------------------------------------#
    #                                                                             #
    #      DEFAULT CONFIGURATION FILE TO BE USED WITH THE FLASHWRITER SCRIPT      #
    #                                                                             #
    #-----------------------------------------------------------------------------#
    #
    # By default this config file,
    # - points to pre-built flash writer, bootloader for this EVM
    # - The application image points to relative path of the ipc echo application image for this EVM
    #   - Make sure this application is built before running this script
    # - You can customized this config file to point to your own bootloader and/or application images
    # - You can use --operation=flashverify if you just want to verify the flash contents and not flash the file.
    #
    
    # First point to sbl_uart_uniflash binary, which function's as a server to flash one or more files
    --flash-writer=sbl_prebuilt/am64x-evm/sbl_uart_uniflash.release.hs_fs.tiimage
    
    # Now send one or more files to flash or flashverify as needed. The order of sending files does not matter
    
    # Program the OSPI PHY tuning attack vector
    --operation=flash-phy-tuning-data
    
    # When sending bootloader make sure to flash at offset 0x0. ROM expects bootloader at offset 0x0
    --file=sbl_prebuilt/am64x-evm/sbl_ospi.release.hs_fs.tiimage --operation=flash --flash-offset=0x0
    
    # When sending application image, make sure to flash at offset 0x80000 (default) or to whatever offset your bootloader is configured for
    #--file=../../examples/drivers/ipc/ipc_rpmsg_echo/am64x-evm/system_freertos_nortos/ipc_rpmsg_echo_system.release.appimage.hs_fs --operation=flash --flash-offset=0x80000
    
    # send the XIP image for this application, no need to specify flash offset since flash offset is specified within the image itself
    #--file=../../examples/drivers/ipc/ipc_rpmsg_echo/am64x-evm/system_freertos_nortos/ipc_rpmsg_echo_system.release.appimage_xip --operation=flash-xip
    
    # Put your application here instead of default APP image
    --file=C:/Users/user1/workspace_ccstheia/myApp/Release/MyApp_r5fss0-0_freertos_ti-arm-clang.appimage.hs_fs --operation=flash --flash-offset=0x80000
    
    --file=C:/Users/user1/workspace_ccstheia/MyApp/Release/MyApp_r5fss0-0_freertos_ti-arm-clang.appimage_xip --operation=flash-xip
    
    # Put your FPGA Configuration here 
    --file=C:/Users/user1/Desktop/AppData/User_Data.bin --operation=flash --flash-offset=0x100000
    
    

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

    您好、

    感谢您的耐心。

    [引述 userid=“555281" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1527300/tmds64evm-tmds64evm-am64xx/5877446 #5877446“]

    loop is、offset、prgmBuffer、byteUsed:01048576、 1879874,224,262144

    循环周期就在这里!!!

    loop is、offset、prgmBuffer、byteUsed:1, 1310720, 1879874,224,262144

    [/报价]

    您能否检查 MPU ARMV7 配置是否包含从 0x60000000 开始的区域?

    如果未定义它可以、如果已定义、您能否告诉我是否缓存了区域 0x60000000?

    此致、

    Vaibhav

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

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

    有趣的是、我将“区域属性“从“缓存“更改为“非缓存“或“严格排序“、然后循环现在可以工作。 能解释一下差异吗

    在非缓存和严格排序之间?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid=“555281" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1527300/tmds64evm-tmds64evm-am64xx/5887388 #5887388“]

    有趣的是、我将“区域属性“从“缓存“更改为“非缓存“或“严格排序“、然后循环现在可以工作。 能解释一下差异吗

    在非缓存和严格排序之间?

    [/报价]

    我很高兴这是出来的。  

    我在该地区有一个怀疑、从 0x60000000 开始被缓存、正如我在前面的答复中提到的:

    您能否检查 MPU ARMV7 配置是否包含从 0x60000000 开始的区域?

    如果未定义它可以、如果已定义、您能否告诉我是否缓存了区域 0x60000000?

    [/报价]

    因此、不应缓存 OSPI 区域、原因是该区域中的数据可能过时、因此我们必须避免使用缓存。 可以缓存您的一个后续问题、它可以提高数据读取速度、就前面而言、我们去另一条路由、在这条路由中、我们增加频率、使用 PHY 模式并结合使用 DMA 模式来实现更高的读取速度。

    [引用 userid=“555281" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1527300/tmds64evm-tmds64evm-am64xx/5887388 #5887388“]

    能解释一下差异吗

    在非缓存和严格排序之间?

    [/报价]

    我希望您参考 ARM 文档来阅读这两者。 即使在阅读后,如果你留下了一些疑虑,请告诉我。

    此致、

    Vaibhav