智能片段下载到Flash失败

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
16个帖子/ 0新
最后一篇
盲文
离线
最后一次露面:2年6个月前
加入:2016-07-29 10:01
智能片段下载到Flash失败

嗨,对话

我正在使用DA14583,当我使用智能片段下载我的十六进制文件时,它显示从文件xx.hex中读取0个字节,xxx字节已被忽略',因为它们的记录地址大于或等于0x8000'。

这会阻止我的发展,你能帮我吗?非常感谢。

关键词:
设备:
mt_dialog.
离线
最后一次露面:4个月1日前
职员
加入:2015-06-08 11:34
嗨caiziee,

嗨caiziee,

你能多给我一些信息吗,你想做什么?烧flash, OTP,通过UART下载?此消息出现时,您正试图做什么?浏览到“选择要下载的文件”字段,烧毁记忆?您正在使用什么接口(UART、JTAG) ?你正在使用的。hex文件,它是如何生成的,它有多大?您使用的是哪个版本的Smart Snippets工作室?

谢谢mt_dialog.

盲文
离线
最后一次露面:2年6个月前
加入:2016-07-29 10:01
对不起,我的错,我应该

对不起,我的错,我应该提供更多信息。

我正在使用JTAG接口刻录内部1MB闪光灯。当我浏览到下载文件时,无法打开,然后我收到了此错误消息。HEX文件由Keil 5构建。我们将自己的应用程序添加到BLE_Example项目中。十六进制文件大小为103KB。我正在使用智能片段3.9。
生成的地图文件如下:
==============================================================================.

代码(INC。DATA)RO数据RW数据ZI数据调试

31936 3532 4656 584 11152 972004大总计
31936 3532 4656 584 11152 972004 ELF图像总数
31936 3532 4656 584 0 0 ROM总数

==============================================================================.

总RO尺寸(代码+ RO数据)36592(35.73KB)
总RW尺寸(RW Data + Zi数据)11736(11.46KB)
总rom大小(代码+ RO数据+ RW数据)37176(36.30KB)

mt_dialog.
离线
最后一次露面:4个月1日前
职员
加入:2015-06-08 11:34
嗨Caizee,

嗨Caizee,

由于您试图在583中刻录一个相当大的文件,因此在浏览大于某个默认值的情况下,似乎在智能片段中检查了智能片段。尝试将您的.hex文件转换为.bin文件后,在执行智能片段后会接受它,然后尝试将其刻录到583的闪光灯。

谢谢mt_dialog.

盲文
离线
最后一次露面:2年6个月前
加入:2016-07-29 10:01
感谢您的回复。

感谢您的回复。
但是我已经尝试过这个并使用fromelf.exe获取bin文件。但是我得到的不是一个垃圾箱文件,而是几个垃圾箱文件。他们是
ER_IROM1 1KB.
ER_IROM2 1KB.
ER_IROM3 1KB.
ER_IROM4 1KB.
ER_IROM5 36KB.
zi_ret20 1kb.

我不知道如何在确切地址刻录这些垃圾邮件到闪存?

mt_dialog.
离线
最后一次露面:4个月1日前
职员
加入:2015-06-08 11:34
嗨caiziee,

嗨caiziee,

在以前的SDK发布中,您应该能够在线查找(在“软件和工具”的“先前的软件版本”部分中,我们包含一个HEX2BIN实用程序,即它应该能够将您的.hex文件转换为适当的.bin文件向您置于智能片段中。例如,在SDK5.0.3中,您将能够在实用程序/ flash_programmer文件夹中找到Hex2bin。此外,您还可以在教程中的教程中找到它,在教程6:Suota工具Zip文件中。

谢谢mt_dialog.

盲文
离线
最后一次露面:2年6个月前
加入:2016-07-29 10:01
嗨,对话

嗨,对话
感谢您的快速回复。
我已经尝试过这个,但它失败了。
因为在我们的应用程序中,有许多部分在分散配置文件中定义。地址不是连续的。当我使用hex2bin.exe时,我得到以下输出:
最低地址= 00000000
最高地址= 00080857
PAD BYTE = FF
8位校验和= 9c
当我用智能片段闪烁时,我收到了一个错误,所以所选文件加偏移量的数据大小超过SPI闪存大小(131072字节)“。

你能给我更多关于这个的提示吗?先感谢您。

mt_dialog.
离线
最后一次露面:4个月1日前
职员
加入:2015-06-08 11:34
嗨caiziee,

嗨caiziee,

早上没有与智能片段相关的东西,我假设.bin那是.hex的,如果你的.hex适用填充,那么.bin达到非常大的尺寸,散射文件达到了一些问题或者您已经在FW中的某处应用了固定的初始化值,即链接器无法正常处理(添加一些代码以初始化它)因此导致非常大的.bin文件以便应用value将其写入二进制中的相应地址,而不是使用额外的代码来应用它。

谢谢mt_dialog.

盲文
离线
最后一次露面:2年6个月前
加入:2016-07-29 10:01
谢谢,对话。

谢谢,对话。
分散配置文件定义了几个空格,我基于SDK 5.0.5 BLE_Example项目进行了一点更改。为了获得更多用于代码RO和数据RO的RAM空间,我重新排列RAM设置。你能帮忙检查吗?在我在我们的项目中添加了一些新功能之前,这可以使用.hex闪烁。但大小变得更大后,我被这个问题困住了。
对于一些大数组初始化,我将它们声明为'__Attribute __((部分(“保留_mem_area0”),ZERO_INIT));“将它们放入保留RAM中。

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

#!armcc -e -i。\,。\ ..,。\ .. \ .. \ .. \ src \ config,。\ .. \ .. \ sdk \ common_project_files \ --cpu cortex-m0

#include“da1458x_config_basic.h”
#include“da1458x_config_advanced.h”
#include“da1458x_scatter_config.h”

;*************************************************************
;***由UVISION生成的分散加载描述文件***
;*************************************************************
;
;该分散文件设置为EM_MAP == 23!
;如果应用程序使用不同的内存布局,那么它必须
;使用自定义的分散文件。
;**************************************************************

LR_IROM1 0x20000000 0x160 {;负荷地区size_region
ER_IROM1 0x20000000 0x160 {;加载地址=执行地址
*.o(重置,+第一)
}
}

lr_irom2 0x20000160 0x160 {
ER_IROM2 0x20000160 0x160 {
*(Jump_Table_Mem_area)
}
}

lr_irom3 0x200002c0 0x80 {
ER_IROM3 0x200002C0 0x80 {
*(timeout_table_area)
}
}

lr_irom4 0x20000340 0x100 {
er_irom4 0x20000340 0x100 {
*(nvds_data_storage_area))
}
}

