嗨,大家好,
当使用子板DA14585-01ATDB-P-P 1718_00182时,我们最近遇到了一个奇怪的问题,因为它崩溃了,尝试从SDK 6.0.4.326(目前是我们知识最新的最新的BLE应用程序时,它崩溃了。但是,电路板从旧的SDK 6.0.2.243运行相同的应用程序,没亚博国际官网平台网址有问题。
然后我们根据同一包装中的相同DA14585设计并制造了一些自己的电路板(Digikey Part Num 1564-1047-1-ND)。通过JTAG连接到DA14580DEVKIT之后,它已成功识别为DA14585。However, our boards are failing to run BLE applications from the older SDK 6.0.2.243 yet they don’t immediately crash with applications from the latest SDK 6.0.4.326 (BLE apps with sleep enabled crash a few seconds later but it is a topic for a different discussion).
搜索崩溃原因我们发现硬故障是由以下代码行引起的,由以下代码行引起:
//强制性的HCI根表设置
memcpy(hci_cmd_desc_root_tab,rom_hci_cmd_desc_root_tab,48);
......这给出了一个印象,即在同一包装中的相同类型的两个IC的IC具有不同的ROM的修订,其中BLE堆栈实际上存在。此外,每个ROM修订都需要适当的SDK,并且任何地方都没有实际检查,这将有助于检测ROM修订版和SDK之间的差异。
你能否证实我们对问题的理解是正确的,如果是的话,如何解决它?特别是,在批量生产方面,如何处理它,知道有同一包中具有相同标签的IC,但仍包含不同的ROM版本。有没有办法检索ROM版本?以及为什么只有多个版本的SDK与特定的ROM版本兼容,为什么那些复杂性没有被一个通用SDK隐藏?
谢谢,
德米特里
嗨Dmitryp,
是的,您的理解是正确的,目前市场上有两次修订的585 SoC(通常应该有一个,最新,但显然有来自以前的SOC修订的剩菜)。因此,最新的芯片修订版是与SDK 6.0.4一起运行的AC,也是您的子板被装备的AB修订版仅使用SDK 6.0.2运行。如果您尝试在AB上或AC硅上运行不同的SDK,这将导致硬盘重新执行。因此,如上所述,最新版本是交流市场,将在市场上突出,并将与所有当前(SDK 6.0.2除外)和未来的SDK一起运行。
谢谢mt_dialog.
谢谢你的提示回复。但是,两个问题仍然存在,请问你能回答吗?
1.如何识别IC是否是Revision AB或AC立即?
2.未来如何解决问题?我们周围的世界并不静态,不可避免地,迟早会有修订广告等等。如果没有办法区分它们,如何处理这种品种?
谢谢,
德米特里
嗨Dmitryp,
谢谢mt_dialog.
嗨,大家好,
正好正确,部件号是相同的,这是导致我们悲伤的原因。我们不得不看看显微镜读取这个数字,甚至那么它几乎看不见。毕竟,当涉及到制造过程的自动化时,视觉识别是一个极其不方便的事情。在组装PCBAS之前,可以使用固件闪烁,应该有更好的识别方式,优于通过显微镜的目视检查。至于释放585新修订的计划,它在理想的世界中才真实。在现实生活中,ROM的内容是代表软件(或相当固件)的二进制blob。每一块软件总是包含错误,只会发现其中一些的错误。没有人计划错误,他们刚刚发现事故或更彻底的测试。因此,新版本的ROM将被释放,这只是时间问题,然后我们将再次出现同样的问题。
通过电子方式阅读它是否有更好的方法来识别ROM修订?这是怎么样,通过阅读以下SOC寄存器:
- chip_id1_reg,chip_id2_reg,chip_id2_reg('芯片识别寄存器')相应地包含0x35,0x38和0x35(从ASCII代码转换为585),
- chip_revision_reg('芯片修订寄存器')包含0x41,转换为'a',
- CHIP_SWC_REG('软件兼容性寄存器')包含旧芯片的“0”,最近的“1”,看起来它是ROM修订,“B”和“C”。
寄存器可读取到用户应用程序,并且可以通过JLINK(SEGGER)命令行界面发送命令来读取JTAG,这两种方式都已经过测试并确认。
我们的解释是否正确?
谢谢,
德米特里
嗨dmitry,
正如我已经提到的那样,我几乎不认为将有一个未来的SoC版本,以便修复错误(通过新的SDK版本和补丁处理ROM代码中的错误,而不是通过SOC的更新版本处理)。一种有效的方式,讲述SOC的SOC的硅版本应该读取的地址0x5000320A,高字节始终为0x20,低字节保持较小版本0x01对应于B,0x02对应于C版本。
谢谢mt_dialog.