altos/lpc: Add boot loader
[fw/altos] / src / lpc / ao_arch.h
index 611821601b99b6bfcfd185f07e26ac85bb4c1b8c..a8d3cfc4435a0d03c77501e75ac0000684b1f5e0 100644 (file)
  * LPC11U14 definitions and code fragments for AltOS
  */
 
-#define AO_STACK_SIZE  512
+#define AO_STACK_SIZE  320
 
 #define AO_LED_TYPE    uint16_t
 
+#define AO_PORT_TYPE   uint32_t
+
 #ifndef AO_TICK_TYPE
 #define AO_TICK_TYPE   uint16_t
 #define AO_TICK_SIGNED int16_t
 #define __interrupt(n)
 #define __at(n)
 
-#define ao_arch_reboot() 
+#define ao_arch_reboot() arm_scb.aircr = ((0x05fa << 16) |     \
+                                         (0 << 15) |           \
+                                         (1 << 2) |            \
+                                         (0 << 1))
 
 #define ao_arch_nop()          asm("nop")
 
@@ -106,17 +111,34 @@ extern const uint32_t ao_radio_cal;
 #define AO_TIM91011_CLK                (2 * AO_PCLK2)
 #endif
 
-#define AO_STM_NVIC_HIGH_PRIORITY      4
-#define AO_STM_NVIC_CLOCK_PRIORITY     6
-#define AO_STM_NVIC_MED_PRIORITY       8
-#define AO_STM_NVIC_LOW_PRIORITY       10
+#define AO_LPC_NVIC_HIGH_PRIORITY      0
+#define AO_LPC_NVIC_CLOCK_PRIORITY     1
+#define AO_LPC_NVIC_MED_PRIORITY       2
+#define AO_LPC_NVIC_LOW_PRIORITY       3
 
 void
 ao_adc_init(void);
 
-
+#define AO_USB_OUT_EP  2
+#define AO_USB_IN_EP   3
 
 void
 ao_serial_init(void);
 
+/* SPI definitions */
+
+#define AO_SPI_SPEED_12MHz             4
+#define AO_SPI_SPEED_6MHz              8
+#define AO_SPI_SPEED_4MHz              12
+#define AO_SPI_SPEED_2MHz              24
+#define AO_SPI_SPEED_1MHz              48
+#define AO_SPI_SPEED_500kHz            96
+#define AO_SPI_SPEED_250kHz            192
+
+#define AO_SPI_SPEED_FAST      AO_SPI_SPEED_12MHz
+
+#define AO_BOOT_APPLICATION_BASE       ((uint32_t *) 0x00001000)
+#define AO_BOOT_LOADER_BASE            ((uint32_t *) 0x00000000)
+#define HAS_BOOT_LOADER                        1
+
 #endif /* _AO_ARCH_H_ */