summaryrefslogtreecommitdiff
path: root/src/stm
Commit message (Collapse)AuthorAge
...
* altos: Fix STM flash programmingKeith Packard2013-05-07
| | | | | | | | | | | 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>
* altos: Validate boot chain start addressKeith Packard2013-05-07
| | | | | | | | | | 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-05-07
| | | | | | | | | 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-05-07
| | | | | | | 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-05-07
| | | | | | | | 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-05-07
| | | | | | | 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-05-07
| | | | | | | 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>
* altos: Use SYSTICK on STM32LKeith Packard2013-05-07
| | | | | | | It's probably more power efficient than using one of the timers, and it's certainly easier to configure. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Use separate exception stack on STM32LKeith Packard2013-05-07
| | | | | | | | This reserves 512 bytes of memory for a stack, then makes sure that exceptions continue to use that stack while processes use the per-task stack. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Allow LCD segments to not be multiplexed across digitsKeith Packard2013-05-07
| | | | | | | This allows each LCD segment to be individually configured as to which COM and which SEG drives it, permitting maximum flexibility in wiring. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Remove USB EP0 taskKeith Packard2013-05-07
| | | | | | | Handl EP0 actions from interrupt handler. This allows USB to be used in a taskless environment, like the STM flash loader Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Always declare all romconfig variablesKeith Packard2013-05-07
| | | | | | | | I haven't figured out how to assign addresses for specific initialized variables, so we'll just have to always declare all of them and make sure that we add new ones at the end. Signed-off-by: Keith Packard <keithp@keithp.com>
* name change from MegaMetrum to TeleMegaBdale Garbee2013-04-22
|
* Move cortex toolchain to /opt/cortexKeith Packard2013-04-22
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altoslib/altosui: Carry receiver status around in AltosListenerStateKeith Packard2013-04-09
| | | | | | | | | | This moves the crc_errors into the new structure and adds a receiver battery voltage value there as well. Now the receiver status can be monitored separately from the flight status. That also means that code receiving state updates should be prepared to accept missing listener or flight state values. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Always check for idle IN buffer before sendingKeith Packard2013-03-31
| | | | | | | | | | | | | | Unlike the AVR and CC1111 USB drivers, the STM usb driver queues IN bytes in a local buffer instead of in the driver; this means that the driver is queuing bytes while the previous IN packet is queued for the host, which allows for overlapping execution. It also means that when the local buffer is full, we must check to see if the host has picked up the previous IN packet before trying to queue another IN packet for transmission. This is done by always waiting for the IN buffer to be ready before sending data. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Add debugging mechanism to STM USB driverKeith Packard2013-03-31
| | | | | | | | This adds a pile of debugging hooks to the USB driver to try and isolate various lockup-related issues. It's all disabled by default, of course. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Do not release interrupts from any pollchar functionKeith Packard2013-03-31
| | | | | | | | | | | getchar relies on interrupts being blocked across the pollchar calls and into the sleep call or it may go to sleep with data pending. This prefixes all pollchar functions with _ to indicate that they are to be called with interrupts blocked and eliminates all interrupt manipulation calls from within the pollchar functions. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Use FTDW, clear DATA bit. Disable backup write protectionKeith Packard2013-03-27
| | | | | | | | | The newer(?) chips in telegps didn't like the previous programming scheme, so go back to fixed time for write, which does an implicit erase before every write. Also clear the DATA bit, which is only needed for double word erase/programming. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Ensure SPI always sends 0xff during receiveKeith Packard2013-03-26
| | | | | | SD cards require 0xff when fetching data 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>