mirror of
https://github.com/hathach/tinyusb.git
synced 2025-02-15 21:40:18 +00:00
improve esp32 ci, build esp32 with -DDMAX3421_HOST=1 for max3421 testing
revert change in hcd.h
This commit is contained in:
parent
6b8933cfe8
commit
8348631bf5
21
.github/workflows/build_esp.yml
vendored
21
.github/workflows/build_esp.yml
vendored
@ -29,12 +29,10 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
board:
|
board:
|
||||||
# Alphabetical order
|
|
||||||
# ESP32-S2
|
# ESP32-S2
|
||||||
- 'espressif_saola_1'
|
- 'espressif_kaluga_1'
|
||||||
# ESP32-S3
|
# ESP32-S3
|
||||||
#- 'espressif_s3_devkitm'
|
- 'espressif_s3_devkitm'
|
||||||
# S3 compile error with "dangerous relocation: call8: call target out of range: memcpy"
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
@ -48,20 +46,5 @@ jobs:
|
|||||||
- name: Checkout TinyUSB
|
- name: Checkout TinyUSB
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Checkout hathach/linkermap
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
repository: hathach/linkermap
|
|
||||||
path: linkermap
|
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32.py ${{ matrix.board }}
|
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
|
|
||||||
|
@ -36,6 +36,14 @@
|
|||||||
#define BUTTON_PIN 0
|
#define BUTTON_PIN 0
|
||||||
#define BUTTON_STATE_ACTIVE 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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -133,9 +133,6 @@ bool hcd_init(uint8_t rhport);
|
|||||||
// Interrupt Handler
|
// Interrupt Handler
|
||||||
void hcd_int_handler(uint8_t rhport, bool in_isr);
|
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
|
// Enable USB interrupt
|
||||||
void hcd_int_enable (uint8_t rhport);
|
void hcd_int_enable (uint8_t rhport);
|
||||||
|
|
||||||
|
@ -17,8 +17,8 @@ exit_status = 0
|
|||||||
|
|
||||||
total_time = time.monotonic()
|
total_time = time.monotonic()
|
||||||
|
|
||||||
build_format = '| {:23} | {:30} | {:18} | {:7} | {:6} | {:6} |'
|
build_format = '| {:30} | {:30} | {:18} | {:7} | {:6} | {:6} |'
|
||||||
build_separator = '-' * 100
|
build_separator = '-' * 107
|
||||||
|
|
||||||
def filter_with_input(mylist):
|
def filter_with_input(mylist):
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
@ -26,12 +26,9 @@ def filter_with_input(mylist):
|
|||||||
if len(input_args) > 0:
|
if len(input_args) > 0:
|
||||||
mylist[:] = input_args
|
mylist[:] = input_args
|
||||||
|
|
||||||
|
|
||||||
# Build all examples if not specified
|
# Build all examples if not specified
|
||||||
all_examples = []
|
all_examples = [entry.replace('examples/', '') for entry in glob.glob("examples/*/*_freertos")]
|
||||||
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)
|
|
||||||
filter_with_input(all_examples)
|
filter_with_input(all_examples)
|
||||||
all_examples.sort()
|
all_examples.sort()
|
||||||
|
|
||||||
@ -46,32 +43,41 @@ all_boards.sort()
|
|||||||
def build_board(example, board):
|
def build_board(example, board):
|
||||||
global success_count, fail_count, skip_count, exit_status
|
global success_count, fail_count, skip_count, exit_status
|
||||||
start_time = time.monotonic()
|
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 = "-"
|
flash_size = "-"
|
||||||
sram_size = "-"
|
sram_size = "-"
|
||||||
|
|
||||||
# Check if board is skipped
|
if r.returncode == 0:
|
||||||
if build_utils.skip_example(example, board):
|
|
||||||
success = SKIPPED
|
|
||||||
skip_count += 1
|
|
||||||
print(build_format.format(example, board, success, '-', flash_size, sram_size))
|
|
||||||
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 = SUCCEEDED
|
||||||
success_count += 1
|
success_count += 1
|
||||||
(flash_size, sram_size) = build_size(example, board)
|
#(flash_size, sram_size) = build_size(example, board)
|
||||||
else:
|
else:
|
||||||
exit_status = build_result.returncode
|
exit_status = r.returncode
|
||||||
success = FAILED
|
success = FAILED
|
||||||
fail_count += 1
|
fail_count += 1
|
||||||
|
|
||||||
build_duration = time.monotonic() - start_time
|
title = build_format.format(example, board, success, "{:.2f}s".format(build_duration), flash_size, sram_size)
|
||||||
print(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):
|
def build_size(example, board):
|
||||||
#elf_file = 'examples/device/{}/_build/{}/{}-firmware.elf'.format(example, board, board)
|
#elf_file = 'examples/device/{}/_build/{}/{}-firmware.elf'.format(example, board, board)
|
||||||
@ -82,6 +88,7 @@ def build_size(example, board):
|
|||||||
sram_size = int(size_list[1]) + int(size_list[2])
|
sram_size = int(size_list[1]) + int(size_list[2])
|
||||||
return (flash_size, sram_size)
|
return (flash_size, sram_size)
|
||||||
|
|
||||||
|
|
||||||
print(build_separator)
|
print(build_separator)
|
||||||
print(build_format.format('Example', 'Board', '\033[39mResult\033[0m', 'Time', 'Flash', 'SRAM'))
|
print(build_format.format('Example', 'Board', '\033[39mResult\033[0m', 'Time', 'Flash', 'SRAM'))
|
||||||
print(build_separator)
|
print(build_separator)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user