|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- mbed fix for Infinity
- =====================
- Without linker script patch it doesn't place vector table in final binary.
- And clock is configured to 48MHz using internal clock reference and FLL multiplication.
-
-
- mbed/targets/cmsis/TARGET_Freescale/TARGET_K20D50M/system_MK20D5.c
- Fix SystemInit: clock setup for internal clock. Inifinity has no external Xtal.
-
- mbed/targets/cmsis/TARGET_Freescale/TARGET_K20D50M/cmsis_nvic.c
- Fix NVIC vector address of firmware 0x1000 instead of 0x0
-
- mbed/targets/cmsis/TARGET_Freescale/TARGET_K20D50M/TOOLCHAIN_GCC_ARM/MK20D5.ld
- Fix memory map for Infinity bootloader
- Flash starts at 0x1000
- No flash config bytes sector
-
- USBDevice/USBDevice/USBHAL_KL25Z.cpp
- Fix USB clock setup, see below.
-
-
- 2015/01/04 Based on mbed-sdk @2f63fa7d78a26.
-
-
-
- Kinetis USB config
- ==================
- Clock source: Internal reference clock wth FLL
- SIM_SOPT[USBSRC] = 1(MCGPLLCLK/MCGFLLCLK)
- SIM_SOPT[PLLSEL] = 0(MCGFLLCLK)
-
- Clock dividor:
- SIM_CLKDIV2[USBDIV] = 0
- SIM_CLKDIV2[USBFAC] = 0
-
- Clock enable:
- SIM_SCGC4[USBOTG] = 1
-
-
-
- Infinity bootloader change
- ==========================
- After @2c7542e(2015/01) Infinity bootloader doesn't disable watchdog timer and keyboard firmware has to do it itself. mbed disables watchdog in startup sequence but unfortunately timer is timed out bofore that.
-
- We have to do that in earlier phase of mbed startup sequence.
-
-
- mbed starup sequence files:
- mbed/targets/cmsis/TARGET_Freescale/TARGET_K20D50M/TOOLCHAIN_GCC_ARM/startup_M20D5.s
- mbed/targets/cmsis/TARGET_Freescale/TARGET_K20D50M/system_MK20D5.c
-
- Infinity booloader change commit:
- https://github.com/kiibohd/controller/commit/2c7542e2e7f0b8a99edf563dc53164fe1a439483
-
- discussion:
- https://geekhack.org/index.php?topic=41989.msg1686616#msg1686616
-
-
- WORKAROUND
- ----------
- Call SystemInit early in Reset_Handler.
-
- $ diff -u ../../mbed-sdk/libraries/mbed/targets/cmsis/TARGET_Freescale/TARGET_K20D50M/TOOLCHAIN_GCC_ARM/startup_MK20D5.s mbed-infinity
- --- ../../mbed-sdk/libraries/mbed/targets/cmsis/TARGET_Freescale/TARGET_K20D50M/TOOLCHAIN_GCC_ARM/startup_MK20D5.s 2015-03-22 10:33:22.779866000 +0900
- +++ mbed-infinity/startup_MK20D5.s 2015-03-22 10:32:56.483866000 +0900
- @@ -147,6 +147,8 @@
- * __etext: End of code section, i.e., begin of data sections to copy from.
- * __data_start__/__data_end__: RAM address range that data should be
- * copied to. Both must be aligned to 4 bytes boundary. */
- + ldr r0, =SystemInit
- + blx r0
-
- ldr r1, =__etext
- ldr r2, =__data_start__
- @@ -161,8 +163,6 @@
-
- .Lflash_to_ram_loop_end:
-
- - ldr r0, =SystemInit
- - blx r0
- ldr r0, =_start
- bx r0
- .pool
|