Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit efbdfb2

Browse files
committed
Added support for TTGO T-Beam V1, and possibly others
1 parent 2037465 commit efbdfb2

28 files changed

+173
-84
lines changed

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ You can change the board type by using the BOARD variable:
142142
We currently support the following BOARD types:
143143

144144
WIPY LOPY SIPY GPY FIPY LOPY4
145+
145146

146147
For OEM modules, please use the following BOARD type:
147148

@@ -152,6 +153,13 @@ L04: LOPY4
152153
G01: GPY
153154
```
154155

156+
Additionaly we also support a third party BOARD from TTGO, the T-Beam version 1, please use the following BOARD type:
157+
158+
TBEAMv1
159+
160+
More info on this board can be found here: https://github.com/LilyGO/TTGO-T-Beam
161+
162+
155163
To specify a serial port other than /dev/ttyUSB0, use ESPPORT variable:
156164

157165
$ # On MacOS
@@ -179,7 +187,7 @@ To create a release package that can be flashed with the Pycom firmware tool:
179187
To create a release package for all currently supported Pycom boards:
180188

181189
$ cd esp32
182-
$ for BOARD in WIPY LOPY SIPY GPY FIPY LOPY4; do make BOARD=$BOARD clean && make BOARD=$BOARD release; done
190+
$ for BOARD in WIPY LOPY SIPY GPY FIPY LOPY4 TBEAMv1; do make BOARD=$BOARD clean && make BOARD=$BOARD release; done
183191

184192
To specify a directory other than the default build/ directory:
185193

@@ -190,7 +198,7 @@ To specify a directory other than the default build/ directory:
190198
To create a release package for all currently supported Pycom boards in a directory other than the default build/ directory:
191199

192200
$ cd esp32
193-
$ for BOARD in WIPY LOPY SIPY GPY FIPY LOPY4; do make BOARD=$BOARD clean && make BOARD=$BOARD RELEASE_DIR=~/pycom-packages release; done
201+
$ for BOARD in WIPY LOPY SIPY GPY FIPY LOPY4 TBEAMv1; do make BOARD=$BOARD clean && make BOARD=$BOARD RELEASE_DIR=~/pycom-packages release; done
194202

195203
To inclue a step for copying IDF libs from IDF_PATH specify the following variable in the make command
196204

esp32/Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ COPY_IDF_LIB ?= 0
4141
LTE_LOG_BUFF ?= 0
4242
RGB_LED ?= enable
4343

44+
ifeq ($(BOARD), $(filter $(BOARD), TBEAMv1))
45+
RGB_LED ?= disable
46+
endif
47+
4448
# by default openthread over LoRa is enabled
4549
OPENTHREAD = off
4650

@@ -88,7 +92,7 @@ CFLAGS_XTENSA = -DESP_PLATFORM -Wpointer-arith -Wall -Werror=all -Wno-error=unus
8892
CFLAGS_XTENSA_OPT = -Os
8993
CFLAGS_XTENSA_PSRAM = -mfix-esp32-psram-cache-issue
9094

91-
CFLAGS = $(CFLAGS_XTENSA) $(CFLAGS_XTENSA_PSRAM) $(CFLAGS_XTENSA_OPT) -nostdlib -std=gnu99 -g3 -ggdb -fstrict-volatile-bitfields -Iboards/$(BOARD)
95+
CFLAGS = $(CFLAGS_XTENSA) $(CFLAGS_XTENSA_PSRAM) $(CFLAGS_XTENSA_OPT) -nostdlib -std=gnu99 -g3 -ggdb -fstrict-volatile-bitfields -Iboards/$(BOARD) -DBOARD_$(BOARD)
9296
CFLAGS_SIGFOX = $(CFLAGS_XTENSA) -O2 -nostdlib -std=gnu99 -g3 -ggdb -fstrict-volatile-bitfields -Iboards/$(BOARD)
9397

9498
LDFLAGS = -nostdlib -Wl,-Map=$(@:.elf=.map) -Wl,--no-check-sections -u call_user_start_cpu0

esp32/application.mk

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -316,13 +316,13 @@ OBJ = $(PY_O)
316316
ifeq ($(BOARD), $(filter $(BOARD), LOPY FIPY))
317317
OBJ += $(addprefix $(BUILD)/, $(APP_LORA_SRC_C:.c=.o) $(APP_LIB_LORA_SRC_C:.c=.o) $(APP_SX1272_SRC_C:.c=.o) $(APP_MODS_LORA_SRC_C:.c=.o))
318318
endif
319-
ifeq ($(BOARD), $(filter $(BOARD), LOPY4))
319+
ifeq ($(BOARD), $(filter $(BOARD), LOPY4 TBEAMv1))
320320
OBJ += $(addprefix $(BUILD)/, $(APP_LORA_SRC_C:.c=.o) $(APP_LIB_LORA_SRC_C:.c=.o) $(APP_SX1276_SRC_C:.c=.o) $(APP_MODS_LORA_SRC_C:.c=.o))
321321
endif
322322
ifeq ($(BOARD), $(filter $(BOARD), SIPY))
323323
OBJ += $(addprefix $(BUILD)/, $(APP_SIGFOX_MOD_SRC_C:.c=.o))
324324
endif
325-
ifeq ($(BOARD), $(filter $(BOARD), LOPY4 FIPY))
325+
ifeq ($(BOARD), $(filter $(BOARD), LOPY4 FIPY TBEAMv1))
326326
OBJ += $(addprefix $(BUILD)/, $(APP_SIGFOX_MOD_SRC_C:.c=.o))
327327
endif
328328
ifeq ($(BOARD),$(filter $(BOARD), FIPY GPY))
@@ -331,7 +331,7 @@ endif
331331

332332
# add OPENTHREAD code only if flag enabled and for LOPY, LOPY4 and FIPY
333333
ifeq ($(OPENTHREAD), on)
334-
ifeq ($(BOARD), $(filter $(BOARD), LOPY LOPY4 FIPY))
334+
ifeq ($(BOARD), $(filter $(BOARD), LOPY LOPY4 FIPY TBEAMv1))
335335
OBJ += $(addprefix $(BUILD)/, $(APP_LORA_OPENTHREAD_SRC_C:.c=.o) $(APP_MOD_MESH_SRC_C:.c=.o))
336336
endif
337337
endif # ifeq ($(OPENTHREAD), on)
@@ -346,18 +346,18 @@ BOOT_OBJ = $(addprefix $(BUILD)/, $(BOOT_SRC_C:.c=.o))
346346

347347
# List of sources for qstr extraction
348348
SRC_QSTR += $(APP_MODS_SRC_C) $(APP_UTIL_SRC_C) $(APP_STM_SRC_C) $(APP_LIB_SRC_C)
349-
ifeq ($(BOARD), $(filter $(BOARD), LOPY LOPY4 FIPY))
349+
ifeq ($(BOARD), $(filter $(BOARD), LOPY LOPY4 FIPY TBEAMv1))
350350
SRC_QSTR += $(APP_MODS_LORA_SRC_C)
351351
endif
352-
ifeq ($(BOARD), $(filter $(BOARD), SIPY LOPY4 FIPY))
352+
ifeq ($(BOARD), $(filter $(BOARD), SIPY LOPY4 FIPY TBEAMv1))
353353
SRC_QSTR += $(APP_SIGFOX_MOD_SRC_C)
354354
endif
355355
ifeq ($(BOARD),$(filter $(BOARD), FIPY GPY))
356356
SRC_QSTR += $(APP_MODS_LTE_SRC_C)
357357
endif
358358

359359
ifeq ($(OPENTHREAD), on)
360-
ifeq ($(BOARD), $(filter $(BOARD), LOPY LOPY4 FIPY))
360+
ifeq ($(BOARD), $(filter $(BOARD), LOPY LOPY4 FIPY TBEAMv1))
361361
SRC_QSTR += $(APP_MOD_MESH_SRC_C)
362362
endif
363363
endif # ifeq ($(OPENTHREAD), on)
@@ -425,6 +425,14 @@ endif
425425
ifeq ($(BOARD), LOPY)
426426
APP_BIN = $(BUILD)/lopy.bin
427427
endif
428+
ifeq ($(BOARD), TBEAMv1)
429+
APP_BIN = $(BUILD)/tbeamv1.bin
430+
$(BUILD)/sigfox/radio_sx127x.o: CFLAGS = $(CFLAGS_SIGFOX)
431+
$(BUILD)/sigfox/timer.o: CFLAGS = $(CFLAGS_SIGFOX)
432+
$(BUILD)/sigfox/transmission.o: CFLAGS = $(CFLAGS_SIGFOX)
433+
$(BUILD)/sigfox/targets/%.o: CFLAGS = $(CFLAGS_SIGFOX)
434+
$(BUILD)/lora/spi-board.o: CFLAGS = $(CFLAGS_SIGFOX)
435+
endif
428436
ifeq ($(BOARD), LOPY4)
429437
APP_BIN = $(BUILD)/lopy4.bin
430438
$(BUILD)/sigfox/radio_sx127x.o: CFLAGS = $(CFLAGS_SIGFOX)
@@ -638,7 +646,7 @@ else
638646
ifeq ($(BOARD), $(filter $(BOARD), SIPY))
639647
$(ECHO) "$(ESPTOOLPY_WRITE_FLASH) 0x0 $(BOOTLOADER_REFLASH_DIGEST_ENC) $(PART_OFFSET) $(PART_BIN_ENCRYPT_8MB) $(APP_OFFSET) $(APP_BIN_ENCRYPT)"
640648
$(ECHO) "Generating Encrypted Images for 4MB devices, you can use make flash and it would be handled automatically!"
641-
endif #($(BOARD), $(filter $(BOARD), SIPY))
649+
endif #($(BOARD), $(filter $(BOARD), SIPY TBEAMv1))
642650
$(ECHO) "$(ESPTOOLPY_WRITE_FLASH) 0x0 $(BOOTLOADER_REFLASH_DIGEST_ENC) $(PART_OFFSET) $(PART_BIN_ENCRYPT_4MB) $(APP_OFFSET) $(APP_BIN_ENCRYPT)"
643651
endif #ifeq ($(BOARD), $(filter $(BOARD), FIPY GPY LOPY4))
644652
$(ECHO) $(SEPARATOR)

esp32/boards/make-pins.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def parse_af_file(self, filename, pin_col, pinname_col, af_start_col):
139139
raise ValueError("Invalid pin number {:s} in row {:s}".format(row[pin_col]), row)
140140
pin = Pin(row[pinname_col], pin_num)
141141
# FIXME: hack to force the SX1272 pins to be available
142-
if row[pinname_col] == 'GPIO17' or row[pinname_col] == 'GPIO18' or row[pinname_col] == 'GPIO23':
142+
if row[pinname_col] == 'GPIO17' or row[pinname_col] == 'GPIO18' or row[pinname_col] == 'GPIO26' or row[pinname_col] == 'GPIO23' or row[pinname_col] == 'GPIO14':
143143
pin.board_pin = True
144144
self.cpu_pins.append(NamedPin(row[pinname_col], pin))
145145
# af_idx = 0

esp32/fatfs/src/drivers/sflash_diskio.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,13 @@ DRESULT sflash_disk_init (void) {
4848
if (!sflash_init_done) {
4949
// this is how we diferentiate flash sizes in Pycom modules
5050
if (esp32_get_chip_rev() > 0) {
51+
#if defined(BOARD_TBEAMv1)
52+
sflash_start_address = SFLASH_START_ADDR_4MB;
53+
sflash_fs_sector_count = SFLASH_FS_SECTOR_COUNT_4MB;
54+
#else
5155
sflash_start_address = SFLASH_START_ADDR_8MB;
5256
sflash_fs_sector_count = SFLASH_FS_SECTOR_COUNT_8MB;
57+
#endif
5358
} else {
5459
sflash_start_address = SFLASH_START_ADDR_4MB;
5560
sflash_fs_sector_count = SFLASH_FS_SECTOR_COUNT_4MB;

esp32/ftp/updater.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ static esp_err_t updater_spi_flash_write(size_t dest_addr, void *src, size_t siz
7070
bool updater_read_boot_info (boot_info_t *boot_info, uint32_t *boot_info_offset) {
7171
esp_partition_info_t partition_info[PARTITIONS_COUNT_4MB];
7272

73+
#if defined(BOARD_TBEAMv1)
74+
uint8_t part_count = PARTITIONS_COUNT_4MB;
75+
#else
7376
uint8_t part_count = (esp32_get_chip_rev() > 0 ? PARTITIONS_COUNT_8MB : PARTITIONS_COUNT_4MB);
77+
#endif
7478

7579
ESP_LOGV(TAG, "Reading boot info\n");
7680

@@ -100,7 +104,11 @@ bool updater_check_path (void *path) {
100104

101105
bool updater_start (void) {
102106

107+
#if defined(BOARD_TBEAMv1)
108+
updater_data.size = IMG_SIZE_4MB;
109+
#else
103110
updater_data.size = (esp32_get_chip_rev() > 0 ? IMG_SIZE_8MB : IMG_SIZE_4MB);
111+
#endif
104112
// check which one should be the next active image
105113
updater_data.offset = updater_ota_next_slot_address();
106114

@@ -245,7 +253,11 @@ bool updater_write_boot_info(boot_info_t *boot_info, uint32_t boot_info_offset)
245253

246254
int updater_ota_next_slot_address() {
247255

256+
#if defined(BOARD_TBEAMv1)
257+
int ota_offset = IMG_UPDATE1_OFFSET_4MB;
258+
#else
248259
int ota_offset = (esp32_get_chip_rev() > 0 ? IMG_UPDATE1_OFFSET_8MB : IMG_UPDATE1_OFFSET_4MB);
260+
#endif
249261

250262
// check which one should be the next active image
251263
if (updater_read_boot_info (&boot_info, &boot_info_offset)) {
@@ -258,15 +270,23 @@ int updater_ota_next_slot_address() {
258270
}
259271
else
260272
{
273+
#if defined(BOARD_TBEAMv1)
274+
ota_offset = IMG_UPDATE1_OFFSET_4MB;
275+
#else
261276
ota_offset = (esp32_get_chip_rev() > 0 ? IMG_UPDATE1_OFFSET_8MB : IMG_UPDATE1_OFFSET_4MB);
277+
#endif
262278
}
263279
}
264280
else
265281
{
266282
if(boot_info.ActiveImg == IMG_ACT_FACTORY)
267283

268284
{
285+
#if defined(BOARD_TBEAMv1)
286+
ota_offset = IMG_UPDATE1_OFFSET_4MB;
287+
#else
269288
ota_offset = (esp32_get_chip_rev() > 0 ? IMG_UPDATE1_OFFSET_8MB : IMG_UPDATE1_OFFSET_4MB);
289+
#endif
270290
}
271291
else
272292
{

esp32/hal/esp32_mphal.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
#include "driver/timer.h"
4242

4343
typedef void (*HAL_tick_user_cb_t)(void);
44-
#if defined (LOPY) || defined(LOPY4) || defined(FIPY)
44+
#if defined (LOPY) || defined(LOPY4) || defined(FIPY) || defined (TBEAMv1)
4545
DRAM_ATTR static HAL_tick_user_cb_t HAL_tick_user_cb;
4646

4747
#define TIMER1_ALARM_TIME_MS 1U
@@ -51,7 +51,7 @@ DRAM_ATTR static HAL_tick_user_cb_t HAL_tick_user_cb;
5151
#endif
5252

5353

54-
#if defined (LOPY) || defined(LOPY4) || defined(FIPY)
54+
#if defined (LOPY) || defined(LOPY4) || defined(FIPY) || defined (TBEAMv1)
5555
IRAM_ATTR static void HAL_TimerCallback (void* arg) {
5656

5757
if (HAL_tick_user_cb != NULL) {
@@ -72,7 +72,7 @@ void HAL_set_tick_cb (void *cb) {
7272

7373
void mp_hal_init(bool soft_reset) {
7474
if (!soft_reset) {
75-
#if defined (LOPY) || defined(LOPY4) || defined(FIPY)
75+
#if defined (LOPY) || defined(LOPY4) || defined(FIPY) || defined (TBEAMv1)
7676
// setup the HAL timer for LoRa
7777
HAL_tick_user_cb = NULL;
7878

esp32/hal/esp32_mphal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#ifndef _INCLUDED_MPHAL_H_
1111
#define _INCLUDED_MPHAL_H_
1212

13-
#if defined (LOPY) || defined(LOPY4) || defined(FIPY)
13+
#if defined (LOPY) || defined(LOPY4) || defined(FIPY) || defined (TBEAMv1)
1414
void HAL_set_tick_cb (void *cb);
1515
#endif
1616
void mp_hal_init(bool soft_reset);

esp32/lora/board.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ void BoardInitMcu( void )
4848
#if defined(LOPY) || defined (FIPY)
4949
SpiInit( &SX1272.Spi, RADIO_MOSI, RADIO_MISO, RADIO_SCLK, NC );
5050
SX1272IoInit( );
51-
#elif defined(LOPY4)
51+
#elif defined(LOPY4) || defined (TBEAMv1)
5252
SpiInit( &SX1276.Spi, RADIO_MOSI, RADIO_MISO, RADIO_SCLK, NC );
5353
SX1276IoInit( );
5454
#endif
@@ -64,7 +64,7 @@ void BoardDeInitMcu( void )
6464
#if defined(LOPY) || defined (FIPY)
6565
SpiDeInit( &SX1272.Spi );
6666
SX1272IoDeInit( );
67-
#elif defined(LOPY4)
67+
#elif defined(LOPY4) || defined (TBEAMv1)
6868
SpiDeInit( &SX1276.Spi );
6969
SX1276IoDeInit( );
7070
#endif

esp32/lora/board.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Maintainer: Miguel Luis and Gregory Cristian
4646
#if defined(LOPY) || defined (FIPY)
4747
#include "sx1272/sx1272.h"
4848
#include "sx1272-board.h"
49-
#elif defined(LOPY4)
49+
#elif defined(LOPY4) || defined (TBEAMv1)
5050
#include "sx1276/sx1276.h"
5151
#include "sx1276-board.h"
5252
#endif
@@ -63,7 +63,7 @@ Maintainer: Miguel Luis and Gregory Cristian
6363
/*!
6464
* Board MCU pins definitions
6565
*/
66-
#if defined (LOPY) || defined (LOPY4) || defined (FIPY)
66+
#if defined (LOPY) || defined (LOPY4) || defined (FIPY) || defined (TBEAMv1)
6767
#define RADIO_RESET micropy_lpwan_reset_pin_index
6868

6969
#define RADIO_MOSI GPIO27

0 commit comments

Comments
 (0)