雷竞技电竞平台对话半导体客户支持-连接器 https://support.dialog-semiconductor.com/resource-keywords/linker EN 从Keil到gcc的移植 https://support.dialog-semiconductor.com/porting-keil-gcc < div class = "字段field-name-taxonomy-forums field-type-taxonomy-term-reference field-label-above”> < div class = "字段标签" >论坛:,< / div > < div class = "字段条目" > < div class =”field-item甚至“rel = " sioc: has_container " > < a href = " /论坛/ dialog-smartbond-bluetooth-low-energy - % E2 % 80% 93 -工具”“=“sioc:容器sioc:论坛”属性= " rdfs: labelskos: prefLabel”数据类型= " " >对话框Smartbond蓝牙低能量——工具< / > < / div > < / div > < / div > < div class =”字段field-name-body field-type-text-with-summary field-label-hidden”> < div class = "字段条目" > < div class =”field-item甚至“财产=“内容:编码”> < p >嗨< / p > < p >我试图构建港口583项目从凯尔GCC。p我已经设法取得了很大的进步,但是却停留在一个点上。< / p > < p > 1。我得到了很多链接器错误,即:

./../../ sdk/ble_stack/profiles/prf_utils.o:(.rodata.cust_prf_funcs+0x0):多个定义' cust_prf_funcs'
./../../sdk/platform/arch/main/arch_system.o:(.rodata.cust_prf_funcs+0x0):第一个定义< br /> ../../../../../ sdk / app_modules / src / app_sec / app_security.o: (.rodata.cust_prf_funcs + 0 x0):多个“cust_prf_funcs”< br的定义 /> ./../../../../../ sdk /平台/ arch /主/ arch_system.o: (.rodata.cust_prf_funcs + 0 x0):首先在这里定义
./../../sdk/app_modules/src/app_common/app.o:(.rodata.cust_prf_funcs+0x0): ' cust_prf_funcs'的多个定义
./. /. /. /sdk/platform/arch/main/arch_system.o:(.rodata.cust_prf_funcs+0x0):首先在这里定义

等等。我认为有一些开关是错误的,但我找不到是什么。

我得到一个内存溢出错误

arm-none-eabi/bin/ld: out/full_emb_sysram。axf节”。constdata”将在地区不适合“RAM_IROM4”< br / > arm-none-eabi / bin / ld:地区内存溢出堆栈< br / > arm-none-eabi / bin / ld:部分ER_IROM5在[0000000020000440、0000000020000440 e33]重叠部分加载.constdata加载在[00000000200003 e4, 00000000200003 eb] < br / > arm-none-eabi / bin / ld:
collect2: error: ld returned 1 exit status

我怀疑这与内存设置不正确有关。 Is the 580.lds file still applicable ? Can you help me with a 583.lds file? Or how do I get started porting this ?
I have done the steps from the application note, but there is still some way to go to make my 583 work, as you can see :)

I intend to use the 583 in a mainstream commercial product, so this help will go a long way.

--
Best regards

Device: 
2016年7月29日星期五12:33:52+0000 ankitdaf 4308 athttps://support.dialog-semiconductor.com https://support.dialog-semiconductor.com/porting-keil-gcc#comments
用于保留RAM区域 https://support.dialog-semiconductor.com/usage-retention-ram-area
论坛:
dialog smartbond蓝牙低能–软件=“字段名称正文字段类型文本,摘要字段标签隐藏”>

大家好,

请让我问一下“保留RAM”和“系统RAM(page0,1)”的用法。
我们正在努力缩小代码大小。(RAM区域(用于代码)比我们想象的要小……)
我已经阅读了UM-B-011文档,但我仍然没有信心使用这些区域。

=我的状况=
-使用扩展睡眠
-BLE_连接\u MAX_USER=1

=我的理解=
关于UM-B-011,ATT、ENV和MSG堆的大小是:
ATT 1036字节
ENV 360字节
MSG 1324字节
这些堆被分配给LR_RETENTION_RAM2,具体取决于分散文件。
(我还检查了real map文件。)
和“arch_main.o(BLE_exchange_memory)”也被分配给LR_RETENTION_RAM2区域。

我将映射文件列示如下:
-----------
加载区域LR u RETENTION_RAM2(基数:0x00080768,大小:0x00000000,最大值:0x00002898,绝对值)

执行区域ZI_RET20(基数:0x00080768,大小:0x00000a8c,最大值:0x00002B8,绝对值,未调整)

基本地址大小类型Attr Idx E Section Name Object

0x00080768 0x000004c Zero RW 541 heap\u db\u area jump\u table.o
0x00080b74 0x0000154 Zero RW 542 heap\u env\u area jump\u table.o
0x00080cc8 0x000052c Zero RW 544 heap\u msg\u area jump\u table.o

执行区域ZI\u RET21(Base:0x00082a20,Size:0x000005e0,Max:0x000005e0,绝对)

Base Addr Size Type Attr Idx E Section Name Object

0x00082a20 0x000005de Zero RW 287 BLE_exchange_memory arch_main.o
关于这个.map文件,0x82a20-(0x80cc8+0x52c)=0x182c(字节)似乎是空的。因此我们可以自由使用此区域。
>;问题1.是否正确?

如果问题1是正确的,我们可以使用这些区域将任何变量作为u属性((节(“保留内存区域0”),zero_init))。有两个地方在散点文件中定义了保留内存区域0。(使用ext sleep时)如果第一个位置(0x20008000)对于保留,mem区域0不足以分配保留的变量,这些变量将被分配到第二位(0x80768-)。
>;问题2.是否正确?(实际上,我已经测试过,并且似乎有效…

我可以将一些变量从0x20000000区域移动到0x80000区域,但我无法移动类似函数()的代码)在some_file.c中,通过将“some_file.o”添加到LR_RETENTION_RAM2区域。我在通过SmartSnipets将代码写入闪存时出错……这是正确的行为吗?我认为这是正确的,因为我没有将“some_file.o”定义为将_文件分散为“执行区域”。
问题3.是否可以移动函数/代码(而不是变量)对于这个自由保留区(0x811f4-0x82a20)编辑分散文件,如执行区域或其他内容,如果我对此有任何意见,将不胜感激。
非常感谢您的支持。

向您致意,
CD