diff --git a/.gitignore b/.gitignore index cd02514..287392c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ build *.dep *.taoism .swp +xc_ppf1901.uvgui* +xc_ppf1901.uvopt diff --git a/cmsis/src/startup_stm32f429_439xx.s b/cmsis/src/startup_stm32f429_439xx.s index 790d3a4..33f97e2 100644 --- a/cmsis/src/startup_stm32f429_439xx.s +++ b/cmsis/src/startup_stm32f429_439xx.s @@ -38,7 +38,7 @@ ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> ; -Stack_Size EQU 0x00000400 +Stack_Size EQU 0x00002000 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size @@ -49,7 +49,7 @@ __initial_sp ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> ; -Heap_Size EQU 0x00000200 +Heap_Size EQU 0x00002000 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base diff --git a/target/cmd.c b/target/cmd.c new file mode 100644 index 0000000..f5c60d8 --- /dev/null +++ b/target/cmd.c @@ -0,0 +1,212 @@ +#include +#include +#include +#include +#include +#include "cmd.h" + +#define MAX_HISTORY (4) +#define CMDBUF_SIZE (256) + +enum KEY_ACTION{ + KEY_NULL = 0, /* NULL */ + CTRL_A = 1, /* Ctrl+a */ + CTRL_B = 2, /* Ctrl-b */ + CTRL_C = 3, /* Ctrl-c */ + CTRL_D = 4, /* Ctrl-d */ + CTRL_E = 5, /* Ctrl-e */ + CTRL_F = 6, /* Ctrl-f */ + CTRL_H = 8, /* Ctrl-h */ + TAB = 9, /* Tab */ + CTRL_K = 11, /* Ctrl+k */ + CTRL_L = 12, /* Ctrl+l */ + ENTER = 13, /* Enter */ + CTRL_N = 14, /* Ctrl-n */ + CTRL_P = 16, /* Ctrl-p */ + CTRL_T = 20, /* Ctrl-t */ + CTRL_U = 21, /* Ctrl+u */ + CTRL_W = 23, /* Ctrl+w */ + ESC = 27, /* Escape */ + BACKSPACE = 127 /* Backspace */ +}; + +static int maxargs = 4; + +static char cmdbuf[CMDBUF_SIZE]; +static int bufidx; + +static int do_help(cmd_tbl_t s, int argc, char *argv[]); +CON_CMD(help, 0, "commands help", do_help) + +static struct cmd_tbl_s *__cmds[] = { + &__con_cmd_help, + NULL +}; + +static int do_help(cmd_tbl_t s, int argc, char *argv[]) +{ + cmd_tbl_t it = __cmds[0]; + + printf("support commands:\r\n\r\n"); + while (it) { + printf("%s\t%s\r\n", it->name, it->help); + ++it; + } + return 0; +} + +int cmd_init() +{ + cmd_tbl_t it = __cmds[0]; + + while (it) { + if (it->maxargs > maxargs) + maxargs = it->maxargs + 1; + ++it; + } + + setvbuf(stdout, NULL, _IONBF, 0); + setvbuf(stderr, NULL, _IONBF, 0); + + return 0; +} + +static int32_t parse_line(char *cmd, uint32_t len, char *argv[], int _maxargs) +{ + uint32_t argc; + char *p; + uint32_t position; + + /* Init params */ + p = cmd; + position = 0; + argc = 0; + + while ((position < len) && (argc < _maxargs)) { + /* Skip all blanks */ + while (((char)(*p) == ' ') && (position < len)) { + *p = '\0'; + p++; + position++; + } + /* Process begin of a string */ + if (*p == '"') { + p++; + position++; + argv[argc] = p; + argc++; + /* Skip this string */ + while ((*p != '"') && (position < len)) { + p++; + position++; + } + /* Skip '"' */ + *p = '\0'; + p++; + position++; + } else {/* Normal char */ + argv[argc] = p; + argc++; + while (((char)*p != ' ') && ((char)*p != '\t') && (position < len)) { + p++; + position++; + } + } + } + return argc; +} + +int cmd_process(char *line) +{ + cmd_tbl_t it = __cmds[0]; + int i, argc, namelen; + int size = strlen(line); + char *argv[maxargs]; + + /* split line */ + for (i = 0; i < maxargs; ++i) { + argv[i] = NULL; + } + + argc = parse_line(line, size, argv, maxargs); + + if (argc <= 0) + goto recovery; + + while (it) { + namelen = strlen(it->name); + if (strncasecmp(argv[0], it->name, namelen) == 0) { + it->cmd(it, argc, argv); + return 1; + } + ++it; + } + + /* recovery line */ +recovery: + for (i = 0; i < size; ++i) { + if (line[i] == '\0') + line[i] = ' '; + } + + return 0; +} + +void cmd_loop() +{ + char c; + int n; + + do { + c = fgetc(stdin); + if (c <= 0) + break; + if (bufidx >= CMDBUF_SIZE) { + printf("too long\r\n"); + bufidx = 0; + printf("\r\n> "); + } + + switch (c) { + case CTRL_C: + bufidx = 0; + printf("\r\n> "); + return; + case BACKSPACE: + case CTRL_H: + if (bufidx > 0) { + printf("\b \b"); + bufidx--; + cmdbuf[bufidx] = '\0'; + } + return; + case CTRL_L: + printf("\x1b[H\x1b[2J> "); + if (bufidx > 0) { + for (n = 0; n < bufidx; ++n) { + fputc(cmdbuf[n], stdout); + } + } + return; + } + + /* end of line */ + if (c == '\r' || c == '\n') { + printf("\r\n"); + if (bufidx > 0) { + cmdbuf[bufidx] = '\0'; + cmd_process(cmdbuf); + printf("\r\n"); + bufidx = 0; + } + printf("> "); + continue; + } + + if (isprint(c)) { + cmdbuf[bufidx++] = c; + fputc(c, stdout); + } + } while (1) ; +} + diff --git a/target/cmd.h b/target/cmd.h new file mode 100644 index 0000000..aea4094 --- /dev/null +++ b/target/cmd.h @@ -0,0 +1,31 @@ +#ifndef __CMD_H__ +#define __CMD_H__ +#ifdef __cplusplus +extern "C" { +#endif + +struct cmd_tbl_s { + const char *name; + const char *help; + int maxargs; + int (*cmd)(struct cmd_tbl_s *, int argc, char *argv[]); +}; + +typedef struct cmd_tbl_s *cmd_tbl_t; + +#define CON_CMD(name, maxarg, usage, handler) \ + struct cmd_tbl_s __con_cmd_##name __attribute__((unused, section(".cmdline_cmd"))) = \ + { #name, usage, maxarg, handler}; + + +/* initialize command */ +int cmd_init(void); + +/* process debug console input */ +void cmd_loop(void); + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/target/lowlevel.c b/target/lowlevel.c index 0bd8dba..d3e8454 100644 --- a/target/lowlevel.c +++ b/target/lowlevel.c @@ -4,6 +4,7 @@ #include "gpio.h" #include "spi.h" #include "tick.h" +#include "cmd.h" void lowlevel_init() { @@ -11,6 +12,8 @@ void lowlevel_init() /* debug console */ serial_setup(&serial0, CONSOLE_BAUDRATE, 8, SERIAL_STOPBITS_1); + cmd_init(); + gpio_init(WDI, GPIO_OUTPUT); gpio_init(JPB1_VCC18_EN, GPIO_OUTPUT); @@ -33,6 +36,7 @@ void lowlevel_init() gpio_set(CLK_MUX_PD); gpio_init(SC18IS602_RST, GPIO_OUTPUT); + gpio_set(SC18IS602_RST); spi_setup(&spi0, PA4, SPI_MODE_3); ticks_init(TICKS_PERIOD); diff --git a/target/main.c b/target/main.c index 6be92ab..7a1f4f1 100644 --- a/target/main.c +++ b/target/main.c @@ -4,6 +4,7 @@ #include "eeprom.h" #include "i2c.h" #include "gpio.h" +#include "cmd.h" i2c_t _i2c; int main() @@ -23,6 +24,6 @@ int main() printf("running\r\n...............................\r\n> "); while (1) { iwdg_reset(); + cmd_loop(); } } - diff --git a/target/retarget.c b/target/retarget.c index 441d9aa..6ebac7f 100644 --- a/target/retarget.c +++ b/target/retarget.c @@ -8,7 +8,7 @@ int fputc(int c, FILE *f) { uint8_t ch = c; if ((f == stdout) || (f == stderr)) { - return serial_send_buffered(&serial0, &ch, 1); + return serial_send_buffered(CONSOLE_SERIAL, &ch, 1); } return 0; } @@ -18,7 +18,7 @@ int fgetc(FILE *f) int c = -1; if (f == stdin) { - serial_recv_buffered(&serial0, (uint8_t *)&c, 1); + serial_recv_buffered(CONSOLE_SERIAL, (uint8_t *)&c, 1); } return c; } diff --git a/target/target.h b/target/target.h index d7d8a0e..52f9807 100644 --- a/target/target.h +++ b/target/target.h @@ -8,6 +8,7 @@ #define APP_ADDRESS (0x08008000) #define TICKS_PERIOD (2) /* mill seconds */ +#define CONSOLE_SERIAL (&serial0) #define CONSOLE_BAUDRATE (115200) #define TARGET_HEAP_SIZE (0x200000) diff --git a/xc_ppf1901.sct b/xc_ppf1901.sct new file mode 100644 index 0000000..e0a3b5a --- /dev/null +++ b/xc_ppf1901.sct @@ -0,0 +1,34 @@ +FLASH 0x08000000 0x200000 +{ + EXEC_ROM 0x08000000 0x200000 + { + startup_stm32f429_439xx.o(RESET, +FIRST) + *(+RO) + } +} + +CCM 0x10000000 0x10000 +{ + HEAP 0x10000000 0x2000 + { + *(HEAP) + } + + STACK 0x10002000 0xE000 + { + *(STACK) + } +} + +SRAM 0x20000000 0x30000 +{ + DATA_RAM 0x20000000 0x20000 + { + *(+RW +ZI) + } + + TXDMA 0x20020000 0x10000 + { + serial.o(.txdma* +ZI) + } +} diff --git a/xc_ppf1901.uvopt b/xc_ppf1901.uvopt deleted file mode 100644 index abd3bec..0000000 --- a/xc_ppf1901.uvopt +++ /dev/null @@ -1,1938 +0,0 @@ - - - - 1.0 - -
### uVision Project, (C) Keil Software
- - - *.c - *.s*; *.src; *.a* - *.obj - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - - - - 0 - 0 - - - - xc_ppf1901 - 0x4 - ARM-ADS - - 12000000 - - 1 - 1 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\build\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 1 - - 255 - - - 0 - Datasheet - DATASHTS\ST\STM32F4xx\DM00053484.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32F4xx\DM00031020.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m4\r0p1\DDI0439C_CORTEX_M4_R0P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m4\r0p1\DUI0553A_CORTEX_M4_DGUG.PDF - - - - SARMCM3.DLL - -MPU -REMAP - DCM.DLL - -pCM4 - SARMCM3.DLL - -MPU - TCM.DLL - -pCM4 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 7 - - - - - - - - - - - Segger\JL2CM3.dll - - - - 0 - UL2CM3 - -O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_2048 -FS08000000 -FL0200000) - - - - - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 - - - - - - - - inc - 0 - 0 - 0 - 0 - - 1 - 1 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\misc.h - misc.h - 0 - 0 - - - 1 - 2 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_adc.h - stm32f4xx_adc.h - 0 - 0 - - - 1 - 3 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_can.h - stm32f4xx_can.h - 0 - 0 - - - 1 - 4 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_cec.h - stm32f4xx_cec.h - 0 - 0 - - - 1 - 5 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_conf.h - stm32f4xx_conf.h - 0 - 0 - - - 1 - 6 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_crc.h - stm32f4xx_crc.h - 0 - 0 - - - 1 - 7 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_cryp.h - stm32f4xx_cryp.h - 0 - 0 - - - 1 - 8 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_dac.h - stm32f4xx_dac.h - 0 - 0 - - - 1 - 9 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_dbgmcu.h - stm32f4xx_dbgmcu.h - 0 - 0 - - - 1 - 10 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_dcmi.h - stm32f4xx_dcmi.h - 0 - 0 - - - 1 - 11 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_dfsdm.h - stm32f4xx_dfsdm.h - 0 - 0 - - - 1 - 12 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_dma.h - stm32f4xx_dma.h - 0 - 0 - - - 1 - 13 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_dma2d.h - stm32f4xx_dma2d.h - 0 - 0 - - - 1 - 14 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_dsi.h - stm32f4xx_dsi.h - 0 - 0 - - - 1 - 15 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_exti.h - stm32f4xx_exti.h - 0 - 0 - - - 1 - 16 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_flash.h - stm32f4xx_flash.h - 0 - 0 - - - 1 - 17 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_flash_ramfunc.h - stm32f4xx_flash_ramfunc.h - 0 - 0 - - - 1 - 18 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_fmc.h - stm32f4xx_fmc.h - 0 - 0 - - - 1 - 19 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_fmpi2c.h - stm32f4xx_fmpi2c.h - 0 - 0 - - - 1 - 20 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_gpio.h - stm32f4xx_gpio.h - 0 - 0 - - - 1 - 21 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_hash.h - stm32f4xx_hash.h - 0 - 0 - - - 1 - 22 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_i2c.h - stm32f4xx_i2c.h - 0 - 0 - - - 1 - 23 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_iwdg.h - stm32f4xx_iwdg.h - 0 - 0 - - - 1 - 24 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_lptim.h - stm32f4xx_lptim.h - 0 - 0 - - - 1 - 25 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_ltdc.h - stm32f4xx_ltdc.h - 0 - 0 - - - 1 - 26 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_pwr.h - stm32f4xx_pwr.h - 0 - 0 - - - 1 - 27 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_qspi.h - stm32f4xx_qspi.h - 0 - 0 - - - 1 - 28 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_rcc.h - stm32f4xx_rcc.h - 0 - 0 - - - 1 - 29 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_rng.h - stm32f4xx_rng.h - 0 - 0 - - - 1 - 30 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_rtc.h - stm32f4xx_rtc.h - 0 - 0 - - - 1 - 31 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_sai.h - stm32f4xx_sai.h - 0 - 0 - - - 1 - 32 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_sdio.h - stm32f4xx_sdio.h - 0 - 0 - - - 1 - 33 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_spdifrx.h - stm32f4xx_spdifrx.h - 0 - 0 - - - 1 - 34 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_spi.h - stm32f4xx_spi.h - 0 - 0 - - - 1 - 35 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_syscfg.h - stm32f4xx_syscfg.h - 0 - 0 - - - 1 - 36 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_tim.h - stm32f4xx_tim.h - 0 - 0 - - - 1 - 37 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_usart.h - stm32f4xx_usart.h - 0 - 0 - - - 1 - 38 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\inc\stm32f4xx_wwdg.h - stm32f4xx_wwdg.h - 0 - 0 - - - 1 - 39 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\serial.h - serial.h - 0 - 0 - - - 1 - 40 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\config.h - config.h - 0 - 0 - - - 1 - 41 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\dwt.h - dwt.h - 0 - 0 - - - 1 - 42 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\eeprom.h - eeprom.h - 0 - 0 - - - 1 - 43 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\gpio.h - gpio.h - 0 - 0 - - - 1 - 44 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\i2c.h - i2c.h - 0 - 0 - - - 1 - 45 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\iic.h - iic.h - 0 - 0 - - - 1 - 46 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\iwdg.h - iwdg.h - 0 - 0 - - - 1 - 47 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\pins.h - pins.h - 0 - 0 - - - 1 - 48 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\utils.h - utils.h - 0 - 0 - - - - - cmsis - 0 - 0 - 0 - 0 - - 2 - 49 - 2 - 0 - 0 - 27 - 0 - 175 - 195 - 0 - .\cmsis\src\startup_stm32f429_439xx.s - startup_stm32f429_439xx.s - 0 - 0 - - - 2 - 50 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\cmsis\src\system_stm32f4xx.c - system_stm32f4xx.c - 0 - 0 - - - - - stdperiph - 0 - 0 - 0 - 0 - - 3 - 51 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\misc.c - misc.c - 0 - 0 - - - 3 - 52 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_adc.c - stm32f4xx_adc.c - 0 - 0 - - - 3 - 53 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_can.c - stm32f4xx_can.c - 0 - 0 - - - 3 - 54 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_cec.c - stm32f4xx_cec.c - 0 - 0 - - - 3 - 55 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_crc.c - stm32f4xx_crc.c - 0 - 0 - - - 3 - 56 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_cryp.c - stm32f4xx_cryp.c - 0 - 0 - - - 3 - 57 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_cryp_aes.c - stm32f4xx_cryp_aes.c - 0 - 0 - - - 3 - 58 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_cryp_des.c - stm32f4xx_cryp_des.c - 0 - 0 - - - 3 - 59 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_cryp_tdes.c - stm32f4xx_cryp_tdes.c - 0 - 0 - - - 3 - 60 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_dac.c - stm32f4xx_dac.c - 0 - 0 - - - 3 - 61 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_dbgmcu.c - stm32f4xx_dbgmcu.c - 0 - 0 - - - 3 - 62 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_dcmi.c - stm32f4xx_dcmi.c - 0 - 0 - - - 3 - 63 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_dfsdm.c - stm32f4xx_dfsdm.c - 0 - 0 - - - 3 - 64 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_dma.c - stm32f4xx_dma.c - 0 - 0 - - - 3 - 65 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_dma2d.c - stm32f4xx_dma2d.c - 0 - 0 - - - 3 - 66 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_dsi.c - stm32f4xx_dsi.c - 0 - 0 - - - 3 - 67 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_exti.c - stm32f4xx_exti.c - 0 - 0 - - - 3 - 68 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_flash.c - stm32f4xx_flash.c - 0 - 0 - - - 3 - 69 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_flash_ramfunc.c - stm32f4xx_flash_ramfunc.c - 0 - 0 - - - 3 - 70 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_fmc.c - stm32f4xx_fmc.c - 0 - 0 - - - 3 - 71 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_fmpi2c.c - stm32f4xx_fmpi2c.c - 0 - 0 - - - 3 - 72 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_gpio.c - stm32f4xx_gpio.c - 0 - 0 - - - 3 - 73 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_hash.c - stm32f4xx_hash.c - 0 - 0 - - - 3 - 74 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_hash_md5.c - stm32f4xx_hash_md5.c - 0 - 0 - - - 3 - 75 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_hash_sha1.c - stm32f4xx_hash_sha1.c - 0 - 0 - - - 3 - 76 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_i2c.c - stm32f4xx_i2c.c - 0 - 0 - - - 3 - 77 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_iwdg.c - stm32f4xx_iwdg.c - 0 - 0 - - - 3 - 78 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_lptim.c - stm32f4xx_lptim.c - 0 - 0 - - - 3 - 79 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_ltdc.c - stm32f4xx_ltdc.c - 0 - 0 - - - 3 - 80 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_pwr.c - stm32f4xx_pwr.c - 0 - 0 - - - 3 - 81 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_qspi.c - stm32f4xx_qspi.c - 0 - 0 - - - 3 - 82 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_rcc.c - stm32f4xx_rcc.c - 0 - 0 - - - 3 - 83 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_rng.c - stm32f4xx_rng.c - 0 - 0 - - - 3 - 84 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_rtc.c - stm32f4xx_rtc.c - 0 - 0 - - - 3 - 85 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_sai.c - stm32f4xx_sai.c - 0 - 0 - - - 3 - 86 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_sdio.c - stm32f4xx_sdio.c - 0 - 0 - - - 3 - 87 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_spdifrx.c - stm32f4xx_spdifrx.c - 0 - 0 - - - 3 - 88 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_spi.c - stm32f4xx_spi.c - 0 - 0 - - - 3 - 89 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_syscfg.c - stm32f4xx_syscfg.c - 0 - 0 - - - 3 - 90 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_tim.c - stm32f4xx_tim.c - 0 - 0 - - - 3 - 91 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_usart.c - stm32f4xx_usart.c - 0 - 0 - - - 3 - 92 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\stdperiph\src\stm32f4xx_wwdg.c - stm32f4xx_wwdg.c - 0 - 0 - - - - - drivers - 1 - 0 - 0 - 0 - - 4 - 93 - 1 - 0 - 0 - 0 - 0 - 413 - 414 - 0 - .\drivers\serial.c - serial.c - 0 - 0 - - - 4 - 94 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\eeprom.c - eeprom.c - 0 - 0 - - - 4 - 95 - 1 - 0 - 0 - 0 - 0 - 58 - 59 - 0 - .\drivers\gpio.c - gpio.c - 0 - 0 - - - 4 - 96 - 1 - 0 - 0 - 32 - 0 - 253 - 261 - 0 - .\drivers\i2c.c - i2c.c - 0 - 0 - - - 4 - 97 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\iic.c - iic.c - 0 - 0 - - - 4 - 98 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\iwdg.c - iwdg.c - 0 - 0 - - - 4 - 99 - 1 - 0 - 0 - 20 - 0 - 48 - 69 - 0 - .\drivers\utils.c - utils.c - 0 - 0 - - - 4 - 100 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\at24c256_i2c.c - at24c256_i2c.c - 0 - 0 - - - 4 - 101 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\at24c256_iic.c - at24c256_iic.c - 0 - 0 - - - 4 - 102 - 1 - 0 - 0 - 18 - 0 - 97 - 124 - 0 - .\drivers\spi.c - spi.c - 0 - 0 - - - 4 - 103 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\drivers\tick.c - tick.c - 0 - 0 - - - - - target - 0 - 0 - 0 - 0 - - 5 - 104 - 1 - 0 - 0 - 0 - 0 - 1 - 22 - 0 - .\target\main.c - main.c - 0 - 0 - - - 5 - 105 - 1 - 0 - 0 - 15 - 0 - 1 - 10 - 0 - .\target\lowlevel.c - lowlevel.c - 0 - 0 - - - 5 - 106 - 1 - 0 - 0 - 0 - 0 - 1 - 4 - 0 - .\target\retarget.c - retarget.c - 0 - 0 - - - 5 - 107 - 5 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\target\target.h - target.h - 0 - 0 - - - -
diff --git a/xc_ppf1901.uvproj b/xc_ppf1901.uvproj index 0dd75e8..e58a7a0 100644 --- a/xc_ppf1901.uvproj +++ b/xc_ppf1901.uvproj @@ -378,10 +378,10 @@ 0 0x08000000 0x20000000 - + .\xc_ppf1901.sct - + --keep=startup_stm32f429_439xx.o(RESET) @@ -946,6 +946,16 @@ 5 .\target\target.h + + cmd.c + 1 + .\target\cmd.c + + + cmd.h + 5 + .\target\cmd.h +