我的节目比32KB大于32KB,那么我可以建立大于32KB的progam .Fecce必须在外部存储器中存储代码而不是32KB OTP。
嗨Tengworld,
如果您的程序超过了Keil评估限制的32KB,则可以使用keil的完整许可证,或者您可以尝试将您投影到GNU Toolchain。应用程序注意事项AN-B-024.PDF中有一个相应的文档,对移植过程有简短的解释。该文件并不完全解释,程序不稳定,该团队正在努力,以便有更好的描述和更单位的程序。
谢谢mt_dialog.
对不起,我没有让我的问题清除。我有一个完整的keil许可证。我编译时的错误是错误:l6406e:匹配prf_utils.o(.constdata)的执行区域中没有空间。..似乎与scartter文件有关。
似乎从散射文件分配的空间是不够的,你必须重新排列散点文件才能容纳更大的应用程序,以便执行此操作,考虑到您使用的延长睡眠,您可以尝试以下提示以及您的代码驻留到OTP:
1.通过更改散射文件并将ER_IROM5设置为ER_IROM5 0x20000440 0x7BC0来增加ER_IROM5以获得0xFF空间。
2.通过删除RW_IRAM50并在ER_IROM5部分中添加可用空间来增加ER_IROM5中的代码空间。您也可以在不同的地址中移动RW_IRAM51。包含非保留堆的可能候选者是Zi_Ret20部分。通过执行此源代码和RW数据的0x20000440至0x20009000的连续存储区域将可用于源代码和RW数据。为了实现这一顺序下面的说明。
一种。删除RW_IRAM50和RW_IRAM51部分
湾将ER_IROM5的大小更改为ER_IROM5 0x20000440(0x9000 - 0x440)
C。通过在zi_ret20定义中添加以下行Jump_table.o(heap_mem_area_not_ret),将在zi_ret20中移动,在zi_ret20中移动非保留堆。
请查看UM-B-011.PDF文件,以获取有关内存映射和分散文件的更多信息。
谢谢,我得到它。
嗨,对话
然后,如果我在分散文件中所说的那样进行修改,那么代码RO和数据RW尺寸将大于32KB,小于35KB。我记得Smartsnippets有一个限制十六进制闪烁(32KB)。我怎么能在那种情况下闪存它?
非常感谢。
嗨caiziee,
我不认为如果您尝试刻录二进制35KB,则智能代码段将抱怨,但您可以始终使用Hex2bin Utilty才能将.hex文件转换为.bin,然后将其刻录到闪光灯。
嗨,对话当我从keil使用flofelf.exe时,从hex生成的bin文件转变为相当大。十六进制文件大小:103KB。Bin文件大小:515kb。
嗨,对话我已经尝试过这个,但它失败了。因为在我们的应用程序中,存在许多分布配置文件中定义的部分。地址不连续。当我使用hex2bin.exe时,我得到了这个输出:最低地址= 00000000最高地址= 00080857PAD BYTE = FF8位校验和= 9C当我用智能片段闪烁时,我收到了一个错误,所以所选文件加偏移量的数据大小超过SPI闪存大小(131072字节)“。
你能给我更多关于这个的提示吗?先感谢您。
如上所述,这与您的申请有关https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...负责链接器输出如此大的二进制。请检查您的其他帖子。
谢谢,对话。
你好,
我正在使用Keil评估版。我也面临着同样的错误。
1.我可以更改ER_IROM5和RW_IRAM50段大小吗?如果我在keil评估版本中这样做会发生什么?2.关于ER_IROM5和RW_IRAM50截面尺寸的参数?3.是否有任何关于SISTS文件中提到的ER_IROM5,RW_IRAM50和其他部分的文档?
嗨ankit,
1.只需更改分散文件,Keil不会抱怨,但如果您尝试构建大于32k的代码,那么Keil会将您通知您的限制。
2.你是什么意思在什么参数?由于OTP图像空间限制,分散文件中的可用存储量决定为32K。
3.您将能够在UM-B-011.PDF文档中找到一些关于内存放置的信息。
你好 !我根据你说的步骤修改了.sct文件。删除rw_iram50和rw_iram51部分,然后在zi_ret20中移动jump_table.o(heap_mem_area_not_ret)。但rw_iram50怎么样?忽略它 ?
#if(use_memory_map == ext_sleep_setup).any(Retention_mem_area0);应用程序数据#万一.any(+ zi)
谢谢!
zwffcb,
是的,您可以完全删除IRAM50区域,此区域保留在Sysram上,因为地图文件是在32KB限制下运行的,因此应为其他用途分配任何额外的空间,因为您正在尝试放大您的代码,您不会使用OTP(用于深睡眠等),因此您可以消除该区域。
嗨mt_dialog.谢谢您的回答。
1.我可以将这些空间地址(LR_IROM1到LR_IROM5)更改,因为我仍然需要几乎没有空间来存储我的代码。谢谢。
更改分散文件以获取一些额外的代码空间并不简单,内存区域中存在的位置(由分散文件定义)无法注释,以回答您的问题,以便在LR_IROM1上更改地址空间。ARM M0要求IVT在0x0开始,这就是LR_IROM1定义的内容,如果您更改此,您将兑现IVT,并且不会最终效果。
嗨Tengworld,
如果您的程序超过了Keil评估限制的32KB,则可以使用keil的完整许可证,或者您可以尝试将您投影到GNU Toolchain。应用程序注意事项AN-B-024.PDF中有一个相应的文档,对移植过程有简短的解释。该文件并不完全解释,程序不稳定,该团队正在努力,以便有更好的描述和更单位的程序。
谢谢mt_dialog.
对不起,我没有让我的问题清除。我有一个完整的keil许可证。我编译时的错误是错误:l6406e:匹配prf_utils.o(.constdata)的执行区域中没有空间。..似乎与scartter文件有关。
嗨Tengworld,
似乎从散射文件分配的空间是不够的,你必须重新排列散点文件才能容纳更大的应用程序,以便执行此操作,考虑到您使用的延长睡眠,您可以尝试以下提示以及您的代码驻留到OTP:
1.通过更改散射文件并将ER_IROM5设置为ER_IROM5 0x20000440 0x7BC0来增加ER_IROM5以获得0xFF空间。
2.通过删除RW_IRAM50并在ER_IROM5部分中添加可用空间来增加ER_IROM5中的代码空间。您也可以在不同的地址中移动RW_IRAM51。包含非保留堆的可能候选者是Zi_Ret20部分。通过执行此源代码和RW数据的0x20000440至0x20009000的连续存储区域将可用于源代码和RW数据。为了实现这一顺序下面的说明。
一种。删除RW_IRAM50和RW_IRAM51部分
湾将ER_IROM5的大小更改为ER_IROM5 0x20000440(0x9000 - 0x440)
C。通过在zi_ret20定义中添加以下行Jump_table.o(heap_mem_area_not_ret),将在zi_ret20中移动,在zi_ret20中移动非保留堆。
请查看UM-B-011.PDF文件,以获取有关内存映射和分散文件的更多信息。
谢谢mt_dialog.
谢谢,我得到它。
嗨,对话
然后,如果我在分散文件中所说的那样进行修改,那么代码RO和数据RW尺寸将大于32KB,小于35KB。我记得Smartsnippets有一个限制十六进制闪烁(32KB)。我怎么能在那种情况下闪存它?
非常感谢。
嗨caiziee,
我不认为如果您尝试刻录二进制35KB,则智能代码段将抱怨,但您可以始终使用Hex2bin Utilty才能将.hex文件转换为.bin,然后将其刻录到闪光灯。
谢谢mt_dialog.
嗨,对话
当我从keil使用flofelf.exe时,从hex生成的bin文件转变为相当大。
十六进制文件大小:103KB。
Bin文件大小:515kb。
嗨,对话
我已经尝试过这个,但它失败了。
因为在我们的应用程序中,存在许多分布配置文件中定义的部分。地址不连续。当我使用hex2bin.exe时,我得到了这个输出:
最低地址= 00000000
最高地址= 00080857
PAD BYTE = FF
8位校验和= 9C
当我用智能片段闪烁时,我收到了一个错误,所以所选文件加偏移量的数据大小超过SPI闪存大小(131072字节)“。
你能给我更多关于这个的提示吗?先感谢您。
嗨caiziee,
如上所述,这与您的申请有关https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...负责链接器输出如此大的二进制。请检查您的其他帖子。
谢谢mt_dialog.
谢谢,对话。
你好,
我正在使用Keil评估版。我也面临着同样的错误。
1.我可以更改ER_IROM5和RW_IRAM50段大小吗?如果我在keil评估版本中这样做会发生什么?
2.关于ER_IROM5和RW_IRAM50截面尺寸的参数?
3.是否有任何关于SISTS文件中提到的ER_IROM5,RW_IRAM50和其他部分的文档?
嗨ankit,
1.只需更改分散文件,Keil不会抱怨,但如果您尝试构建大于32k的代码,那么Keil会将您通知您的限制。
2.你是什么意思在什么参数?由于OTP图像空间限制,分散文件中的可用存储量决定为32K。
3.您将能够在UM-B-011.PDF文档中找到一些关于内存放置的信息。
谢谢mt_dialog.
你好 !
我根据你说的步骤修改了.sct文件。
删除rw_iram50和rw_iram51部分,然后在zi_ret20中移动jump_table.o(heap_mem_area_not_ret)。
但rw_iram50怎么样?忽略它 ?
#if(use_memory_map == ext_sleep_setup)
.any(Retention_mem_area0);应用程序数据
#万一
.any(+ zi)
谢谢!
zwffcb,
是的,您可以完全删除IRAM50区域,此区域保留在Sysram上,因为地图文件是在32KB限制下运行的,因此应为其他用途分配任何额外的空间,因为您正在尝试放大您的代码,您不会使用OTP(用于深睡眠等),因此您可以消除该区域。
谢谢mt_dialog.
嗨mt_dialog.
谢谢您的回答。
1.我可以将这些空间地址(LR_IROM1到LR_IROM5)更改,因为我仍然需要几乎没有空间来存储我的代码。
谢谢。
zwffcb,
更改分散文件以获取一些额外的代码空间并不简单,内存区域中存在的位置(由分散文件定义)无法注释,以回答您的问题,以便在LR_IROM1上更改地址空间。ARM M0要求IVT在0x0开始,这就是LR_IROM1定义的内容,如果您更改此,您将兑现IVT,并且不会最终效果。
谢谢mt_dialog.