Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
Tento repozitář je archivovaný. Můžete prohlížet soubory, klonovat, ale nemůžete nahrávat a vytvářet nové úkoly a požadavky na natažení.
Jun Wako 0d222db31f infinity: Fix disabling watchdog před 9 roky
..
README infinity: Fix disabling watchdog před 9 roky
USBHAL_KL25Z.cpp infinity: Add initial files for keyboard support před 9 roky
cmsis_nvic.c infinity: Move project specific files to local před 9 roky
infinity.ld infinity: Move project specific files to local před 9 roky
startup_MK20D5.s infinity: Fix disabling watchdog před 9 roky
system_MK20D5.c infinity: Move project specific files to local před 9 roky

README

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