fw/altos
10 years agoaltos: Build easymini-v0.1
Keith Packard [Sat, 18 May 2013 10:53:32 +0000 (03:53 -0700)]
altos: Build easymini-v0.1

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Initialize SPI for easymini
Keith Packard [Sat, 18 May 2013 10:52:59 +0000 (03:52 -0700)]
altos: Initialize SPI for easymini

Doesn't work very well without this

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Stick USB control structure in USB memory
Keith Packard [Sat, 18 May 2013 10:52:14 +0000 (03:52 -0700)]
altos/lpc: Stick USB control structure in USB memory

No reason to have that in regular ram, and it means we've got space
for large enough stacks now

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Add easymini-v0.1 product
Keith Packard [Sat, 18 May 2013 10:22:10 +0000 (03:22 -0700)]
altos: Add easymini-v0.1 product

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Use separate interrupt stack
Keith Packard [Sat, 18 May 2013 10:21:43 +0000 (03:21 -0700)]
altos/lpc: Use separate interrupt stack

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Try a smaller stack.
Keith Packard [Sat, 18 May 2013 10:21:20 +0000 (03:21 -0700)]
altos/lpc: Try a smaller stack.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Add pin interrupt driver
Keith Packard [Sat, 18 May 2013 10:19:41 +0000 (03:19 -0700)]
altos/lpc: Add pin interrupt driver

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Add beep driver
Keith Packard [Sat, 18 May 2013 10:18:55 +0000 (03:18 -0700)]
altos/lpc: Add beep driver

Hardwired to our current beeper pin

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Add ADC driver
Keith Packard [Sat, 18 May 2013 10:18:19 +0000 (03:18 -0700)]
altos/lpc: Add ADC driver

Uses burst mode to get the whole set of values in one interrupt

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: add gpio int, spi, adc and ct32b defines to lpc.h
Keith Packard [Sat, 18 May 2013 10:16:41 +0000 (03:16 -0700)]
altos/lpc: add gpio int, spi, adc and ct32b defines to lpc.h

Lots more devices

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Clean up broken IOCONF defines
Keith Packard [Sat, 18 May 2013 10:15:58 +0000 (03:15 -0700)]
altos/lpc: Clean up broken IOCONF defines

Missing comment closes

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Fix ao_enable_input, add ao_enable_analog
Keith Packard [Sat, 18 May 2013 10:14:57 +0000 (03:14 -0700)]
altos/lpc: Fix ao_enable_input, add ao_enable_analog

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: LPC interrupt priorities are just 0-3
Keith Packard [Sat, 18 May 2013 10:14:16 +0000 (03:14 -0700)]
altos: LPC interrupt priorities are just 0-3

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Add LPC spi driver
Keith Packard [Sat, 18 May 2013 10:13:17 +0000 (03:13 -0700)]
altos: Add LPC spi driver

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Use ao_port_t in m25 driver
Keith Packard [Sat, 18 May 2013 10:02:38 +0000 (03:02 -0700)]
altos: Use ao_port_t in m25 driver

This uses ao_port_t for all of the chip select masks

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Use ao_data_pres macro in ao_log_tiny
Keith Packard [Sat, 18 May 2013 10:02:01 +0000 (03:02 -0700)]
altos: Use ao_data_pres macro in ao_log_tiny

Now it works on easymini too

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Check for packet mode before trying to disable it in flight code
Keith Packard [Sat, 18 May 2013 09:54:55 +0000 (02:54 -0700)]
altos: Check for packet mode before trying to disable it in flight code

This is only relevant for telemini

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: ao_data_get is in ao_data.c now, not ao_adc.c
Keith Packard [Sat, 18 May 2013 09:54:30 +0000 (02:54 -0700)]
altos: ao_data_get is in ao_data.c now, not ao_adc.c

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Allow architecture to define the type of port registers
Keith Packard [Sat, 18 May 2013 09:53:32 +0000 (02:53 -0700)]
altos: Allow architecture to define the type of port registers

LPC11U14 has 32-bit ports, STM32 has 16 bit ports.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Move ao_data.c from stm to core
Keith Packard [Sat, 18 May 2013 09:52:49 +0000 (02:52 -0700)]
altos: Move ao_data.c from stm to core

