Skip to content

Commit

Permalink
improve esp32 ci, build esp32 with -DDMAX3421_HOST=1 for max3421 testing
Browse files Browse the repository at this point in the history
revert change in hcd.h
  • Loading branch information
hathach committed Sep 28, 2023
1 parent 6b8933c commit 8348631
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 50 deletions.
21 changes: 2 additions & 19 deletions .github/workflows/build_esp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,10 @@ jobs:
fail-fast: false
matrix:
board:
# Alphabetical order
# ESP32-S2
- 'espressif_saola_1'
- 'espressif_kaluga_1'
# ESP32-S3
#- 'espressif_s3_devkitm'
# S3 compile error with "dangerous relocation: call8: call target out of range: memcpy"
- 'espressif_s3_devkitm'

steps:
- name: Setup Python
Expand All @@ -48,20 +46,5 @@ jobs:
- name: Checkout TinyUSB
uses: actions/checkout@v3

- name: Checkout hathach/linkermap
uses: actions/checkout@v3
with:
repository: hathach/linkermap
path: linkermap

- name: Build
run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32.py ${{ matrix.board }}

- name: Linker Map
run: |
pip install linkermap/
# find -quit to only print linkermap of 1 board per example
for ex in `ls -d examples/device/*/`
do
find ${ex} -maxdepth 3 -name *.map -print -quit | xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"'
done
8 changes: 8 additions & 0 deletions hw/bsp/espressif/boards/espressif_s3_devkitm/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,14 @@
#define BUTTON_PIN 0
#define BUTTON_STATE_ACTIVE 0

// SPI for USB host shield
#define MAX3421_SPI_HOST SPI2_HOST
#define MAX3421_SCK_PIN 36
#define MAX3421_MOSI_PIN 35
#define MAX3421_MISO_PIN 37
#define MAX3421_CS_PIN 15
#define MAX3421_INTR_PIN 14

#ifdef __cplusplus
}
#endif
Expand Down
3 changes: 0 additions & 3 deletions src/host/hcd.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,6 @@ bool hcd_init(uint8_t rhport);
// Interrupt Handler
void hcd_int_handler(uint8_t rhport, bool in_isr);

// Interrupt Hanndler (extended version)
void hcd_int_handler_ext(uint8_t rhport, bool in_isr);

// Enable USB interrupt
void hcd_int_enable (uint8_t rhport);

Expand Down
63 changes: 35 additions & 28 deletions tools/build_esp32.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,18 @@

total_time = time.monotonic()

build_format = '| {:23} | {:30} | {:18} | {:7} | {:6} | {:6} |'
build_separator = '-' * 100
build_format = '| {:30} | {:30} | {:18} | {:7} | {:6} | {:6} |'
build_separator = '-' * 107

def filter_with_input(mylist):
if len(sys.argv) > 1:
input_args = list(set(mylist).intersection(sys.argv))
if len(input_args) > 0:
mylist[:] = input_args


# Build all examples if not specified
all_examples = []
for entry in os.scandir("examples/device"):
# Only includes example with CMakeLists.txt for esp32s, and skip board_test to speed up ci
if entry.is_dir() and os.path.exists(entry.path + "/sdkconfig.defaults") and entry.name != 'board_test':
all_examples.append(entry.name)
all_examples = [entry.replace('examples/', '') for entry in glob.glob("examples/*/*_freertos")]
filter_with_input(all_examples)
all_examples.sort()

Expand All @@ -46,32 +43,41 @@ def filter_with_input(mylist):
def build_board(example, board):
global success_count, fail_count, skip_count, exit_status
start_time = time.monotonic()

# Check if board is skipped
build_dir = f"cmake-build/cmake-build-{board}/{example}"

# Generate and build
r = subprocess.run(f"cmake examples/{example} -B {build_dir} -G \"Ninja\" -DBOARD={board} -DMAX3421_HOST=1",
shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if r.returncode == 0:
r = subprocess.run(f"cmake --build {build_dir}", shell=True, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
build_duration = time.monotonic() - start_time
flash_size = "-"
sram_size = "-"

# Check if board is skipped
if build_utils.skip_example(example, board):
success = SKIPPED
skip_count += 1
print(build_format.format(example, board, success, '-', flash_size, sram_size))
if r.returncode == 0:
success = SUCCEEDED
success_count += 1
#(flash_size, sram_size) = build_size(example, board)
else:
subprocess.run("make -C examples/device/{} BOARD={} clean".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
build_result = subprocess.run("make -j -C examples/device/{} BOARD={} all".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

if build_result.returncode == 0:
success = SUCCEEDED
success_count += 1
(flash_size, sram_size) = build_size(example, board)
else:
exit_status = build_result.returncode
success = FAILED
fail_count += 1

build_duration = time.monotonic() - start_time
print(build_format.format(example, board, success, "{:.2f}s".format(build_duration), flash_size, sram_size))
exit_status = r.returncode
success = FAILED
fail_count += 1

title = build_format.format(example, board, success, "{:.2f}s".format(build_duration), flash_size, sram_size)
if os.getenv('CI'):
# always print build output if in CI
print(f"::group::{title}")
print(r.stdout.decode("utf-8"))
print(f"::endgroup::")
else:
# print build output if failed
print(title)
if r.returncode != 0:
print(r.stdout.decode("utf-8"))

if build_result.returncode != 0:
print(build_result.stdout.decode("utf-8"))

def build_size(example, board):
#elf_file = 'examples/device/{}/_build/{}/{}-firmware.elf'.format(example, board, board)
Expand All @@ -82,6 +88,7 @@ def build_size(example, board):
sram_size = int(size_list[1]) + int(size_list[2])
return (flash_size, sram_size)


print(build_separator)
print(build_format.format('Example', 'Board', '\033[39mResult\033[0m', 'Time', 'Flash', 'SRAM'))
print(build_separator)
Expand Down

0 comments on commit 8348631

Please sign in to comment.