OR
- arm-none-eabi-gcc
- arm-none-eaby-binutils
+(I've actually had some issues with Sourcery CodeBench on Linux, so I often just use these)
+
+
+
+----------------------
+Windows Setup
+----------------------
+
+Compiling on Windows does work, just it's a bunch more work.
+
+First make sure Cygwin is installed - http://www.cygwin.com/ - 32bit or 64bit is fine. Make sure the following are installed:
+- make
+- git (needed for some compilation info)
+
+And make sure CMake is *NOT* installed through Cygwin. This is extremely important.
+If this is not possible, you'll have to play with your paths in Cygwin to prioritize the Windows version of CMake.
+
+Install the latest version of CMake - http://cmake.org/cmake/resources/software.html
+Make sure to have CMake add itself to at least your PATH in the installer.
+(If this errors out, you'll have to add CMake to your .bashrc path).
+
+Next, install the compiler(s) you want.
+
+ ---------
+| AVR GCC |
+ ---------
+
+You just need the Atmel AVR 8-bit Toolchain. The latest should be fine, as of writing it was 3.4.3.
+
+http://www.atmel.com/tools/atmelavrtoolchainforwindows.aspx
+
+Extract the files to a directory, say C:\avr8-gnu-toolchain. Then copy all the folders in that directory to the Cygwin directory.
+Mine is C:\cygwin64.
+(You can also just setup the paths, but this is faster/simpler. Might screw up your Cygwin though).
+
+
+ ----------
+| ARM EABI |
+ ----------
+
+Download the latest version of Mentor Graphics Sourcery CodeBench ARM EABI.
+
+http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/
+
+Use the installer and make sure you add the binaries to your path within the installer.
The 'load' script that is created during the build can load the firmware over USB.
It uses sudo, so make sure you have the priviledges.
-(TODO, not complete, avr and arm are different currently, need to be unified)
./load
Windows Building
----------------------
-TODO
+From this directory.
+mkdir build
+cd build
+cmake -G "Unix Makefiles" ..
+
+
+Example output:
+
+ $ cmake -G "Unix Makefiles" ..
+ -- Compiler Family:
+ avr
+ -- MCU Selected:
+ atmega32u4
+ -- CPU Selected:
+ megaAVR
+ -- Detected Scan Module Source Files:
+ Scan/SKM67001/../matrix/matrix_scan.c;Scan/SKM67001/../matrix/scan_loop.c
+ -- Detected Macro Module Source Files:
+ Macro/PartialMap/macro.c
+ -- Detected Output Module Source Files:
+ Output/pjrcUSB/output_com.c;Output/pjrcUSB/avr/usb_keyboard_serial.c
+ -- Detected Debug Module Source Files:
+ Debug/full/../cli/cli.c;Debug/full/../led/led.c;Debug/full/../print/print.c
+ -- Found Git: C:/cygwin64/bin/git.exe (found version "1.7.9")
+ -- Configuring done
+ -- Generating done
+ -- Build files have been written to: C:/cygwin64/home/jacob.alexander/src/capsense-beta/build
+
+ jacob.alexander@JALEXANDER2-LT ~/src/capsense-beta/build
+ $ make
+ Scanning dependencies of target kiibohd.elf
+ [ 10%] Building C object CMakeFiles/kiibohd.elf.dir/main.c.obj
+ [ 20%] Building C object CMakeFiles/kiibohd.elf.dir/Scan/matrix/matrix_scan.c.obj
+ [ 30%] Building C object CMakeFiles/kiibohd.elf.dir/Scan/matrix/scan_loop.c.obj
+ [ 40%] Building C object CMakeFiles/kiibohd.elf.dir/Macro/PartialMap/macro.c.obj
+ [ 50%] Building C object CMakeFiles/kiibohd.elf.dir/Output/pjrcUSB/output_com.c.obj
+ [ 60%] Building C object CMakeFiles/kiibohd.elf.dir/Output/pjrcUSB/avr/usb_keyboard_serial.c.obj
+ [ 70%] Building C object CMakeFiles/kiibohd.elf.dir/Debug/cli/cli.c.obj
+ [ 80%] Building C object CMakeFiles/kiibohd.elf.dir/Debug/led/led.c.obj
+ [ 90%] Building C object CMakeFiles/kiibohd.elf.dir/Debug/print/print.c.obj
+ Linking C executable kiibohd.elf
+ Creating load file for Flash: kiibohd.hex
+ Creating Extended Listing: kiibohd.lss
+ Creating Symbol Table: kiibohd.sym
+ [ 90%] Built target kiibohd.elf
+ Scanning dependencies of target SizeAfter
+ [100%] Size after generation
+ Flash Usage: data (hex)
+ RAM Usage: data (elf)
+ text data bss dec hex filename
+ 0 9738 0 9738 260a kiibohd.hex
+ 7982 1756 264 10002 2712 kiibohd.elf
+ [100%] Built target SizeAfter
+
+
----------------------
Windows Loading Firmware
TODO
-
----------------------
-Debugging
+Virtual Serial Port - CLI
----------------------
-TODO
+Rather than use a special program that can interpret Raw HID, this controller exposes a USB Serial CDC endpoint.
+This allows for you to use a generic serial terminal to debug/control the keyboard firmware (e.g. Tera Term, minicom, screen)
+
+ -------
+| Linux |
+ -------
+
+I generally use screen.
+
+sudo screen /dev/ttyACM0
+
+
+ ---------
+| Windows |
+ ---------
+
+TODO Probably COM1, but not exactly sure. Tera Term.
+
+
+ ----------
+| Mac OS X |
+ ----------
+TODO (What is the usual device name). screen if possible.