|
|
@@ -18,10 +18,6 @@ static uint32_t _sn_addr(void);
|
|
|
static uint32_t _data_addr(int index);
|
|
|
static uint32_t _maigc_addr(void);
|
|
|
|
|
|
-static uint32_t _nv_tbl_write_addr = 0;
|
|
|
-
|
|
|
-static u8 _nv_tbl_write_cache[4];
|
|
|
-static u8 _nv_tbl_write_remain;
|
|
|
|
|
|
void fmc_write_sn(uint8_t *sn, int len){
|
|
|
_fmc_erase_write_data(_sn_addr(), sn, len);
|
|
|
@@ -116,64 +112,6 @@ uint32_t fmc_get_addr(int page) {
|
|
|
return 0x08000000 + (_flash_capatity() - one_page_size * page);
|
|
|
}
|
|
|
|
|
|
-void fmc_erase_trq_table(int addr, int len){
|
|
|
- _fmc_erase_addr(addr, len);
|
|
|
- _nv_tbl_write_addr = 0;
|
|
|
-}
|
|
|
-void fmc_write_trq_table(int addr, uint8_t *data, int len){
|
|
|
- _fmc_write_data(addr + _nv_tbl_write_addr, data, len);
|
|
|
- _nv_tbl_write_addr += len;
|
|
|
-}
|
|
|
-
|
|
|
-void fmc_write_trq_table_begin(int addr)
|
|
|
-{
|
|
|
- _nv_tbl_write_addr = addr;
|
|
|
- _nv_tbl_write_remain = 0;
|
|
|
-}
|
|
|
-
|
|
|
-static void fmc_write_trq_table_flush(void)
|
|
|
-{
|
|
|
- u32 value = *(u32 *) _nv_tbl_write_cache;
|
|
|
-
|
|
|
- if ((_nv_tbl_write_addr % one_page_size) == 0) {
|
|
|
- _fmc_flag_clear();
|
|
|
- flash_sector_erase(_nv_tbl_write_addr);
|
|
|
- }
|
|
|
-
|
|
|
- _fmc_flag_clear();
|
|
|
- flash_word_program(_nv_tbl_write_addr, value);
|
|
|
-
|
|
|
- _nv_tbl_write_addr += _nv_tbl_write_remain;
|
|
|
- _nv_tbl_write_remain = 0;
|
|
|
-}
|
|
|
-
|
|
|
-void fmc_write_trq_table_continue(const u8 *data, int len)
|
|
|
-{
|
|
|
- const u8 *data_end;
|
|
|
-
|
|
|
- flash_unlock();
|
|
|
-
|
|
|
- for (data_end = data + len; data < data_end; data++) {
|
|
|
- if (_nv_tbl_write_remain >= sizeof(_nv_tbl_write_cache)) {
|
|
|
- fmc_write_trq_table_flush();
|
|
|
- }
|
|
|
-
|
|
|
- _nv_tbl_write_cache[_nv_tbl_write_remain] = *data;
|
|
|
- _nv_tbl_write_remain++;
|
|
|
- }
|
|
|
-
|
|
|
- flash_lock();
|
|
|
-}
|
|
|
-
|
|
|
-void fmc_write_trq_table_end(void)
|
|
|
-{
|
|
|
- if (_nv_tbl_write_remain > 0) {
|
|
|
- flash_unlock();
|
|
|
- fmc_write_trq_table_flush();
|
|
|
- flash_lock();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
extern void wdog_reload(void);
|
|
|
static void _fmc_erase_addr(uint32_t addr, int len){
|
|
|
flash_unlock();
|