luat_otp_air101.c 826 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include "luat_base.h"
  2. #include "luat_otp.h"
  3. #include "wm_include.h"
  4. #include "wm_internal_flash.h"
  5. int luat_otp_read(int zone, char* buff, size_t offset, size_t len) {
  6. if (zone < 0 || zone > 2)
  7. return -1;
  8. int addr = (zone + 1) * 0x1000 + offset;
  9. if (tls_fls_otp_read(addr, (u8*)buff, len) == TLS_FLS_STATUS_OK) {
  10. return len;
  11. }
  12. return -1;
  13. }
  14. int luat_otp_write(int zone, char* buff, size_t offset, size_t len) {
  15. if (zone < 0 || zone > 2)
  16. return -1;
  17. int addr = (zone + 1) * 0x1000 + offset;
  18. if (tls_fls_otp_write(addr, (u8*)buff, len) == TLS_FLS_STATUS_OK) {
  19. return 0;
  20. }
  21. return -1;
  22. }
  23. int luat_otp_erase(int zone, size_t offset, size_t len) {
  24. return 0; // 无需主动擦除
  25. }
  26. int luat_otp_lock(int zone) {
  27. tls_fls_otp_lock();
  28. return 0;
  29. }