clean up for porting - move platform specific stuff into outer project
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
// Created by MightyPork on 2018/02/23.
|
||||
//
|
||||
|
||||
#ifndef GEX_F072_CFG_UTILS_H
|
||||
#define GEX_F072_CFG_UTILS_H
|
||||
#ifndef GEX_CORE_CFG_UTILS_H
|
||||
#define GEX_CORE_CFG_UTILS_H
|
||||
|
||||
#include "platform.h"
|
||||
#include "rsc_enum.h"
|
||||
@@ -162,4 +162,4 @@ static inline int32_t cfg_i32_parse(const char *value, bool *suc)
|
||||
return (int32_t) avr_atoi(value);
|
||||
}
|
||||
|
||||
#endif //GEX_F072_CFG_UTILS_H
|
||||
#endif //GEX_CORE_CFG_UTILS_H
|
||||
|
||||
@@ -5,54 +5,11 @@
|
||||
#include "platform.h"
|
||||
#include "framework/resources.h"
|
||||
#include "debug_uart.h"
|
||||
#include "plat_compat.h"
|
||||
#include "hw_utils.h"
|
||||
#include "framework/system_settings.h"
|
||||
|
||||
#if USE_DEBUG_UART
|
||||
|
||||
#define DEBUG_USART_BAUD 115200
|
||||
|
||||
#if GEX_PLAT_F072_DISCOVERY || GEX_PLAT_F072_HUB || GEX_PLAT_F072_ZERO
|
||||
|
||||
#define DEBUG_USART USART1
|
||||
#define DEBUG_USART_RSC R_USART1
|
||||
#define DEBUG_USART_PORT 'A'
|
||||
#define DEBUG_USART_PIN 9
|
||||
#define DEBUG_USART_AF 1
|
||||
#define DEBUG_USART_PCLK PLAT_APB1_HZ
|
||||
|
||||
#elif GEX_PLAT_F103_BLUEPILL
|
||||
|
||||
#define DEBUG_USART USART2
|
||||
#define DEBUG_USART_RSC R_USART2
|
||||
#define DEBUG_USART_PORT 'A'
|
||||
#define DEBUG_USART_PIN 2
|
||||
#define DEBUG_USART_PCLK PLAT_APB1_HZ
|
||||
|
||||
#elif GEX_PLAT_F303_DISCOVERY
|
||||
|
||||
#define DEBUG_USART USART3
|
||||
#define DEBUG_USART_RSC R_USART3
|
||||
#define DEBUG_USART_PORT 'D'
|
||||
#define DEBUG_USART_PIN 8
|
||||
#define DEBUG_USART_AF 7
|
||||
#define DEBUG_USART_PCLK PLAT_APB1_HZ
|
||||
|
||||
#elif GEX_PLAT_F407_DISCOVERY
|
||||
|
||||
#define DEBUG_USART USART2
|
||||
#define DEBUG_USART_RSC R_USART2
|
||||
#define DEBUG_USART_PORT 'A'
|
||||
#define DEBUG_USART_PIN 2
|
||||
#define DEBUG_USART_AF 7
|
||||
#define DEBUG_USART_PCLK PLAT_APB1_HZ
|
||||
|
||||
#else
|
||||
#error "BAD PLATFORM!"
|
||||
#endif
|
||||
|
||||
|
||||
static bool debug_uart_inited = false;
|
||||
static bool debug_uart_preinited = false;
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
// Provides a trampoline system for redirecting IRQ calls to assigned callbacks.
|
||||
//
|
||||
|
||||
#ifndef GEX_F072_IRQ_DISPATCHER_H
|
||||
#define GEX_F072_IRQ_DISPATCHER_H
|
||||
#ifndef GEX_CORE_IRQ_DISPATCHER_H
|
||||
#define GEX_CORE_IRQ_DISPATCHER_H
|
||||
|
||||
// Dummy peripherals for use with the
|
||||
extern void * const EXTIS[16];
|
||||
@@ -42,4 +42,4 @@ void irqd_attach(void *periph, IrqCallback callback, void *data);
|
||||
*/
|
||||
void* irqd_detach(void *periph, IrqCallback callback);
|
||||
|
||||
#endif //GEX_F072_IRQ_DISPATCHER_H
|
||||
#endif //GEX_CORE_IRQ_DISPATCHER_H
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
// Created by MightyPork on 2018/02/04.
|
||||
//
|
||||
|
||||
#ifndef GEX_F072_LL_EXTENSION_H
|
||||
#define GEX_F072_LL_EXTENSION_H
|
||||
#ifndef GEX_CORE_LL_EXTENSION_H
|
||||
#define GEX_CORE_LL_EXTENSION_H
|
||||
|
||||
#include "platform.h"
|
||||
|
||||
@@ -57,4 +57,4 @@ static inline void LL_DMA_ClearFlags(DMA_TypeDef *DMAx, uint8_t channel)
|
||||
}
|
||||
|
||||
|
||||
#endif //GEX_F072_LL_EXTENSION_H
|
||||
#endif //GEX_CORE_LL_EXTENSION_H
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
#ifndef GEX_LOCK_JUMPER_H
|
||||
#define GEX_LOCK_JUMPER_H
|
||||
|
||||
#include "plat_compat.h"
|
||||
|
||||
/**
|
||||
* Init the lock jumper subsystem
|
||||
*/
|
||||
|
||||
@@ -1,330 +0,0 @@
|
||||
//
|
||||
// Created by MightyPork on 2017/12/08.
|
||||
//
|
||||
|
||||
#ifndef GEX_PLAT_COMPAT_H
|
||||
#define GEX_PLAT_COMPAT_H
|
||||
|
||||
#define VFS_DRIVE_NAME "GEX"
|
||||
|
||||
// -------- Priorities -------------
|
||||
#define TSK_MAIN_PRIO osPriorityNormal
|
||||
#define TSK_JOBS_PRIO osPriorityHigh
|
||||
#define TSK_TIMERS_PRIO 4 // this must be in the 0-7 range
|
||||
|
||||
// -------- Static buffers ---------
|
||||
// USB / VFS task stack size
|
||||
#if DISABLE_MSC
|
||||
#define TSK_STACK_MAIN 100 // without MSC the stack usage is significantly lower
|
||||
#else
|
||||
#define TSK_STACK_MAIN 160
|
||||
#endif
|
||||
|
||||
// 180 is normally enough if not doing extensive debug logging
|
||||
#define TSK_STACK_MSG 220 // TF message handler task stack size (all unit commands run on this thread)
|
||||
#define TSK_STACK_IDLE 64 //configMINIMAL_STACK_SIZE
|
||||
#define TSK_STACK_TIMERS 64 //configTIMER_TASK_STACK_DEPTH
|
||||
|
||||
#define PLAT_HEAP_SIZE 4096
|
||||
|
||||
|
||||
|
||||
#define BULK_READ_BUF_LEN 256 // Buffer for TF bulk reads
|
||||
#define UNIT_TMP_LEN 256 // Buffer for internal unit operations
|
||||
|
||||
#define FLASH_SAVE_BUF_LEN 128 // Malloc'd buffer for saving to flash
|
||||
|
||||
#define MSG_QUE_SLOT_SIZE 64 // FIXME this should be possible to lower, but there's some bug with bulk transfer / INI parser
|
||||
#define RX_QUE_CAPACITY 16 // TinyFrame rx queue size (64 bytes each)
|
||||
|
||||
#define TF_MAX_PAYLOAD_RX 512 // TF max Rx payload
|
||||
#define TF_SENDBUF_LEN 512 // TF transmit buffer (can be less than a full frame)
|
||||
|
||||
#define TF_MAX_ID_LST 4 // Frame ID listener count
|
||||
#define TF_MAX_TYPE_LST 6 // Frame Type listener count
|
||||
#define TF_MAX_GEN_LST 1 // Generic listener count
|
||||
|
||||
#define USBD_MAX_STR_DESC_SIZ 64 // Descriptor conversion buffer (used for converting ASCII to UTF-16, must be 2x the size of the longest descriptor)
|
||||
#define MSC_MEDIA_PACKET 512 // Mass storage sector size (packet)
|
||||
|
||||
#define INI_KEY_MAX 20 // Ini parser key buffer
|
||||
#define INI_VALUE_MAX 30 // Ini parser value buffer
|
||||
|
||||
// -------- Stack buffers ----------
|
||||
#define DBG_BUF_LEN 100 // Size of the snprintf buffer for debug messages
|
||||
#define ERR_MSG_STR_LEN 64 // Error message buffer size
|
||||
#define IWBUFFER_LEN 80 // Ini writer buffer for sprintf
|
||||
|
||||
// -------- Timeouts ------------
|
||||
#define TF_PARSER_TIMEOUT_TICKS 100 // Timeout for receiving & parsing a frame
|
||||
#define BULK_LST_TIMEOUT_MS 2000 // timeout for the bulk transaction to expire
|
||||
#define MSG_QUE_POST_TIMEOUT 200 // Time to post to the messages / jobs queue
|
||||
|
||||
// -------- Platform specific includes and defines ---------
|
||||
|
||||
/// Feature flags:
|
||||
// PLAT_FLASHBANKS - has the Banks field on the Flash config struct
|
||||
// PLAT_NO_FLOATING_INPUTS - can't have digital inputs with no pull resistor
|
||||
// PLAT_USB_PHYCLOCK - requires special config of phy clock for USB
|
||||
// PLAT_USB_OTGFS - uses the USB OTG IP, needs different config code
|
||||
// PLAT_LOCK_BTN - use a lock button instead of a lock jumper (push to toggle)
|
||||
// PLAT_LOCK_1CLOSED - lock jumper is active (closed / button pressed) in logical 1
|
||||
// PLAT_NO_AFNUM - legacy platform without numbered AF alternatives
|
||||
// PLAT_FULL_XTAL - use two-wire xtal attachment
|
||||
|
||||
// SUPPORT_NRF
|
||||
|
||||
#if defined(GEX_PLAT_F103_BLUEPILL)
|
||||
|
||||
// platform name for the version string
|
||||
#define GEX_PLATFORM "STM32F103-Bluepill"
|
||||
#define PLAT_AHB_MHZ 72
|
||||
#define PLAT_APB1_MHZ 36
|
||||
|
||||
// feature flags
|
||||
#define PLAT_FLASHBANKS 1
|
||||
#define PLAT_NO_FLOATING_INPUTS 1
|
||||
#define PLAT_NO_AFNUM 1
|
||||
|
||||
#include <stm32f1xx.h>
|
||||
#include <stm32f1xx_hal.h>
|
||||
#include <stm32f1xx_ll_adc.h>
|
||||
#include <stm32f1xx_ll_bus.h>
|
||||
#include <stm32f1xx_ll_cortex.h>
|
||||
#include <stm32f1xx_ll_crc.h>
|
||||
#include <stm32f1xx_ll_dac.h>
|
||||
#include <stm32f1xx_ll_dma.h>
|
||||
#include <stm32f1xx_ll_exti.h>
|
||||
#include <stm32f1xx_ll_fsmc.h>
|
||||
#include <stm32f1xx_ll_gpio.h>
|
||||
#include <stm32f1xx_ll_i2c.h>
|
||||
#include <stm32f1xx_ll_iwdg.h>
|
||||
#include <stm32f1xx_ll_pwr.h>
|
||||
#include <stm32f1xx_ll_rcc.h>
|
||||
#include <stm32f1xx_ll_rtc.h>
|
||||
#include <stm32f1xx_ll_sdmmc.h>
|
||||
#include <stm32f1xx_ll_spi.h>
|
||||
#include <stm32f1xx_ll_system.h>
|
||||
#include <stm32f1xx_ll_tim.h>
|
||||
#include <stm32f1xx_ll_usart.h>
|
||||
#include <stm32f1xx_ll_usb.h>
|
||||
#include <stm32f1xx_ll_utils.h>
|
||||
#include <stm32f1xx_ll_wwdg.h>
|
||||
|
||||
// size, determines position of the flash storage
|
||||
#define FLASH_SIZE (64*1024)
|
||||
#define SETTINGS_BLOCK_SIZE (1024*2) // this must be a multiple of FLASH pages
|
||||
#define SETTINGS_FLASH_ADDR (0x08000000 + FLASH_SIZE - SETTINGS_BLOCK_SIZE)
|
||||
|
||||
// Number of GPIO ports A,B,C...
|
||||
#define PORTS_COUNT 5
|
||||
|
||||
// Lock jumper config - re-use BOOT1, closed = LOW
|
||||
#define LOCK_JUMPER_PORT 'B'
|
||||
#define LOCK_JUMPER_PIN 2
|
||||
|
||||
// Status LED config
|
||||
#define STATUS_LED_PORT 'C'
|
||||
#define STATUS_LED_PIN 13
|
||||
|
||||
#elif defined(STM32F072xB)
|
||||
|
||||
#define PLAT_AHB_MHZ 48
|
||||
#define PLAT_APB1_MHZ 48
|
||||
|
||||
#include <stm32f0xx.h>
|
||||
#include <stm32f0xx_ll_adc.h>
|
||||
#include <stm32f0xx_ll_bus.h>
|
||||
#include <stm32f0xx_ll_comp.h>
|
||||
#include <stm32f0xx_ll_cortex.h>
|
||||
#include <stm32f0xx_ll_crc.h>
|
||||
#include <stm32f0xx_ll_crs.h>
|
||||
#include <stm32f0xx_ll_dac.h>
|
||||
#include <stm32f0xx_ll_dma.h>
|
||||
#include <stm32f0xx_ll_exti.h>
|
||||
#include <stm32f0xx_ll_gpio.h>
|
||||
#include <stm32f0xx_ll_i2c.h>
|
||||
#include <stm32f0xx_ll_iwdg.h>
|
||||
#include <stm32f0xx_ll_pwr.h>
|
||||
#include <stm32f0xx_ll_rcc.h>
|
||||
#include <stm32f0xx_ll_rtc.h>
|
||||
#include <stm32f0xx_ll_spi.h>
|
||||
#include <stm32f0xx_ll_system.h>
|
||||
#include <stm32f0xx_ll_tim.h>
|
||||
#include <stm32f0xx_ll_usart.h>
|
||||
#include <stm32f0xx_ll_utils.h>
|
||||
#include <stm32f0xx_ll_wwdg.h>
|
||||
|
||||
// size, determines position of the flash storage
|
||||
#define FLASH_SIZE (128*1024)
|
||||
#define SETTINGS_BLOCK_SIZE (1024*2) // this must be a multiple of FLASH pages
|
||||
#define SETTINGS_FLASH_ADDR (0x08000000 + FLASH_SIZE - SETTINGS_BLOCK_SIZE)
|
||||
|
||||
// Number of GPIO ports A,B,C...
|
||||
#define PORTS_COUNT 6
|
||||
|
||||
#if defined(GEX_PLAT_F072_DISCOVERY)
|
||||
// platform name for the version string
|
||||
#define GEX_PLATFORM "STM32F072-Discovery"
|
||||
|
||||
// Lock jumper config
|
||||
#define LOCK_JUMPER_PORT 'A'
|
||||
#define LOCK_JUMPER_PIN 0
|
||||
#define PLAT_LOCK_BTN 1 // toggle button instead of a jumper
|
||||
#define PLAT_LOCK_1CLOSED 1 // toggle button active in log. 1
|
||||
|
||||
// Status LED config
|
||||
#define STATUS_LED_PORT 'C'
|
||||
#define STATUS_LED_PIN 6 // RED LED "UP"
|
||||
#elif defined(GEX_PLAT_F072_HUB)
|
||||
// platform name for the version string
|
||||
#define GEX_PLATFORM "STM32F072-HUB"
|
||||
|
||||
#define PLAT_FULL_XTAL 1
|
||||
|
||||
// Lock jumper config
|
||||
#define LOCK_JUMPER_PORT 'D'
|
||||
#define LOCK_JUMPER_PIN 2
|
||||
#define PLAT_LOCK_BTN 1 // toggle button instead of a jumper
|
||||
#define PLAT_LOCK_1CLOSED 0 // toggle button active in log. 1
|
||||
|
||||
// Status LED config
|
||||
#define STATUS_LED_PORT 'A'
|
||||
#define STATUS_LED_PIN 15 // RED LED "UP"
|
||||
#elif defined(GEX_PLAT_F072_ZERO)
|
||||
// platform name for the version string
|
||||
#define GEX_PLATFORM "STM32F072-ZERO"
|
||||
|
||||
#define PLAT_FULL_XTAL 1
|
||||
|
||||
// Lock jumper config
|
||||
#define LOCK_JUMPER_PORT 'D'
|
||||
#define LOCK_JUMPER_PIN 2
|
||||
#define PLAT_LOCK_BTN 1 // toggle button instead of a jumper
|
||||
#define PLAT_LOCK_1CLOSED 1 // toggle button active in log. 1
|
||||
|
||||
// Status LED config
|
||||
#define STATUS_LED_PORT 'A'
|
||||
#define STATUS_LED_PIN 15 // RED LED "UP"
|
||||
|
||||
#define SUPPORT_NRF 1
|
||||
#else
|
||||
#error Bad platform
|
||||
#endif
|
||||
|
||||
#elif defined(GEX_PLAT_F303_DISCOVERY)
|
||||
|
||||
// platform name for the version string
|
||||
#define GEX_PLATFORM "STM32F303-Discovery"
|
||||
#define PLAT_AHB_MHZ 72
|
||||
#define PLAT_APB1_MHZ 36
|
||||
#define PLAT_APB2_MHZ 72
|
||||
|
||||
#include <stm32f3xx.h>
|
||||
#include <stm32f3xx_hal.h>
|
||||
#include <stm32f3xx_ll_adc.h>
|
||||
#include <stm32f3xx_ll_bus.h>
|
||||
#include <stm32f3xx_ll_comp.h>
|
||||
#include <stm32f3xx_ll_cortex.h>
|
||||
#include <stm32f3xx_ll_crc.h>
|
||||
#include <stm32f3xx_ll_dac.h>
|
||||
#include <stm32f3xx_ll_dma.h>
|
||||
#include <stm32f3xx_ll_exti.h>
|
||||
#include <stm32f3xx_ll_fmc.h>
|
||||
#include <stm32f3xx_ll_gpio.h>
|
||||
#include <stm32f3xx_ll_hrtim.h>
|
||||
#include <stm32f3xx_ll_i2c.h>
|
||||
#include <stm32f3xx_ll_iwdg.h>
|
||||
#include <stm32f3xx_ll_opamp.h>
|
||||
#include <stm32f3xx_ll_pwr.h>
|
||||
#include <stm32f3xx_ll_rcc.h>
|
||||
#include <stm32f3xx_ll_rtc.h>
|
||||
#include <stm32f3xx_ll_spi.h>
|
||||
#include <stm32f3xx_ll_system.h>
|
||||
#include <stm32f3xx_ll_tim.h>
|
||||
#include <stm32f3xx_ll_usart.h>
|
||||
#include <stm32f3xx_ll_utils.h>
|
||||
#include <stm32f3xx_ll_wwdg.h>
|
||||
|
||||
// size, determines position of the flash storage
|
||||
#define FLASH_SIZE (256*1024)
|
||||
#define SETTINGS_BLOCK_SIZE (1024*2) // this must be a multiple of FLASH pages
|
||||
#define SETTINGS_FLASH_ADDR (0x08000000 + FLASH_SIZE - SETTINGS_BLOCK_SIZE)
|
||||
|
||||
// Number of GPIO ports A,B,C...
|
||||
#define PORTS_COUNT 6
|
||||
|
||||
// Lock jumper config
|
||||
#define LOCK_JUMPER_PORT 'A'
|
||||
#define LOCK_JUMPER_PIN 0
|
||||
#define PLAT_LOCK_BTN 1 // toggle button instead of a jumper
|
||||
#define PLAT_LOCK_1CLOSED 1 // toggle button active in log. 1
|
||||
|
||||
// Status LED config
|
||||
#define STATUS_LED_PORT 'E'
|
||||
#define STATUS_LED_PIN 13
|
||||
|
||||
#elif defined(GEX_PLAT_F407_DISCOVERY)
|
||||
|
||||
// platform name for the version string
|
||||
#define GEX_PLATFORM "STM32F407-Discovery"
|
||||
#define PLAT_AHB_MHZ 168
|
||||
#define PLAT_APB1_MHZ 48
|
||||
#define PLAT_APB2_MHZ 96
|
||||
|
||||
#define PLAT_USB_PHYCLOCK 1
|
||||
#define PLAT_USB_OTGFS 1
|
||||
|
||||
#include <stm32f4xx.h>
|
||||
#include <stm32f4xx_hal.h>
|
||||
#include <stm32f4xx_ll_adc.h>
|
||||
#include <stm32f4xx_ll_crc.h>
|
||||
#include <stm32f4xx_ll_dac.h>
|
||||
#include <stm32f4xx_ll_dma.h>
|
||||
#include <stm32f4xx_ll_dma2d.h>
|
||||
#include <stm32f4xx_ll_exti.h>
|
||||
#include <stm32f4xx_ll_fmc.h>
|
||||
#include <stm32f4xx_ll_fsmc.h>
|
||||
#include <stm32f4xx_ll_gpio.h>
|
||||
#include <stm32f4xx_ll_i2c.h>
|
||||
#include <stm32f4xx_ll_lptim.h>
|
||||
#include <stm32f4xx_ll_pwr.h>
|
||||
#include <stm32f4xx_ll_rcc.h>
|
||||
#include <stm32f4xx_ll_rng.h>
|
||||
#include <stm32f4xx_ll_rtc.h>
|
||||
#include <stm32f4xx_ll_sdmmc.h>
|
||||
#include <stm32f4xx_ll_spi.h>
|
||||
#include <stm32f4xx_ll_tim.h>
|
||||
#include <stm32f4xx_ll_usart.h>
|
||||
#include <stm32f4xx_ll_usb.h>
|
||||
#include <stm32f4xx_ll_utils.h>
|
||||
|
||||
// size, determines position of the flash storage
|
||||
|
||||
// we use the first 128kB sector. Unfortunately the whole sector must be erased before writing.
|
||||
#define SETTINGS_FLASH_SECTOR FLASH_SECTOR_5
|
||||
#define SETTINGS_BLOCK_SIZE (1024*2)
|
||||
#define SETTINGS_FLASH_ADDR (0x08000000 + (16*4+64)*1024)
|
||||
|
||||
// Number of GPIO ports A,B,C...
|
||||
#define PORTS_COUNT 6
|
||||
|
||||
// Lock jumper config
|
||||
#define LOCK_JUMPER_PORT 'A'
|
||||
#define LOCK_JUMPER_PIN 0
|
||||
#define PLAT_LOCK_BTN 1 // toggle button instead of a jumper
|
||||
#define PLAT_LOCK_1CLOSED 1 // toggle button active in log. 1
|
||||
|
||||
// Status LED config
|
||||
#define STATUS_LED_PORT 'D' // orange
|
||||
#define STATUS_LED_PIN 13
|
||||
|
||||
#else
|
||||
#error "BAD PLATFORM! Please select GEX platform using a -DGEX_PLAT_* compile flag"
|
||||
#endif
|
||||
|
||||
#define PLAT_AHB_HZ (PLAT_AHB_MHZ*1000000)
|
||||
#define PLAT_APB1_HZ (PLAT_APB1_MHZ*1000000)
|
||||
#define PLAT_APB2_HZ (PLAT_APB2_MHZ*1000000)
|
||||
|
||||
#endif //GEX_PLAT_COMPAT_H
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// Created by MightyPork on 2018/07/07.
|
||||
//
|
||||
|
||||
#ifndef GEX_CORE_PLAT_CONFIG_H
|
||||
#define GEX_CORE_PLAT_CONFIG_H
|
||||
|
||||
#define VFS_DRIVE_NAME "GEX"
|
||||
|
||||
// -------- Priorities -------------
|
||||
#define TSK_MAIN_PRIO osPriorityNormal
|
||||
#define TSK_JOBS_PRIO osPriorityHigh
|
||||
#define TSK_TIMERS_PRIO 4 // this must be in the 0-7 range
|
||||
|
||||
// -------- Static buffers ---------
|
||||
// USB / VFS task stack size
|
||||
#if DISABLE_MSC
|
||||
#define TSK_STACK_MAIN 100 // without MSC the stack usage is significantly lower
|
||||
#else
|
||||
#define TSK_STACK_MAIN 160
|
||||
#endif
|
||||
|
||||
// 180 is normally enough if not doing extensive debug logging
|
||||
#define TSK_STACK_MSG 220 // TF message handler task stack size (all unit commands run on this thread)
|
||||
#define TSK_STACK_IDLE 64 //configMINIMAL_STACK_SIZE
|
||||
#define TSK_STACK_TIMERS 64 //configTIMER_TASK_STACK_DEPTH
|
||||
|
||||
#define PLAT_HEAP_SIZE 4096
|
||||
|
||||
|
||||
|
||||
#define BULK_READ_BUF_LEN 256 // Buffer for TF bulk reads
|
||||
#define UNIT_TMP_LEN 256 // Buffer for internal unit operations
|
||||
|
||||
#define FLASH_SAVE_BUF_LEN 128 // Malloc'd buffer for saving to flash
|
||||
|
||||
#define MSG_QUE_SLOT_SIZE 64 // FIXME this should be possible to lower, but there's some bug with bulk transfer / INI parser
|
||||
#define RX_QUE_CAPACITY 16 // TinyFrame rx queue size (64 bytes each)
|
||||
|
||||
#define TF_MAX_PAYLOAD_RX 512 // TF max Rx payload
|
||||
#define TF_SENDBUF_LEN 512 // TF transmit buffer (can be less than a full frame)
|
||||
|
||||
#define TF_MAX_ID_LST 4 // Frame ID listener count
|
||||
#define TF_MAX_TYPE_LST 6 // Frame Type listener count
|
||||
#define TF_MAX_GEN_LST 1 // Generic listener count
|
||||
|
||||
#define USBD_MAX_STR_DESC_SIZ 64 // Descriptor conversion buffer (used for converting ASCII to UTF-16, must be 2x the size of the longest descriptor)
|
||||
#define MSC_MEDIA_PACKET 512 // Mass storage sector size (packet)
|
||||
|
||||
#define INI_KEY_MAX 20 // Ini parser key buffer
|
||||
#define INI_VALUE_MAX 30 // Ini parser value buffer
|
||||
|
||||
// -------- Stack buffers ----------
|
||||
#define DBG_BUF_LEN 100 // Size of the snprintf buffer for debug messages
|
||||
#define ERR_MSG_STR_LEN 64 // Error message buffer size
|
||||
#define IWBUFFER_LEN 80 // Ini writer buffer for sprintf
|
||||
|
||||
// -------- Timeouts ------------
|
||||
#define TF_PARSER_TIMEOUT_TICKS 100 // Timeout for receiving & parsing a frame
|
||||
#define BULK_LST_TIMEOUT_MS 2000 // timeout for the bulk transaction to expire
|
||||
#define MSG_QUE_POST_TIMEOUT 200 // Time to post to the messages / jobs queue
|
||||
|
||||
|
||||
#endif //GEX_CORE_PLAT_CONFIG_H
|
||||
+6
-208
@@ -12,6 +12,8 @@
|
||||
|
||||
#include "units_manifest.h"
|
||||
|
||||
extern uint32_t plat_init_resources2(void);
|
||||
|
||||
// TODO split this and the plat_compat files to per-platform ones stored in the platform project
|
||||
|
||||
void plat_init_resources(void)
|
||||
@@ -26,217 +28,16 @@ void plat_init_resources(void)
|
||||
hw_periph_clock_enable(DMA2);
|
||||
#endif
|
||||
|
||||
// --- Common unit drivers ---
|
||||
|
||||
#if HAVE_TEST_UNIT
|
||||
ureg_add_type(&UNIT_TEST);
|
||||
#endif
|
||||
|
||||
// EXTI are always available
|
||||
rsc_free_range(NULL, R_EXTI0, R_EXTI15);
|
||||
|
||||
// --- platform specific resource releases and claims ---
|
||||
|
||||
#if defined(GEX_PLAT_F103_BLUEPILL)
|
||||
// Platform STM32F103C8T6 Bluepill ($4 board from eBay)
|
||||
|
||||
// Units supported by the platform (known to work correctly)
|
||||
|
||||
// free all present resources
|
||||
{
|
||||
rsc_free_range(NULL, R_ADC1, R_ADC2);
|
||||
rsc_free_range(NULL, R_I2C1, R_I2C2);
|
||||
rsc_free_range(NULL, R_SPI1, R_SPI2);
|
||||
rsc_free_range(NULL, R_TIM1, R_TIM4);
|
||||
rsc_free_range(NULL, R_USART1, R_USART3);
|
||||
rsc_free_range(NULL, R_PA0, R_PA15);
|
||||
rsc_free_range(NULL, R_PB0, R_PB15);
|
||||
rsc_free_range(NULL, R_PC13, R_PC15);
|
||||
rsc_free_range(NULL, R_PD0, R_PD1);
|
||||
}
|
||||
|
||||
// Claim resources not available due to board layout or internal usage
|
||||
{
|
||||
// HAL timebase
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_TIM1);
|
||||
// HSE crystal
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PD0);
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PD1);
|
||||
// SWD
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA13);
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA14);
|
||||
// USB
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA11);
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA12);
|
||||
// BOOT pin(s)
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PB2); // BOOT1
|
||||
}
|
||||
#elif defined(STM32F072xB)
|
||||
// Platform STM32F073RBT
|
||||
|
||||
// Additional GPIO ports
|
||||
__HAL_RCC_GPIOF_CLK_ENABLE();
|
||||
|
||||
// Units supported by the platform (known to work correctly)
|
||||
// - this is a macro created in the Makefile, registering all enabled units
|
||||
UNITS_REGISTER_CMD
|
||||
|
||||
// Free all present resources
|
||||
{
|
||||
rsc_free(NULL, R_ADC1);
|
||||
// rsc_free(NULL, R_CAN1);
|
||||
// rsc_free_range(NULL, R_COMP1, R_COMP2);
|
||||
rsc_free(NULL, R_DAC1);
|
||||
// rsc_free(NULL, R_HDMI_CEC);
|
||||
rsc_free(NULL, R_TSC);
|
||||
rsc_free_range(NULL, R_I2C1, R_I2C2);
|
||||
// rsc_free_range(NULL, R_I2S1, R_I2S2);
|
||||
rsc_free_range(NULL, R_SPI1, R_SPI2);
|
||||
rsc_free_range(NULL, R_TIM1, R_TIM3);
|
||||
rsc_free_range(NULL, R_TIM6, R_TIM7);
|
||||
rsc_free_range(NULL, R_TIM14, R_TIM17);
|
||||
rsc_free_range(NULL, R_USART1, R_USART4);
|
||||
rsc_free_range(NULL, R_DMA1_1, R_DMA1_7);
|
||||
|
||||
rsc_free_range(NULL, R_PA0, R_PA15);
|
||||
rsc_free_range(NULL, R_PB0, R_PB15);
|
||||
rsc_free_range(NULL, R_PC0, R_PC15);
|
||||
rsc_free(NULL, R_PD2);
|
||||
rsc_free_range(NULL, R_PF0, R_PF1);
|
||||
}
|
||||
|
||||
// Claim resources not available due to board layout or internal usage
|
||||
{
|
||||
// HAL timebase
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_TIM17);
|
||||
// HSE crystal
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PF0);
|
||||
|
||||
#if PLAT_FULL_XTAL
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PF1); // - not used in BYPASS mode
|
||||
#endif
|
||||
|
||||
// SWD
|
||||
// rv |= rsc_claim(&UNIT_SYSTEM, R_PA13);
|
||||
// rv |= rsc_claim(&UNIT_SYSTEM, R_PA14);
|
||||
// USB
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA11);
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA12);
|
||||
|
||||
#if defined(GEX_PLAT_F072_ZERO)
|
||||
// unconnected pins
|
||||
rv |= rsc_claim_range(&UNIT_PLATFORM, R_PC0, R_PC1);
|
||||
rv |= rsc_claim_range(&UNIT_PLATFORM, R_PC4, R_PC9);
|
||||
#endif
|
||||
}
|
||||
#elif defined(GEX_PLAT_F303_DISCOVERY)
|
||||
// Platform STM32F303VCT
|
||||
|
||||
// Additional GPIO ports
|
||||
__HAL_RCC_GPIOF_CLK_ENABLE();
|
||||
|
||||
// Units supported by the platform (known to work correctly)
|
||||
// ureg_add_type(&UNIT_XYZ);
|
||||
|
||||
// Free all present resources
|
||||
{
|
||||
rsc_free_range(NULL, R_ADC1, R_ADC4);
|
||||
// rsc_free(NULL, R_CAN1);
|
||||
// rsc_free_range(NULL, R_COMP1, R_COMP7);
|
||||
// rsc_free(NULL, R_HDMI_CEC);
|
||||
rsc_free(NULL, R_DAC1);
|
||||
rsc_free_range(NULL, R_I2C1, R_I2C2);
|
||||
rsc_free_range(NULL, R_I2S2, R_I2S3);
|
||||
// rsc_free_range(NULL, R_OPAMP1, R_OPAMP4);
|
||||
rsc_free_range(NULL, R_SPI1, R_SPI3);
|
||||
rsc_free_range(NULL, R_TIM1, R_TIM4);
|
||||
rsc_free_range(NULL, R_TIM6, R_TIM8);
|
||||
rsc_free_range(NULL, R_TIM15, R_TIM17);
|
||||
rsc_free(NULL, R_TSC);
|
||||
rsc_free_range(NULL, R_USART1, R_USART5);
|
||||
|
||||
rsc_free_range(NULL, R_PA0, R_PA15);
|
||||
rsc_free_range(NULL, R_PB0, R_PB15);
|
||||
rsc_free_range(NULL, R_PC0, R_PC15);
|
||||
rsc_free_range(NULL, R_PD0, R_PD15);
|
||||
rsc_free_range(NULL, R_PE0, R_PE15);
|
||||
|
||||
rsc_free_range(NULL, R_PF0, R_PF2);
|
||||
rsc_free(NULL, R_PF4);
|
||||
rsc_free_range(NULL, R_PF9, R_PF10);
|
||||
}
|
||||
|
||||
// Claim resources not available due to board layout or internal usage
|
||||
{
|
||||
// HAL timebase
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_TIM1);
|
||||
// HSE crystal
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PF0);
|
||||
//rv |= rsc_claim(&UNIT_SYSTEM, R_PF1); // - not used in BYPASS mode
|
||||
// SWD
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA13);
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA14);
|
||||
// USB
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA11);
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA12);
|
||||
// BOOT pin(s)
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PB2); // BOOT1
|
||||
}
|
||||
#elif defined(GEX_PLAT_F407_DISCOVERY)
|
||||
// Platform STM32F407VGT
|
||||
|
||||
// Additional GPIO ports
|
||||
__HAL_RCC_GPIOF_CLK_ENABLE();
|
||||
|
||||
// Units supported by the platform (known to work correctly)
|
||||
// ureg_add_type(&UNIT_XYZ);
|
||||
|
||||
// Free all present resources
|
||||
{
|
||||
rsc_free_range(NULL, R_ADC1, R_ADC3);
|
||||
// rsc_free_range(NULL, R_CAN1, R_CAN2);
|
||||
// rsc_free_range(NULL, R_COMP1, R_COMP7);
|
||||
rsc_free(NULL, R_DAC1);
|
||||
// rsc_free(NULL, R_DCMI);
|
||||
// rsc_free(NULL, R_ETH);
|
||||
// rsc_free(NULL, R_FSMC);
|
||||
rsc_free_range(NULL, R_I2C1, R_I2C3);
|
||||
rsc_free_range(NULL, R_I2S2, R_I2S3);
|
||||
// rsc_free(NULL, R_SDIO);
|
||||
rsc_free_range(NULL, R_SPI1, R_SPI3);
|
||||
rsc_free_range(NULL, R_TIM1, R_TIM14);
|
||||
rsc_free_range(NULL, R_USART1, R_USART3);
|
||||
rsc_free(NULL, R_USART6);
|
||||
|
||||
rsc_free_range(NULL, R_PA0, R_PA15);
|
||||
rsc_free_range(NULL, R_PB0, R_PB15);
|
||||
rsc_free_range(NULL, R_PC0, R_PC15);
|
||||
rsc_free_range(NULL, R_PD0, R_PD15);
|
||||
rsc_free_range(NULL, R_PE0, R_PE15);
|
||||
// also has 2 PH pins
|
||||
|
||||
// F407 appears to have fewer GPIOs than F303?
|
||||
}
|
||||
|
||||
// Claim resources not available due to board layout or internal usage
|
||||
{
|
||||
// HAL timebase
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_TIM1);
|
||||
// HSE crystal
|
||||
// H0 and H1
|
||||
// SWD
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA13);
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA14);
|
||||
// USB
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA11);
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PA12);
|
||||
// BOOT pin(s)
|
||||
rv |= rsc_claim(&UNIT_SYSTEM, R_PB2); // BOOT1
|
||||
}
|
||||
#else
|
||||
#error "BAD PLATFORM!"
|
||||
#endif
|
||||
UNITS_REGISTER_CMD;
|
||||
|
||||
rv = plat_init_resources2();
|
||||
assert_param(rv == 0);
|
||||
}
|
||||
|
||||
@@ -250,13 +51,10 @@ void plat_usb_reconnect(void)
|
||||
{
|
||||
if (gActiveComport != COMPORT_USB) return;
|
||||
|
||||
// TODO add better reset methods available on different chips
|
||||
|
||||
// TODO add other reset methods available on different chips (e.g. externam FET)
|
||||
USBD_LL_Reset(&hUsbDeviceFS);
|
||||
|
||||
#if defined(GEX_PLAT_F103_BLUEPILL)
|
||||
// F103 doesn't have pull-up control
|
||||
#else
|
||||
#if PLAT_USB_PU_CTL
|
||||
HAL_PCD_DevDisconnect(&hpcd_USB_FS);
|
||||
osDelay(100);
|
||||
HAL_PCD_DevConnect(&hpcd_USB_FS);
|
||||
|
||||
@@ -17,8 +17,15 @@
|
||||
|
||||
// FreeRTOS includes
|
||||
#include <cmsis_os.h>
|
||||
// platform-independent GEX config
|
||||
#include "plat_config.h"
|
||||
// platform-specific stuff (includes stm32 driver headers)
|
||||
#include "plat_compat.h"
|
||||
|
||||
#define PLAT_AHB_HZ (PLAT_AHB_MHZ*1000000)
|
||||
#define PLAT_APB1_HZ (PLAT_APB1_MHZ*1000000)
|
||||
#define PLAT_APB2_HZ (PLAT_APB2_MHZ*1000000)
|
||||
|
||||
// assert_param, trap...
|
||||
#include "stm32_assert.h"
|
||||
// inIRQ etc
|
||||
|
||||
+3
-3
@@ -8,8 +8,8 @@
|
||||
// and interrupts.
|
||||
//
|
||||
|
||||
#ifndef GEX_F072_TIMEBASE_H
|
||||
#define GEX_F072_TIMEBASE_H
|
||||
#ifndef GEX_CORE_TIMEBASE_H
|
||||
#define GEX_CORE_TIMEBASE_H
|
||||
|
||||
#include "platform.h"
|
||||
|
||||
@@ -58,4 +58,4 @@ static inline uint32_t PTIM_MicroDelayAlign(void)
|
||||
return res;
|
||||
}
|
||||
|
||||
#endif //GEX_F072_TIMEBASE_H
|
||||
#endif //GEX_CORE_TIMEBASE_H
|
||||
|
||||
+3
-3
@@ -2,8 +2,8 @@
|
||||
// Created by MightyPork on 2018/02/27.
|
||||
//
|
||||
|
||||
#ifndef GEX_F072_WATCHDOG_H
|
||||
#define GEX_F072_WATCHDOG_H
|
||||
#ifndef GEX_CORE_WATCHDOG_H
|
||||
#define GEX_CORE_WATCHDOG_H
|
||||
|
||||
/**
|
||||
* Initialize the application watchdog
|
||||
@@ -29,4 +29,4 @@ void wd_resume(void);
|
||||
*/
|
||||
void wd_restart(void);
|
||||
|
||||
#endif //GEX_F072_WATCHDOG_H
|
||||
#endif //GEX_CORE_WATCHDOG_H
|
||||
|
||||
Reference in New Issue
Block a user