OTP编程后出现问题

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

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

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

但是现在我用手机找不到我的芯片。我用启动器下载固件,还是找不到。

有什么问题吗?

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

嗨,丹尼尔,

如果你使用的是专业开发工具包,你可以通过功率分析器检查设备是否真的通过指示的功率消耗进行宣传。如果您在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 ENABLE的标志,如果你将其设置为disabled,你将无法附加调试器和下载代码到它,所以如果你没有设置这个,你应该能够附加调试器和下载代码。如果你有JTAG ENABLE标志启用,你不能运行或下载代码,甚至与调试器,我认为有什么是错误的580烧毁。对于映像没有任何特殊设置,即使使用CFG_DEVELOPMENT_DEBUG,映像也应该能够工作(特定的标志只是添加了一些断点,以便开发人员识别任何问题,如果您按原样下载了映像,则不应该出现这种情况)。还试图重新OTP头和检查如果你能复燃DMA长度的大小,以使其更大的(这个字段的最大值可以是1 fc0朝32512字节的字),也许你错误你的图像的大小,和DMA长度应大于,或等于,你的图像的大小。另外,确保Remapping标记被设置为SRAM为0。

由于MT_dialog

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

是的,标志是Enable,并且我设置的DMA长度是0x1406,因为当我烧制DA14580时,它说DMA长度(0个单词)不应该小于图像文件代码长度(5126个单词)。

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

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

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

嗨daniel59,

如果你烧相同的芯片,你不能再烧OTP到你想要的值,你只能从0转换到1,这就是为什么你得到那个值。既然你启用了JTAG你应该能够下载代码直接烧毁芯片,如果不是因为聪明片段至少用凯尔,你能尝试通过凯尔(下载),以确保设备仍正常工作,与燃烧过程出了问题。我在一个DMA长度超过1FC0的已经烧坏的板上进行了测试,并放置了你提到的值(1FE6),似乎镜像发生得很好,程序运行,所以,这不是你的问题。我认为目前的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
我想过,但是

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

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回调中似乎不起作用。如果我用if语句将它们放在app_on_sytem_powered中,我认为它会浪费一些处理时间。

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

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

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

嗨daniel59,

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

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

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