大家好,
有人能帮我编程DA1458x质量设备吗?我的一些设备处于生产状态。
我对把大量BDA分配给设备有一个疑问,
在我的项目中,我使用BDA作为一个参数,使用它我正在执行一些控制操作。所以在批量生产的时候会影响我的项目。
意味着,例如param_data[23]==nvds_data_ptr->nvds_TAG_BD_ADDRESS[2],在这里,我使用了BDA的一个字节进行操作。因此,在大规模生产时间内,关于DA14580和DA14583BDA的所有需要考虑的问题。
感谢和问候
罗希特R
设备:
嗨,罗希特,
批量生产请检查生产线工具(PLT)。最多可连接16个设备。
//www.wsdof.com/雷电竞官网登录products/production-line-tool
你在生产中使用这个工具吗?
谢谢,PM_Dialog
你好,下午对话,
好的,谢谢你的回复。
是的,我将使用这个工具进行生产。
那我对汇业银行的怀疑呢。对代码有影响吗?它能在不改变代码的情况下工作吗?
感谢和问候
罗希特R
嗨,罗希特,
请检查以下文件中的7.2.4 BD地址。
//www.wsdof.com/sites/default/files/um-b-041_da1458x_da1468x_production_line_tool_4v2.pdf
你能澄清一下你想用BD地址完成什么吗?你们在生产中有什么要求?
谢谢,PM_Dialog
你好,下午对话,
谢谢你的反馈,
我设计了两个产品。产品A和B,使用产品B我们控制产品A。因此,为了控制和识别我使用的设备BDA的设备使用nvds_data_ptr->NVDS_TAG_BD_ADDRESS[2]结构。我使用的6字节的BDA,我保持前三个字节的共同和其他3字节保持变化的设备的数量。
所以我的问题是,如果在生产过程中分配BDA到设备后,它会影响我的代码吗?如果是,那么在分配BDA期间需要注意哪些事情,以使我的代码能够以最小的更改工作。
我还想知道使用OTP方法和flash编程设备的效果如何?
感谢和问候
罗希特R
嗨,罗希特,
当使用PLT时,BD地址将被编程到OTP头中。之后,设备将获得OTP头的BD地址,因此NVDS或应用程序代码中的任何其他BD地址都将被忽略。在生产过程中,代码不会受到影响,但如前所述,PLT将使用适当的B写入OTP头D地址。关于你的最后一个问题,你能澄清一下吗?请注意,OTP代表一次可编程,因此不能多次写入。
谢谢,PM_Dialog
你好,下午对话,
当使用PLT时,BD地址将被编程到OTP头中。在那之后,
设备将获得OTP头的BD地址,因此NVDS中的任何其他BD地址
或者在应用程序代码中将被忽略" -因此,如果我在生产中使用OTP,那么BDA的NVDS结构将被忽略
如果我想按照我的操作需要使用BDA,那么我必须将OTP BDA映射到我的逻辑正确吗?
如果是,能否分享一下如何映射OTP BDA?意思是如果有一个例子,有人使用这个方法。
如果我使用Flash进行制作,会产生什么效果?请向我解释你是如何澄清OTP这一点的。
因为对于某些产品,我可能会使用DA14580 MCU,所以据我所知,OTP是必要的
,对于某些产品,我使用DA14583,所以这里我将使用flash。所以,请让我知道什么是BDA效果超过使用闪光灯。
“在生产过程中,代码不会受到影响,
但正如之前提到的,PLT将写OTP头与适当的BD地址”
-好的,但是如果OTP头用于BDA,那么我的NVDS结构将不起作用,我需要更改代码以防BDA访问和操作。
感谢和问候
罗希特R
嗨,罗希特,
如果您计划在生产中使用PLT,并且如果您想通过PLT刻录BD地址,BD地址将存储在OTP头的相应字段中。该字段也可以在没有PLT的情况下刻录,因此如果您有大量的板,您可以进行一些测试。您可以使用SmartSnippets工具箱进行读取并写入OTP头。
>>>如果我使用Flash进行制作,会产生什么效果?
如果BD地址被编程到OTP报头?那么,如果我理解正确,您在设计中使用的是DA14580和DA14583,您想通过PLT(假设使用不同的fw)对两者进行编程吗?那么BD地址呢?
谢谢,PM_Dialog
你好,下午对话,
谢谢你的反馈,
>>>如果我使用Flash进行制作,会产生什么效果-意味着,对于一些产品,我正在使用DA14583 MCU,那里我有flash选项,所以使用PLT和写BDA通过它,然后将BDA写入OTP头只或它将写入NVDS结构(NVDS_TAG_BD_ADDRESS)。
因为,在开发阶段,我们使用了DA14583,在这里,我通过NVDS访问了BDA,并使用SmartSnippet将.hex文件烧录到设备中并进行了测试。
那么,当我使用PLT时,对DA1583有什么影响?
>>>如果BD地址编程到OTP报头?因此,如果我理解正确,您在设计中使用的是DA14580和DA14583,您是否希望通过PLT对两者进行编程(假设使用不同的fw)?那么BD地址呢-是的,我同时使用DA14580和DA14583,因为很少有产品是为DA14580设计的,也很少有产品是为DA14583 MCU设计的。是的,不同的固件。
因此,我想知道如何从OTP头访问BDA,以及我需要在代码中更改什么来访问相同的BDA,以代替NVDS_标记_BD_地址?(例如-param_data[23]==NVDS_数据_ptr->NVDS_标记_BD_地址[2])
而且,如果我使用DA14583并使用PLT烧录代码并写入BDA,BDA会更新到NVDS_TAG_BD_地址或OTP头吗?
感谢和问候
罗希特R
嗨,罗希特,
在所有情况下,如果您使用PLT刻录BDA,则它将存储在OTP标头中。然后,DA1458x将从OTH报头开始使用BDA进行广告。请检查来自otp()的nvds读取地址。你的意思是在OTP黑匣子里烧掉BDA,然后从你那里读下去吗?
谢谢,PM_Dialog
你好,下午对话,
好的,谢谢你的反馈。
检查nvds_read_bdaddr_from_otp ()好的,我会检查函数。
你的意思是在OTP Hader上烧了BDA然后从你的FW上读出来吗?-是的,我想访问固件并编写与使用NVDS结构相同的逻辑。
请让我知道一步一步的程序或任何例子做同样的。
感谢和问候
罗希特R
嗨,罗希特,
如果在OTP头中写入设备BD Address, CFG_NVDS_TAG_BD_ADDRESS值将被忽略。如果检查system_init()函数,那么您将看到SDK检查并读取BD地址—nvds_read_bdaddr()。如果你检查上述的功能,你会看到:
如果是DA14583,SDK首先检查并从DA14583的内部SPI闪存读取BD地址-nvds_read_bdaddr_from_DA14583_flash()。。如果在闪存中找不到BD地址,则尝试从OTP读取BD地址-nvds\u read\u bdaddr\u from\u OTP()。
对于DA14580,由于它不包含嵌入式SPI闪存,SDK只检查OTP头-nvds_read_bdaddr_from_OTP()。
如果你读nvds_read_bdaddr_from_otp()的源代码,你会看到如何从OTP头读取BD地址,它从0x7fd4地址(BDADDR_OFFSET)开始。
谢谢,PM_Dialog
你好,下午对话,
非常感谢您的回复,
好的,我刚刚从_otp()中浏览了nvds _read _bdaddr _的源代码,如果没有错的话,我只需要在自定义代码中的任何地方调用这个函数,并映射这个“otp _bdaddr”结构而不是“nvds”结构。
如果我错了,请纠正我,并且在生产过程中,当我们使用PLT时,所有DA1458x MCU(无论是DA14580还是DA14583)的程序都是相同的?
感谢和问候
罗希特R
嗨,罗希特,
otp_bdaddr在dev_bdaddr中被mem- copy。
memcpy(&dev_bdaddr,otp_bdaddr,sizeof(dev_bdaddr));
如果你在SDK中稍微搜索一下,你会发现:
///设备BD地址
结构bd_addr dev_bdaddr_uu属性uuuuu((节(“保留内存区域0”),zero_init));
otp_bdaddr已经被SDK检索到。所以,这取决于你——你可以使用这个函数或者基于nvds_read_bdaddr_from_otp()实现你自己的函数,你需要做的就是从OTP读取正确的地址。
谢谢,PM_Dialog
你好,下午对话,
好的,非常感谢你的回复。
我会仔细考虑所有问题,然后再给你回复。
感谢和问候
罗希特R
嗨PM_Dialog
我按照以下步骤构建OTP固件
1)在da1458x_config_advanced.h文件中定义- #define CFG_BOOT_FROM_OTP
2)在user_peripheral文件extern - extern struct bd_addr *dev_bdaddr;(/// Device BD address from nvds.c file struct bd_addr dev_bdaddr __attribute__((section("retention_mem_area0"), zero_init))))
3) 在user_外围文件中-使用dev_bdaddr->addr[5];访问地址并在广告变量中分配
4) 没有错误地构建代码
通过以上4个步骤,我尝试从OTP访问BDA,但我不确定它是否正确,我已经按照我的理解尝试了。
你能告诉我这是否正确吗?因为我确实想在定制板上尝试,除非我100%正确。
如果有任何其他步骤或任何其他东西,需要启用的生产角度在固件,然后让我知道DA14580和DA14583 MCU。
感谢和问候
罗希特R
嗨,罗希特,
对不起,但是我有点困惑,所以你能指出你想要完成什么吗?您是使用固件刻录OTP,还是使用特定的BDA刻录OTP头?只需尝试从SmartSnippets工具箱连接到OTP头并刻录BDA即可。
但我还是不能完全确定我是否理解你的要求。如果我理解正确,您有两种不同的产品。第一个基于DA14580,第二个基于DA14583。雷电竞官网登录
你想要使用PLT和烧的OTP头与特定的BDA。出于测试目的,您可以使用SST来刻录BD地址。你烧了OTP头了吗?
谢谢,PM_Dialog
你好,下午对话,
没有,我什么都没试过。我现在有有限的设备,所以我没有烧录固件到任何设备。我正在准备最终的固件。
意思是,我的问题是从OTP访问BDA的步骤是正确的还是错误的?如果步骤是正确的,那么我是否也需要在DA14583固件中进行更改,还是只对DA14580进行更改?
“不过,我还是不能完全确定我是否理解了您的要求。如果我没理解错的话你有两种不同的产品。雷电竞官网登录第一款基于DA14580,第二款基于DA14583。-是的,我有2个不同MCU的产雷电竞官网登录品,一个是DA14580,另一个是DA14583。我将使用PLT进行大规模生产。所以我问了我需要启用或禁用的所有东西在固件生产?这意味着DA14580和DA14583在生产过程中所必需的内容。
感谢和问候
罗希特R
嗨,罗希特,
对耽搁表示歉意。将dev_bdaddr外部化可能是一种可行的方法。设备在启动期间,在nvds_read_bdaddr()函数中获取bd地址(设备从中进行检查,可以从nvds结构或OTP中获取bd地址),并将获取的值放入保存设备地址的dev_bdaddr变量中。
你能解释一下第三步吗?
>>>在user_外围文件中-使用dev_bdaddr->addr[5];访问地址并在广告变量中分配
您的意思是要在广告字符串中添加bd地址吗?
正如我已经提到的,您应该在OTP头中烧录BD地址。请使用Smart Snippets工具箱读取并刻录OTP标头。您不需要将整个应用程序映像刻录到OTP中并从那里引导
谢谢,PM_Dialog
你好,下午对话,
好的,谢谢你的反馈。
“>>>在用户的外围文件中-使用dev_bdaddr->addr[5];访问地址并在广告变量中分配
您的意思是要在广告字符串中添加bd地址吗?”-是的,正确。我正在广告字符串中使用bd地址。
正如我已经提到的,你应该在OTP头刻录BD地址。请使用智能代码片段工具箱读取和刻录OTP标头。你将不需要烧整个应用程序映像到OTP和引导从那里" -好的,意思是如果我烧了OTP头并检查设备广告,那么我将能够读取地址仪式?您能告诉我做这件事的步骤吗?这样可以帮助我理解,这样我就不会犯任何错误,因为我现在的设备很少,其他设备都在生产过程中。
谢谢和问候
罗希特R
你好,下午对话,
关于上一篇文章有什么更新吗?
感谢和问候
罗希特R
嗨,罗希特,
抱歉,我可能错过了你的最后一条评论。您的意思是您应该遵循的步骤,以便通过智能代码片段工具箱刻录OTP头文件中的BDA ?
如果是,您可以使用CLI在OTP头中刻录BD地址。CLI可在\5.0.4\binaries\host\windows\prod\u test\u cmds SDK路径下找到。以下命令将BD地址写入OTP:
prodtest-potp wr\U bdaddr
例如:prodtest -p 14 otp wr_bdaddr 44:49:41:4c:4f:47
另一个选项可能是使用SmartSnippets工具箱来刻录OTP头中的BD地址。一般来说,通过SST烧OTP,你应该OTP程序员。请记住,建议使用该工具的最新版本。
OTP有3个用户可以刻录数据的区域:
燃烧OTP时,应确保编程电压干净且不得超过6.8V。有关编程电压的更多详细信息,请参阅数据表。请记住,OTP代表一次性可编程,因此您不能多次擦除和重新写入OTP,但只能翻转仍设置为0的位并将其转换为1。
在您的情况下,打开SST并连接到OTP头。一旦连接成功,您将在OTP Header中看到所有可用字段。PLT将BD地址存储在“设备唯一ID”字段中的以下地址中。
因此,如果您想测试它,应该在“设备唯一ID”字段中烧录BD地址。请注意,字的最高有效(最左边)字节存储在最小地址(大端)中。例如,如果用户为字段“设备唯一ID”键入0A0B0C0D,0x0A将写入0x47FD4,0x0D将写入0x47FD7。
谢谢,PM_Dialog