Hi All,
Can anyone help me with how to program the DA1458x mass devices? I am in the production state of my few devices.
我对用于设备的分配大众BDA有一个疑问,
在我的项目中,我使用BDA作为一个参数之一,使用我正在执行一些控制操作。所以在批量生产时间内会影响我的项目。
means, for example param_data[23] == nvds_data_ptr->NVDS_TAG_BD_ADDRESS[2] Here, I have used one byte of the BDA for my operation. So in mass production time what all need to consider regarding BDA with respect to DA14580 and DA14583.
感谢致敬
Rohit R.
Device:
Hi Rohit,
对于大规模生产,请检查生产线工具(PLT)。最多16个设备可以连接..
https://www.dialog-seminile.com/produ雷电竞官网登录cts/production-line-tool.
Are you using this tool for the production?
谢谢,PM_DIALOG.
嗨PM_DIALOG.,
好的,谢谢你的回复。
是的,我将使用此工具进行生产。
关于BDA的怀疑呢。代码是否有任何影响?如果代码的任何更改,它会工作吗?
感谢致敬
Rohit R.
Hi Rohit,
请从以下文档中查看7.2.4 BD地址。
https://www.dialog-seminile.com/sites/default/files/um-b-041_da1458x_da1468x_production_line_tool_4v2.pdf.
Could you please clarify what you would like to accomplish with BD address? What is your requirement in production?
谢谢,PM_DIALOG.
嗨PM_DIALOG.,
Thank you for the feedback,
好的,所以我设计了2个产品。产品A和B使用产品B我们正在控制产品A.因此,用于使用NVDS_DATA_PTR-> NVDS_TAG_BD_ADDRESS [2]结构来控制和识别哪些设备使用设备的BDA。我使用了6个字节的BDA,我保持前三个字节常见,另外3个字节作为设备的数量保持不变。
所以我的问题是,如果在将BDA分配给设备后的生产过程中会影响我的代码?如果是,那么在BDA分配期间要照顾的所有事情,以便使用最小的更改,我的代码应该像它一样工作。
And I also like to know what is the effect of programming device using OTP method as well as flash?
感谢致敬
Rohit R.
Hi Rohit,
When the PLT is used, the BD address will be programmed into the OTP Header. After that, the device will get the BD address of the OTP Header, so any other BD address in the NVDS or in application code will be ignored. During production, the code will not be affected, but as mentioned before the PLT will write the OTP header with the appropriate BD address. Regarding your last question, could you please clarify it? Please note that the OTP stands for One-Time-Programmable, thus it cannot be written multiple times.
谢谢,PM_DIALOG.
嗨PM_DIALOG.,
“当使用PLT时,将编程到OTP标题中的BD地址。之后,
设备将获取OTP标题的BD地址,因此NVDS中的任何其他BD地址
或者在应用程序代码中将被忽略“ -因此,如果我正在使用OTP进行生产,那么BDA的NVDS结构将被忽略
and If I want to use BDA as it required for my operation then I have to map OTP BDA to my logic correct?
如果是,那么你能分享如何映射OTP BDA?意味着存在有人使用此方法的示例。
And What is the effect If I am using Flash for production? Please explain to me how you have cleared the point regarding OTP.
Because for some production, I may use DA14580 MCU so there OTP is necessary as per my knowledge
, and for some product, I am using DA14583 so here I am going to use flash. So please let me know what is BDA effect over using flash.
"During production, the code will not be affected,
但如前所述,PLT将使用适当的BD地址写入OTP标题“
-Okay, but if the OTP header is using for BDA then my NVDS structure will not effect I need to change my code in case of BDA access and operation.
感谢致敬
Rohit R.
Hi Rohit,
If you are planning to use the PLT for the production, and in case you want to burn the BD address through the PLT, the BD address will be stored in the appropriate field of the OTP Header. This field can but burnt without the PLT as well, so if you have plenty of boards you can do some tests. You can use the use the SmartSnippets Toolbox to read and write the OTP Header.
>>>And What is the effect If I am using Flash for production?
In case of the BD address is programmed to the OTP Header? So, if I understood correctly you are using a DA14580 and a DA14583 in your design, Do you want to program both through the PLT (assume with different fw) ? And what about the BD address?
谢谢,PM_DIALOG.
嗨PM_DIALOG.,
Thank you for the feedback,
>>>And What is the effect If I am using Flash for production? -意味着,对于某些产品,我使用DA14583 MCU,我有闪存选项,所以使用PLT并通过它写BDA,然后将BDA写入OTP标题或它将在NVDS结构中写入NVDS结构(NVDS_TAG_BD_ADDRESS)。
Because, in development phase we have used DA14583 and here I have accessed BDA through NVDS and using SmartSnippet I have just burned .hex file into device and tested.
So when I use PLT what is the effect on DA1583?
>>>In case of the BD address is programmed to the OTP Header? So, if I understood correctly you are using a DA14580 and a DA14583 in your design, Do you want to program both through the PLT (assume with different fw) ? And what about the BD address? -yes, I am using both DA14580 and DA14583 because few product are designed for DA14580 and few are for DA14583 MCU. Yes, Different firmware.
So, I want to know how to access BDA from the OTP header and what all i need to change in my code to access the same in place of NVDS_TAG_BD_ADDRESS?.(for example - param_data[23] == nvds_data_ptr->NVDS_TAG_BD_ADDRESS[2])
and also, if I use DA14583 and burn the code using PLT and write BDA, will that BDA update to NVDS_TAG_BD_ADDRESS or OTP header?
感谢致敬
Rohit R.
Hi Rohit,
In all cases, if you are using the PLT to burn the BDA, then it will be stored in the OTP Header. Then the DA1458x will start advertising with the BDA from the OTH Header. Please check nvds_read_bdaddr_from_otp(). Do you mean to burn the BDA in the OTP Hader and then read it from you FW?
谢谢,PM_DIALOG.
嗨PM_DIALOG.,
好的,谢谢你的反馈。
检查nvds_read_bdaddr_from_otp() -Okay, I will check the function.
你的意思是燃烧OTP Hader中的BDA,然后从你身上读出来吗?-Yes, I want to access the firmware and write same logic as I have done using the NVDS structure.
请通过步骤过程或任何示例,让我知道相同的例子。
感谢致敬
Rohit R.
Hi Rohit,
如果设备BD地址在OTP标题中写入,则忽略CFG_NVDS_TAG_BD_ADDRESS值。如果检查system_init()函数,则会看到SDK检查并读取BD地址 - NVDS_READ_BDADDR()。如果检查上述功能,您将看到:
In case if DA14583, the SDK first checks and reads BD address from DA14583's internal SPI flash - nvds_read_bdaddr_from_da14583_flash().. If no BD address is found in flash, then tries to read BD address from OTP - nvds_read_bdaddr_from_otp().
In case of DA14580, as it does not contain an embedded SPI Flash, the SDK checks only the OTP Header - nvds_read_bdaddr_from_otp().
如果读取NVDS_READ_BDADDR_FROM_OTP()的源代码,您将看到如何读取从0x7fd4地址(bdaddr_offset)启动的OTP标题的BD地址。
谢谢,PM_DIALOG.
嗨PM_DIALOG.,
Thank you so much for the response,
Okay, I have just gone through the source code of nvds_read_bdaddr_from_otp () and if I am not wrong, I just need to call this function wherever required in my custom code and map this "otp_bdaddr" structure instead of "NVDS" structure.
Correct me if I am wrong, and the procedure is the same for all DA1458x MCU's (whether it is DA14580 or DA14583) during production when we use PLT?
感谢致敬
Rohit R.
Hi Rohit,
在dev_bdaddr中会复制OTP_BDADDR。
memcpy(&dev_bdaddr, otp_bdaddr, sizeof(dev_bdaddr));
如果在SDK中搜索一点点,您将找到以下内容:
/// Device BD address
struct bd_addr dev_bdaddr __attribute__((section("retention_mem_area0"), zero_init));
SDK已检索OTP_BDADDR。因此,这取决于您 - 您可以使用此功能或实现基于NVDS_READ_BDADDR_FROM_OTP()的功能,您需要做的就是从OTP读取正确的地址。
谢谢,PM_DIALOG.
嗨PM_DIALOG.,
好的,非常感谢你的回应。
I will go through all the points and get back to you.
感谢致敬
Rohit R.
嗨PM_DIALOG.
I have followed the below steps to build OTP firmware
1)在da1458x_config_advanced.h文件中定义 - #define cfg_boot_from_otp
2)在User_Peripheral文件中,extern struct bd_addr * dev_bdaddr;(///从nvds.c文件struct bd_addr dev_bdaddr __attribute __((部分(“retent_mem_area0”),zero_init)))))
3) in user_peripheral file - using dev_bdaddr->addr[5]; accessed address and assigned in advertising variable
4) built the code without error
通过上面的4个步骤,我试图从OTP访问BDA,但我不确定是否正确,我根据我的理解尝试了。
Can you please let me know is this correct or not? Because I do want to try this on custom board unless I am 100% correct.
如果还有任何其他步骤或任何其他需要在固件中的生产视角启用的任何其他事情,那么请告诉我关于DA14580和DA14583 MCU。
感谢致敬
Rohit R.
Hi Rohit,
Sorry, bur I am little bit confused, so could you please indicate what you are trying to accomplish? Did you burn the OTP with your firmware, or did you burn the OTP Header with a specific BDA? Just try to connect to the OTP Header from the SmartSnippets Toolbox and burn your BDA.
Still I am not completely sure if I have understood your requirement. If I understood correctly you have 2 different products. The first one in based on DA14580 and the second on the DA14583.
您希望使用PLT并使用特定的BDA刻录OTP标头。出于测试目的,您可以使用SST才能刻录BD地址。你燃烧了OTP标题吗?
谢谢,PM_DIALOG.
嗨PM_DIALOG.,
不,我还没有尝试过任何尝试。我现在有有限的设备,所以我没有任何设备刻录固件。我只是准备最终固件。
手段,我的问题是从OTP访问BDA的这些步骤是正确的还是不正确?如果步骤正确,那么,我还需要在DA14583固件中更改,还是仅适用于DA14580?
“仍然,我并不完全确定我是否已经理解了你的要求。如果我正确地理解,你有2个不同的产品。第一个基于DA14580和DA14583上的第二个。雷电竞官网登录-是的,我有2个具有不同MCU雷电竞官网登录的产品,一个是使用DA14580,另一个是DA14583。我将使用PLT进行大规模生产。所以我询问了我需要在固件中的生产中启用或禁用的所有内容?这意味着DA14580需要什么以及生产过程中DA14583所需的内容。
感谢致敬
Rohit R.
Hi Rohit,
Apologies for the delay. Externign the dev_bdaddr could be a possible approach. The device obtains the bd address during start up, in the nvds_read_bdaddr() function (the device checks from the where the bd address can be obtained either NVDS structure or OTP) and places the obtained value in the dev_bdaddr variable that holds the address of the device.
你能澄清#3步吗?
>>>in user_peripheral file - using dev_bdaddr->addr[5]; accessed address and assigned in advertising variable
Do you mean that you want to add the bd address in the advertising string?
As I have already mentioned, you should burn the BD Address in the OTP Header. Please use the Smart Snippets toolbox in order to read and burn the OTP Header. You will not need to burn the whole application image into OTP and boot from there
谢谢,PM_DIALOG.
嗨PM_DIALOG.,
好的,谢谢你的反馈。
">>>in user_peripheral file - using dev_bdaddr->addr[5]; accessed address and assigned in advertising variable
Do you mean that you want to add the bd address in the advertising string?" -yes, correct. I am using a bd address in the advertising string.
“正如我已经提到的那样,您应该在OTP标题中刻录BD地址。请使用智能代码段工具箱才能读取和刻录OTP标头。您不需要将整个应用程序图像刻录到OTP并从那里启动“ -好的,意味着我只需刻录OTP标题并检查设备广告,那么我将能够读取地址仪式?您能否分享这样的步骤,它会帮助我理解,这样我不应该犯错误,因为我现在的设备很少,其他在生产过程中。
Thank and Regards
Rohit R.
嗨PM_DIALOG.,
Any update for me regarding the previous post?
感谢致敬
Rohit R.
Hi Rohit,
对不起,可能我错过了你最后的评论。您是否意味着您应该遵循的步骤,以便通过Smart Scippets Toolbox刻录OTP标头中的BDA?
If yes, you could use the CLI in order to burn the BD Address in the OTP Header. The CLI can be found under \5.0.4\binaries\host\windows\prod_test_cmds SDK path. The following command will write the BD Address into OTP:
prodtest - p < COM端口号> otp wr_bdaddr < BD广告dress>
示例:Prodtest -P 14 OTP WR_BDADDR 44:49:41:4C:4F:47
另一个选项可能是使用SmartSnippets Toolbox才能在OTP标题中刻录BD地址。通常,对于通过SST刻录OTP,您应该是OTP程序员。请记住,建议使用最新版本的工具。
The OTP has 3 areas where the user can burn data:
When burning the OTP, you should make sure that the programming voltage is clean and must not exceed 6.8V. Please refer to the datasheet to find more details for the programming voltage. Keep in mind that OTP stands for One Time Programmable, thus you can’t erase and re-write the OTP multiple times, but you can only flip the bits that are still set to 0 and turn them to 1.
在您的情况下,打开SST并连接到OTP标题。只要您已连接,您将看到OTP标题中的所有可用字段。PLT将在“设备唯一ID”字段中的以下地址中存储BD地址。
So, if you would like to test it, you should burn the BD address in the “Device unique ID” field. Please note that, the most significant (left-most) byte of a word is stored in the smallest address (big-endian). E.g. if a user types 0A0B0C0D for field ‘Device Unique ID’, 0x0A will be written at 0x47FD4 and 0x0D will be written at 0x47FD7.
谢谢,PM_DIALOG.