一步一步的OTP编程指南

8个帖子/ 0个新
最后发表
achao1104
离线
最后看到:5年4个月前
主
加入:2015-12-24 10:56
一步一步的OTP编程指南

对话框

我将使用我的自定义板(像你的开发工具包)烧我的设备的OTP。(我的项目),能否提供一个详细的指导,包括:
1)如何连接自定义板和我的设备之间的引脚。
2)如何使用智能片段(我已经成功烧毁的图像和头部的otp自定义板)。
3)什么是代码/配置更改我必须在烧成OTP之前。
4)如果我已经成功烧毁了OTP,我仍然可以从如flash或eeprom或sram(通过jtag下载)引导吗?

以上为sdk5.0

彼得福

设备:
MT_dialog
离线
最后看到:3个月1周前
工作人员
加入:2015-06-08 34
嗨achao1104,

嗨achao1104,

请查看这个论坛帖子http://support.dialog-semiconductor.com/can-you-please-provide-guides-bu..。

2)你可以在Smart Snippets帮助选项User Guide.pdf中找到关于使用Smart Snippets的信息。

3)它取决于你想做什么(OTP)如果例如你需要阅读你的nvd OTP或引导你应该定义,你以前在文章中提到过,除了DEVELOPMENT_DEBUG应该设置为0和CFG_BOOT_FROM_OTP如果你要使用OTP。此外,如果你应该#定义CFG_WDOG

4)如果你已经烧毁了OTP应用程序标志(检查AN-B-001.pdf),串行启动序列将不再执行,只有通过JTAG编程是可能的。

由于MT_dialog

richard.cunliffe
离线
最后看到:2年4个月前
加入:2017-06-06 39
我正在尝试使用对话框

我试图在一个基于松下PAN1740的设计中使用对话串口服务,而当我直接下载我的十六进制文件到RAM时,它不工作,当我把它编程到OTP内存。因为内存是OTP(究竟为什么选择这样),我现在有两个板我不能使用,我担心的是我将继续刮板,直到我发现我做错了什么。

到目前为止,我发现Dialog文档非常优秀,而且非常全面,所以缺少一个应用程序的说明来说明编写一个OTP应用程序的过程似乎是一个主要的疏忽,特别是考虑到关于类似问题的文章的数量。

我使用以下项目从DSPS SDK:

项目DA1458x_DSPS \ v_5.150.2 \ \ target_apps \ \ sps_device \ Keil_5

在构建OTP代码之前,我将其他帖子拼凑在一起,对项目做了以下更改:

1 da1458x_config_basic.h: "#define CFG_DEVELOPMENT_DEBUG"替换为"// #define CFG_DEVELOPMENT_DEBUG"
2 da1458x_config_advanced: "#undef CFG_BOOT_FROM_OTP"被"#define CFG_BOOT_FROM_OTP"取代

使用Booter在SmartSnippets工具箱(V4.7.3.1690)我成功地下载了十六进制文件到设备的RAM,并能够验证它运行正确使用我的手机上的DSPS应用程序。

然后我在SmartSnippets工具箱中使用了OTP程序员,并成功地下载了相同的十六进制文件到设备,但随后无法检测设备使用我的手机上的DSPS应用程序。

我没有下载一个OTP头或OTP NVDS,因为我不确定这些是强制性的,如果他们是必需的,那么我不确定我需要实际设置。

因为OTP图像只是加载到RAM并从那里运行,为什么我可以直接从RAM运行十六进制文件,但不是当保存在OTP?

帮助! !

MT_dialog
离线
最后看到:3个月1周前
工作人员
加入:2015-06-08 34
嗨richard.cunliffe,

嗨richard.cunliffe,

嗯,最可能的原因是你不能跟踪DSPS应用程序是因为你没有烧毁在OTP头中的application标志。为了让580知道一个应用程序存在于OTP中,并且它应该从OTP引导,你会燃烧的两个应用程序顶部旗帜OTP头(仅从智能片段选择“是”工具,这个工具将燃烧的魔法数字表明,设备应该从OTP启动——请注意,如果你这样做你将不再能够使用串行启动引导程序,你将只能通过JTAG下载代码)。还有你提到的两个#定义,它们与OTP启动过程本身无关。CFG_DEVELOPMENT_DEBUG为了消除任何断言SDK强加为了帮助开发人员,那么你通过它通过删除所有的断言和深度睡眠你应该还未赋值,为了使设备开关的RAM。关于CFG_BOOT_FROM_OTP,它只是一个配置,应用程序可以直接从OTP本身读取OTP头,也可以从sysram读取数据(在引导过程中,OTP头被传输到sysram)。

