| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #include "app/nv_storage.h"
- #include "bsp/bsp_driver.h"
- #include "libs/crc16.h"
- #include "libs/logger.h"
- #include "foc/motor/motor_param.h"
- #include "foc/foc_config.h"
- #define mc_config_idx_0 (sn_page_index + 1)
- #define mc_config_idx_1 (mc_config_idx_0 + 1)
- #define sn_idx_back (mc_config_idx_1 + 1)
- #define mc_runtime_red_idx (sn_idx_back + 1)
- #define mc_crit_err_idx (mc_runtime_red_idx + 1)
- void nv_write_crit_errblock(u8 *data, int len) {
- fmc_write_data(mc_crit_err_idx, data, len);
- }
- void nv_read_crit_errblock(u8 *data, int len) {
- fmc_read_data(mc_crit_err_idx, data, len);
- }
- void nv_write_runtime_block(u8 *data, int len) {
- fmc_write_data(mc_runtime_red_idx, data, len);
- }
- void nv_read_runtime_block(u8 *data, int len) {
- fmc_read_data(mc_runtime_red_idx, data, len);
- }
- void nv_write_config_block(u8 idx, u8 *data, int len) {
- fmc_write_data(idx==0?mc_config_idx_0:mc_config_idx_1, data, len);
- }
- void nv_read_config_block(u8 idx, u8 *data, int len) {
- fmc_read_data(idx==0?mc_config_idx_0:mc_config_idx_1, data, len);
- }
- int nv_write_sn(u8 *data, int len) {
- mc_sn_t sn;
- memset(&sn, 0, sizeof(sn));
- len = min(32, len);
- memcpy(sn.sn, data, len);
- sn.len = len;
- sn.crc = crc16_get(data, len);
- fmc_write_data(sn_page_index, (u8 *)&sn, sizeof(sn));
- fmc_write_data(sn_idx_back, (u8 *)&sn, sizeof(sn));
- return len;
- }
- int nv_read_sn(u8 *data, int len) {
- mc_sn_t *sn;
- memset(&sn, 0, sizeof(sn));
- len = min(ARRAY_SIZE(sn->sn), len);
-
- sn = (mc_sn_t *)fmc_get_addr(sn_page_index);
- u16 crc16 = crc16_get(sn->sn, min(32, sn->len));
- if (crc16 == sn->crc) {
- memcpy(data, sn->sn, len);
- return len;
- }
- sn = (mc_sn_t *)fmc_get_addr(sn_idx_back);
- crc16 = crc16_get(sn->sn, min(32, sn->len));
- if (crc16 == sn->crc) {
- memcpy(data, sn->sn, len);
- return len;
- }
- return 0;
- }
- void nv_storage_init(void) {
- }
|