This should be used on every processor

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Get USB working
Keith Packard [Fri, 17 May 2013 10:36:47 +0000 (03:36 -0700)]
altos/lpc: Get USB working

The lpc demo now has a USB command line.
Also allocates system stack so we know when ram is tight at build time

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Allow target-specific USB endpoint specifications
Keith Packard [Fri, 17 May 2013 01:58:24 +0000 (18:58 -0700)]
altos: Allow target-specific USB endpoint specifications

The LPC has only a small number of endpoints, and those are not
configurable. Let the LPC USB driver pick the IN and OUT endpoints by itself.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Finish off LPC USB register definitions
Keith Packard [Wed, 8 May 2013 02:27:17 +0000 (19:27 -0700)]
altos: Finish off LPC USB register definitions

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Start adding USB register defines
Keith Packard [Fri, 26 Apr 2013 03:38:32 +0000 (20:38 -0700)]
altos/lpc: Start adding USB register defines

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Start adding USB register definitions
Keith Packard [Mon, 22 Apr 2013 22:10:24 +0000 (17:10 -0500)]
altos/lpc: Start adding USB register definitions

Just the bare struct, no defines yet.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Take advantage of USART TX fifo
Keith Packard [Sat, 20 Apr 2013 05:40:38 +0000 (00:40 -0500)]
altos/lpc: Take advantage of USART TX fifo

The USART has a 16-byte TX fifo; keep rough track of how full it is to
avoid waiting for an interrupt after every TX byte.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Get USART running
Keith Packard [Sat, 20 Apr 2013 05:20:55 +0000 (00:20 -0500)]
altos/lpc: Get USART running

Adds a simple demo thread that spews data to the serial port

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/lpc: Get 100Hz timer running
Keith Packard [Thu, 18 Apr 2013 21:15:52 +0000 (16:15 -0500)]
altos/lpc: Get 100Hz timer running

Use systick, which is built into the ARM core

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agolpcxpresso: Add ao_demo.c
Keith Packard [Thu, 18 Apr 2013 20:55:26 +0000 (15:55 -0500)]
lpcxpresso: Add ao_demo.c

Kinda necessary for the demo to build

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agolpc: Initial lpcxpresso bits
Keith Packard [Thu, 18 Apr 2013 20:54:13 +0000 (15:54 -0500)]
lpc: Initial lpcxpresso bits

This gets the LPC11U14 clock set to the PLL and blinks the LED.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agolibaltos: use PurgeComm in Windows altos_close to abort in-progress ops
Keith Packard [Fri, 17 May 2013 10:34:50 +0000 (03:34 -0700)]
libaltos: use PurgeComm in Windows altos_close to abort in-progress ops

Instead of manually signalling the related events, use PurgeComm which
can then abort the operations itself. Also make sure all of the
relevant handles are set to INVALID before closing them to avoid race conditions.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agolibaltos: Build the linux library targets when doing a 'fat' build
Keith Packard [Fri, 17 May 2013 10:27:20 +0000 (03:27 -0700)]
libaltos: Build the linux library targets when doing a 'fat' build

These are necessary for the fat release, so make sure they're built then.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/cc1111: Hack on USB driver to make Windows happy
Keith Packard [Fri, 17 May 2013 10:21:08 +0000 (03:21 -0700)]
altos/cc1111: Hack on USB driver to make Windows happy

The Windows modem driver is quite chatty at startup time, getting and
setting the comm parameters each time the device is opened. Sometimes,
when setting the parameters, the cc1111 would STALL EP0.

Most of the time, Windows would happily pass this as an error back to
AltosUI which would then re-try the open (and succeed, most of the
time).

Sometimes, Windows would stall for 30 seconds before passing the error
back. This made the whole UI freeze, and I suspect most people assumed
our app had died.

A bit of analysis with the beagle USB sniffer and I discovered the
STALL settings, but there wasn't any correlation between the data on
the wire and when the STALL would be generated.