由于MT_dialog

richard.cunliffe
离线
最后看到:2年4个月前
加入:2017-06-06 39
你好,

你好,
我可以确认我已经设置了两个OTP应用程序标志为Yes,但由于我一直在尝试各种事情,我决定用一个新设备重新启动整个过程。

在Keil uVision IDE(首先定义CFG_DEVELOPMENT_DEBUG,然后定义它未定义)中验证了在RAM中的固件,然后我使用SmartSnippets工具箱中的Booter工具将其下载到RAM中,再次确认代码正确运行。

然后我使用SmartSnippets工具箱中的OTP程序员成功地将相同的十六进制文件下载到OTP内存。然后我对OTP头部做了以下修改:

1 -两个应用程序标志设置为是
2 - DMA长度设置为与代码大小匹配(稍后设置为0x1FC0以指定整个OTP映像空间)。

成功下载了OTP头,然后断开Vpp和SWD连接并重新启动我的目标,但PAN1740什么也不做(应该定期输出一些数据在UART上,当我扫描蓝牙设备时设备没有显示)。

代码只是OTP存储和复制到RAM从那里跑,告诉我,如果代码正确运行时直接加载到内存,然后OTP的问题代码必须与页眉或从OTP代码的加载到内存,因为它是完全相同的代码。

我还需要设置其他的头部设置吗?

Remapping标志的作用是什么?它应该被设置为什么?

是否有详细说明所有头字段的文档?

因为我实际使用的是包含DA14580的PAN1740蓝牙模块,PAN1740制造商是否已经设置了一些Header字段?例如,我的设备上的XTAL16MHz修剪值的值是0x5BD(1469),但是在SPS项目代码的arch_system.h文件中定义的默认值是0x516(1302)。

我假设,当下载代码直接到RAM,然后默认硬编码的值是使用的,而不是那些从OTP头,所以事实,代码运行ok从RAM但不是从OTP,这可能意味着一些其他的OTP头的值的问题?

我最大的问题是,我的项目目前处于原型阶段,所以我只有4个单元可用。到目前为止,我已经编写了3个单元的OTP内存,所有这些都不运行代码,所以现在我只有1个板去尝试,所以我必须得到那一个正确的。

您是否可以用我的十六进制文件进行测试,以至少确认这不是错误?我已经附加了十六进制文件,预计你将能够这样做。

MT_dialog
离线
最后看到:3个月1周前
工作人员
加入:2015-06-08 34
你好理查德,

你好理查德,

应用程序标志是从OTP引导的唯一应该设置的东西,OTP DMA不是强制性的,因为这主要与深度睡眠模式有关。重映射标志应该保持默认值(总是在SRAM和OTP)。关于OTP字段和相应的字段,您将能够在智能片段帮助文档中找到信息(打开智能片段到帮助菜单,并打开用户指南),在用户指南下的“OTP Header Actions”段落。是的,一些报头字段将从松下烧毁,如唯一ID字段和XTAL设置。关于你提到的晶体值SDK将使用默认的装饰价值如果CFG_USE_DEFAULT_XTAL16M_TRIM_VALUE_IF_NOT_CALIBRATED定义如果不是它将使用OTP头的值,这是做从引导装载程序,而不是从SDK。我已经直接从SRAM运行了你的例子,我能够看到设备在发布时,fw烧毁在OTP以及。

由于MT_dialog

vrabo
离线
最后看到:3年6小时前
加入:2016-11-04 19:19
你好!

你好!
为什么重新映射标志不是OTP?

MT_dialog
离线
最后看到:3个月1周前
工作人员
加入:2015-06-08 34
嗨vrabo,

嗨vrabo,

你什么意思?在OTP拷贝完成后,你应该重新映射你的0到syram,以便开始运行你刚刚镜像的代码。

由于MT_dialog