Skip to content

Commit ad00eda

Browse files
committed
Support esp32s2 for the first time
esp32s2: fix local_encoder, TMC4671, Motorpwm, VescCAN esp32s2: update gpio definition for my board esp32s2: add esp-idf patch esp32s2: fix adc function esp32s2: rebase to development branch add compiled bin file esp32s2: update twai api adc: reduce latency add esp32s3 support update tinyusb
1 parent e08f23c commit ad00eda

153 files changed

Lines changed: 32271 additions & 46 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build-firmware.yml

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ on:
66
branches:
77
- master
88
- development
9+
- feature/*
910
pull_request:
1011
branches:
1112
- master
@@ -40,6 +41,47 @@ jobs:
4041
name: OpenFFBoard-Firmware-${{ matrix.target }}
4142
path: ./Firmware/Output
4243

44+
Build-ESP32SX:
45+
strategy:
46+
fail-fast: false
47+
matrix:
48+
target: ['esp32s2', 'esp32s3'] # Targets to build
49+
runs-on: ubuntu-latest
50+
env:
51+
PROJECT_PATH: Firmware/Targets/ESP32SX
52+
container: espressif/idf:release-v4.4
53+
steps:
54+
- name: Checkout repo
55+
uses: actions/checkout@v2
56+
57+
- name: esp-idf build
58+
run: |
59+
pwd
60+
ls -al
61+
git config --global --add safe.directory $GITHUB_WORKSPACE
62+
git log -n1
63+
cd /opt/esp/idf
64+
git checkout c29343eb94d
65+
git submodule update --init --recursive
66+
tools/idf_tools.py --non-interactive install cmake
67+
./install.sh
68+
source ./export.sh
69+
cd $GITHUB_WORKSPACE/$PROJECT_PATH
70+
idf.py set-target ${{ matrix.target }}
71+
idf.py build
72+
esptool.py --chip ${{ matrix.target }} merge_bin -o build/OpenFFBoard-Firmware-${{ matrix.target }}.bin --flash_mode dio --flash_size 4MB 0x1000 build/bootloader/bootloader.bin 0x10000 build/openffboard.bin 0x8000 build/partition_table/partition-table.bin
73+
shell: bash
74+
75+
- name: Upload a Build Artifact
76+
uses: actions/upload-artifact@v3.0.0
77+
with:
78+
# Artifact name
79+
name: OpenFFBoard-Firmware-${{ matrix.target }}
80+
# A file, directory or wildcard pattern that describes what to upload
81+
path: |
82+
Firmware/Targets/ESP32SX/build/OpenFFBoard-Firmware-*.bin
83+
retention-days: 90
84+
4385
# Release:
4486
# needs: [Build_firmware] # Requires build first
4587
# name: Release if tagged
@@ -60,4 +102,5 @@ jobs:
60102
# if: startsWith(github.ref, 'refs/tags/')
61103
# with:
62104
# body_path: ${{ github.workspace }}/CHANGELOG.txt
63-
# body: "Release notes coming soon"
105+
# body: "Release notes coming soon"
106+

Firmware/FFBoard/Inc/CAN.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ typedef struct{
2424

2525
typedef struct{
2626
uint8_t data[8] = {0};
27-
CAN_RxHeaderTypeDef header = {0,0,0,0,0,0};
27+
CAN_RxHeaderTypeDef header = {0,0,0,0,0,0,0};
2828
} CAN_rx_msg;
2929

3030

Firmware/FFBoard/Inc/CommandInterface.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,17 @@
1414
#include "thread.hpp"
1515
#include "CommandHandler.h"
1616

17+
#ifdef HW_ESP32SX
18+
#define CDC_COMMANDINTERFACE_THREAD_MEM 4096
19+
#define CDC_COMMANDINTERFACE_THREAD_PRIO (37*25/56)
20+
#define UART_COMMANDINTERFACE_THREAD_MEM CDC_COMMANDINTERFACE_THREAD_MEM
21+
#define UART_COMMANDINTERFACE_THREAD_PRIO CDC_COMMANDINTERFACE_THREAD_PRIO
22+
#else
23+
#define CDC_COMMANDINTERFACE_THREAD_MEM 512
24+
#define CDC_COMMANDINTERFACE_THREAD_PRIO 36
25+
#define UART_COMMANDINTERFACE_THREAD_MEM 150
26+
#define UART_COMMANDINTERFACE_THREAD_PRIO CDC_COMMANDINTERFACE_THREAD_PRIO
27+
#endif
1728

1829
class FFBoardMainCommandThread;
1930

Firmware/FFBoard/Inc/DebugLog.h

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
#ifndef DEBUGLOG_H_
3+
#define DEBUGLOG_H_
4+
5+
#include "target_constants.h"
6+
7+
#ifdef __cplusplus
8+
extern "C" {
9+
#endif
10+
11+
// LOG DEBUG
12+
#ifdef HW_ESP32SX
13+
#define FFB_LOGI(format, ...) do { \
14+
ESP_LOGI(__FUNCTION__, "%s:%d -- " format, __FILE__, __LINE__ __VA_OPT__(,) __VA_ARGS__); \
15+
} while(0)
16+
#define FFB_LOGW(format, ...) do { \
17+
ESP_LOGW(__FUNCTION__, "%s:%d -- " format, __FILE__, __LINE__ __VA_OPT__(,) __VA_ARGS__); \
18+
} while(0)
19+
#define FFB_LOGE(format, ...) do { \
20+
ESP_LOGE(__FUNCTION__, "%s:%d -- " format, __FILE__, __LINE__ __VA_OPT__(,) __VA_ARGS__); \
21+
} while(0)
22+
#define FFB_LOGD(format, ...) do { \
23+
ESP_LOGD(__FUNCTION__, "%s:%d -- " format, __FILE__, __LINE__ __VA_OPT__(,) __VA_ARGS__); \
24+
} while(0)
25+
26+
#else
27+
28+
#define FFB_LOGI(format, ...)
29+
#define FFB_LOGW(format, ...)
30+
#define FFB_LOGE(format, ...)
31+
#define FFB_LOGD(format, ...)
32+
33+
#endif
34+
35+
36+
#ifdef __cplusplus
37+
}
38+
#endif
39+
40+
#endif /* DEBUGLOG_H_ */