So, I found a couple of other cc1111 USB stacks on the net and just
looked to see how our driver differed. There wasn't anything clearly
related, but there were a list of small differences:

 1) Other drivers didn't bother waiting for the hardware to
    ack the USBADDR setting; doing it this way means we can set
    the address *before* acking the setup packet. It'll get
    set eventually, at which point the device will start responding to
    packets again.

    Easy to fix, and saves a bit of code space too.

 2) The other drivers set the STALL bit for setup packets which aren't
    understood. This shouldn't have any effect on 'good' systems as
    those shouldn't ever be generating bogus setup packets anyways.

    The driver already handled the STALL state in the interrupt
    handler, the only requirement was to figure out when to explicitly
    set the STALL bit.

    That required moving the state updating code from the start of the
    ep0 setup handling to the end, after the setup packet had been
    examined and data queued in or out as appropriate.

 3) Our driver explicitly queued an IN packet for any setup request
    that wasn't waiting for an OUT pack. This appears to tie in with
    the USBADDR change above as before I made that change, this change
    caused the driver to fail to respond to most setup packets.

    This was simple once the above change was made, just move the
    generation of the IN packet inside the code that switched to the
    IN state.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Generate unmodulated carrier for CC1120 test mode
Keith Packard [Wed, 15 May 2013 22:32:59 +0000 (15:32 -0700)]
altos: Generate unmodulated carrier for CC1120 test mode

This sets the deviation to 0, enables the preamble and turns on the
transmitter. It will sit there happily sending a bare carrier forever

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Move MS5607 info from 'v' to 'c s'
Keith Packard [Wed, 15 May 2013 05:29:06 +0000 (22:29 -0700)]
altos: Move MS5607 info from 'v' to 'c s'

Makes more sense there.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Remove some MMA655x debugging printfs
Keith Packard [Wed, 15 May 2013 05:19:07 +0000 (22:19 -0700)]
altos: Remove some MMA655x debugging printfs

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Grab SPI mutex until MPU6000 I2C mode is disabled
Keith Packard [Tue, 14 May 2013 17:48:24 +0000 (10:48 -0700)]
altos: Grab SPI mutex until MPU6000 I2C mode is disabled

If other drivers use the SPI bus, the MPU6000 gets confused as its
sitting on the bus looking for I2C messages. Just grab the mutex
before the OS is running and hold onto it until the MPU6000 has been initialized.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Initialize MPU6000 CS pin for SPI mode
Keith Packard [Tue, 14 May 2013 16:01:49 +0000 (09:01 -0700)]
altos: Initialize MPU6000 CS pin for SPI mode

Without this, we can't talk to the chip very well

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Fix telemega v0.3 igniter order (drogue/main moved). Label ADC dump
Keith Packard [Tue, 14 May 2013 16:56:16 +0000 (09:56 -0700)]
altos: Fix telemega v0.3 igniter order (drogue/main moved). Label ADC dump

telemega moves the igniters around so that E/F are now drogue/main.
Add custom labels for ADC values to make parsing possible

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: gps serial routines are called ao_gps_*, not ao_ublox_*
Keith Packard [Tue, 14 May 2013 16:25:08 +0000 (09:25 -0700)]
altos: gps serial routines are called ao_gps_*, not ao_ublox_*

This caused the u-blox driver to use serial port 1 instead of the
project-specified serial port.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Give u-blox 3 seconds after boot before we bug it
Keith Packard [Tue, 14 May 2013 16:21:54 +0000 (09:21 -0700)]
altos: Give u-blox 3 seconds after boot before we bug it

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Add 'g' command to ublox GPS code.
Keith Packard [Tue, 14 May 2013 16:12:29 +0000 (09:12 -0700)]
altos: Add 'g' command to ublox GPS code.

Take the gps_dump function from ao_gps_skytraq.c and move it to a new
file so it can be shared with the u-blox driver. That affects every
skytraq and u-blox user as they need to include the new file.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Add flash-loader for telescience-v0.2
Keith Packard [Wed, 15 May 2013 08:24:56 +0000 (01:24 -0700)]
altos: Add flash-loader for telescience-v0.2

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Set u-blox navigation settings
Keith Packard [Tue, 14 May 2013 15:51:22 +0000 (08:51 -0700)]
altos: Set u-blox navigation settings

Airborne mode, < 4g (as good as it gets)
Only use 3D fixes (2D isn't very useful)

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Use symbolic names for ublox packet id
Keith Packard [Tue, 14 May 2013 15:35:24 +0000 (08:35 -0700)]
altos: Use symbolic names for ublox packet id

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltosui: Generate useful KML files from TeleGPS logs
Keith Packard [Tue, 14 May 2013 08:06:20 +0000 (01:06 -0700)]
altosui: Generate useful KML files from TeleGPS logs

Use GPS altitude when baro altitude is not present.
Don't require flight number.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltosui: Use GPS alt + baro height for KML altitude
Keith Packard [Tue, 14 May 2013 07:38:34 +0000 (00:38 -0700)]
altosui: Use GPS alt + baro height for KML altitude

GPS altitude is generally more absolutely correct than baro altitude,
so use that as the nominal pad altitude when generating a KML
file. This results in a KML file that has the flight trace start and
end closer to the ground, which is always nice.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltoslib: Use sequence numbers to track GPS updates to AltosRecord
Keith Packard [Tue, 14 May 2013 07:24:53 +0000 (00:24 -0700)]
altoslib: Use sequence numbers to track GPS updates to AltosRecord

State objects now record what GPS sequence ID they have to know when
the GPS data has been updated. Record objects bump the GPS sequence
each time new GPS data is recorded. This way, record objects aren't
modified as they're iterated over to generate the list of state
objects which makes it possible to iterate multiple times and get the
same resulting set of states.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/test: ao_gps_test_ublox uses ao_gps_blox.h
Keith Packard [Tue, 14 May 2013 05:59:26 +0000 (22:59 -0700)]
altos/test: ao_gps_test_ublox uses ao_gps_blox.h

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Struct used for u-blox testing had lat/lon swapped
Keith Packard [Tue, 14 May 2013 05:58:18 +0000 (22:58 -0700)]
altos: Struct used for u-blox testing had lat/lon swapped

The structs in ao_gps_ublox.h are used only by the test framework, but
it's useful to have that look right anyways.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Switch TeleMega v0.3 to u-blox
Keith Packard [Tue, 14 May 2013 05:33:12 +0000 (22:33 -0700)]
altos: Switch TeleMega v0.3 to u-blox

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Provide a define for the number of sat infos in a telem packet
Keith Packard [Tue, 14 May 2013 05:32:25 +0000 (22:32 -0700)]
altos: Provide a define for the number of sat infos in a telem packet

12 fit, but it's best to use a symbolic constant

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Add U-Blox GPS driver
Keith Packard [Tue, 14 May 2013 05:31:31 +0000 (22:31 -0700)]
altos: Add U-Blox GPS driver

Uses binary mode.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Don't bother fixing telelco-v0.1, just disable it
Keith Packard [Tue, 14 May 2013 05:29:22 +0000 (22:29 -0700)]
altos: Don't bother fixing telelco-v0.1, just disable it

Lots of stuff to do to make this old project build; just disable it
instead of fixing

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltosuilib: Mistake in the MegaDongle listing -- was set to TeleMega
Keith Packard [Tue, 14 May 2013 05:28:27 +0000 (22:28 -0700)]
altosuilib: Mistake in the MegaDongle listing -- was set to TeleMega

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltoslib: Correct hexfile address ranges
Keith Packard [Tue, 14 May 2013 05:27:00 +0000 (22:27 -0700)]
altoslib: Correct hexfile address ranges

Stop trying to use sentinal values for addresses and just keep a
boolean tracking whether they've been initialized. Avoids precision
errors in the variables.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltosui: Wait for valid callsign/flight when graphing
Keith Packard [Sat, 11 May 2013 02:21:18 +0000 (19:21 -0700)]
altosui: Wait for valid callsign/flight when graphing

Wait for the data record to indicate that the flight value is valid
before setting the graph callsign/flight/serial data.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoMerge branch 'master-fixes' into stm-flash-fixes
Keith Packard [Fri, 10 May 2013 04:06:52 +0000 (21:06 -0700)]
Merge branch 'master-fixes' into stm-flash-fixes

10 years agomicropeak: Use new 'last logdir' preference for MicroPeak save/load dialogs
Keith Packard [Fri, 10 May 2013 04:06:23 +0000 (21:06 -0700)]
micropeak: Use new 'last logdir' preference for MicroPeak save/load dialogs

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoInformation from configure about android build was misprinted
Keith Packard [Fri, 10 May 2013 04:04:52 +0000 (21:04 -0700)]
Information from configure about android build was misprinted

A typo in the script caused it to print either 'yes' or ''

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltoslib: Add non-persistent 'last logdir' preference
Keith Packard [Fri, 10 May 2013 04:04:11 +0000 (21:04 -0700)]
altoslib: Add non-persistent 'last logdir' preference

This is used to record the last directory for reading or writing log
files so that the UI can pop back to the same place next time.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoAdd altosdroid notebook entry for imperial units
Keith Packard [Fri, 10 May 2013 04:03:38 +0000 (21:03 -0700)]
Add altosdroid notebook entry for imperial units

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Wait after configuring boot pin before testing it
Keith Packard [Mon, 29 Apr 2013 06:06:24 +0000 (23:06 -0700)]
altos: Wait after configuring boot pin before testing it

Clearly the pin isn't quite ready just after it's been configured, so
hang around for a while (100 nops) to let things setting down before
testing the value of the pin. Makes booting a lot more reliable.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/stm: Create per-product flash loaders
Keith Packard [Sat, 27 Apr 2013 22:33:04 +0000 (15:33 -0700)]
altos/stm: Create per-product flash loaders

Split the flash loader prototype into pieces so that each product can
build a custom flash loader with very little code.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Add ao_boot_chain to telemega v0.3
Keith Packard [Sat, 27 Apr 2013 07:37:15 +0000 (00:37 -0700)]
altos: Add ao_boot_chain to telemega v0.3

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoao-tools/ao-stmload: Add --verbose flag
Keith Packard [Sat, 27 Apr 2013 07:26:11 +0000 (00:26 -0700)]
ao-tools/ao-stmload: Add --verbose flag

This dumps out the serial communication so you can see where things go wrong.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Remove stdio from stm-flash
Keith Packard [Sat, 27 Apr 2013 07:25:36 +0000 (00:25 -0700)]
altos: Remove stdio from stm-flash

This saves enough memory to fit in under 4kB

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Get rodata into flash, make sure sections are aligned
Keith Packard [Sat, 27 Apr 2013 07:24:08 +0000 (00:24 -0700)]
altos: Get rodata into flash, make sure sections are aligned

.rodata* needs to be in flash; otherwise strings get left in ram.
Failing to align sections makes the initialized data get dumped into
the wrong place in memory.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Make stm-bringup build again
Keith Packard [Sat, 27 Apr 2013 07:23:14 +0000 (00:23 -0700)]
altos: Make stm-bringup build again

stm requires AO_BOOT_LOADER_BASE now

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Run self loader when application sets boot addr to 0
Keith Packard [Sat, 27 Apr 2013 07:20:47 +0000 (00:20 -0700)]
altos: Run self loader when application sets boot addr to 0

This causes the flash loader startup code to fall into the loader when
the application sets the boot address to zero.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Allow STM usb driver to be used without stdio
Keith Packard [Sat, 27 Apr 2013 07:19:13 +0000 (00:19 -0700)]
altos: Allow STM usb driver to be used without stdio

This lets the self flashing loader be linked without any of the stdio
code, which saves a bunch of memory.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/stm-flash: Check target flash address against AO_BOOT_APPLICATION_BASE
Keith Packard [Tue, 23 Apr 2013 02:08:35 +0000 (20:08 -0600)]
altos/stm-flash: Check target flash address against AO_BOOT_APPLICATION_BASE

Allows that value to change

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoao-tools/ao-stmload: application base moved to 0x08001000
Keith Packard [Tue, 23 Apr 2013 01:59:12 +0000 (20:59 -0500)]
ao-tools/ao-stmload: application base moved to 0x08001000

And, use a symbolic name so it can be easily moved in the future

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoao-tools: reboot to loader now uses 'X' instead of 'L'
Keith Packard [Tue, 23 Apr 2013 01:56:00 +0000 (20:56 -0500)]
ao-tools: reboot to loader now uses 'X' instead of 'L'

'L' is used by lots of other commands; switch to 'X' which is free.

Sigh. Someday we'll have words for commands instead of just letters

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Use flash loader on all STM products
Keith Packard [Tue, 23 Apr 2013 01:35:57 +0000 (20:35 -0500)]
altos: Use flash loader on all STM products

Includes the boot chain stuff

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/stm: Provide another 4kB of flash space for apps
Keith Packard [Tue, 23 Apr 2013 01:33:33 +0000 (20:33 -0500)]
altos/stm: Provide another 4kB of flash space for apps

With the flash loader now < 4kB, we can use the spare 4kB for applications

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/stm: Shrink stm flash loader to < 4kB
Keith Packard [Tue, 23 Apr 2013 01:32:18 +0000 (20:32 -0500)]
altos/stm: Shrink stm flash loader to < 4kB

Saves 4kB of flash space for applications.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/stm: Allow core timer to be excluded from build
Keith Packard [Tue, 23 Apr 2013 01:30:31 +0000 (20:30 -0500)]
altos/stm: Allow core timer to be excluded from build

This removes all of the support for the base 100Hz timer from the
system, saving space when not needed

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/stm: Don't define task macros when not tasking
Keith Packard [Tue, 23 Apr 2013 01:29:56 +0000 (20:29 -0500)]
altos/stm: Don't define task macros when not tasking

The necessary data structures aren't defined in this case.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Eliminate stdio looping when system has a single stdio source
Keith Packard [Tue, 23 Apr 2013 01:27:52 +0000 (20:27 -0500)]
altos: Eliminate stdio looping when system has a single stdio source

No need to loop if there's only one

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Move ao_notask to core
Keith Packard [Tue, 23 Apr 2013 01:24:48 +0000 (20:24 -0500)]
altos: Move ao_notask to core

The STM flash loader wants to be taskless too, share this very simple
implementation of sleep/wakeup.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoao-tools/ao-stmload: Remove IRC dregs in source code
Keith Packard [Sun, 24 Mar 2013 23:16:55 +0000 (16:16 -0700)]
ao-tools/ao-stmload: Remove IRC dregs in source code

oops.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltosui/altoslib: Move more flashing code from altosui to altoslib
Keith Packard [Sun, 24 Mar 2013 23:15:21 +0000 (16:15 -0700)]
altosui/altoslib: Move more flashing code from altosui to altoslib

Required a bit of refactoring to eliminate swing types from the
flashing code, but nothing major.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltosui & altoslib: Move a pile of debug/programming bits to altoslib
Keith Packard [Sun, 24 Mar 2013 23:01:08 +0000 (16:01 -0700)]
altosui & altoslib: Move a pile of debug/programming bits to altoslib

Prepare to create external Java utilities to flash devices

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltosui: Support 32-bit ihx files
Keith Packard [Sun, 24 Mar 2013 22:35:15 +0000 (15:35 -0700)]
altosui: Support 32-bit ihx files

This just borrows the same 32-bit ihx parsing changes from ao-tools.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoao-tools/ao-stmload: Fix ELF, add IHX, add self-flashing
Keith Packard [Sun, 24 Mar 2013 22:33:31 +0000 (15:33 -0700)]
ao-tools/ao-stmload: Fix ELF, add IHX, add self-flashing

This splits loading into ELF and IHX paths, and splits flashing into
stlink and self-flashing paths.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoao-tools/lib: Add loading support for 32-bit ihx files
Keith Packard [Sun, 24 Mar 2013 22:30:24 +0000 (15:30 -0700)]
ao-tools/lib: Add loading support for 32-bit ihx files

These place the upper 16 bits of the address in a special record. That
requires handling records in file order, so don't sort them in address
order anymore, instead find the bounds of the loaded data by scanning
them all.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/stm: Add comments to the .ld files explaining how the romconfig stuff works
Keith Packard [Sun, 24 Mar 2013 22:27:42 +0000 (15:27 -0700)]
altos/stm: Add comments to the .ld files explaining how the romconfig stuff works

Would be nice to be able to explicitly define addresses for the
romconfig variables, but I can't figure out how to make that
work. Instead, just explicitly load the files in teh right order to
make things land in the right places.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos/stm: Add .elf to .ihx rule
Keith Packard [Sun, 24 Mar 2013 22:26:26 +0000 (15:26 -0700)]
altos/stm: Add .elf to .ihx rule

Uses objcopy -O ihex to extract the initialized bits from an elf file

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Switch ao_stm_flash to read/write binary blocks
Keith Packard [Sun, 24 Mar 2013 22:24:42 +0000 (15:24 -0700)]
altos: Switch ao_stm_flash to read/write binary blocks

Change from development testing code to something that actually reads
and writes data from the USB link.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Create ihx version of stm-demo
Keith Packard [Sun, 24 Mar 2013 22:21:58 +0000 (15:21 -0700)]
altos: Create ihx version of stm-demo

Both ao-stmload and the eventual java loader will support ihx files.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Add erase command to stm-flash app. Validate addresses.
Keith Packard [Sat, 23 Mar 2013 09:23:03 +0000 (02:23 -0700)]
altos: Add erase command to stm-flash app. Validate addresses.

This also leaves the code writing fixed values and printing read data
in ascii instead of binary. Useful for debugging, will want changing
for the product.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Fix STM flash programming
Keith Packard [Sat, 23 Mar 2013 09:21:27 +0000 (02:21 -0700)]
altos: Fix STM flash programming

Wait for flash to go non-busy after writing or erasing a page and
before jumping back out of the RAM code.

Export a separate 'erase' operation for testing.

Re-lock flash after every operation.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Validate boot chain start address
Keith Packard [Sat, 23 Mar 2013 09:18:55 +0000 (02:18 -0700)]
altos: Validate boot chain start address

If the first block of boot memory has been smashed, and the start
address is bogus, don't bother trying to jump to the
application. This makes the system more resiliant to flash failures,
presuming the loader erases the first block, programs the other blocks
and then finally comes back to program the first block.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Mark .boot section as (NOLOAD)
Keith Packard [Sat, 23 Mar 2013 09:17:04 +0000 (02:17 -0700)]
altos: Mark .boot section as (NOLOAD)

For some reason, the silly linker marks things in section .boot as
data rather than bss, so they'd end up initialized by default. Force
them to be NOLOAD so they preserve values across reboot so that boot
chaining works properly.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Fix up stm-flash output file name. Use discovery LED pins
Keith Packard [Sat, 23 Mar 2013 09:15:35 +0000 (02:15 -0700)]
altos: Fix up stm-flash output file name. Use discovery LED pins

Include the AltOS version in the file name, just like any other AltOS
program.

Switch the LEDs to the discovery board as we're using
that. Eventually, we'll stop using LEDs entirely.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Add actual flashing functions to stm-flash app
Keith Packard [Tue, 12 Mar 2013 01:14:28 +0000 (18:14 -0700)]
altos: Add actual flashing functions to stm-flash app

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Clean up boot loader support
Keith Packard [Mon, 11 Mar 2013 20:21:04 +0000 (13:21 -0700)]
altos: Clean up boot loader support

Split out code into separate files.
Add support for getting back to boot loader from application.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Add program flash function
Keith Packard [Mon, 11 Mar 2013 07:01:52 +0000 (00:01 -0700)]
altos: Add program flash function

And get it loaded to RAM so it can execute correctly.

Nothing calls it yet...

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoaltos: Make stm-flash capable of switching to application
Keith Packard [Mon, 11 Mar 2013 04:02:59 +0000 (21:02 -0700)]
altos: Make stm-flash capable of switching to application

This shrinks the base OS load down a bit as well so that stm-flash
fits comfortably in the first 8kB of memory.

Signed-off-by: Keith Packard <keithp@keithp.com>