Skip to content

当分区数据写满后,触发gc回收flash空间时,此时按复位重启,重启后,程序会卡到触发gc回收flash空间的过程中 #349

Open
@qulei123

Description

@qulei123
  1. 环境:

stm32F103 512K内部flash
裸机程序测试

  1. 问题:
    当分区数据写满后,触发gc回收flash空间时,此时按复位重启,重启后,程序会卡到触发gc回收flash空间的过程中flash全部擦除后,再烧写程序可以恢复正常

  2. 日志如下:

nr@sky# I:tim clk 100khz, timeout 11800
[D/FAL] (fal_flash_init:47) Flash device |             stm32_onchip | addr: 0x08000000 | len: 0x00040000 | blk_size: 0x00000800 |initialized finish.
[I/FAL] ==================== FAL partition table ====================
[I/FAL] | name      | flash_dev    |   offset   |    length  |
[I/FAL] -------------------------------------------------------------
[I/FAL] | fdb_tsdb1 | stm32_onchip | 0x0001a000 | 0x00002000 |
[I/FAL] | fdb_kvdb1 | stm32_onchip | 0x0001c000 | 0x00004000 |
[I/FAL] =============================================================
[I/FAL] Flash Abstraction Layer (V0.5.99) initialize success.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1802) The oldest addr is @0x00000000
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1818) KVDB size is 16384 bytes.
[FlashDB] FlashDB V2.1.1 is initialize success.
[FlashDB] You can get the latest version on https://github.com/armink/FlashDB .
==================== kvdb_basic_sample ====================
[FlashDB][kv][env][fdb_kvdb1] KV: boot_count - 0x00003654 - 0x00003688
get the 'boot_count' value is 52
set the 'boot_count' value to 53
===========================================================
==================== kvdb_type_string_sample ====================
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:930) Trigger a GC check after alloc KV failed.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1076) Alloc an KV (size 48) failed when new KV. Now will GC then retry.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1162) The remain empty sector is 1, GC threshold is 1.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1059) Moved the KV (username) from 0x00000024 to 0x00003824.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1059) Moved the KV (password) from 0x0000005C to 0x0000385C.
[FlashDB][kv][env][f _   _ ____    __  __ _                  ____  _          _ _ 
| \ | |  _ \  |  \/  (_) ___ _ __ ___   / ___|| |__   ___| | |
|  \| | |_) | | |\/| | |/ __| '__/ _ \  \___ \| '_ \ / _ \ | |
| |\  |  _ <  | |  | | | (__| | | (_) |  ___) | | | |  __/ | |
|_| \_|_| \_\ |_|  |_|_|\___|_|  \___/  |____/|_| |_|\___|_|_|
                                                              
nr@sky# I:tim clk 100khz, timeout 11800
[D/FAL] (fal_flash_init:47) Flash device |             stm32_onchip | addr: 0x08000000 | len: 0x00040000 | blk_size: 0x00000800 |initialized finish.
[I/FAL] ==================== FAL partition table ====================
[I/FAL] | name      | flash_dev    |   offset   |    length  |
[I/FAL] -------------------------------------------------------------
[I/FAL] | fdb_tsdb1 | stm32_onchip | 0x0001a000 | 0x00002000 |
[I/FAL] | fdb_kvdb1 | stm32_onchip | 0x0001c000 | 0x00004000 |
[I/FAL] =============================================================
[I/FAL] Flash Abstraction Layer (V0.5.99) initialize success.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1802) The oldest addr is @0x00000000
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1818) KVDB size is 16384 bytes.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1162) The remain empty sector is 0, GC threshold is 1.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (username) is garbage NOT need move, collect it.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (password) is garbage NOT need move, collect it.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (boot_count) is garbage NOT need move, collect it.
 _   _ ____    __  __ _                  ____  _          _ _ 
| \ | |  _ \  |  \/  (_) ___ _ __ ___   / ___|| |__   ___| | |
|  \| | |_) | | |\/| | |/ __| '__/ _ \  \___ \| '_ \ / _ \ | |
| |\  |  _ <  | |  | | | (__| | | (_) |  ___) | | | |  __/ | |
|_| \_|_| \_\ |_|  |_|_|\___|_|  \___/  |____/|_| |_|\___|_|_|
                                                              
