I use JTAG to connect with the DA14580, then use Smartsnippet OTP Image to burn custom image. And then burn OTP header with 2 flags set to Yes, and edit the DMA length to my code length.
I use Read from memory to check and the operation is done correctly.
但现在我无法使用我的手机找到我的芯片。我使用booter下载固件它仍然无法找到。
Is there anything wrong?
设备:
嗨丹尼尔,
如果您使用的是Pro Dev套件,如果设备实际上是通过指示的功耗,可以通过电源分布器检查。如果您在OTP中刻录了应用程序标志,则无法通过UART或任何其他外设而不是JTAG下载代码(因为引导加载程序已停用)。所以你能做的就是通过JTAG尝试和下载代码(希望你没有禁用OTP标题中的JTAG)并检查应用程序是否响应。
Thanks MT_dialog
是的,我通过JTAG下载代码, and there is no respond.
代码可以在尚未刻录的芯片上工作,因此代码是正确的。
有什么需要吗?change in da1458x_config_basic and da1458x_config_advanced? I only change CFG_DEVELOPMENT_DEBUG to undef.
Hi daniel59,
在OTP标题中有一个名为JTAG的标志,如果您已将其设置为禁用,则无法将调试器连接并下载代码,因此如果您尚未设置此操作,则您应该能够附加调试器和下载代码。如果您启用了JTAG使能标志,并且即使使用调试器无法运行或下载代码,我想刻录的580有问题。与图像有没有任何特殊设置,即使使用CFG_DEVELPMENT_DEBUG图像应该有效(特定的标志只需添加一些断点,以便开发人员识别任何问题,如果您在不应发生的情况下下载了图像,请执行此操作。另外尝试重新附加到OTP标题并检查是否可以批发DMA长度的大小,以使其更大(此字段所需的最大值为1FC0意味着32512字节以字符为单词),也许您错误地估计了图像的大小,DMA长度应大于或等于图像的大小。另外,确保重新映射标志被设置为0时SRAM。
Thanks MT_dialog
是的标志是启用,DMA长度I设置为0x1406,因为当我刻录DA14580时,它表示DMA长度(0字)不应小于图像文件代码长度(5126字)。
After I input 1FC0 and burn, it change to 1FE6.
The attachment is OTP header picture, and download success picture via Booter. But still can't find by cellphone.
Hi daniel59,
如果您刻录了同一芯片,您不会能够将OTP销向所需的值,只能从零切换到那些,这就是为什么要拥有该值。由于您已启用JTAG,您应该能够直接下载代码到刻录芯片,如果不是通过使用keil的智能片段,可以尝试(通过keil下载)以确保设备仍在工作正确,燃烧过程出了问题。我在一个全部烧毁板上进行了测试,其中DMA长度超过1FC0,并放置了您提到的值(1FE6),似乎镜像正在发生很好,程序运行,所以,这不是你的probelm。我想当前的580芯片出了问题,尽管我坚持使用您的设备在电源分析器上,并检查它在做什么。
Thanks MT_dialog
I cant find the chip via keil after change SW to JTAG. I think the chip is fine because I can still connect it.
How to check the chip using power profiler?
Hi daniel59,
Dont change in keil from SWD to JTAG, just try to download code into the chip via keil through SWD and check if you can find it by using your phone. You will have to use a pro kit for this (only the expert and the pro kit have the power measurement circuit) you can attach the pro daughter board with the burned OTP on the pro kit and check using Smart Snippets in the power profiler tab if indeed the chip doesn't advertise (check the three current peaks when the system is advertising). Also you can check the current consumption after reset and check for any weird behaviour.
Thanks MT_dialog
I use debug in keil, and the code can be downloaded into the chip. I can see the data that do ++ operation works fine, but still cant find by my phone. Does OTP NVDS need to burn?
我使用自己的电路使用DA14580,因此我无法使用电源分布器。
Hi daniel59,
No, if you burned the image with the CFG_INITIALIZE_NVDS_STRUCT the nvds struct will be filled with the data from the SDK and the device will use those data as a bd address etc. If you dont use this flag and the NVDS of the OTP is empty, then yes you will have a problem. Check the above flag and make sure its defined, also if from the keil you can download code and you can see the code running but you can't see your device advertising by your phone then its not the OTP burning its either the current 580 chip or the antenna on your custom design.
Thanks MT_dialog
I checked the flag and it is defined.
但在OTP燃烧电路之前可以工作,燃烧它不能。
Hi daniel59,
I am sorry, but i cant pinpoint the problem to anything else than a damaged 580, please try to burn another chip.
Thanks MT_dialog
我已经思考过......但如果它损坏了为什么Smartsnippet可以连接到它?我害怕破坏另一个......
Hi daniel59,
尝试测量580的电压电源(如果您尝试通过硬币电池电量为电池电量),如果电源较少,则为2.35V,580从OTP启动。还关于580可以连接到智能片段并且无法传输的事实,也许模块的无线电已经损坏甚至可能芯片正在发送,但是天线已损坏,导致您的设备传输的星期信号无法通过手机设备拾取。
Thanks MT_dialog
I found that the problem is on the code. I download an unchanged template hex file to the chip my phone can find it, but download my own code my phone can't. I'll look my code and find out what's going on.
I change the app_on_set_dev_config_complete callback with my user one, add 2 easy timer in it.
void user_app_on_set_dev_config_complete(void)
{
data_used = app_easy_timer(8, app_data_timer_cb_handler);
timer_used = app_easy_timer(100, app_adcval1_timer_cb_handler);
default_app_on_set_dev_config_complete();
}
then the chip cannot be found.Why it happens? Is there any different after OTP when running app_on_set_dev_config_complete callback?
我想知道我是否希望在芯片供电时需要代码运行,并且只运行一次,我应该在哪里放置代码?Easy Timer似乎不适用于App_On_Init回调。如果我将它们放在app_on_sytem_power中,如果我认为它会浪费一些处理时间。
我只是评论和取消注释2个计时器回调,它可以在OTPED芯片上工作......
Hi daniel59,
在OTP上运行的FW与在Sysram上运行时,在SYSRAM上运行时,RESCHACKS和所执行的函数之间没有差异是您在构建代码时定义的回调。
“在芯片供电时运行代码,只运行一次,我应该在哪里放置代码”,恐怕我不明白你想做什么,请澄清。
easy timers dont work in the app_on_init() because after the app_on_init callback is invoked a reset of the stack is invoked as well and that cancels any timers that you ve set during the app_on_init(). Regarding the placing of the timers setting in the app_on_system_powered() if you dont want to place an if statement in the app_on_system_powered, you can place the setting of the timers in the _on_set_dev_config_complete() (as you did), or when you start advertise as most of the SDK examples do, or when you are finished with setting up your database on the _app_on_db_init_complete().
Thanks MT_dialog