| | |
| | | #include <string.h> |
| | | #define FLASH_IAP_CTRL_MAP (uint32_t)0x0402E000 //the control map start address, 63K MK8000修改 |
| | | #define FLASH_Authorization_MAP (uint32_t)0x0402f000 //授权标签列表起始地址 |
| | | |
| | | uint32_t tag_id_authorization_list[1024]; |
| | | #define AUTHORIZATION_NUM 1024 |
| | | uint32_t tag_id_authorization_list[AUTHORIZATION_NUM]; |
| | | uint32_t tag_id_authorization_list_num; |
| | | uint16_t g_com_map[COM_MAP_SIZE]; |
| | | uint8_t parameter_check(void) |
| | | { |
| | |
| | | result=flash_open(FLASH_ID0,NULL); |
| | | //MK8000没有对应函数 |
| | | if(!result) { |
| | | flash_erase(FLASH_ID0,FLASH_Authorization_MAP,FLASH_SECTOR_SIZE); |
| | | flash_write_nbytes(FLASH_ID0, FLASH_Authorization_MAP, (const uint8_t*)g_com_map, sizeof(g_com_map)); |
| | | } |
| | | //flash_close(FLASH_ID0); |
| | | __enable_irq(); |
| | | return result; |
| | | } |
| | | uint32_t save_taglist_map_to_flash(void) |
| | | { |
| | | uint32_t result = 0; |
| | | if(parameter_check()) //参数错误,不保存 |
| | | { |
| | | return 1; |
| | | } |
| | | __disable_irq(); |
| | | //result = FLASH_Prepare(FLASH_IAP_CTRL_MAP, (COM_MAP_SIZE<<1));MK8000修改 |
| | | result=flash_open(FLASH_ID0,NULL); |
| | | //MK8000没有对应函数 |
| | | if(!result) { |
| | | flash_erase(FLASH_ID0,FLASH_IAP_CTRL_MAP,FLASH_SECTOR_SIZE); |
| | | flash_write_nbytes(FLASH_ID0, FLASH_IAP_CTRL_MAP, (const uint8_t*)g_com_map, sizeof(g_com_map)); |
| | | flash_write_nbytes(FLASH_ID0, FLASH_IAP_CTRL_MAP, (const uint8_t*)tag_id_authorization_list, sizeof(tag_id_authorization_list)); |
| | | //result = FLASH_Write(FLASH_IAP_CTRL_MAP, (const uint8_t*)g_com_map, (COM_MAP_SIZE<<1)); |
| | | } |
| | | //flash_close(FLASH_ID0); |
| | | __enable_irq(); |
| | | return result; |
| | | } |
| | | |
| | | void parameter_init(void)//注意看前面有没有关闭flash如果有则打开flash在读取,否则会出错 |
| | | { flash_open(FLASH_ID0,NULL); |
| | | //FLASH_Read(FLASH_IAP_CTRL_MAP, (uint8_t*)&g_com_map, (COM_MAP_SIZE<<1));MK8000修改 |
| | |
| | | |
| | | } |
| | | |
| | | uint32_t check_tag_id_authorization_list_num(void) |
| | | { |
| | | uint32_t count = 0; |
| | | |
| | | for (uint32_t i = 0; i < AUTHORIZATION_NUM; i++) { |
| | | if (tag_id_authorization_list[i] != 0) { |
| | | count++; |
| | | } |
| | | } |
| | | |
| | | return count; |
| | | } |
| | | void parameter_init_anchor(void) |
| | | { |
| | | flash_open(FLASH_ID0,NULL); |
| | |
| | | } |
| | | //新增上电获取授权标签列表 |
| | | flash_read(FLASH_ID0, FLASH_Authorization_MAP, (uint8_t*)&tag_id_authorization_list, sizeof(tag_id_authorization_list));//从flash中拿出来授权表 |
| | | tag_id_authorization_list_num=check_tag_id_authorization_list_num();//获取实际有效长度减少轮训开销 |
| | | } |