From 7b816b1546ef91a03f77760d4b10806ab956d452 Mon Sep 17 00:00:00 2001 From: lyon1998 <645275593@qq.com> Date: Tue, 19 Oct 2021 22:26:34 +0800 Subject: [PATCH] test for py script from uart is ok --- bsp/stm32g030c8/MDK-ARM/stm32g030c8.uvprojx | 4 ++-- package/STM32/STM32_common.h | 4 ++-- package/STM32G030Booter/main.c | 16 +++++++++++++--- src/PikaParser.c | 1 + 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/bsp/stm32g030c8/MDK-ARM/stm32g030c8.uvprojx b/bsp/stm32g030c8/MDK-ARM/stm32g030c8.uvprojx index daf837913..7bb1df5de 100644 --- a/bsp/stm32g030c8/MDK-ARM/stm32g030c8.uvprojx +++ b/bsp/stm32g030c8/MDK-ARM/stm32g030c8.uvprojx @@ -313,7 +313,7 @@ 1 - 6 + 2 0 0 1 @@ -332,7 +332,7 @@ 3 1 1 - 1 + 0 0 0 diff --git a/package/STM32/STM32_common.h b/package/STM32/STM32_common.h index 960701f08..ae42da2ec 100644 --- a/package/STM32/STM32_common.h +++ b/package/STM32/STM32_common.h @@ -47,8 +47,8 @@ #define FLASH_SCRIPT_START_ADDR (FLASH_BASE + ((FLASH_PAGE_NB - 1) * FLASH_PAGE_SIZE)) #define FLASH_SCRIPT_END_ADDR (FLASH_BASE + FLASH_SIZE - 1) -#define FLASH_PIKA_ASM_START_ADDR (FLASH_BASE + ((FLASH_PAGE_NB - 2) * FLASH_PAGE_SIZE)) -#define FLASH_PIKA_ASM_END_ADDR (FLASH_BASE + ((FLASH_PAGE_NB - 1) * FLASH_PAGE_SIZE)) +#define FLASH_PIKA_ASM_START_ADDR FLASH_SCRIPT_START_ADDR +#define FLASH_PIKA_ASM_END_ADDR FLASH_SCRIPT_END_ADDR uint32_t GetPage(uint32_t Addr); #define DATA_64 ((uint64_t)0x1234567812345678) diff --git a/package/STM32G030Booter/main.c b/package/STM32G030Booter/main.c index b0508824d..56fb863c9 100644 --- a/package/STM32G030Booter/main.c +++ b/package/STM32G030Booter/main.c @@ -25,6 +25,7 @@ #include "STM32_common.h" #include "pikaScript.h" #include "stdbool.h" +#include "pikaVM.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -98,16 +99,25 @@ int main(void) { char* code = (char*)FLASH_SCRIPT_START_ADDR; uint16_t codeOffset = 0; - if (code[0] == 'i') { + if (code[0] != 0xFF) { /* boot from flash */ pikaMain = newRootObj("pikaMain", New_PikaMain); obj_run(pikaMain, "uart = STM32.UART()"); obj_run(pikaMain, "uart.init()"); obj_run(pikaMain, "uart.setId(1)"); - obj_run(pikaMain, "uart.setBaudRate(115200)"); + obj_run(pikaMain, "uart.setBaudRat e(115200)"); obj_run(pikaMain, "uart.enable()"); obj_run(pikaMain, "print('[info]: boot from flash.')"); - obj_run(pikaMain, code); + obj_deinit(pikaMain); + pikaMain = newRootObj("pikaMain", New_PikaMain); + if(code[0] == 'i'){ + printf("[info]: boot from Script.\r\n"); + obj_run(pikaMain, code); + } + if(code[0] == 'B'){ + printf("[info]: boot from Pika Asm.\r\n"); + pikaVM_runAsm(pikaMain, code); + } } else { /* boot from firmware */ pikaMain = pikaScriptInit(); diff --git a/src/PikaParser.c b/src/PikaParser.c index 8c91cbf0f..30f4dfc69 100644 --- a/src/PikaParser.c +++ b/src/PikaParser.c @@ -144,6 +144,7 @@ static int32_t getPyLineBlockDeepth(char* line) { AST* pikaParseLine(char* line, Stack* blockStack) { AST* ast = New_queueObj(); Args* buffs = New_strBuff(); + line = strsDeleteChar(buffs, line, '\r'); uint8_t blockDeepth = getPyLineBlockDeepth(line); uint8_t blockDeepthLast = blockDeepth; if (NULL != blockStack) {