summaryrefslogtreecommitdiffstatshomepage
path: root/stmhal/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'stmhal/main.c')
-rw-r--r--stmhal/main.c58
1 files changed, 28 insertions, 30 deletions
diff --git a/stmhal/main.c b/stmhal/main.c
index 2cc463462d..183f11b7a0 100644
--- a/stmhal/main.c
+++ b/stmhal/main.c
@@ -332,8 +332,9 @@ soft_reset:
qstr_init();
mp_init();
mp_obj_list_init(mp_sys_path, 0);
- mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR_0_colon__slash_));
- mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR_0_colon__slash_lib));
+ mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR_)); // current dir (or base dir of the script)
+ mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_flash));
+ mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_flash_slash_lib));
mp_obj_list_init(mp_sys_argv, 0);
readline_init();
@@ -344,7 +345,7 @@ soft_reset:
// local filesystem init
{
// try to mount the flash
- FRESULT res = f_mount(&fatfs0, "0:", 1);
+ FRESULT res = f_mount(&fatfs0, "/flash", 1);
if (reset_mode == 3 || res == FR_NO_FILESYSTEM) {
// no filesystem, or asked to reset it, so create a fresh one
@@ -352,7 +353,7 @@ soft_reset:
led_state(PYB_LED_R2, 1);
uint32_t start_tick = HAL_GetTick();
- res = f_mkfs("0:", 0, 0);
+ res = f_mkfs("/flash", 0, 0);
if (res == FR_OK) {
// success creating fresh LFS
} else {
@@ -361,19 +362,19 @@ soft_reset:
// create empty main.py
FIL fp;
- f_open(&fp, "0:/main.py", FA_WRITE | FA_CREATE_ALWAYS);
+ f_open(&fp, "/flash/main.py", FA_WRITE | FA_CREATE_ALWAYS);
UINT n;
f_write(&fp, fresh_main_py, sizeof(fresh_main_py) - 1 /* don't count null terminator */, &n);
// TODO check we could write n bytes
f_close(&fp);
// create .inf driver file
- f_open(&fp, "0:/pybcdc.inf", FA_WRITE | FA_CREATE_ALWAYS);
+ f_open(&fp, "/flash/pybcdc.inf", FA_WRITE | FA_CREATE_ALWAYS);
f_write(&fp, fresh_pybcdc_inf, sizeof(fresh_pybcdc_inf) - 1 /* don't count null terminator */, &n);
f_close(&fp);
// create readme file
- f_open(&fp, "0:/README.txt", FA_WRITE | FA_CREATE_ALWAYS);
+ f_open(&fp, "/flash/README.txt", FA_WRITE | FA_CREATE_ALWAYS);
f_write(&fp, fresh_readme_txt, sizeof(fresh_readme_txt) - 1 /* don't count null terminator */, &n);
f_close(&fp);
@@ -387,14 +388,14 @@ soft_reset:
}
}
- // make sure we have a 0:/boot.py
+ // make sure we have a /flash/boot.py
{
FILINFO fno;
#if _USE_LFN
fno.lfname = NULL;
fno.lfsize = 0;
#endif
- FRESULT res = f_stat("0:/boot.py", &fno);
+ FRESULT res = f_stat("/flash/boot.py", &fno);
if (res == FR_OK) {
if (fno.fattrib & AM_DIR) {
// exists as a directory
@@ -411,7 +412,7 @@ soft_reset:
uint32_t start_tick = HAL_GetTick();
FIL fp;
- f_open(&fp, "0:/boot.py", FA_WRITE | FA_CREATE_ALWAYS);
+ f_open(&fp, "/flash/boot.py", FA_WRITE | FA_CREATE_ALWAYS);
UINT n;
f_write(&fp, fresh_boot_py, sizeof(fresh_boot_py) - 1 /* don't count null terminator */, &n);
// TODO check we could write n bytes
@@ -424,21 +425,25 @@ soft_reset:
}
// root device defaults to internal flash filesystem
- uint root_device = 0;
+ f_chdrive("/flash");
#if defined(USE_DEVICE_MODE)
usb_storage_medium_t usb_medium = USB_STORAGE_MEDIUM_FLASH;
#endif
#if MICROPY_HW_HAS_SDCARD
- // if an SD card is present then mount it on 1:/
+ // if an SD card is present then mount it on /sd/
if (reset_mode == 1 && sdcard_is_present()) {
- FRESULT res = f_mount(&fatfs1, "1:", 1);
+ FRESULT res = f_mount(&fatfs1, "/sd", 1);
if (res != FR_OK) {
printf("[SD] could not mount SD card\n");
} else {
// use SD card as root device
- root_device = 1;
+ f_chdrive("/sd");
+
+ // TODO these should go before the /flash entries in the path
+ mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_sd));
+ mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_sd_slash_lib));
if (first_soft_reset) {
// use SD card as medium for the USB MSD
@@ -453,17 +458,12 @@ soft_reset:
(void)first_soft_reset;
#endif
- // run <root>:/boot.py, if it exists
+ // run boot.py, if it exists
if (reset_mode == 1) {
- const char *boot_file;
- if (root_device == 0) {
- boot_file = "0:/boot.py";
- } else {
- boot_file = "1:/boot.py";
- }
- FRESULT res = f_stat(boot_file, NULL);
+ const char *boot_py = "boot.py";
+ FRESULT res = f_stat(boot_py, NULL);
if (res == FR_OK) {
- if (!pyexec_file(boot_file)) {
+ if (!pyexec_file(boot_py)) {
flash_error(4);
}
}
@@ -518,20 +518,18 @@ soft_reset:
// now that everything is initialised, run main script
if (reset_mode == 1 && pyexec_mode_kind == PYEXEC_MODE_FRIENDLY_REPL) {
- vstr_t *vstr = vstr_new();
- vstr_printf(vstr, "%d:/", root_device);
+ const char *main_py;
if (pyb_config_main == MP_OBJ_NULL) {
- vstr_add_str(vstr, "main.py");
+ main_py = "main.py";
} else {
- vstr_add_str(vstr, mp_obj_str_get_str(pyb_config_main));
+ main_py = mp_obj_str_get_str(pyb_config_main);
}
- FRESULT res = f_stat(vstr_str(vstr), NULL);
+ FRESULT res = f_stat(main_py, NULL);
if (res == FR_OK) {
- if (!pyexec_file(vstr_str(vstr))) {
+ if (!pyexec_file(main_py)) {
flash_error(3);
}
}
- vstr_free(vstr);
}
#if MICROPY_HW_ENABLE_CC3K