亲爱的支持团队,
我想写点东西到OTP。
我用“otp_write_words”写OTP的函数。
我写一些数据到我的代码的地址0 x7f8fdf0以下步骤…
1。写0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x01
2。读地址,0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x01 = = >正确的
3所示。写0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x02
4所示。读地址,0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x03 = = >正确的,因为(0 x01 | 0 x02) = 0 x03
然而,我发现,有时是奇怪。
我写数据到OTP,但在阅读之后,它成为0 x00。我写一些字节0 x00,但它成为0 x80。
1。写0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x11
2。读地址,0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0 x11 = = >正确的
3所示。写0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 0将0 x00
4所示。读地址,0 x00 0 x00 0 x00 0 x00 0 x00 0 x80 0将0 x00 = = >不正确,应该将0 x11和一个字节0 x80 ? ?
为什么?我也不知道。
轮后阅读和写作,我从OTP不能读任何东西。
我跟踪代码时,我发现它被困在“ASSERT_WARNING_OTPC_MODE (HW_OTPC_MODE_STBY);”“hw_otpc_manual_read_on”功能。
我怎么能恢复吗?
顺便说一下,我使用生产线工具写一些数据,如“XTAL16M振荡器削减值”。
我应该写一些代码来读它,设置值吗?
非常感谢。
嗨stanley_yeh,
你确定这就是最终的代码在你断言描述吗?如果你已经阅读和写作在同一地址的设备我希望设备最终Hardfault而不是在任何类型的断言。被设计成提供的OTP只写一次,不是在写,机制,提供了一个错误的检测和双错误位,将导致hardfault它也提供了一种机制,可以正确的OTP 8字。所以综上所述,你有8额外的单词最大空闲,你可以纠正OTP的入口,在那之后你不能。如果在输入有错误,他们发现OTP的逻辑和系统最终在困难的错,错误以来OTP阅读,在AHB总线上生成一个错误。
由于MT_dialog
嗨MT_Dialog,
谢谢你的回应。
我相信最终的代码的断言。
如果我注释掉断言,它最终会在阅读OTP(例如memcpy (&dev_bdaddr、(uint8_t *) OTP_HDR_BDADDR_BACKUP_ADDR sizeof (dev_bdaddr)),)
对不起,最后一个问题,如果我用产品线工具写一些数据,如“XTAL16M振荡器削减值”。
我应该写一些代码来读它,设置值吗?我找不到任何函数读取我的SDK的价值。
非常感谢。
嗨stanley_yeh,
我已经试图复制你正在经历什么,按照你的指示我无法迫使设备被困在这一点上,断言是因为OTP不是发生在待机模式执行设备的阅读时,你可以通过内存窗的值是多少的OTPC_MODE_MODE OTPC_MODE_REG和原因,或许是由于前一个命令。通常在hw_otpc_manual_read_on()执行hw_otpc_init HW_OTPC_MODE_STBY()函数设置设备。
我不明白第二个问题,推动测试工具支持一些命令,包括晶体的修剪命令(读、写、测试等),水晶的修剪应在生产过程中完成的,因此您应该能够使用prod_test的命令。exe通过批处理文件来找到并把削减晶体有使用价值。
由于MT_dialog
嗨MT_dialog,
嗯,我甚至不能读取数据OTP我使用smartsnippets。也许我做错了什么事。
我已经改变到另一个董事会和它工作好。我将观察这个问题,谢谢。
我很抱歉没有明确我的观点。
我的问题是,如果我使用PLT(生产线工具,不刺激测试工具,因为我知道,它们是不同的,对吧?)做一些校正,结果将是写在OTP头,对吗?
使用PLT后,在设备启动时,引导装载程序在FLASH ROM代码从SRAM和应用程序启动,从OTP函数将读取数据并使用校准的价值?
在SDK,我只是找到“read_otp_header()函数将读OTP,只是读bd地址,智商值和低功率时钟源。
函数将读到其他数据,如修剪XTAL16M价值吗?
非常感谢。
嗨stanley_yeh,
生产线工具是用于大规模生产,prod_test工具使用的弗兰克-威廉姆斯GU(黄金单位)和是的functionallity校准和燃烧修剪或OTP的水晶头字段值。当设备准备好了(在你的情况中校准值计算并应用于OTP和弗兰克-威廉姆斯在flash)和靴子,校准值最初应用于晶体修剪登记,这种functionallity通过罗橄榄球员在启动执行,而不是通过SDK如果这就是你正在寻找的。
由于MT_dialog
非常感谢。:)