]> git.gir.st - tmk_keyboard.git/blob - tmk_core/protocol/chibios/README.md
Small updates.
[tmk_keyboard.git] / tmk_core / protocol / chibios / README.md
1 ## USB stack implementation using ChibiOS
2
3 ### Notes
4
5 - To use, unpack or symlink ChibiOS here, to `chibios`.
6 - For gcc options, inspect `chibios.mk`. For instance, I enabled `-Wno-missing-field-initializers`, because TMK common bits generated a lot of hits on that.
7 Also pay attention to `-O0` (enabled for debugging); for deployment use `-O2`.
8 - USB string descriptors are a mess. I did not find a way to cleanly generate the right structures from actual strings, so the definitions in individual keyboards' `config.h` are ugly as heck.
9 - There are some random constants left so far, e.g. 5ms sleep between calling `keyboard_task` in `main.c`. There should be no such in `usb_main.c`. Everything is based on timers/interrupts/kernel scheduling (well except `keyboard_task`), so no periodically called things (again, except `keyboard_task`, which is just how TMK is designed).
10 - It is easy to add some code for testing (e.g. blink LED, do stuff on button press, etc...) - just create another thread in `main.c`, it will run independently of the keyboard business.
11 - Jumping to bootloader works, but it is not entirely pleasant, since it is very much MCU dependent. So, one needs to dig out the right address to jump to, and pass it to the compiler in the `Makefile`. Also, a patch to upstream ChibiOS is needed (supplied), because it `ResetHandler` needs adjusting.
12 - The USB stack works pretty completely; however there are bits of other TMK stuff that are not done yet:
13
14 ### Immediate todo
15
16 - suspend
17 - sleep led
18
19 ### Missing / not working (TMK vs ChibiOS bits)
20
21 - eeprom / bootmagic (will be chip dependent)
22
23 ### Tried with
24
25 - ChibiOS 3.0.1 and ST F072RB DISCOVERY board.
26 - Need to test on other STM32 chips (F3, F4) to make it as much chip-independent as possible.
Imprint / Impressum