This article discusses various issues rebuilding a demonstrator intended for the BBC micro:bit (version 1.3b) after an interval of several years.
Friday, 10 February 2023
Saturday, 6 March 2021
Developing for Cortex MCUs on a Raspberry Pi
Recently, on the Gitter Ada Programming Language lobby, there have been discussions on cross-compiling for Cortex M micro-controllers, specifically the BBC micro:bit, using the Raspberry Pi.
TL;DR: it's not going to be easy, unfortunately. Maybe later (or earlier?) Raspbian releases will help.
Friday, 1 February 2019
Using GDB with a BBC micro:bit
This note is about using Segger J-Link software to help debug code on a BBC micro:bit.
Wednesday, 12 October 2016
MPU9250, continued
This is a note on building support for the MPU9250 9-axis chip in the AdaPilot project (the AdaRacer hardware). It continues this report.
Saturday, 8 October 2016
Invensense MPU9250 via SPI
9-axis means it can measure each of acceleration, gyro and magnetic field values in 3 axes, which is very useful if your drone needs to know about its own motion.
Sunday, 17 April 2016
IO Expansion
I seem to have fritzed one or two of the pins on my STM32F429I-DISC0 board (now replaced by an updated version, STM32F429I-DISC1; that last character was a 0!); after some hair-pulling it turns out that one of said pins is used by the only externally-accessible I2C peripheral on the board; so, until the replacement arrives, here are some interesting facts about the PCF8547A.
Saturday, 12 March 2016
Recovering an STM32F4 board
This is a note on overcoming a problem connecting to my STM32F429I-DISCO board.
Saturday, 30 January 2016
Arduino Due and the Watchdog
A watchdog is used to detect when a system has gone off with the fairies; you have to reset the watchdog timer ("pat the watchdog") every so often or it takes some recovery action. In the case of the Arduino Due, with the ATSAM3X8E MCU, the recovery action is to reset the CPU.
In the ATSAM3X8E (and probably other Atmel MCUs, too), the
watchdog timeout defaults to 16 seconds, and the default hardware
state is that the watchdog is enabled! (the default in
the Atmel Software Framework is
to disable the watchdog unless you have
defined CONF_BOARD_KEEP_WATCHDOG_AT_INIT).
Tuesday, 18 August 2015
Arduino Due/Segger J-Link EDU
I’ve been porting my Cortex-based RTS to Arduino Due, using the J-Link JTAG interface (because who can make an RTS without a debugger?). I’ve probably forgotten my initial problems with ST-LINK (an equivalent interface included for free on the STM32F4 board, supported by OSS software), but it seemed a much less trying experience than with Segger.
There are two things with J-Link GDB Server: first, it seems like a bad idea to keep the server alive after a GDB session ends, so start it with -singlerun; and second, you absolutely must issue monitor reset before running your program. If you don’t you’ll end up like I did, scratching my head for three days trying to understand why I was getting a HardFault at the SVC that FreeRTOS uses to kick tasking off.
Tuesday, 2 June 2015
Building a runtime system for arm-eabi
The public version of the AdaCore Ravenscar RTS is released under the full GPL. It seemed as if it would be a good idea (and fun!) to produce an independent RTS with the GCC Runtime Library Exception (FAQ).
Friday, 1 May 2015
Building GCC 5.1.0 for arm-eabi
These notes describe building GCC 5.1.0 for the Cortex M4 on Mac OS X.
My target board is the STM32M4F29I Discovery.
Tuesday, 11 November 2014
Building GNAT GPL 2014 for arm-eabi
These notes describe building GNAT GPL 2014 for the Cortex M4 on Mac OS X.
My target board was the STM32M4F29I Discovery.