|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385 |
- flabbergast's TMK/ChibiOS port
- ==============================
- 2015/10/16
-
-
- Build
- -----
- $ git clone -b chibios https://github.com/flabbergast/tmk_keyboard.git
-
- $ cd tmk_keyboard
- $ git submodule add -f -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios
- or
- $ cd tmk_keyboard/tmk_core/tool/chibios
- $ git clone -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios
-
- $ cd tmk_keyboard/keyboard/infinity_chibios
- $ make
-
-
-
-
- Chibios Configuration
- ---------------------
- halconf.h: for HAL configuration
- placed in project directory
- read in chibios/os/hal/hal.mk
- included in chibios/os/hal/include/hal.h
- mcuconf.h: for MCU configuration
- placed in project directory
- included in halconf.h
-
-
- Chibios Term
- ------------
- PAL = Port Abstraction Layer
- palWritePad
- palReadPad
- palSetPad
- chibios/os/hal/include/pal.h
-
- LLD = Low Level Driver
-
-
- Makefile
- --------
- # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
- MCU_FAMILY = KINETIS
- MCU_SERIES = KL2x
-
- # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
- # or <this_dir>/ld/
- MCU_LDSCRIPT = MKL26Z64
-
- # - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
- MCU_STARTUP = kl2x
-
- # Board: it should exist either in <chibios>/os/hal/boards/
- # or <this_dir>/boards
- BOARD = PJRC_TEENSY_LC
-
- MCU = cortex-m0
-
- # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
- ARMV = 6
-
-
- halconf.h
- ---------
-
-
- mcuconf.h
- ---------
-
-
- chconf.h
- --------
-
-
- ld script
- ---------
- --- ../../tmk_core/tool/chibios/chibios/os/common/ports/ARMCMx/compilers/GCC/ld/MKL26Z64.ld 2015-10-15 09:08:58.732904304 +0900
- +++ ld/MKL26Z64.ld 2015-10-15 08:48:06.430215496 +0900
- @@ -27,7 +27,8 @@
- {
- flash0 : org = 0x00000000, len = 0xc0
- flashcfg : org = 0x00000400, len = 0x10
- - flash : org = 0x00000410, len = 64k - 0x410
- + flash : org = 0x00000410, len = 62k - 0x410
- + eeprom_emu : org = 0x0000F800, len = 2k
- ram : org = 0x1FFFF800, len = 8k
- }
-
- @@ -35,6 +36,10 @@
- __ram_size__ = LENGTH(ram);
- __ram_end__ = __ram_start__ + __ram_size__;
-
- +__eeprom_workarea_start__ = ORIGIN(eeprom_emu);
- +__eeprom_workarea_size__ = LENGTH(eeprom_emu);
- +__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__;
- +
- SECTIONS
- {
- . = 0;
-
-
-
- Configuration/Startup for Infinity 60%
- --------------------------------------
- Configuration:
-
-
- Clock:
- Inifinity
- FEI(FLL Engaged Internal) mode with core clock:48MHz, bus clock:48MHz, flash clock:24MHz
- Clock dividor:
- SIM_CLKDIV1[OUTDIV1] = 0 divide-by-1 for core clock
- SIM_CLKDIV1[OUTDIV2] = 0 divide-by-1 for bus clock
- SIM_CLKDIV1[OUTDIV4] = 1 divide-by-2 for flash clock
- Internal reference clock:
- MCG_C1[IREFS] = 1 Internal Reference Select for clock source for FLL
- MCG_C1[IRCLKEN] = 1 Internal Reference Clock Enable
- FLL multipilication:
- MCG_C4[DMX32] = 1
- MCG_C4[DRST_DRS] = 01 FLL factor 1464 * 32.768kHz = 48MHz
-
- chibios/os/hal/ports/KINETIS/K20x/hal_lld.c
- k20x_clock_init(): called in __early_init() defined in board.c
- disable watchdog and configure clock
-
- configurable macros:
- KINETIS_NO_INIT: whether init or not
- KINETIS_MCG_MODE: clock mode
- KINETIS_MCG_MODE_FEI
- KINETIS_MCG_MODE_PEE
- hal/ports/KINETIS/K20x/hal_lld.h
-
-
- chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.h
- PALConfig pal_default_config
- boardInit()
- __early_init()
- macro definitions for board infos, freq and mcu type
-
- chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.c
-
- USB
-
-
- Startup
- -------
- common/ports/ARMCMx/GCC/crt0_v[67]m.s
- Reset_Handler: startup code
- common/ports/ARMCMx/GCC/crt1.c
- __core_init(): weak
- __early_init(): weak
- __late_init(): weak
- __default_exit(): weak
- called from Reset_Handler of crt0
- common/ports/ARMCMx/GCC/vector.c
- common/ports/ARMCMx/GCC/ld/*.ld
-
- chibios/os/common/ports/ARMCMx/compilers/GCC/
- ├── crt0_v6m.s
- ├── crt0_v7m.s
- ├── crt1.c
- ├── ld
- │ ├── MK20DX128BLDR3.ld
- │ ├── MK20DX128BLDR4.ld
- │ ├── MK20DX128.ld
- │ ├── MK20DX256.ld
- │ ├── MKL25Z128.ld
- │ ├── MKL26Z128.ld
- │ ├── MKL26Z64.ld
- │ └── STM32L476xG.ld
- ├── mk
- │ ├── startup_k20x5.mk
- │ ├── startup_k20x7.mk
- │ ├── startup_k20x.mk
- │ ├── startup_kl2x.mk
- │ └── startup_stm32l4xx.mk
- ├── rules.ld
- ├── rules.mk
- └── vectors.c
-
- chibios/os/hal/
- ├── boards
- │ ├── FREESCALE_FREEDOM_K20D50M
- │ │ ├── board.c
- │ │ ├── board.h
- │ │ └── board.mk
- │ ├── MCHCK_K20
- │ │ ├── board.c
- │ │ ├── board.h
- │ │ └── board.mk
- │ ├── PJRC_TEENSY_3
- │ │ ├── board.c
- │ │ ├── board.h
- │ │ └── board.mk
- │ ├── PJRC_TEENSY_3_1
- │ │ ├── board.c
- │ │ ├── board.h
- │ │ └── board.mk
- │ ├── PJRC_TEENSY_LC
- │ │ ├── board.c
- │ │ ├── board.h
- │ │ └── board.mk
- │ ├── readme.txt
- │ ├── simulator
- │ │ ├── board.c
- │ │ ├── board.h
- │ │ └── board.mk
- │ ├── ST_NUCLEO_F030R8
- │ │ ├── board.c
- │ │ ├── board.h
- │ │ ├── board.mk
- │ │ └── cfg
- │ │ └── board.chcfg
- ├── hal.mk
- ├── include
- │ ├── adc.h
- │ ├── can.h
- │ ├── dac.h
- │ ├── ext.h
- │ ├── gpt.h
- │ ├── hal_channels.h
- │ ├── hal_files.h
- │ ├── hal.h
- │ ├── hal_ioblock.h
- │ ├── hal_mmcsd.h
- │ ├── hal_queues.h
- │ ├── hal_streams.h
- │ ├── i2c.h
- │ ├── i2s.h
- │ ├── icu.h
- │ ├── mac.h
- │ ├── mii.h
- │ ├── mmc_spi.h
- │ ├── pal.h
- │ ├── pwm.h
- │ ├── rtc.h
- │ ├── sdc.h
- │ ├── serial.h
- │ ├── serial_usb.h
- │ ├── spi.h
- │ ├── st.h
- │ ├── uart.h
- │ └── usb.h
- ├── lib
- │ └── streams
- │ ├── chprintf.c
- │ ├── chprintf.h
- │ ├── memstreams.c
- │ ├── memstreams.h
- │ ├── nullstreams.c
- │ └── nullstreams.h
- ├── osal
- │ ├── nil
- │ │ ├── osal.c
- │ │ ├── osal.h
- │ │ └── osal.mk
- │ ├── os-less
- │ │ └── ARMCMx
- │ │ ├── osal.c
- │ │ ├── osal.h
- │ │ └── osal.mk
- │ └── rt
- │ ├── osal.c
- │ ├── osal.h
- │ └── osal.mk
- ├── ports
- │ ├── AVR
- │ ├── common
- │ │ └── ARMCMx
- │ │ ├── mpu.h
- │ │ ├── nvic.c
- │ │ └── nvic.h
- │ ├── KINETIS
- │ │ ├── K20x
- │ │ │ ├── hal_lld.c
- │ │ │ ├── hal_lld.h
- │ │ │ ├── kinetis_registry.h
- │ │ │ ├── platform.dox
- │ │ │ ├── platform.mk
- │ │ │ ├── pwm_lld.c
- │ │ │ ├── pwm_lld.h
- │ │ │ ├── spi_lld.c
- │ │ │ └── spi_lld.h
- │ │ ├── KL2x
- │ │ │ ├── hal_lld.c
- │ │ │ ├── hal_lld.h
- │ │ │ ├── kinetis_registry.h
- │ │ │ ├── platform.mk
- │ │ │ ├── pwm_lld.c
- │ │ │ └── pwm_lld.h
- │ │ ├── LLD
- │ │ │ ├── adc_lld.c
- │ │ │ ├── adc_lld.h
- │ │ │ ├── ext_lld.c
- │ │ │ ├── ext_lld.h
- │ │ │ ├── gpt_lld.c
- │ │ │ ├── gpt_lld.h
- │ │ │ ├── i2c_lld.c
- │ │ │ ├── i2c_lld.h
- │ │ │ ├── pal_lld.c
- │ │ │ ├── pal_lld.h
- │ │ │ ├── serial_lld.c
- │ │ │ ├── serial_lld.h
- │ │ │ ├── st_lld.c
- │ │ │ ├── st_lld.h
- │ │ │ ├── usb_lld.c
- │ │ │ └── usb_lld.h
- │ │ └── README.md
- │ ├── LPC
- │ ├── simulator
- │ └── STM32
- ├── src
- │ ├── adc.c
- │ ├── can.c
- │ ├── dac.c
- │ ├── ext.c
- │ ├── gpt.c
- │ ├── hal.c
- │ ├── hal_mmcsd.c
- │ ├── hal_queues.c
- │ ├── i2c.c
- │ ├── i2s.c
- │ ├── icu.c
- │ ├── mac.c
- │ ├── mmc_spi.c
- │ ├── pal.c
- │ ├── pwm.c
- │ ├── rtc.c
- │ ├── sdc.c
- │ ├── serial.c
- │ ├── serial_usb.c
- │ ├── spi.c
- │ ├── st.c
- │ ├── uart.c
- │ └── usb.c
- └── templates
- ├── adc_lld.c
- ├── adc_lld.h
- ├── can_lld.c
- ├── can_lld.h
- ├── dac_lld.c
- ├── dac_lld.h
- ├── ext_lld.c
- ├── ext_lld.h
- ├── gpt_lld.c
- ├── gpt_lld.h
- ├── halconf.h
- ├── hal_lld.c
- ├── hal_lld.h
- ├── i2c_lld.c
- ├── i2c_lld.h
- ├── i2s_lld.c
- ├── i2s_lld.h
- ├── icu_lld.c
- ├── icu_lld.h
- ├── mac_lld.c
- ├── mac_lld.h
- ├── mcuconf.h
- ├── osal
- │ ├── osal.c
- │ ├── osal.h
- │ └── osal.mk
- ├── pal_lld.c
- ├── pal_lld.h
- ├── platform.mk
- ├── pwm_lld.c
- ├── pwm_lld.h
- ├── rtc_lld.c
- ├── rtc_lld.h
- ├── sdc_lld.c
- ├── sdc_lld.h
- ├── serial_lld.c
- ├── serial_lld.h
- ├── spi_lld.c
- ├── spi_lld.h
- ├── st_lld.c
- ├── st_lld.h
- ├── uart_lld.c
- ├── uart_lld.h
- ├── usb_lld.c
- └── usb_lld.h
|