嗨,对话框中,
我目前正在尝试将SUOTA添加到我的14681固件。实际上,我已经将pxp_reporter源文件复制到我的构建目录中,并略微调整了配置头(以定义SUOTA)。当构建,我得到以下错误:
建设目标:构建/ firmware_0.1.0_debug_qspi.elf
ld: ROM变量区域(从0x07FDC000开始)被RetRAM0溢出
Collect2: error: ld returned 1 exit status
: * * *(建立/ firmware_0.1.0_debug_qspi。精灵]错误1
我假设有什么东西我没有配置,或配置错误,但我不确定。我已经阅读了UM-B-044-DA1468x Software Platform Reference关于保留RAM的部分,但我不确定如何解决我的链接错误。
你能帮助吗?我很乐意提供更多的信息;我想我需要,但我还不知道什么是什么;告诉我就行了!提前谢谢!
设备:
嗨brooksprumo,
此错误的原因是RETRAM0的长度太小,因此您应该增加RETRAM0的大小。首先,强烈建议在开发模式中使用非最佳的RETRAM,因为所有的存储单元都将启动。因此,在非优化配置中,您应该定义dg_configOPTIMAL_RETRAM(0)和dg_configMEM_RETENTION_MODE (0x1F)。最优配置通常用于最终产品。如需获取更多信息,请查看UM-B-044文档中的图78和图79。因此,为了增加RETRAM0的大小,您应该减少RAM的大小。执行代码通常在8-10K左右,但是首先检查代码的长度,用正确的长度配置dg_configQSPI_CACHED_RAM_SIZE_AE。在非优化配置的情况下,如果代码在10K左右,我可能在custom_config_qspii .h头文件中的配置可能如下所示。
#定义dg_configQSPI_CACHED_RAM_SIZE_AE (12* 1024) // 12k
#定义dg_configQSPI_CACHED_RETRAM_0_SIZE_AE (116* 1024) / / 116 k
12k (ram) + 116k (retram0) = 128k
在最佳配置的情况下,一个可能的配置可能是:
#定义dg_configQSPI_CACHED_RAM_SIZE_AE (12* 1024) // 12k
#定义dg_configQSPI_CACHED_RAM_SIZE_AE (84* 1024) / / 84 k
12k (ram) + 84k (retram0) + 32k (retram0)= 128k
此外,如果您想保留变量,强烈建议使用适当的标记。例如:
__RETAINED_RWint我= 0;//初始化保留变量的标记
__RETAINEDint我;标记未初始化的保留变量
谢谢,PM_Dialog
谢谢你!
我将尝试这些设置,并回答如果我有进一步的问题。
嗨brooksprumo,
如果您有任何后续问题,请让我们知道。
谢谢,PM_Dialog
好的!这让我成功地构建我的代码!
现在我遇到了两个问题;它们可能有联系,但我不确定。
首先,我已经从pxp_reporter演示构建了引导加载程序和固件。我已经成功地能够按照文档构建项目,然后下载引导加载程序和固件到我的设备。现在,我试图在自己的应用程序中使用pxp_reporter演示中的SUOTA代码。首先,当我尝试下载ble_suota_loader bootloader时,我在执行下载时得到一个错误:
文件大小不能超过65535字节。
我从命令行使用SmartSnippet工具箱来执行下载。的命令是:
"C:/DiaSemi/ smartsnippetstudio /Toolbox/SmartSnippetsToolbox.exe" -type qspi -chip da14480 -01 -com_port 4 -firmware "E:/$ble_suota_loader.bin" -cmd write -mode cached -file "E:/firmware.bin"
我不确定是否有一些其他的配置我已经错过,导致这个错误。
我的第二个问题是…为了解决引导加载程序问题,我尝试恢复到uartboot.bin引导加载程序现在(这是我一直使用的引导加载程序)。我可以下载引导加载程序,我相信我也成功地下载了我的固件,从pxp_reporter有SUOTA代码。然而,我认为设备运行不正常。
在对话SUOTA手机应用程序中,我看不到我的设备,设备似乎也没有回应其他查询。也许我的固件在什么地方崩溃了?
我认为我的第二个问题现在可能太模糊了。任何对这两个问题的帮助都将非常感激!提前谢谢!
嗨brooksprumo,
请查阅申请须知AN-B-046 DA1468x从串行接口启动v1.2.pdf,5.3章.从我们的支持页面。在那一章中解释了串行启动协议。UART引导协议字节2和字节3表示文件的长度。2字节的最大长度限制为0xFFFF(65535字节)。因此,最大长度受到设计的限制。加载更大的文件,请使用SWDIO/SWCLK (JTAG)接口。如果你使用JTAG,你能下载固件吗?
谢谢,PM_Dialog
哦,好的,说得通。现在,我只有一个UART串行连接到我的设备。我将考虑获得一个开发板,以便使用JTAG。
谢谢你!
嗨brooksprumo,
是的,请尝试它与JTAG接口,并让我知道。如果您认为以上答案有用,请将其中一个标记为已接受。
谢谢,PM_Dialog