OTP编程后出现问题

19个员额/ 0个新员额
最后发表
daniel59
离线
最后看到:1年8个月前
加入:2016-01-08 04:34
OTP编程后出现问题

我使用JTAG连接DA14580,然后使用smarnippet OTP Image刻录自定义图像。然后烧录OTP头2个标志设置为Yes,并编辑DMA长度到我的代码长度。

我使用Read from memory进行检查,操作正确完成。

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

有什么问题吗?

设备:
MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 34
嗨丹尼尔,

嗨丹尼尔,

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

由于MT_dialog

daniel59
离线
最后看到:1年8个月前
加入:2016-01-08 04:34
是的,我通过JTAG下载代码

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

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

daniel59
离线
最后看到:1年8个月前
加入:2016-01-08 04:34
有什么需要吗?

da1458x_config_basic和da1458x_config_advanced中有什么需要更改的吗?我只将CFG_DEVELOPMENT_DEBUG更改为undef。

MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 34
嗨daniel59,

嗨daniel59,

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

由于MT_dialog

daniel59
离线
最后看到:1年8个月前
加入:2016-01-08 04:34
是的标志是启用,和

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

当我输入1FC0并燃烧后,它变成1FE6。

附件是OTP头图片,通过Booter下载成功图片。但手机还是找不到。

附件:
MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 34
嗨daniel59,

嗨daniel59,

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

由于MT_dialog

daniel59
离线
最后看到:1年8个月前
加入:2016-01-08 04:34
我无法通过keil找到芯片

在将SW改为JTAG后,我无法通过keil找到芯片。我觉得芯片没问题,因为我还能连接它。

如何使用功率分析器检查芯片?

MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 34
嗨daniel59,

嗨daniel59,

不要将keil从SWD更改为JTAG,只需尝试通过keil通过SWD下载代码到芯片中,并检查您是否可以使用您的手机找到它。你将不得不使用一个套装(只有专家和专业设备功率测量电路)你可以把亲女儿董事会与燃烧OTP套装和检查使用智能电力分析器的片段标签如果确实芯片不做广告(检查三个电流峰值当系统广告)。你也可以检查重置后的当前消费和检查任何奇怪的行为。

由于MT_dialog

daniel59
离线
最后看到:1年8个月前
加入:2016-01-08 04:34
我在keil中使用debug,而在

我在keil中使用debug,代码可以下载到芯片中。我可以看到做++操作的数据工作的很好,但仍然找不到我的手机。OTP NVDS需要燃烧吗?

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

MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 34
嗨daniel59,

嗨daniel59,

不,如果你用CFG_INITIALIZE_NVDS_STRUCT烧录映像,nvds结构体将填充来自SDK的数据,设备将使用这些数据作为bd地址等。如果你不使用这个标志,并且OTP的NVDS是空的,那么是的,你会有一个问题。检查上面的国旗和确保它的定义,也从我们的如果你可以下载代码,你可以看到代码运行但是你看不到你的设备广告通过你的手机然后不是OTP燃烧其目前的580芯片或定制设计的天线。

由于MT_dialog

daniel59
离线
最后看到:1年8个月前
加入:2016-01-08 04:34
我检查了国旗,没错

我检查了旗帜,它被定义了。

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

MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 34
嗨daniel59,

嗨daniel59,

很抱歉,除了损坏的580外,我找不到其他问题,请试着烧另一个芯片。

由于MT_dialog

daniel59
离线
最后看到:1年8个月前
加入:2016-01-08 04:34
我想过,但是

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

MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 34
嗨daniel59,

嗨daniel59,

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

由于MT_dialog

daniel59
离线
最后看到:1年8个月前
加入:2016-01-08 04:34
我发现问题是

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

daniel59
离线
最后看到:1年8个月前
加入:2016-01-08 04:34
我更改app_on_set_dev

我改变app_on_set_dev_config_complete回调与我的用户一个,添加2个简单的计时器。

空白user_app_on_set_dev_config_complete(空白)

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中,如果我认为它会浪费一些处理时间。

daniel59
离线
最后看到:1年8个月前
加入:2016-01-08 04:34
我只是注释和取消注释

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

MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 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