Chibios first steps
Posted at 2015-11-19.
Earlier (at Tarlab), I set up my laptop to build and flash ChibiOS on a Maple mini board. So, what now?
I naturally read chibios.org, decide to ignore the style guide for my own files for now, and look at main.c.
github removed
I add a Hello World procedure and add it to the list of commands, build
and run dfu-util
.
Putty
connection says the code works!
ch> help
Commands: help exit info systime mem threads test write hello
ch> hello
Hello!
Annoyingly, the serial port comes and goes on each reset and Putty loses the connection, so it is a bit tedious to test like this. I should try to find something more handy.
Also, I think I might want this all in a repository. ChibiOS has a github repo (mirror) so this looks like a tempting path to tread now.
I could run plain git or have a further diversion into EGit and Mylyn.
So I set up EGit and try to clone myself a repo.
I couldn't convince Mylyn to do it after a rough hour.
I cloned the 3.0.x stable branch git and started by importing existing
maple demo project.
I should be getting a newer version here as well.
Click build and hey, it built!
Hit perpetual bootloader and run dfu-util
from the tool button and
reset...
(For some reason the port is now COM4
.)
ch> info
Kernel: 3.0.3
Compiler: GCC 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 224288]
Architecture: ARMv7-M
Core Variant: Cortex-M3
Port Info: Advanced kernel mode
Platform: STM32F10x Performance Line Medium Density
Board: LeafLabs Maple Mini
Build time: Nov 19 2015 - 20:57:08
I redid the hello code.
ch> help
Commands: help exit info systime mem threads test write hello
ch> hello
Hello!
After poking around for a good while, it seems I can enter a "Git staging view" and see nice diffs for current changes, enter a commit message, and commit + push straight away.
Neat!
Well, actually a lot of trouble that would have Just Worked using commandline git and a simple editor, but this is supposed to be educational and character-forming!
A lot of simple things could be plugged in here just as commands. More interesting model would naturally be creating some task(s) that may do things and possibly add testing/control/instrumentation commands to main only. There should be a way to pass messages to your tasks. That will have to wait for another session.