diff options
author | NIIBE Yutaka <gniibe@fsij.org> | 2016-05-30 20:34:06 +0900 |
---|---|---|
committer | NIIBE Yutaka <gniibe@fsij.org> | 2016-05-30 20:34:06 +0900 |
commit | 421fd8019b31386c6e689753cf0a2ff35bd2af50 (patch) | |
tree | 43461cc614a2153b036e9e163a46849927ee9e60 /example-fs-bb48 | |
parent | e8eaeced7741488bc83735ef81478d98b877470e (diff) |
; ABOUT-SYS
Diffstat (limited to 'example-fs-bb48')
-rw-r--r-- | example-fs-bb48/ABOUT-SYS | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/example-fs-bb48/ABOUT-SYS b/example-fs-bb48/ABOUT-SYS deleted file mode 100644 index c5a7490..0000000 --- a/example-fs-bb48/ABOUT-SYS +++ /dev/null @@ -1,188 +0,0 @@ -Consideration about SYS and the first pages of flash ROM -======================================================== - -Now, I'm developing something like SYS for Kinetis L MCU, so, I write -this document. - - -About SYS on STM32F103 -====================== - -In the development of Gnuk, we developed: - - SYS: The system predefined routines for STM32F103 - -It is now maintained as example-cdc/sys.c. - -There is another version in example-led/sys.c, which also support -STM32F030, as well as STM32F103. But, it wouldn't be useful for -STM32F030. In fact, the file example-fsm-55/sys.c has name sys.c -but it doesn't include any system routines. - -The original issue was: - - (1) When it's protected, STM32F103 can't change the first 4KiB of - flash ROM at run time. - - (2) We want to support firmware upgrade through its USB. - -Later on, we add another point. - - (3) It is good if the executable of Gnuk could be shared among - different boards. - -For (1) and (2), we decided put some useful routines and data which is -not need to be changed. - -Now, the first 4KiB of flash ROM consists of: - - 1KiB: SYS - 3KiB: 3/4 of AES forward tables - -SYS consists of: - - Internal: reset entry, end of RAM - Data: board identification - Routines: board specific - board independent - -and here is the list of all. - -* Internal routines - - reset entry - end of RAM - -* Board identification - - sys_version - sys_board_id - sys_board_name - -* Board specific routines - - * led - set_led - - * mcu/board lower level - clock_init - gpio_init - - * usb - usb_lld_sys_init - usb_lld_sys_shutdown - -* Board independent routines - - * flash ROM access routines - - unlock - write halfword - erase page - brank check - write page - protect - erase_all & exec to ram - - * system reset routine - - nvic_system_reset - -The routines of clock_init and gpio_init are here because of some -historical reasons. (We could design a system with no such exported -routines: by defining: those things done internally after reset and -before calling the application.) - -Those are exported as entries of SYS, and it is the responsibility of -the application which do initialize clock and GPIO, calling those -routines. - -USB routines are needed because of hardware practice of STM32F103. -With STM32F103, each board has different way for handling the pull up -of USB D+ and how the device asks re-enumeration to host PC. In my -opinion, if it's defined as full speed device and it's OK for us not -to use high impedance (but asserting to LOW, instead) of D+ to ask -re-enumeration, we can just pull up D+ always. And we wouldn't need -such routines in SYS. - - - -About SYS on Kinetis L -====================== - -For Kinetis L, because it's ROM has the original firmware upgrade -support by the vendor (though USB HID), all that we needed for -firmware upgrade would be just erasing to factory settings. - -And it has no limitation like STM32F103's first 4KiB flash ROM. -All pages can be updated at run time. - -Nevertheless, the first two pages (2KiB) of KL27Z is still difficult -to use. - -So, I decide to introduce something like SYS for Kinetis L. - - -* Layout - -Three pages (3KiB) usage: - - ------------ The first page - End of RAM <-- not used but hardware defines this - Address of reset entry - sys_version - sys_board_info (id, name) - sys_vector - - other SYS routines and data... - - ------------ The second page - FLASH CONFIG: 16-byte - Reset entry function - flash routines - CRC-32 routines - CRC-32 table (768-byte of CRC-32 table) - - ------------ The third page - MAGIC 256-byte (256-byte of the last part of CRC-32 table) - ... - vectors (initial MSP, reset, ...) - ... - - -* data: Board identification - - sys_version - sys_board_id - sys_board_name ; null terminated - -* Board specific routines - - * mcu/board lower level - clock_init - gpio_init - - * led - set_led - -* data: Board independent routines - - * flash ROM access code to be loaded on to RAM - -* system reset routine??? - - nvic_system_reset - - -* data: vectors for routines and data - sys_version - sys_board_id - address of sys_board_name - address of set_led - address of clock_init - address of gpio_init - address of ... - - - --- |