This is an easy to use, self-contained package that contains everything you need to work with the excellent Silverware micro quadcopter firmware on macOS.
- 0.5 - 2018-03-07 - Add Viewer, Fix flash data override bug.
- 0.4 - 2018-03-05 - Split Programmer into Compiler and Flasher.
- 0.3 - 2018-02-20 - Fix libusb bug.
- 0.2 - 2018-02-19 - Remove 16K limitation.
- 0.1 - 2018-02-19 - First release.
How to use
You can focus on customizing the firmware. I bundled all support files into the tools.
1. Customize Silverware
I recommend Visual Studio Code for editing.
Start with config.h and pid.c. For details see the documentation in NFE’s fork.
2. (optional) Unlock the chip
If your flight controller comes firmware locked from the factory, you can use this tool to unlock it.
You only need to do this once for every controller.
3. Compile Silverware
Run the Compiler tool. The compiled firmware file will be in the directory afterwards.
4. Flash Silverware to the chip
Simply drop a firmware file onto the Flasher tool. It will be automatically written to the chip.
6. (optional) View flash data
If you have tuned your PIDs using the stick gestures, you can use the Viewer tool to view the new PIDs.
Limitations / changed defaults
I needed to change some of the defaults that NotFastEnuf’s fork comes with. Let me explain what I changed and why.
Unsupported gyro low pass filters
The ARM compiler suite comes with proprietary optimizations, that are not yet available to the gcc compiler. As a result, firmware compiled with gcc runs a bit slower than firmware compiled via Keil.
Sounds complicated? It is.
Long story short: we can’t run certain gyro low pass filters in 1ms loop time anymore.
I removed the affected filters. Here is the diff:
126,127c126 < #define SOFT_KALMAN_GYRO KAL1_HZ_90 < //#define SOFT_LPF_1ST_HZ 80 --- > #define SOFT_LPF_1ST_HZ 90
You don’t really need to worry about this. But in case you were wondering:
- Silverware source code - based on NotFastEnuf’s fork from 2018-02-16
- gcc-arm-none-eabi (Version 6-2017-q2-update)
- OpenOCD 0.10.0