hil add stm32f723disco, add test flags for device/host/dual
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.17)
|
cmake_minimum_required(VERSION 3.17)
|
||||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
#set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
|
|
||||||
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
|
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
|
||||||
|
|
||||||
|
@@ -56,8 +56,12 @@
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// MACRO CONSTANT TYPEDEF PROTYPES
|
// MACRO CONSTANT TYPEDEF PROTYPES
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
enum {
|
||||||
static uint32_t blink_interval_ms = 1000;
|
BLINK_NOT_MOUNTED = 250,
|
||||||
|
BLINK_MOUNTED = 1000,
|
||||||
|
BLINK_SUSPENDED = 2500,
|
||||||
|
};
|
||||||
|
static uint32_t blink_interval_ms = BLINK_NOT_MOUNTED;
|
||||||
|
|
||||||
void led_blinking_task(void* param);
|
void led_blinking_task(void* param);
|
||||||
static void print_utf16(uint16_t* temp_buf, size_t buf_len);
|
static void print_utf16(uint16_t* temp_buf, size_t buf_len);
|
||||||
@@ -102,6 +106,8 @@ int main(void) {
|
|||||||
|
|
||||||
// Invoked when device is mounted (configured)
|
// Invoked when device is mounted (configured)
|
||||||
void tuh_mount_cb(uint8_t daddr) {
|
void tuh_mount_cb(uint8_t daddr) {
|
||||||
|
blink_interval_ms = BLINK_MOUNTED;
|
||||||
|
|
||||||
// Get Device Descriptor
|
// Get Device Descriptor
|
||||||
tusb_desc_device_t desc_device;
|
tusb_desc_device_t desc_device;
|
||||||
uint8_t xfer_result = tuh_descriptor_get_device_sync(daddr, &desc_device, 18);
|
uint8_t xfer_result = tuh_descriptor_get_device_sync(daddr, &desc_device, 18);
|
||||||
@@ -161,6 +167,7 @@ void tuh_mount_cb(uint8_t daddr) {
|
|||||||
|
|
||||||
// Invoked when device is unmounted (bus reset/unplugged)
|
// Invoked when device is unmounted (bus reset/unplugged)
|
||||||
void tuh_umount_cb(uint8_t daddr) {
|
void tuh_umount_cb(uint8_t daddr) {
|
||||||
|
blink_interval_ms = BLINK_NOT_MOUNTED;
|
||||||
printf("Device removed, address = %d\r\n", daddr);
|
printf("Device removed, address = %d\r\n", daddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,15 +234,8 @@ void led_blinking_task(void* param) {
|
|||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
#if CFG_TUSB_OS == OPT_OS_FREERTOS
|
#if CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
if (blink_interval_ms == 0) {
|
vTaskDelay(blink_interval_ms / portTICK_PERIOD_MS);
|
||||||
vTaskSuspend(NULL);
|
|
||||||
} else {
|
|
||||||
vTaskDelay(blink_interval_ms / portTICK_PERIOD_MS);
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
if (blink_interval_ms == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (board_millis() - start_ms < blink_interval_ms) {
|
if (board_millis() - start_ms < blink_interval_ms) {
|
||||||
return; // not enough time
|
return; // not enough time
|
||||||
}
|
}
|
||||||
|
@@ -5,12 +5,12 @@ set(LD_FILE_GNU ${CMAKE_CURRENT_LIST_DIR}/STM32F723xE_FLASH.ld)
|
|||||||
|
|
||||||
set(RHPORT_SPEED OPT_MODE_FULL_SPEED OPT_MODE_HIGH_SPEED)
|
set(RHPORT_SPEED OPT_MODE_FULL_SPEED OPT_MODE_HIGH_SPEED)
|
||||||
|
|
||||||
# device default to PORT 1 High Speed
|
# For Hardware test: device default to PORT 0, Host to port 1
|
||||||
if (NOT DEFINED RHPORT_DEVICE)
|
if (NOT DEFINED RHPORT_DEVICE)
|
||||||
set(RHPORT_DEVICE 1)
|
set(RHPORT_DEVICE 0)
|
||||||
endif()
|
endif()
|
||||||
if (NOT DEFINED RHPORT_HOST)
|
if (NOT DEFINED RHPORT_HOST)
|
||||||
set(RHPORT_HOST 0)
|
set(RHPORT_HOST 1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
function(update_board TARGET)
|
function(update_board TARGET)
|
||||||
|
@@ -1,8 +1,9 @@
|
|||||||
MCU_VARIANT = stm32f723xx
|
MCU_VARIANT = stm32f723xx
|
||||||
|
|
||||||
|
# For Hardware test: device default to PORT 0, Host to port 1
|
||||||
RHPORT_SPEED = OPT_MODE_FULL_SPEED OPT_MODE_HIGH_SPEED
|
RHPORT_SPEED = OPT_MODE_FULL_SPEED OPT_MODE_HIGH_SPEED
|
||||||
RHPORT_DEVICE ?= 1
|
RHPORT_DEVICE ?= 0
|
||||||
RHPORT_HOST ?= 0
|
RHPORT_HOST ?= 1
|
||||||
|
|
||||||
CFLAGS += \
|
CFLAGS += \
|
||||||
-DSTM32F723xx \
|
-DSTM32F723xx \
|
||||||
|
@@ -37,6 +37,25 @@ typedef struct {
|
|||||||
|
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// MACRO TYPEDEF CONSTANT ENUM
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
|
#ifdef UART_DEV
|
||||||
|
UART_HandleTypeDef UartHandle = {
|
||||||
|
.Instance = UART_DEV,
|
||||||
|
.Init = {
|
||||||
|
.BaudRate = CFG_BOARD_UART_BAUDRATE,
|
||||||
|
.WordLength = UART_WORDLENGTH_8B,
|
||||||
|
.StopBits = UART_STOPBITS_1,
|
||||||
|
.Parity = UART_PARITY_NONE,
|
||||||
|
.HwFlowCtl = UART_HWCONTROL_NONE,
|
||||||
|
.Mode = UART_MODE_TX_RX,
|
||||||
|
.OverSampling = UART_OVERSAMPLING_16,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Forward USB interrupt events to TinyUSB IRQ Handler
|
// Forward USB interrupt events to TinyUSB IRQ Handler
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
@@ -54,8 +73,6 @@ void OTG_HS_IRQHandler(void) {
|
|||||||
// MACRO TYPEDEF CONSTANT ENUM
|
// MACRO TYPEDEF CONSTANT ENUM
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
UART_HandleTypeDef UartHandle;
|
|
||||||
|
|
||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
board_clock_init();
|
board_clock_init();
|
||||||
|
|
||||||
@@ -89,14 +106,6 @@ void board_init(void) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef UART_DEV
|
#ifdef UART_DEV
|
||||||
UartHandle.Instance = UART_DEV;
|
|
||||||
UartHandle.Init.BaudRate = CFG_BOARD_UART_BAUDRATE;
|
|
||||||
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
|
|
||||||
UartHandle.Init.StopBits = UART_STOPBITS_1;
|
|
||||||
UartHandle.Init.Parity = UART_PARITY_NONE;
|
|
||||||
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
|
||||||
UartHandle.Init.Mode = UART_MODE_TX_RX;
|
|
||||||
UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;
|
|
||||||
HAL_UART_Init(&UartHandle);
|
HAL_UART_Init(&UartHandle);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -1181,8 +1181,7 @@ static bool handle_sof_irq(uint8_t rhport, bool in_isr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Config HCFG FS/LS clock and HFIR for SOF interval according to link speed (value is in PHY clock unit)
|
// Config HCFG FS/LS clock and HFIR for SOF interval according to link speed (value is in PHY clock unit)
|
||||||
static void port0_enable(dwc2_regs_t* dwc2) {
|
static void port0_enable(dwc2_regs_t* dwc2, tusb_speed_t speed) {
|
||||||
const tusb_speed_t speed = hprt_speed_get(dwc2);
|
|
||||||
uint32_t hcfg = dwc2->hcfg & ~HCFG_FSLS_PHYCLK_SEL;
|
uint32_t hcfg = dwc2->hcfg & ~HCFG_FSLS_PHYCLK_SEL;
|
||||||
|
|
||||||
const dwc2_gusbcfg_t gusbcfg_bm = dwc2->gusbcfg_bm;
|
const dwc2_gusbcfg_t gusbcfg_bm = dwc2->gusbcfg_bm;
|
||||||
@@ -1252,7 +1251,8 @@ static void handle_hprt_irq(uint8_t rhport, bool in_isr) {
|
|||||||
|
|
||||||
if (hprt_bm.enable) {
|
if (hprt_bm.enable) {
|
||||||
// Port enable
|
// Port enable
|
||||||
port0_enable(dwc2);
|
const tusb_speed_t speed = hprt_speed_get(dwc2);
|
||||||
|
port0_enable(dwc2, speed);
|
||||||
} else {
|
} else {
|
||||||
// TU_ASSERT(false, );
|
// TU_ASSERT(false, );
|
||||||
}
|
}
|
||||||
|
@@ -46,6 +46,26 @@ STATUS_SKIPPED = "\033[33mSkipped\033[0m"
|
|||||||
|
|
||||||
verbose = False
|
verbose = False
|
||||||
|
|
||||||
|
WCH_RISCV_CONTENT = """
|
||||||
|
adapter driver wlinke
|
||||||
|
adapter speed 6000
|
||||||
|
transport select sdi
|
||||||
|
|
||||||
|
wlink_set_address 0x00000000
|
||||||
|
set _CHIPNAME wch_riscv
|
||||||
|
sdi newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x00001
|
||||||
|
|
||||||
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
|
|
||||||
|
target create $_TARGETNAME.0 wch_riscv -chain-position $_TARGETNAME
|
||||||
|
$_TARGETNAME.0 configure -work-area-phys 0x20000000 -work-area-size 10000 -work-area-backup 1
|
||||||
|
set _FLASHNAME $_CHIPNAME.flash
|
||||||
|
|
||||||
|
flash bank $_FLASHNAME wch_riscv 0x00000000 0 0 0 $_TARGETNAME.0
|
||||||
|
|
||||||
|
echo "Ready for Remote Connections"
|
||||||
|
"""
|
||||||
|
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
# Path
|
# Path
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
@@ -147,63 +167,87 @@ def flash_jlink(board, firmware):
|
|||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def flash_stlink(board, firmware):
|
def reset_jlink(board):
|
||||||
ret = run_cmd(f'STM32_Programmer_CLI --connect port=swd sn={board["flasher_sn"]} --write {firmware}.elf --go')
|
script = ['halt', 'r', 'go', 'exit']
|
||||||
|
f_jlink = f'{board["name"]}_reset.jlink'
|
||||||
|
if not os.path.exists(f_jlink):
|
||||||
|
with open(f_jlink, 'w') as f:
|
||||||
|
f.writelines(f'{s}\n' for s in script)
|
||||||
|
ret = run_cmd(f'JLinkExe -USB {board["flasher_sn"]} {board["flasher_args"]} -if swd -JTAGConf -1,-1 -speed auto -NoGui 1 -ExitOnError 1 -CommandFile {f_jlink}')
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def flash_stlink(board, firmware):
|
||||||
|
return run_cmd(f'STM32_Programmer_CLI --connect port=swd sn={board["flasher_sn"]} --write {firmware}.elf --go')
|
||||||
|
|
||||||
|
|
||||||
|
def reset_stlink(board):
|
||||||
|
return run_cmd(f'STM32_Programmer_CLI --connect port=swd sn={board["flasher_sn"]} --rst --go')
|
||||||
|
|
||||||
def flash_stflash(board, firmware):
|
def flash_stflash(board, firmware):
|
||||||
ret = run_cmd(f'st-flash --serial {board["flasher_sn"]} write {firmware}.bin 0x8000000')
|
ret = run_cmd(f'st-flash --serial {board["flasher_sn"]} write {firmware}.bin 0x8000000')
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def reset_stflash(board):
|
||||||
|
return subprocess.CompletedProcess(args=['dummy'], returncode=0)
|
||||||
|
|
||||||
|
|
||||||
def flash_openocd(board, firmware):
|
def flash_openocd(board, firmware):
|
||||||
ret = run_cmd(f'openocd -c "adapter serial {board["flasher_sn"]}" {board["flasher_args"]} -c "program {firmware}.elf reset exit"')
|
ret = run_cmd(f'openocd -c "adapter serial {board["flasher_sn"]}" {board["flasher_args"]} -c "program {firmware}.elf reset exit"')
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def reset_openocd(board):
|
||||||
|
ret = run_cmd(f'openocd -c "adapter serial {board["flasher_sn"]}" {board["flasher_args"]} -c "reset exit"')
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def flash_openocd_wch(board, firmware):
|
def flash_openocd_wch(board, firmware):
|
||||||
# Content of the wch-riscv.cfg file
|
|
||||||
cfg_content = """
|
|
||||||
adapter driver wlinke
|
|
||||||
adapter speed 6000
|
|
||||||
transport select sdi
|
|
||||||
|
|
||||||
wlink_set_address 0x00000000
|
|
||||||
set _CHIPNAME wch_riscv
|
|
||||||
sdi newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x00001
|
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
|
||||||
|
|
||||||
target create $_TARGETNAME.0 wch_riscv -chain-position $_TARGETNAME
|
|
||||||
$_TARGETNAME.0 configure -work-area-phys 0x20000000 -work-area-size 10000 -work-area-backup 1
|
|
||||||
set _FLASHNAME $_CHIPNAME.flash
|
|
||||||
|
|
||||||
flash bank $_FLASHNAME wch_riscv 0x00000000 0 0 0 $_TARGETNAME.0
|
|
||||||
|
|
||||||
echo "Ready for Remote Connections"
|
|
||||||
"""
|
|
||||||
f_wch = f"wch-riscv_{board['uid']}.cfg"
|
f_wch = f"wch-riscv_{board['uid']}.cfg"
|
||||||
if not os.path.exists(f_wch):
|
if not os.path.exists(f_wch):
|
||||||
with open(f_wch, 'w') as file:
|
with open(f_wch, 'w') as file:
|
||||||
file.write(cfg_content)
|
file.write(WCH_RISCV_CONTENT)
|
||||||
|
|
||||||
ret = run_cmd(f'openocd_wch -c "adapter serial {board["flasher_sn"]}" -f {f_wch} '
|
ret = run_cmd(f'openocd_wch -c "adapter serial {board["flasher_sn"]}" -f {f_wch} '
|
||||||
f'-c "program {firmware}.elf reset exit"')
|
f'-c "program {firmware}.elf reset exit"')
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def reset_openocd_wch(board):
|
||||||
|
f_wch = f"wch-riscv_{board['uid']}.cfg"
|
||||||
|
if not os.path.exists(f_wch):
|
||||||
|
with open(f_wch, 'w') as file:
|
||||||
|
file.write(WCH_RISCV_CONTENT)
|
||||||
|
|
||||||
|
ret = run_cmd(f'openocd_wch -c "adapter serial {board["flasher_sn"]}" -f {f_wch} -c "program reset exit"')
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def flash_openocd_adi(board, firmware):
|
def flash_openocd_adi(board, firmware):
|
||||||
ret = run_cmd(f'{OPENCOD_ADI_PATH}/src/openocd -c "adapter serial {board["flasher_sn"]}" -s {OPENCOD_ADI_PATH}/tcl '
|
ret = run_cmd(f'{OPENCOD_ADI_PATH}/src/openocd -c "adapter serial {board["flasher_sn"]}" -s {OPENCOD_ADI_PATH}/tcl '
|
||||||
f'{board["flasher_args"]} -c "program {firmware}.elf reset exit"')
|
f'{board["flasher_args"]} -c "program {firmware}.elf reset exit"')
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def reset_openocd_adi(board):
|
||||||
|
ret = run_cmd(f'{OPENCOD_ADI_PATH}/src/openocd -c "adapter serial {board["flasher_sn"]}" -s {OPENCOD_ADI_PATH}/tcl '
|
||||||
|
f'{board["flasher_args"]} -c "program reset exit"')
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def flash_wlink_rs(board, firmware):
|
def flash_wlink_rs(board, firmware):
|
||||||
# wlink use index for probe selection and lacking usb serial support
|
# wlink use index for probe selection and lacking usb serial support
|
||||||
ret = run_cmd(f'wlink flash {firmware}.elf')
|
ret = run_cmd(f'wlink flash {firmware}.elf')
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def reset_wlink_rs(board):
|
||||||
|
# wlink use index for probe selection and lacking usb serial support
|
||||||
|
ret = run_cmd(f'wlink reset')
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def flash_esptool(board, firmware):
|
def flash_esptool(board, firmware):
|
||||||
port = get_serial_dev(board["flasher_sn"], None, None, 0)
|
port = get_serial_dev(board["flasher_sn"], None, None, 0)
|
||||||
fw_dir = os.path.dirname(f'{firmware}.bin')
|
fw_dir = os.path.dirname(f'{firmware}.bin')
|
||||||
@@ -213,28 +257,39 @@ def flash_esptool(board, firmware):
|
|||||||
flash_args = f.read().strip().replace('\n', ' ')
|
flash_args = f.read().strip().replace('\n', ' ')
|
||||||
command = (f'esptool.py --chip {idf_target} -p {port} {board["flasher_args"]} '
|
command = (f'esptool.py --chip {idf_target} -p {port} {board["flasher_args"]} '
|
||||||
f'--before=default_reset --after=hard_reset write_flash {flash_args}')
|
f'--before=default_reset --after=hard_reset write_flash {flash_args}')
|
||||||
# command = f'echo abc'
|
|
||||||
ret = run_cmd(command, cwd=fw_dir)
|
ret = run_cmd(command, cwd=fw_dir)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def reset_esptool(board):
|
||||||
|
return subprocess.CompletedProcess(args=['dummy'], returncode=0)
|
||||||
|
|
||||||
|
|
||||||
def flash_uniflash(board, firmware):
|
def flash_uniflash(board, firmware):
|
||||||
ret = run_cmd(f'dslite.sh {board["flasher_args"]} -f {firmware}.hex')
|
ret = run_cmd(f'dslite.sh {board["flasher_args"]} -f {firmware}.hex')
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def reset_uniflash(board):
|
||||||
|
return subprocess.CompletedProcess(args=['dummy'], returncode=0)
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
# Tests: dual
|
# Tests: dual
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
def test_dual_host_info_to_device_cdc(board):
|
def test_dual_host_info_to_device_cdc(board):
|
||||||
uid = board['uid']
|
uid = board['uid']
|
||||||
declared_devs = [f'{d["vid_pid"]}_{d["serial"]}' for d in board['tests']['dev_attached']]
|
declared_devs = [f'{d["vid_pid"]}_{d["serial"]}' for d in board['tests']['dev_attached']]
|
||||||
|
|
||||||
port = get_serial_dev(uid, 'TinyUSB', "TinyUSB_Device", 0)
|
port = get_serial_dev(uid, 'TinyUSB', "TinyUSB_Device", 0)
|
||||||
ser = open_serial_dev(port)
|
ser = open_serial_dev(port)
|
||||||
# read from serial, first line should contain vid/pid and serial
|
|
||||||
|
# read from cdc, first line should contain vid/pid and serial
|
||||||
data = ser.read(1000)
|
data = ser.read(1000)
|
||||||
|
ser.close()
|
||||||
|
if len(data) == 0:
|
||||||
|
assert False, 'No data from device'
|
||||||
lines = data.decode('utf-8').splitlines()
|
lines = data.decode('utf-8').splitlines()
|
||||||
|
|
||||||
enum_dev_sn = []
|
enum_dev_sn = []
|
||||||
for l in lines:
|
for l in lines:
|
||||||
vid_pid_sn = re.search(r'ID ([0-9a-fA-F]+):([0-9a-fA-F]+) SN (\w+)', l)
|
vid_pid_sn = re.search(r'ID ([0-9a-fA-F]+):([0-9a-fA-F]+) SN (\w+)', l)
|
||||||
@@ -243,12 +298,8 @@ def test_dual_host_info_to_device_cdc(board):
|
|||||||
enum_dev_sn.append(f'{vid_pid_sn.group(1)}_{vid_pid_sn.group(2)}_{vid_pid_sn.group(3)}')
|
enum_dev_sn.append(f'{vid_pid_sn.group(1)}_{vid_pid_sn.group(2)}_{vid_pid_sn.group(3)}')
|
||||||
|
|
||||||
if set(declared_devs) != set(enum_dev_sn):
|
if set(declared_devs) != set(enum_dev_sn):
|
||||||
# for pico/pico2 make this test optional
|
failed_msg = f'Expected {declared_devs}, Enumerated {enum_dev_sn}'
|
||||||
failed_msg = f'Enumerated devices {enum_dev_sn} not match with declared {declared_devs}'
|
assert False, failed_msg
|
||||||
if 'raspberry_pi_pico' in board['name']:
|
|
||||||
print(f'\r\n {failed_msg} {STATUS_FAILED} ', end='')
|
|
||||||
else:
|
|
||||||
assert False, failed_msg
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
@@ -256,12 +307,17 @@ def test_dual_host_info_to_device_cdc(board):
|
|||||||
# Tests: host
|
# Tests: host
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
def test_host_device_info(board):
|
def test_host_device_info(board):
|
||||||
uid = board['uid']
|
|
||||||
declared_devs = [f'{d["vid_pid"]}_{d["serial"]}' for d in board['tests']['dev_attached']]
|
declared_devs = [f'{d["vid_pid"]}_{d["serial"]}' for d in board['tests']['dev_attached']]
|
||||||
|
|
||||||
port = get_serial_dev(board["flasher_sn"], None, None, 0)
|
port = get_serial_dev(board["flasher_sn"], None, None, 0)
|
||||||
ser = open_serial_dev(port)
|
ser = open_serial_dev(port)
|
||||||
|
|
||||||
|
# reset device since we can miss the first line
|
||||||
|
ret = globals()[f'reset_{board["flasher"].lower()}'](board)
|
||||||
|
assert ret.returncode == 0, 'Failed to reset device'
|
||||||
|
|
||||||
data = ser.read(1000)
|
data = ser.read(1000)
|
||||||
|
ser.close()
|
||||||
if len(data) == 0:
|
if len(data) == 0:
|
||||||
assert False, 'No data from device'
|
assert False, 'No data from device'
|
||||||
|
|
||||||
@@ -274,12 +330,8 @@ def test_host_device_info(board):
|
|||||||
enum_dev_sn.append(f'{vid_pid_sn.group(1)}_{vid_pid_sn.group(2)}_{vid_pid_sn.group(3)}')
|
enum_dev_sn.append(f'{vid_pid_sn.group(1)}_{vid_pid_sn.group(2)}_{vid_pid_sn.group(3)}')
|
||||||
|
|
||||||
if set(declared_devs) != set(enum_dev_sn):
|
if set(declared_devs) != set(enum_dev_sn):
|
||||||
# for pico/pico2 make this test optional
|
failed_msg = f'Expected {declared_devs}, Enumerated {enum_dev_sn}'
|
||||||
failed_msg = f'Enumerated devices {enum_dev_sn} not match with declared {declared_devs}'
|
assert False, failed_msg
|
||||||
if 'raspberry_pi_pico' in board['name']:
|
|
||||||
print(f'\r\n {failed_msg} {STATUS_FAILED} ', end='')
|
|
||||||
else:
|
|
||||||
assert False, failed_msg
|
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@@ -323,7 +375,8 @@ def test_device_cdc_msc(board):
|
|||||||
str = b"test_str"
|
str = b"test_str"
|
||||||
ser.write(str)
|
ser.write(str)
|
||||||
ser.flush()
|
ser.flush()
|
||||||
assert ser.read(len(str)) == str, 'CDC wrong data'
|
rd_str = ser.read(len(str))
|
||||||
|
assert rd_str == str, f'CDC wrong data: expected: {str} was {rd_str}'
|
||||||
|
|
||||||
# Block test
|
# Block test
|
||||||
data = read_disk_file(uid,0,'README.TXT')
|
data = read_disk_file(uid,0,'README.TXT')
|
||||||
@@ -430,10 +483,14 @@ device_tests = [
|
|||||||
'device/hid_boot_interface',
|
'device/hid_boot_interface',
|
||||||
]
|
]
|
||||||
|
|
||||||
host_tests = [
|
dual_tests = [
|
||||||
'dual/host_info_to_device_cdc',
|
'dual/host_info_to_device_cdc',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
host_test = [
|
||||||
|
'host/device_info',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def test_board(board):
|
def test_board(board):
|
||||||
name = board['name']
|
name = board['name']
|
||||||
@@ -444,8 +501,12 @@ def test_board(board):
|
|||||||
|
|
||||||
if 'tests' in board:
|
if 'tests' in board:
|
||||||
board_tests = board['tests']
|
board_tests = board['tests']
|
||||||
if 'dev_attached' in board_tests:
|
if 'device' in board_tests and board_tests['device'] == True:
|
||||||
test_list += host_tests
|
test_list += list(device_tests)
|
||||||
|
if 'dual' in board_tests and board_tests['dual'] == True:
|
||||||
|
test_list += dual_tests
|
||||||
|
if 'host' in board_tests and board_tests['host'] == True:
|
||||||
|
test_list += host_test
|
||||||
if 'only' in board_tests:
|
if 'only' in board_tests:
|
||||||
test_list = board_tests['only']
|
test_list = board_tests['only']
|
||||||
if 'skip' in board_tests:
|
if 'skip' in board_tests:
|
||||||
@@ -455,7 +516,7 @@ def test_board(board):
|
|||||||
print(f'{name:25} {skip:30} ... Skip')
|
print(f'{name:25} {skip:30} ... Skip')
|
||||||
|
|
||||||
# board_test is added last to disable board's usb
|
# board_test is added last to disable board's usb
|
||||||
#test_list.append('device/board_test')
|
test_list.append('device/board_test')
|
||||||
|
|
||||||
err_count = 0
|
err_count = 0
|
||||||
flags_on_list = [""]
|
flags_on_list = [""]
|
||||||
@@ -473,7 +534,7 @@ def test_board(board):
|
|||||||
fw_name = f'{fw_dir}/{os.path.basename(test)}'
|
fw_name = f'{fw_dir}/{os.path.basename(test)}'
|
||||||
print(f'{name+f1_str:40} {test:30} ... ', end='')
|
print(f'{name+f1_str:40} {test:30} ... ', end='')
|
||||||
|
|
||||||
if not os.path.exists(fw_dir):
|
if not os.path.exists(fw_dir) or not (os.path.exists(f'{fw_name}.elf') or os.path.exists(f'{fw_name}.bin')):
|
||||||
print('Skip (no binary)')
|
print('Skip (no binary)')
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@@ -27,6 +27,9 @@
|
|||||||
{
|
{
|
||||||
"name": "feather_nrf52840_express",
|
"name": "feather_nrf52840_express",
|
||||||
"uid": "1F0479CD0F764471",
|
"uid": "1F0479CD0F764471",
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false
|
||||||
|
},
|
||||||
"flasher": "jlink",
|
"flasher": "jlink",
|
||||||
"flasher_sn": "000682804350",
|
"flasher_sn": "000682804350",
|
||||||
"flasher_args": "-device nrf52840_xxaa"
|
"flasher_args": "-device nrf52840_xxaa"
|
||||||
@@ -34,6 +37,9 @@
|
|||||||
{
|
{
|
||||||
"name": "max32666fthr",
|
"name": "max32666fthr",
|
||||||
"uid": "0C81464124010B20FF0A08CC2C",
|
"uid": "0C81464124010B20FF0A08CC2C",
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false
|
||||||
|
},
|
||||||
"flasher": "openocd_adi",
|
"flasher": "openocd_adi",
|
||||||
"flasher_sn": "E6614C311B597D32",
|
"flasher_sn": "E6614C311B597D32",
|
||||||
"flasher_args": "-f interface/cmsis-dap.cfg -f target/max32665.cfg"
|
"flasher_args": "-f interface/cmsis-dap.cfg -f target/max32665.cfg"
|
||||||
@@ -41,16 +47,20 @@
|
|||||||
{
|
{
|
||||||
"name": "metro_m4_express",
|
"name": "metro_m4_express",
|
||||||
"uid": "9995AD485337433231202020FF100A34",
|
"uid": "9995AD485337433231202020FF100A34",
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": true,
|
||||||
|
"dev_attached": [{"vid_pid": "1a86_55d4", "serial": "52D2002130"}]
|
||||||
|
},
|
||||||
"flasher": "jlink",
|
"flasher": "jlink",
|
||||||
"flasher_sn": "123456",
|
"flasher_sn": "123456",
|
||||||
"flasher_args": "-device ATSAMD51J19",
|
"flasher_args": "-device ATSAMD51J19"
|
||||||
"tests": {
|
|
||||||
"dev_attached": [{"vid_pid": "1a86_55d4", "serial": "52D2002130"}]
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "lpcxpresso11u37",
|
"name": "lpcxpresso11u37",
|
||||||
"uid": "17121919",
|
"uid": "17121919",
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false
|
||||||
|
},
|
||||||
"flasher": "jlink",
|
"flasher": "jlink",
|
||||||
"flasher_sn": "000724441579",
|
"flasher_sn": "000724441579",
|
||||||
"flasher_args": "-device LPC11U37/401"
|
"flasher_args": "-device LPC11U37/401"
|
||||||
@@ -59,6 +69,7 @@
|
|||||||
"name": "ra4m1_ek",
|
"name": "ra4m1_ek",
|
||||||
"uid": "152E163038303131393346E46F26574B",
|
"uid": "152E163038303131393346E46F26574B",
|
||||||
"tests": {
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false,
|
||||||
"skip": ["device/cdc_msc", "device/cdc_msc_freertos"]
|
"skip": ["device/cdc_msc", "device/cdc_msc_freertos"]
|
||||||
},
|
},
|
||||||
"comment": "MSC is slow to enumerated #2602",
|
"comment": "MSC is slow to enumerated #2602",
|
||||||
@@ -69,22 +80,24 @@
|
|||||||
{
|
{
|
||||||
"name": "raspberry_pi_pico",
|
"name": "raspberry_pi_pico",
|
||||||
"uid": "E6614C311B764A37",
|
"uid": "E6614C311B764A37",
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false,
|
||||||
|
"dev_attached": [{"vid_pid": "1a86_55d4", "serial": "52D2002470"}]
|
||||||
|
},
|
||||||
"flasher": "openocd",
|
"flasher": "openocd",
|
||||||
"flasher_sn": "E6614103E72C1D2F",
|
"flasher_sn": "E6614103E72C1D2F",
|
||||||
"flasher_args": "-f interface/cmsis-dap.cfg -f target/rp2040.cfg -c \"adapter speed 5000\"",
|
"flasher_args": "-f interface/cmsis-dap.cfg -f target/rp2040.cfg -c \"adapter speed 5000\""
|
||||||
"tests": {
|
|
||||||
"dev_attached": [{"vid_pid": "1a86_55d4", "serial": "52D2002470"}]
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "raspberry_pi_pico2",
|
"name": "raspberry_pi_pico2",
|
||||||
"uid": "560AE75E1C7152C9",
|
"uid": "560AE75E1C7152C9",
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false,
|
||||||
|
"dev_attached": [{"vid_pid": "1a86_55d4", "serial": "533D004242"}]
|
||||||
|
},
|
||||||
"flasher": "openocd",
|
"flasher": "openocd",
|
||||||
"flasher_sn": "E6633861A3978538",
|
"flasher_sn": "E6633861A3978538",
|
||||||
"flasher_args": "-f interface/cmsis-dap.cfg -f target/rp2350.cfg -c \"adapter speed 5000\"",
|
"flasher_args": "-f interface/cmsis-dap.cfg -f target/rp2350.cfg -c \"adapter speed 5000\""
|
||||||
"tests": {
|
|
||||||
"dev_attached": [{"vid_pid": "1a86_55d4", "serial": "533D004242"}]
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "stm32f072disco",
|
"name": "stm32f072disco",
|
||||||
@@ -93,12 +106,29 @@
|
|||||||
"flasher_sn": "779541626",
|
"flasher_sn": "779541626",
|
||||||
"flasher_args": "-device stm32f072rb"
|
"flasher_args": "-device stm32f072rb"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "stm32f723disco",
|
||||||
|
"uid": "460029001951373031313335",
|
||||||
|
"build" : {
|
||||||
|
"flags_on": ["", "CFG_TUD_DWC2_DMA"]
|
||||||
|
},
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": true, "dual": false,
|
||||||
|
"dev_attached": [{"vid_pid": "1a86_55d4", "serial": "52D2003414"}]
|
||||||
|
},
|
||||||
|
"flasher": "jlink",
|
||||||
|
"flasher_sn": "000776606156",
|
||||||
|
"flasher_args": "-device stm32f723ie"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "stm32h743nucleo",
|
"name": "stm32h743nucleo",
|
||||||
"uid": "110018000951383432343236",
|
"uid": "110018000951383432343236",
|
||||||
"build" : {
|
"build" : {
|
||||||
"flags_on": ["", "CFG_TUD_DWC2_DMA"]
|
"flags_on": ["", "CFG_TUD_DWC2_DMA"]
|
||||||
},
|
},
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false
|
||||||
|
},
|
||||||
"flasher": "stlink",
|
"flasher": "stlink",
|
||||||
"flasher_sn": "004C00343137510F39383538",
|
"flasher_sn": "004C00343137510F39383538",
|
||||||
"flasher_args": ""
|
"flasher_args": ""
|
||||||
@@ -106,6 +136,9 @@
|
|||||||
{
|
{
|
||||||
"name": "stm32g0b1nucleo",
|
"name": "stm32g0b1nucleo",
|
||||||
"uid": "4D0038000450434E37343120",
|
"uid": "4D0038000450434E37343120",
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false
|
||||||
|
},
|
||||||
"flasher": "openocd",
|
"flasher": "openocd",
|
||||||
"flasher_sn": "066FFF495087534867063844",
|
"flasher_sn": "066FFF495087534867063844",
|
||||||
"flasher_args": "-f interface/stlink.cfg -f target/stm32g0x.cfg"
|
"flasher_args": "-f interface/stlink.cfg -f target/stm32g0x.cfg"
|
||||||
@@ -118,6 +151,9 @@
|
|||||||
"build" : {
|
"build" : {
|
||||||
"flags_on": ["", "CFG_TUD_DWC2_DMA"]
|
"flags_on": ["", "CFG_TUD_DWC2_DMA"]
|
||||||
},
|
},
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false
|
||||||
|
},
|
||||||
"flasher": "jlink",
|
"flasher": "jlink",
|
||||||
"flasher_sn": "000778170924",
|
"flasher_sn": "000778170924",
|
||||||
"flasher_args": "-device stm32f769ni"
|
"flasher_args": "-device stm32f769ni"
|
||||||
@@ -125,6 +161,9 @@
|
|||||||
{
|
{
|
||||||
"name": "mimxrt1015_evk",
|
"name": "mimxrt1015_evk",
|
||||||
"uid": "DC28F865D2111D228D00B0543A70463C",
|
"uid": "DC28F865D2111D228D00B0543A70463C",
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false
|
||||||
|
},
|
||||||
"flasher": "jlink",
|
"flasher": "jlink",
|
||||||
"flasher_sn": "000726284213",
|
"flasher_sn": "000726284213",
|
||||||
"flasher_args": "-device MIMXRT1015DAF5A"
|
"flasher_args": "-device MIMXRT1015DAF5A"
|
||||||
@@ -132,6 +171,9 @@
|
|||||||
{
|
{
|
||||||
"name": "nanoch32v203",
|
"name": "nanoch32v203",
|
||||||
"uid": "CDAB277B0FBC03E339E339E3",
|
"uid": "CDAB277B0FBC03E339E339E3",
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false
|
||||||
|
},
|
||||||
"flasher": "openocd_wch",
|
"flasher": "openocd_wch",
|
||||||
"flasher_sn": "EBCA8F0670AF",
|
"flasher_sn": "EBCA8F0670AF",
|
||||||
"flasher_args": ""
|
"flasher_args": ""
|
||||||
@@ -139,6 +181,9 @@
|
|||||||
{
|
{
|
||||||
"name": "stm32f407disco",
|
"name": "stm32f407disco",
|
||||||
"uid": "30001A000647313332353735",
|
"uid": "30001A000647313332353735",
|
||||||
|
"tests": {
|
||||||
|
"device": true, "host": false, "dual": false
|
||||||
|
},
|
||||||
"flasher": "jlink",
|
"flasher": "jlink",
|
||||||
"flasher_sn": "000773661813",
|
"flasher_sn": "000773661813",
|
||||||
"flasher_args": "-device stm32f407vg"
|
"flasher_args": "-device stm32f407vg"
|
||||||
|
Reference in New Issue
Block a user