Kitsune is the image that runs on the application processor of the CC3200.
This project is built with a vendor supplied toolchain that's derived from gcc. To run the debugger requires windows 7 or greater.
Debug is via SWD JTAG on a FT2232, we simply pull the signals off the launchpad board. Four wire JTAG in a VM isn't stable probably due to timing requirements.
For use as a debugger, remove all the jumpers from the launchpad and connect the TCK, TMX, RX, TX, 5V, and GND. For best results power the FTDI chip off the 1.8V supply on the bottom board (jumper J13, pin is labelled BRD PWR).
After loading code and connecting to the UART the "boot" command is required to start the background tasks, and "led stop" is needed to dismiss the debug cable animation.
Note: In the above configuration 3.3v is supplied on the opposite pin of J13 creating a convenient supply for a pill board.
Basic building blocks are FreeRTOS, FatFS, Nanopb, and TI's network stack.
Kitsune does not exist in a vacuum. The system is composed internally of two mcu's, the cc3200 on the middle board and the nRF51422 on the top board which is the focus of kodobannin. Beyond this the Pill is running another nRF which communicates via ANT to the top board, the mobile apps on iOS or Android, and the backend server.
This complexity is managed at an interface level using protobuf. The periodic data protobuf contains enviromnental data for each minute, and the log protobuf contains chunks of debug text. The communication between the phone and sense is via the monolithic protobuf morpheus_ble, which internally is composed of many optional fields and a command field which is used to determine the intent and what content to expect. This message is also used in account pairing during which the phone will initiate the process by sending it to the sense, which will annotate it and forward it to the server. All data between the server and Kitsune is transferred using serialized, signed protobuf over HTTP. The signing process is done by computing the SHA of the message and encrypting that SHA with a per-device AES key which is generated on the device during manufacturing in a process referred to as provisioning.
Internally a few important threads exist:
There is also a cross connect UART (CCU) which runs between the nRF on the top board and the cc3200 on the middle board. This exists to enable remote updates of the nRF but also allows for the debug stream to be captured and merged with the debug stream uploaded to the server.
Files to read for rapid familiarity:
Datasheets, technical manuals, and current schematics are included in the reference folder.