OTP编程后出现问题

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

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

我使用Read from memory来检查操作是否正确。

但是现在我用手机找不到我的芯片了。我用booter下载固件,它仍然找不到。

有什么问题吗?

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

嗨,丹尼尔,

如果你使用的是专业开发工具,你可以通过功率分析器检查设备是否真的通过指示的功耗进行广告宣传。如果你烧毁了OTP中的应用程序标志,你将不能通过UART或任何其他外围设备而不是JTAG下载代码(因为引导加载程序是停用的)。因此,您可以尝试通过JTAG下载代码(希望您没有禁用OTP头中的JTAG),并检查应用程序是否响应。

由于MT_dialog

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

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

代码可以在没有被烧毁的芯片上运行,所以代码是正确的。

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

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

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

嗨daniel59,

在OTP报头中有一个名为JTAG ENABLE的标志,如果你将其设置为disabled,你将不能附加调试器并下载代码到它,所以如果你没有设置这个,你应该能够附加调试器和下载代码。如果你启用了JTAG ENABLE标志,即使调试器也不能运行或下载代码,我认为烧毁的580有问题。对于图像没有任何特殊设置,即使使用CFG_DEVELOPMENT_DEBUG,图像也应该工作(特定的标志只是添加了一些断点,以便开发人员识别任何问题,如果您下载了图像,这应该不会发生)。还试图重新OTP头和检查如果你能复燃DMA长度的大小,以使其更大的(这个字段的最大值可以是1 fc0朝32512字节的字),也许你错误你的图像的大小,和DMA长度应大于,或等于,你的图像的大小。另外,确保Remapping标志设置为0时的SRAM。

由于MT_dialog

daniel59
离线
最后看到:1年7个月前
加入:2016-01-08 04:34
是,标志是Enable,并且

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

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

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

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

嗨daniel59,

如果你烧同样的芯片,你不能再烧OTP到你想要的值,你只能从0切换到1,这就是为什么你得到那个值。既然你启用了JTAG你应该能够下载代码直接烧毁芯片,如果不是因为聪明片段至少用凯尔,你能尝试通过凯尔(下载),以确保设备仍正常工作,与燃烧过程出了问题。我在一个已经烧毁的板上进行了测试,DMA长度超过1FC0,并放置了你提到的值(1FE6),似乎镜像正在正常发生,程序运行,所以,这不是你的问题。我猜是现在的580芯片出了问题,尽管我坚持要把你的设备放在功率分析器上检查它在做什么。

由于MT_dialog

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

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

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

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

嗨daniel59,

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

由于MT_dialog

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

我在keil中使用调试,并且代码可以下载到芯片中。我可以看到做++操作的数据工作得很好,但仍然无法通过我的手机找到。OTP NVDS需要刻录吗?

我使用DA14580和我自己的电路,所以我不能使用功率分析器。

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

嗨daniel59,

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

由于MT_dialog

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

我检查了这个标志,它被定义了。

但在OTP烧前电路可以工作,烧后就不行了。

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

嗨daniel59,

很抱歉,我不能确定问题出在哪里,除了一个损坏的580,请试着烧另一个芯片。

由于MT_dialog

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

我想过了,但是if it is damaged why Smartsnippet can connect to it? I'm afraid of damage another one...

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

嗨daniel59,

尝试测量580的电压供应(如果你试图通过硬币电池供电),如果功率小于2.35V 580不会从OTP启动。也有关,580可以连接到智能片段和不能传输,也许收音机模块已经损坏,甚至也许芯片传输但结果本周的天线被损坏的信号,你的设备不能被传送你的电话设备。

由于MT_dialog

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

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

daniel59
离线
最后看到:1年7个月前
加入: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 ();

那就找不到芯片了。为什么会发生?当运行app_on_set_dev_config_complete回调时,OTP后有什么不同?

我想知道如果我想让代码在芯片通电时运行,并且只运行一次,我应该把代码放在哪里?Easy timer似乎在app_on_init回调中不起作用。如果我把它们放在app_on_sytem_powered和if语句中,我认为这会浪费一些处理时间。

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

我只是评论和取消评论2定时器回调,它可以在OTPed芯片上工作…

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

嗨daniel59,

fw运行在OTP上和运行在syram上没有区别,执行的回调和函数是你在构建代码时定义的。

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

简单的计时器在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