nr@sky# I:tim clk 100khz, timeout 11800
[D/FAL] (fal_flash_init:47) Flash device |             stm32_onchip | addr: 0x08000000 | len: 0x00040000 | blk_size: 0x00000800 |initialized finish.
[I/FAL] ==================== FAL partition table ====================
[I/FAL] | name      | flash_dev    |   offset   |    length  |
[I/FAL] -------------------------------------------------------------
[I/FAL] | fdb_tsdb1 | stm32_onchip | 0x0001a000 | 0x00002000 |
[I/FAL] | fdb_kvdb1 | stm32_onchip | 0x0001c000 | 0x00004000 |
[I/FAL] =============================================================
[I/FAL] Flash Abstraction Layer (V0.5.99) initialize success.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1802) The oldest addr is @0x00000000
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1818) KVDB size is 16384 bytes.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1162) The remain empty sector is 0, GC threshold is 1.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (username) is garbage NOT need move, collect it.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (password) is garbage NOT need move, collect it.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (boot_count) is garbage NOT need move, collect it.
 _   _ ____    __  __ _                  ____  _          _ _ 
| \ | |  _ \  |  \/  (_) ___ _ __ ___   / ___|| |__   ___| | |
|  \| | |_) | | |\/| | |/ __| '__/ _ \  \___ \| '_ \ / _ \ | |
| |\  |  _ <  | |  | | | (__| | | (_) |  ___) | | | |  __/ | |
|_| \_|_| \_\ |_|  |_|_|\___|_|  \___/  |____/|_| |_|\___|_|_|
                                                              
nr@sky# I:tim clk 100khz, timeout 11800
[D/FAL] (fal_flash_init:47) Flash device |             stm32_onchip | addr: 0x08000000 | len: 0x00040000 | blk_size: 0x00000800 |initialized finish.
[I/FAL] ==================== FAL partition table ====================
[I/FAL] | name      | flash_dev    |   offset   |    length  |
[I/FAL] -------------------------------------------------------------
[I/FAL] | fdb_tsdb1 | stm32_onchip | 0x0001a000 | 0x00002000 |
[I/FAL] | fdb_kvdb1 | stm32_onchip | 0x0001c000 | 0x00004000 |
[I/FAL] =============================================================
[I/FAL] Flash Abstraction Layer (V0.5.99) initialize success.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1802) The oldest addr is @0x00000000
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1818) KVDB size is 16384 bytes.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1162) The remain empty sector is 0, GC threshold is 1.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (username) is garbage NOT need move, collect it.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (password) is garbage NOT need move, collect it.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (boot_count) is garbage NOT need move, collect it.
 _   _ ____    __  __ _                  ____  _          _ _ 
| \ | |  _ \  |  \/  (_) ___ _ __ ___   / ___|| |__   ___| | |
|  \| | |_) | | |\/| | |/ __| '__/ _ \  \___ \| '_ \ / _ \ | |
| |\  |  _ <  | |  | | | (__| | | (_) |  ___) | | | |  __/ | |
|_| \_|_| \_\ |_|  |_|_|\___|_|  \___/  |____/|_| |_|\___|_|_|
                                                              
nr@sky# I:tim clk 100khz, timeout 11800
[D/FAL] (fal_flash_init:47) Flash device |             stm32_onchip | addr: 0x08000000 | len: 0x00040000 | blk_size: 0x00000800 |initialized finish.
[I/FAL] ==================== FAL partition table ====================
[I/FAL] | name      | flash_dev    |   offset   |    length  |
[I/FAL] -------------------------------------------------------------
[I/FAL] | fdb_tsdb1 | stm32_onchip | 0x0001a000 | 0x00002000 |
[I/FAL] | fdb_kvdb1 | stm32_onchip | 0x0001c000 | 0x00004000 |
[I/FAL] =============================================================
[I/FAL] Flash Abstraction Layer (V0.5.99) initialize success.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1802) The oldest addr is @0x00000000
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1818) KVDB size is 16384 bytes.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1162) The remain empty sector is 0, GC threshold is 1.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (username) is garbage NOT need move, collect it.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (password) is garbage NOT need move, collect it.
[FlashDB][kv][env][fdb_kvdb1] (..\Modules\flashDB\src\fdb_kvdb.c:1131) KV (boot_count) is garbage NOT need move, collect 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions