summaryrefslogtreecommitdiff
path: root/src/stm
Commit message (Collapse)AuthorAge
* altos: Validate boot chain start addressKeith Packard2013-03-23
| | | | | | | | | | 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>
* altos: Mark .boot section as (NOLOAD)Keith Packard2013-03-23
| | | | | | | | | 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>
* altos: Clean up boot loader supportKeith Packard2013-03-11
| | | | | | | Split out code into separate files. Add support for getting back to boot loader from application. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add program flash functionKeith Packard2013-03-11
| | | | | | | | And get it loaded to RAM so it can execute correctly. Nothing calls it yet... Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make stm-flash capable of switching to applicationKeith Packard2013-03-10
| | | | | | | 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>
* Add STM self-flashing loaderKeith Packard2013-03-10
| | | | | | | This allows the real application to get loaded at 0x2000 and jumps to that at startup time if the boot pin is set appropriately Signed-off-by: Keith Packard <keithp@keithp.com>
* Merge branch 'telescience-v0.2'Keith Packard2013-02-24
|\
| * altos: Crank fast SPI on STM to 8MHzKeith Packard2013-01-13
| | | | | | | | | | | | | | With the GPIO pins set to 10MHz now, we can run SPI at the maximum possible speed (8MHz). Signed-off-by: Keith Packard <keithp@keithp.com>
| * altos: Set STM GPIO output speed for SPI pins correctlyKeith Packard2013-01-13
| | | | | | | | | | | | | | | | The GPIO pin settings affect the output impedence, and hence the maximum speed for SPI. Cranking these to suitable values allows SPI to run at full speed. Signed-off-by: Keith Packard <keithp@keithp.com>
| * altos: Initial telescience bitsKeith Packard2013-01-12
| | | | | | | | | | | | These might do something, and should at least bring up USB Signed-off-by: Keith Packard <keithp@keithp.com>
* | altos/stm: Add more bits to NVIC register definitionsKeith Packard2013-02-24
|/ | | | | | This cleans up a few values, adds more comments and a few more NVIC fields. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add support for 115200 baud serial ratesKeith Packard2012-11-30
| | | | | | Necessary for flashing skytraq chips Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make stdio 8-bit clean by making pollchar return intKeith Packard2012-11-30
| | | | | | | | | | We were stealing one value (0xff) in the return value from pollchar to indicate 'not ready yet'. Instead of doing that, use the integer value -1 and have pollchar return an int instead of a char. That necessitated cleaning a few other bits to make sure that 0xff wouldn't get promoted to -1 on accident. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Support LEDs on multiple portsKeith Packard2012-11-01
| | | | | | | Split out the bits in a fairly simplistic fashion so that we support no more than 16 LEDs still. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Provide ao_task_alarm_tick to reduce per-tick costKeith Packard2012-10-26
| | | | | | | Cache the next wakeup time and check that before jumping to the task code. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Leave interrupts disabled while checking for task to runKeith Packard2012-10-26
| | | | | | | Otherwise, we run the risk of an interrupt waking a task after we've decided to idle the CPU. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Clean up stm arch macros a bit.Keith Packard2012-10-25
| | | | | | | Turn a bunch of the macros into inline functions. Clean up the reboot method to use the stm_scb structure. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Switch drivers to ao_arch_block/release_interruptsKeith Packard2012-10-25
| | | | | | Stop using cli/sei, which are avr-specific Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add task queues.Keith Packard2012-10-25
| | | | | | | | | This replaces the array-based scheduler with a queue-based one instead. It should have the same basic scheduling semantics, but it walks shorter lists for each operation, making it much more efficient when the system has a lot of tasks. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add stack-guard code. Uses STM MPU to trap stack overflow.Keith Packard2012-10-25
| | | | | | | | This marks the lowest portion of the stack as inaccessible to the CPU, causing the processor to fault when it reaches it. The fault then generates a panic message so that the user can know what happened. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Replace __critical usage with ao_arch_critical as neededKeith Packard2012-10-25
| | | | | | | | | | | | | sdcc offers __critical as a machine-independent way to block interrupts, but as gcc doesn't, we need to use a compiler-independent construct instead. ao_arch_critical has been around since the AVR port, but some old __critical usages remained. This fixes a bunch of random hangs when communicating with MM over USB or the radio as the various stdio loops were running without interrupts blocked between the test and the sleep. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: profiling on STM32LKeith Packard2012-10-25
| | | | | | Add sample-based profiling, using a 1kHz timer Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Force beep timer regs reload when enabling beeperKeith Packard2012-10-25
| | | | | | | Without this, there can be a long delay between asking for the beeper and having it actually start sounding. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Stop spewing clock out PA8 pinKeith Packard2012-10-21
| | | | | | | This was used to debug the clock bringup, but is not useful anymore, and probably a bad idea to boot. Signed-off-by: Keith Packard <keithp@keithp.com>
* Merge branch 'master' into mm-ms5611Keith Packard2012-10-18
|\ | | | | | | Signed-off-by: Keith Packard <keithp@keithp.com>
| * altos/stm: Declare all SPI bus speedsKeith Packard2012-10-15
| | | | | | | | | | | | Just list them all so users can pick what they like Signed-off-by: Keith Packard <keithp@keithp.com>
* | altos: Go back to recording sensor data in globalsmm-ms5611Keith Packard2012-10-08
| | | | | | | | | | | | | | | | Instead of trying to get things into the ring from a variety of functions, go back to the simpler method of storing them in globals and having the ADC code just pluck out the most recent values. Signed-off-by: Keith Packard <keithp@keithp.com>
* | altos/stm: Set SPI clock high for disabled SPI bussesKeith Packard2012-10-06
| | | | | | | | | | | | | | This should avoid an accidental low->high transition when switching between multiple SPI busses. Signed-off-by: Keith Packard <keithp@keithp.com>
* | altos/stm: Clean up SPI pin configuration codeKeith Packard2012-10-06
|/ | | | | | | Make sure none of the pin configurations are being used at startup time. Split out the pin configuration into separate functions. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Fix basic time interval to 10ms -- was 10.1msKeith Packard2012-09-09
| | | | | | Counting from 0 to 100 takes 10.1ms, so count to 99 instead. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Oops. forgot ao_data.cKeith Packard2012-08-28
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Explicitly erase memory in STM eeprom driver.Keith Packard2012-08-28
| | | | | | This seems to make the STM32L152 happier Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Fix ao_delay function and move from per-chip code to ao_task.cKeith Packard2012-08-28
| | | | | | | ao_delay hasn't been chip-specific for a long time, and it had a bug in not calling ao_clear_alarm. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Enable STM SYSCFG when routing EXTIKeith Packard2012-08-28
| | | | | | | The EXTI routing information is in the syscfg unit, so that needs to be powered up or writes to its registers will be lost. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: No need to initialize EXTI priorities at startup timeKeith Packard2012-08-28
| | | | | | They all get set to the correct value when enabled. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Expose a signed version of the tick countKeith Packard2012-08-27
| | | | | | Useful when doing time comparisons. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Provide interface for STM LCD driver.Keith Packard2012-08-27
| | | | | | | | This provides a simple function interface for driving the LCD segments in the STM chip. It also uses the update complete interrupt to block LCD users during flush. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Trigger sample complete when all data are readyKeith Packard2012-08-26
| | | | | | | This has each sensor mark a bit in the current data record which is then sent for processing when all of the data are present. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Shrink STM stack sizeKeith Packard2012-08-26
| | | | | | 512 bytes should be enough for anybody. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Allow STM SPI bus on multiple pin setsKeith Packard2012-08-18
| | | | | | | | This allows multiple STM pin groups to be used for each SPI bus. Useful for the MS5607 sensor which signals conversion complete on the MISO line. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add button driver and event queueKeith Packard2012-08-06
| | | | | | | With this, a single task can wait for any button or quadrature input device. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add ao_gpio_get and ao_exti_set_modeKeith Packard2012-08-06
| | | | | | Needed to support general GPIO interrupts Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add driver for STM internal flashKeith Packard2012-07-29
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add software AES implementationKeith Packard2012-07-29
| | | | | | This is untested Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Place STM config values at fixed addresses for re-useKeith Packard2012-07-17
| | | | | | | | Just like cc1111, stick the serial number and radio calibration values at known fixed addresses so that when re-flashing the board, we can go find the existing values. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make ao_tick_count visibleKeith Packard2012-07-16
| | | | | | | Necessary to fetch it when interrupts are already disabled as we can't call ao_time then. Signed-off-by: Keith Packard <keithp@keithp.com>
* src: Add explicit 'pin' argument to ao_enable_outputKeith Packard2012-07-14
| | | | | | | This lets the cc1111 use the atomic bit operation instead of a mask, which is immune to interrupt issues as well as being a shorter code sequence. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Expose ao_gpio_set which sets a specific GPIO pinKeith Packard2012-07-14
| | | | | | Will need versions for other architectures Signed-off-by: Keith Packard <keithp@keithp.com>
* stm: running out of memory in MM -- reduce stack to 668 bytesKeith Packard2012-07-14
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Force STM stack to start at the top of RAMKeith Packard2012-07-14
| | | | | | | Using a fixed size means crashing if there's not enough space for that, or wasting memory if there's too much. Signed-off-by: Keith Packard <keithp@keithp.com>