OTP编程后有问题

19个帖子/ 0新
最后一篇
丹尼尔59.
离线
最后见到:1年9个月前
加入:2016-01-08 04:34
OTP编程后有问题

我使用JTAG与DA14580连接,然后使用SmartSnippet OTP图像刻录自定义图像。然后刻录OTP标题,将2个标志设置为“是”,并将DMA长度编辑为我的代码长度。

我使用从内存中的读取来检查,操作是正确完成的。

但现在我无法使用我的手机找到我的芯片。我使用booter下载固件它仍然无法找到。

有什么问题吗?

设备:
mt_dialog.
离线
最后见到:6个月3天前
工作人员
加入:2015-06-08 11:34
嗨丹尼尔,

嗨丹尼尔,

如果您使用的是Pro Dev套件,如果设备实际上是通过指示的功耗,可以通过电源分布器检查。如果您在OTP中刻录了应用程序标志,则无法通过UART或任何其他外设而不是JTAG下载代码(因为引导加载程序已停用)。所以你能做的就是通过JTAG尝试和下载代码(希望你没有禁用OTP标题中的JTAG)并检查应用程序是否响应。

谢谢mt_dialog.

丹尼尔59.
离线
最后见到:1年9个月前
加入:2016-01-08 04:34
是的,我通过JTAG下载代码

是的,我通过JTAG下载代码,没有响应。

代码可以在尚未刻录的芯片上工作,因此代码是正确的。

丹尼尔59.
离线
最后见到:1年9个月前
加入:2016-01-08 04:34
有什么需要吗?

我需要在da1458x_config_basic和da1458x_config_advanced中更改什么?我只将cfg_development_debug更改为undef。

mt_dialog.
离线
最后见到:6个月3天前
工作人员
加入:2015-06-08 11:34
嗨Daniel59,

嗨Daniel59,