lr_irom5 0x20000440 0x93c0 {
er_irom5 0x20000440 0x8dc0 {
*(Inroot $$部分);必须处于一个库部分
;根区域,例如,__main.o,
;__散射* .o,__dc * .o,和*区域$$表
boot_vectors.o(+ Ro)
system_armcm0.o(+ ro)
; * ARMLIB *(+ RO)
.ANY (+ RO)
.any(+ RW)
}

rw_iram54 0x20009200 uninit 0x600 {;堆
.any(堆栈)
}

}

lr_retention_ram2 0x00080768 0x2898 {
;延长睡眠模式
;延长潮流:0x80000 - 0x83000
zi_ret20 0x00080768 uninit 0x22b8 {;0x80768是ROM代码使用的最后一个地址
#if(ble_connection_max_user> 4)
ARCH_SYSTEM.O(CS_AREA)
#万一
jump_table.o(heap_env_area)
jump_table.o(heap_db_area)
jump_table.o(heap_msg_area)
.any(Retention_mem_area0);应用程序数据
.any(+ zi)
#if定义(spotar_patch_area)&&(spotar_patch_area == 1)
app_spotar.o(spotar_patch_area);当Spotar_Patch_Sysram为1时放置在Sysram中
#万一
}

zi_ret21 exchange_memory_base exchange_memory_size {
Arch_main.o(ble_exchange_memory)
}
}
#万一

; lr_guard_ram 0x50000000 0x0 {
; rw_gram0 0x50000000 0x0 {;确保这里没有任何东西!
; *。o(exchange_mem_case1)
;}
;}

mt_dialog.
离线
最后一次露面:4个月1日前
职员
加入:2015-06-08 11:34
嗨Caizee,

嗨Caizee,

我所提供的散射中可以看到的是,您已经从原始分散文件中进行了一些区域,如本帖子所示(https://support.dialog-semiconductor.com/how-build-program-code-larger-32kb)但是,您也没有建议的rw_iram52和rw_iram53,也没有提出,也不是通过上一篇文章所示的替换区域。我无法讲述Keil如何在您附加的分散文件中反应。如果通过使用此散点文件,FW用于运行,但在添加一些附加代码之后,生成的二进制文件太大,那么也许您初始化您放置在保留RAM中的某些变量,并导致.bin文件是那么大的。如果您可以提供项目的地图文件和.hex文件,则会有帮助。

谢谢mt_dialog.

盲文
离线
最后一次露面:2年6个月前
加入:2016-07-29 10:01
嗨,对话

嗨,对话
感谢您的回复。
当您提到时,我声明了一个常量数组,初始化号码,但我将其放在保留RAM区域0中。这会导致问题吗?我还仔细阅读了UM-B-011文件,它说
“0x80000至0x82FFF应该被声明为包含不必初始化的数据(uninit)的区域。

盲文
离线
最后一次露面:2年6个月前
加入:2016-07-29 10:01
嗨,对话

嗨,对话
另一个问题,OTP是32KB。启动后,OTP将应用程序代码镜像为RAM。但我想知道OTP镜子是什么样的数据?代码RO或代码RO +数据RO,或其他内容?
非常感谢。

mt_dialog.
离线
最后一次露面:4个月1日前
职员
加入:2015-06-08 11:34
嗨caiziee,

嗨caiziee,

是的,可能导致您面临的问题,链接器产生一个大的.hex文件,就UM-B-011中的参考文献,是的,因此,由于指定的区域为零,因此特定区域保持unquit的提及在开始时由SDK初始化。

关于OTP和镜像的内容,整个图像从Sysram中的OTP镜像,图像部分与OTP之间没有相互作用,而FW正在运行。

谢谢mt_dialog.

盲文
离线
最后一次露面:2年6个月前
加入:2016-07-29 10:01
谢谢,我做了一个快速的

谢谢,我做了一个快速的实验来批准这一点。是的,当我将所有const值放出保留RAM时,二进制更改为小。
然后,当我使用案例23时,代码RO +数据RO + RW RO的限制是什么?
非常感谢您的回复。

mt_dialog.
离线
最后一次露面:4个月1日前
职员
加入:2015-06-08 11:34
嗨caiziee,

嗨caiziee,

使用案例23映射时的SYSRAM是38KB。

谢谢mt_dialog.

盲文
离线
最后一次露面:2年6个月前
加入:2016-07-29 10:01
非常感谢,对话。

非常感谢,对话。你真的对我的问题做了很大的帮助。从你身边那么精彩的支持是非常好的。;-)

主题锁定