Firmware/FFBoard/Inc/ErrorHandler.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@
1111
#include <string>
1212
#include "thread.hpp"
1313
#include "CommandHandler.h"
14+
#include "target_constants.h"
15+
16+
#ifdef HW_ESP32SX
17+
#define ERROR_PRINTER_MEM 4096
18+
#define ERROR_PRINTER_PRIO 19*25/56
19+
#else
20+
#define ERROR_PRINTER_MEM 512
21+
#define ERROR_PRINTER_PRIO 19
22+
#endif
1423

1524
/*
1625
* Error code definitions

Firmware/FFBoard/Inc/FFBoardMainCommandThread.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111

1212
#include <CmdParser.h>
1313
#include "cppmain.h"
14-
#include "main.h"
1514
#include <string>
16-
#include "cdc_device.h"
1715
#include "ChoosableClass.h"
1816
#include "CommandHandler.h"
1917
#include <vector>
@@ -24,6 +22,14 @@
2422

2523
#include "CommandInterface.h"
2624

25+
#ifdef HW_ESP32SX
26+
#define FFBOARDMAINCOMMANDTHREAD_MEM 4096
27+
#define FFBOARDMAINCOMMANDTHREAD_PRIO 32*25/56
28+
#else
29+
#define FFBOARDMAINCOMMANDTHREAD_MEM 700
30+
#define FFBOARDMAINCOMMANDTHREAD_PRIO 32
31+
#endif
32+
2733
class FFBoardMain;
2834
//class CommandInterface;
2935

Firmware/FFBoard/Inc/HidCommandInterface.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@
1313
#include "ffb_defs.h"
1414
#include "CommandHandler.h"
1515

16+
#ifdef HW_ESP32SX
17+
#define HID_COMMANDINTERFACE_MEM 2048
18+
#define HID_COMMANDINTERFACE_PRIO 18*25/56
19+
#else
20+
#define HID_COMMANDINTERFACE_MEM 128
21+
#define HID_COMMANDINTERFACE_PRIO 18
22+
#endif
23+
1624
enum class HidCmdType : uint8_t {write = 0, request = 1, info = 2, writeAddr = 3, requestAddr = 4,ACK = 10, notFound = 13, notification = 14, err = 15};
1725

1826

Firmware/FFBoard/Inc/USBdevice.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,13 @@
1515

1616
#define USB_STRING_DESC_BUF_SIZE 32
1717

18-
18+
#ifdef HW_ESP32SX
19+
#define USBDEVICE_MEM 4096
20+
#define USBDEVICE_PRIO 40*25/56
21+
#else
22+
#define USBDEVICE_MEM 256
23+
#define USBDEVICE_PRIO 40
24+
#endif
1925

2026
/**
2127
* This class defines a usb device and implements callbacks for getting the basic

Firmware/FFBoard/Inc/cppmain.h

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,23 @@ extern "C" {
2222

2323
#include "eeprom_addresses.h"
2424
#include "main.h"
25-
#include "cmsis_compiler.h"
26-
25+
#include "DebugLog.h"
2726

2827
void cppmain();
28+
#ifndef HW_ESP32SX
29+
#include "cmsis_compiler.h"
2930
void usb_init();
3031
void tudThread(void *argument);
31-
32+
#endif
3233
#ifdef __cplusplus
3334
}
3435

3536
static inline bool inIsr(){
37+
#ifdef HW_ESP32SX
38+
return xPortInIsrContext();
39+
#else
3640
return (__get_PRIMASK() != 0U) || (__get_IPSR() != 0U);
41+
#endif
3742
}
3843

3944
template<class T,class C>
@@ -53,12 +58,14 @@ T clip(T v, C l, C h)
5358
{
5459
return { v > h ? h : v < l ? l : v };
5560
}
56-
61+
#ifdef HW_ESP32SX
62+
#define micros() esp_timer_get_time() // Returns microsecond scaled time
63+
#else
5764
uint32_t micros(); // Returns microsecond scaled time
5865
unsigned long getRunTimeCounterValue(void); // RTOS
5966

6067
void refreshWatchdog(); // Refreshes the watchdog
61-
68+
#endif
6269
#endif
6370

6471

Firmware/FFBoard/Inc/critical.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,19 @@ class CriticalSection {
6565
*/
6666
static inline void Enter()
6767
{
68+
#ifndef HW_ESP32SX
6869
taskENTER_CRITICAL();
70+
#endif
6971
}
7072

7173
/**
7274
* Re-enable context switches.
7375
*/
7476
static inline void Exit()
7577
{
78+
#ifndef HW_ESP32SX
7679
taskEXIT_CRITICAL();
80+
#endif
7781
}
7882

7983
/**

0 commit comments

Comments
 (0)