在OTP标题中有一个名为JTAG的标志,如果您已将其设置为禁用,则无法将调试器连接并下载代码,因此如果您尚未设置此操作,则您应该能够附加调试器和下载代码。如果您启用了JTAG使能标志,并且即使使用调试器无法运行或下载代码图像应该有效(特定的标志只需添加一些断点,以便开发人员识别任何问题,如果您在不应发生的情况下下载了图像,请执行此操作。另外尝试重新附加到OTP标题并检查是否可以批发DMA长度的大小,以使其更大(此字段所需的最大值为1FC0意味着32512字节以字符为单词),也许您错误地估计了图像的大小,DMA长度应大于或等于图像的大小。另外,确保重新映射标志被设置为0时SRAM。

谢谢mt_dialog.

丹尼尔59.
离线
最后见到:1年9个月前
加入:2016-01-08 04:34
是的标志是启用,和

是的标志是启用,DMA长度I设置为0x1406,因为当我刻录DA14580时,它表示DMA长度(0字)不应小于图像文件代码长度(5126字)。

在输入1FC0并刻录后,它会更换为1FE6。

附件是OTP报头图片,并通过Booter下载成功图片。但仍然无法通过手机找到。

附件:
mt_dialog.
离线
最后见到:6个月3天前
工作人员
加入:2015-06-08 11:34
嗨Daniel59,

嗨Daniel59,

如果您刻录了同一芯片,您不会能够将OTP销向所需的值,只能从零切换到那些,这就是为什么要拥有该值。由于您已启用JTAG,您应该能够直接下载代码到刻录芯片,如果不是通过使用keil的智能片段,可以尝试(通过keil下载)以确保设备仍在工作正确,燃烧过程出了问题。我在一个全部烧毁板上进行了测试,其中DMA长度超过1FC0,并放置了您提到的值(1FE6),似乎镜像正在发生很好,程序运行,所以,这不是你的probelm。我想当前的580芯片出了问题,尽管我坚持使用您的设备在电源分析器上,并检查它在做什么。

谢谢mt_dialog.

丹尼尔59.
离线
最后见到:1年9个月前
加入:2016-01-08 04:34
我无法通过keil找到芯片

在将SW到JTAG更改后,我无法通过Keil找到芯片。我认为芯片很好,因为我仍然可以连接它。

如何使用Power Profiler检查芯片?

mt_dialog.
离线
最后见到:6个月3天前
工作人员
加入:2015-06-08 11:34
嗨Daniel59,

嗨Daniel59,

从SWD到JTAG的keil不改变,只需通过SWD将代码下载到芯片中,并检查您是否可以使用手机找到它。您将不得不使用Pro套件(仅限专家和Pro套件具有电源测量电路),您可以将Pro子板与Pro套件上的刻录OTP连接,并在Power Profiler选项卡中使用智能片段检查实际上,芯片没有宣传(检查系统广告时的三个电流峰值)。此外,您还可以检查重置后的当前消耗并检查是否有任何奇怪的行为。

谢谢mt_dialog.

丹尼尔59.
离线
最后见到:1年9个月前
加入:2016-01-08 04:34
我在keil使用调试,以及

我在keil中使用调试,并且可以将代码下载到芯片中。我可以看到Do ++操作的数据正常工作,但我的手机仍然无法找到。OTP NVDS是否需要燃烧?

我使用自己的电路使用DA14580,因此我无法使用电源分布器。

mt_dialog.
离线
最后见到:6个月3天前
工作人员
加入:2015-06-08 11:34
嗨Daniel59,

嗨Daniel59,

否,如果使用cfg_initialize_nvds_struct刻录图像,则NVDS结构将从SDK中填充数据,并且设备将使用这些数据作为BD地址等。如果您不使用此标志,则OTP的NVDS为空,然后是的,你会有一个问题。检查上面的标志并确保它定义了,如果从Keil您可以下载代码,您可以看到代码运行,但您无法通过手机看到您的设备广告,那么它不是OTP刻录其当前的580芯片或您的定制设计上的天线。

谢谢mt_dialog.

丹尼尔59.
离线
最后见到:1年9个月前
加入:2016-01-08 04:34
我检查了这个标志,它是

我检查了标志,定义了。

但在OTP燃烧电路之前可以工作,燃烧它不能。

mt_dialog.
离线
最后见到:6个月3天前
工作人员
加入:2015-06-08 11:34
嗨Daniel59,

嗨Daniel59,

我很抱歉,但我不能针对任何损坏的580来确定问题,请尝试刻录另一个芯片。

谢谢mt_dialog.

丹尼尔59.
离线
最后见到:1年9个月前
加入:2016-01-08 04:34
我思考了......但是

我已经思考过......但如果它损坏了为什么Smartsnippet可以连接到它?我害怕破坏另一个......

mt_dialog.
离线
最后见到:6个月3天前
工作人员
加入:2015-06-08 11:34
嗨Daniel59,

嗨Daniel59,

尝试测量580的电压电源(如果您尝试通过硬币电池电量为电池电量),如果电源较少,则为2.35V,580从OTP启动。还关于580可以连接到智能片段并且无法传输的事实,也许模块的无线电已经损坏甚至可能芯片正在发送,但是天线已损坏,导致您的设备传输的星期信号无法通过手机设备拾取。

谢谢mt_dialog.

丹尼尔59.
离线
最后见到:1年9个月前
加入:2016-01-08 04:34
我发现这个问题是

我发现问题在于代码。我下载一个未改变的模板十六进制文件到我的手机可以找到它,但下载我自己的代码我的手机不能。我会看我的代码并找出发生了什么。

丹尼尔59.
离线
最后见到:1年9个月前
加入:2016-01-08 04:34
我更改app_on_set_dev

我使用用户更改App_On_set_dev_config_complete回调,在其中添加2个简单的计时器。

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();
}

那么芯片无法找到。为什么会发生?OTP在运行app_on_set_dev_config_complete回调后有没有不同?

我想知道我是否希望在芯片供电时需要代码运行,并且只运行一次,我应该在哪里放置代码?Easy Timer似乎不适用于App_On_Init回调。如果我将它们放在app_on_sytem_power中,如果我认为它会浪费一些处理时间。

丹尼尔59.
离线
最后见到:1年9个月前
加入:2016-01-08 04:34
我只是评论和取消注释

我只是评论和取消注释2个计时器回调,它可以在OTPED芯片上工作......

mt_dialog.
离线
最后见到:6个月3天前
工作人员
加入:2015-06-08 11:34
嗨Daniel59,

嗨Daniel59,

在OTP上运行的FW与在Sysram上运行时,在SYSRAM上运行时,RESCHACKS和所执行的函数之间没有差异是您在构建代码时定义的回调。

“在芯片供电时运行代码,只运行一次,我应该在哪里放置代码”,恐怕我不明白你想做什么,请澄清。

易于计时器在App_On_Init()中不起作用,因为在调用app_on_init回调之后,也调用了堆栈的重置,并取消了在app_on_init()期间设置的任何定时器。关于在app_on_system_powered()中的定时器设置()如果您不想在app_on_system_powered中放置if语句,则可以放置在_on_set_dev_config_complete()中的定时器设置(如您所做的),或者在开始通告时大多数SDK示例都执行,或者在完成在_app_on_db_init_complete()上设置数据库时。

谢谢mt_dialog.