Filesystem test: Move lfs init in test startup

tests-filesystem-general_filesystem declares BlockDevice and FileSystem
pointers as globals. If these are initialized to their respective
default_instance values in the declaration, the LFS init happens during
OS startup when __libc_init_array() is invoked by mbed_toolchain_init().
If the filesystem blockdevice does not currently contain a valid filesystem
(e.g. the chip has just been erased), then LFS will flag this as corruption
and abort the mounting process.
This cleanup process can take long enough (and is running pre-main) that
greentea times out waiting for the device to respond to its sync packet,
and resets the device.
To resolve this, move the initialization into the first test case
(bd_init_fs_reformat) right before it initializes and formats the
blockdevice and filesystem.
pull/12850/head
Kyle Kearney 2020-04-21 15:01:31 -07:00
parent 6bd55d6159
commit 18af867704
1 changed files with 5 additions and 2 deletions

View File

@ -44,8 +44,8 @@ static const size_t test_files = 2;
FILE *fd[test_files];
BlockDevice *bd = BlockDevice::get_default_instance();
FileSystem *fs = FileSystem::get_default_instance();
BlockDevice *bd;
FileSystem *fs;
const char *bd_type;
/*----------------help functions------------------*/
@ -76,6 +76,9 @@ static void deinit()
//init the blockdevice and reformat the filesystem
static void bd_init_fs_reformat()
{
bd = BlockDevice::get_default_instance();
fs = FileSystem::get_default_instance();
bd_type = bd->get_type();
init();
}