otp_test.lua 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. --[[
  2. @module otp_test
  3. @summary otp_test测试功能模块
  4. @version 1.0
  5. @date 2025.11.21
  6. @author 马亚丹
  7. @usage
  8. 本demo演示的功能为:使用Air8000核心板演示otp核心库API的用法,演示写入,读取,擦除otp数据等操作。
  9. 运行核心逻辑:
  10. 1.读取指定 OTP 区域的数据
  11. 2.进入飞行模式,擦除指定的 OTP 区域的数据
  12. 3.擦除完成后向该区域写入数据
  13. 4.谨慎操作区域加锁(区域加锁后会永久变成只读无法写入)
  14. 5.退出飞行模式
  15. Air8000系列otp区域取值是1/2/3;
  16. 写入 / 读取的长度需与 OTP 块大小对齐,按 4 字节对齐。
  17. ]]
  18. local function otp_test()
  19. log.info("========otp read start=========")
  20. local otpdata = otp.read(1, 0, 64)
  21. if otpdata then
  22. log.info("otp 读取结果", otpdata, type(otpdata))
  23. else
  24. log.info("otp 读取失败")
  25. end
  26. log.info("写数据前先进入飞行模式")
  27. local result = mobile.flymode(0, true)
  28. if result then
  29. log.info("现在是飞行模式",result)
  30. log.info("========otp erase start=========")
  31. local erase_ok = otp.erase(1)
  32. if erase_ok then
  33. log.info("OTP 擦除成功")
  34. else
  35. log.info("OTP 擦除失败")
  36. end
  37. local write_data = "1234"
  38. log.info("=========向otp区域1写入数据==========")
  39. local write_ok = otp.write(1, write_data, 0)
  40. if write_ok then
  41. log.info("OTP 写入成功", write_data)
  42. else
  43. log.info("OTP 写入失败")
  44. end
  45. end
  46. log.info("=========读取otp区域1数据==========")
  47. local otpdata_1 = otp.read(1, 0, 4)
  48. local otpdata_2 = otp.read(1, 0, 8)
  49. if otpdata_1 then
  50. log.info("读取4字节数据", otpdata_1, type(otpdata_1))
  51. else
  52. log.info("===========otp区域1读取失败=========")
  53. end
  54. if otpdata_2 then
  55. log.info("读取8字节数据", otpdata_2, type(otpdata_2))
  56. else
  57. log.info("===========otp区域1读取失败=========")
  58. end
  59. --=====锁定 OTP 区域,特别注意!!! 一定要在飞行模式下操作锁定!!!=============
  60. --=====OTP一旦加锁即无法解锁,OTP 会变成只读!!!
  61. -- local lock_ok = otp.lock(1)
  62. -- if lock_ok then
  63. -- log.info("OTP 锁定成功")
  64. -- end
  65. --===========================================================================
  66. --退出飞行模式
  67. local result2 = mobile.flymode(0, false)
  68. if not result2 then
  69. log.info("退出飞行模式", result2)
  70. end
  71. end
  72. sys.taskInit(otp_test)