mirror of
https://github.com/apache/nuttx.git
synced 2026-05-27 03:05:40 +08:00
boards/arm/ht32f491x3: add ESK32 board support
Add the ESK32 board with nsh configuration, linker script, board bring-up, flashing helper, and user LED support. Signed-off-by: Felipe Moura <moura.fmo@gmail.com>
This commit is contained in:
@@ -3481,6 +3481,13 @@ config ARCH_BOARD_AT32F437_MINI
|
|||||||
---help---
|
---help---
|
||||||
AT32F437-MINI board based on the Artery AT32F437VMT7 MCU.
|
AT32F437-MINI board based on the Artery AT32F437VMT7 MCU.
|
||||||
|
|
||||||
|
config ARCH_BOARD_ESK32
|
||||||
|
bool "ESK32 board"
|
||||||
|
depends on ARCH_CHIP_HT32F49163
|
||||||
|
select ARCH_HAVE_LEDS
|
||||||
|
---help---
|
||||||
|
ESK32 board based on the Holtek HT32F49163 MCU.
|
||||||
|
|
||||||
config ARCH_BOARD_FRDM_MCXN236
|
config ARCH_BOARD_FRDM_MCXN236
|
||||||
bool "NXP MCXN236 CPU EVK board"
|
bool "NXP MCXN236 CPU EVK board"
|
||||||
depends on ARCH_CHIP_N236
|
depends on ARCH_CHIP_N236
|
||||||
@@ -3927,6 +3934,7 @@ config ARCH_BOARD
|
|||||||
default "hpm6360evk" if ARCH_BOARD_HPM6360EVK
|
default "hpm6360evk" if ARCH_BOARD_HPM6360EVK
|
||||||
default "hpm6750evk2" if ARCH_BOARD_HPM6750EVK2
|
default "hpm6750evk2" if ARCH_BOARD_HPM6750EVK2
|
||||||
default "at32f437-mini" if ARCH_BOARD_AT32F437_MINI
|
default "at32f437-mini" if ARCH_BOARD_AT32F437_MINI
|
||||||
|
default "esk32" if ARCH_BOARD_ESK32
|
||||||
default "csk6011a-nano" if ARCH_BOARD_CSK6011A_NANO
|
default "csk6011a-nano" if ARCH_BOARD_CSK6011A_NANO
|
||||||
default "frdm-mcxn236" if ARCH_BOARD_FRDM_MCXN236
|
default "frdm-mcxn236" if ARCH_BOARD_FRDM_MCXN236
|
||||||
|
|
||||||
@@ -5041,6 +5049,9 @@ endif
|
|||||||
if ARCH_BOARD_AT32F437_MINI
|
if ARCH_BOARD_AT32F437_MINI
|
||||||
source "boards/arm/at32/at32f437-mini/Kconfig"
|
source "boards/arm/at32/at32f437-mini/Kconfig"
|
||||||
endif
|
endif
|
||||||
|
if ARCH_BOARD_ESK32
|
||||||
|
source "boards/arm/ht32f491x3/esk32/Kconfig"
|
||||||
|
endif
|
||||||
if ARCH_BOARD_CSK6011A_NANO
|
if ARCH_BOARD_CSK6011A_NANO
|
||||||
source "boards/arm/csk6/csk6011a-nano/Kconfig"
|
source "boards/arm/csk6/csk6011a-nano/Kconfig"
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# ##############################################################################
|
||||||
|
# boards/arm/ht32f491x3/esk32/CMakeLists.txt
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more contributor
|
||||||
|
# license agreements. See the NOTICE file distributed with this work for
|
||||||
|
# additional information regarding copyright ownership. The ASF licenses this
|
||||||
|
# file to you under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
# use this file except in compliance with the License. You may obtain a copy of
|
||||||
|
# the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations under
|
||||||
|
# the License.
|
||||||
|
#
|
||||||
|
# ##############################################################################
|
||||||
|
|
||||||
|
add_subdirectory(src)
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#
|
||||||
|
# For a description of the syntax of this configuration file,
|
||||||
|
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||||
|
#
|
||||||
|
|
||||||
|
if ARCH_BOARD_ESK32
|
||||||
|
|
||||||
|
comment "ESK32 note: only USART1 pin routing is available in the current board port."
|
||||||
|
|
||||||
|
endif # ARCH_BOARD_ESK32
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated: PLEASE DO NOT EDIT IT.
|
||||||
|
#
|
||||||
|
# You can use "make menuconfig" to make any modifications to the installed .config file.
|
||||||
|
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
|
||||||
|
# modifications.
|
||||||
|
#
|
||||||
|
# CONFIG_ARCH_FPU is not set
|
||||||
|
# CONFIG_ARCH_LEDS is not set
|
||||||
|
# CONFIG_NSH_ARGCAT is not set
|
||||||
|
# CONFIG_NSH_CMDOPT_HEXDUMP is not set
|
||||||
|
CONFIG_ARCH="arm"
|
||||||
|
CONFIG_ARCH_BOARD="esk32"
|
||||||
|
CONFIG_ARCH_BOARD_ESK32=y
|
||||||
|
CONFIG_ARCH_CHIP="ht32f491x3"
|
||||||
|
CONFIG_ARCH_CHIP_HT32F49163=y
|
||||||
|
CONFIG_ARCH_CHIP_HT32F491X3=y
|
||||||
|
CONFIG_ARCH_INTERRUPTSTACK=2048
|
||||||
|
CONFIG_ARCH_STACKDUMP=y
|
||||||
|
CONFIG_BOARD_LOOPSPERMSEC=8499
|
||||||
|
CONFIG_BUILTIN=y
|
||||||
|
CONFIG_EXAMPLES_HELLO=y
|
||||||
|
CONFIG_EXAMPLES_LEDS=y
|
||||||
|
CONFIG_FS_BINFS=y
|
||||||
|
CONFIG_FS_PROCFS=y
|
||||||
|
CONFIG_HT32F491X3_PCLK1_FREQUENCY=75000000
|
||||||
|
CONFIG_HT32F491X3_SYSCLK_FREQUENCY=150000000
|
||||||
|
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
||||||
|
CONFIG_LINE_MAX=64
|
||||||
|
CONFIG_NSH_ARCHINIT=y
|
||||||
|
CONFIG_NSH_BUILTIN_APPS=y
|
||||||
|
CONFIG_NSH_FILEIOSIZE=512
|
||||||
|
CONFIG_NSH_READLINE=y
|
||||||
|
CONFIG_PREALLOC_TIMERS=4
|
||||||
|
CONFIG_RAM_SIZE=49152
|
||||||
|
CONFIG_RAM_START=0x20000000
|
||||||
|
CONFIG_RAW_BINARY=y
|
||||||
|
CONFIG_RR_INTERVAL=200
|
||||||
|
CONFIG_SCHED_BACKTRACE=y
|
||||||
|
CONFIG_SCHED_WAITPID=y
|
||||||
|
CONFIG_START_DAY=14
|
||||||
|
CONFIG_START_MONTH=3
|
||||||
|
CONFIG_START_YEAR=2026
|
||||||
|
CONFIG_SYSTEM_DUMPSTACK=y
|
||||||
|
CONFIG_SYSTEM_NSH=y
|
||||||
|
CONFIG_TASK_NAME_SIZE=0
|
||||||
|
CONFIG_TESTING_OSTEST=y
|
||||||
|
CONFIG_TESTING_OSTEST_NBARRIER_THREADS=3
|
||||||
|
CONFIG_TESTING_OSTEST_STACKSIZE=2048
|
||||||
|
CONFIG_USART1_RXBUFSIZE=256
|
||||||
|
CONFIG_USART1_SERIAL_CONSOLE=y
|
||||||
|
CONFIG_USART1_TXBUFSIZE=256
|
||||||
|
CONFIG_USERLED=y
|
||||||
|
CONFIG_USERLED_LOWER=y
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* boards/arm/ht32f491x3/esk32/include/board.h
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership. The
|
||||||
|
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the
|
||||||
|
* License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __BOARDS_ARM_HT32F491X3_ESK32_INCLUDE_BOARD_H
|
||||||
|
#define __BOARDS_ARM_HT32F491X3_ESK32_INCLUDE_BOARD_H
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Board USART Pin Mapping
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* Populate BOARD_USARTx_* for each routed USART on the board. The selected
|
||||||
|
* console still comes from CONFIG_USARTx_SERIAL_CONSOLE in the defconfig.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define BOARD_USART1_GPIO_CLKEN (1u << 0)
|
||||||
|
#define BOARD_USART1_TX_GPIO_BASE 0x40020000u
|
||||||
|
#define BOARD_USART1_RX_GPIO_BASE 0x40020000u
|
||||||
|
#define BOARD_USART1_TX_PIN 9u
|
||||||
|
#define BOARD_USART1_RX_PIN 10u
|
||||||
|
#define BOARD_USART1_TX_AF 7u
|
||||||
|
#define BOARD_USART1_RX_AF 7u
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Board LED Pin Mapping
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#define BOARD_LED2_GPIO_CLKEN (1u << 3)
|
||||||
|
#define BOARD_LED2_GPIO_BASE 0x40020c00u
|
||||||
|
#define BOARD_LED2_GPIO_PIN 13u
|
||||||
|
|
||||||
|
#define BOARD_LED3_GPIO_CLKEN (1u << 3)
|
||||||
|
#define BOARD_LED3_GPIO_BASE 0x40020c00u
|
||||||
|
#define BOARD_LED3_GPIO_PIN 14u
|
||||||
|
|
||||||
|
#define BOARD_LED4_GPIO_CLKEN (1u << 3)
|
||||||
|
#define BOARD_LED4_GPIO_BASE 0x40020c00u
|
||||||
|
#define BOARD_LED4_GPIO_PIN 15u
|
||||||
|
|
||||||
|
#define BOARD_LED2 0
|
||||||
|
#define BOARD_LED3 1
|
||||||
|
#define BOARD_LED4 2
|
||||||
|
#define BOARD_NLEDS 3
|
||||||
|
|
||||||
|
#define BOARD_LED2_BIT (1 << BOARD_LED2)
|
||||||
|
#define BOARD_LED3_BIT (1 << BOARD_LED3)
|
||||||
|
#define BOARD_LED4_BIT (1 << BOARD_LED4)
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Function Prototypes
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void ht32f491x3_clockconfig(void);
|
||||||
|
void ht32f491x3_boardinitialize(void);
|
||||||
|
|
||||||
|
int board_app_initialize(uintptr_t arg);
|
||||||
|
|
||||||
|
#if defined(CONFIG_USERLED) && !defined(CONFIG_ARCH_LEDS)
|
||||||
|
uint32_t board_userled_initialize(void);
|
||||||
|
void board_userled(int led, bool ledon);
|
||||||
|
void board_userled_all(uint32_t ledset);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_BOARD_LATE_INITIALIZE
|
||||||
|
void board_late_initialize(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __BOARDS_ARM_HT32F491X3_ESK32_INCLUDE_BOARD_H */
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
############################################################################
|
||||||
|
# boards/arm/ht32f491x3/esk32/scripts/Make.defs
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership. The
|
||||||
|
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance with the
|
||||||
|
# License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
include $(TOPDIR)/.config
|
||||||
|
include $(TOPDIR)/tools/Config.mk
|
||||||
|
include $(TOPDIR)/arch/arm/src/armv7-m/Toolchain.defs
|
||||||
|
|
||||||
|
LDSCRIPT = ld.script
|
||||||
|
|
||||||
|
ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)
|
||||||
|
|
||||||
|
ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
|
||||||
|
|
||||||
|
CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||||
|
CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
|
||||||
|
CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||||
|
CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
|
||||||
|
CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||||
|
AFLAGS := $(CFLAGS) -D__ASSEMBLY__
|
||||||
|
|
||||||
|
NXFLATLDFLAGS1 = -r -d -warn-common
|
||||||
|
NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
|
||||||
|
LDNXFLATFLAGS = -e main -s 2048
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* boards/arm/ht32f491x3/esk32/scripts/ld.script
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership. The
|
||||||
|
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the
|
||||||
|
* License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
flash (rx) : ORIGIN = 0x08000000, LENGTH = 256K
|
||||||
|
sram (rwx) : ORIGIN = 0x20000000, LENGTH = 48K
|
||||||
|
}
|
||||||
|
|
||||||
|
OUTPUT_ARCH(arm)
|
||||||
|
ENTRY(__start)
|
||||||
|
EXTERN(_vectors)
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.text :
|
||||||
|
{
|
||||||
|
_stext = ABSOLUTE(.);
|
||||||
|
*(.vectors)
|
||||||
|
*(.entry)
|
||||||
|
*(.text .text.*)
|
||||||
|
*(.fixup)
|
||||||
|
*(.gnu.warning)
|
||||||
|
*(.rodata .rodata.*)
|
||||||
|
*(.gnu.linkonce.t.*)
|
||||||
|
*(.glue_7)
|
||||||
|
*(.glue_7t)
|
||||||
|
*(.got)
|
||||||
|
*(.gcc_except_table)
|
||||||
|
*(.gnu.linkonce.r.*)
|
||||||
|
_etext = ABSOLUTE(.);
|
||||||
|
} > flash
|
||||||
|
|
||||||
|
.init_section :
|
||||||
|
{
|
||||||
|
_sinit = ABSOLUTE(.);
|
||||||
|
KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
|
||||||
|
KEEP(*(.init_array EXCLUDE_FILE(*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o) .ctors))
|
||||||
|
_einit = ABSOLUTE(.);
|
||||||
|
} > flash
|
||||||
|
|
||||||
|
.ARM.extab :
|
||||||
|
{
|
||||||
|
*(.ARM.extab*)
|
||||||
|
} > flash
|
||||||
|
|
||||||
|
__exidx_start = ABSOLUTE(.);
|
||||||
|
.ARM.exidx :
|
||||||
|
{
|
||||||
|
*(.ARM.exidx*)
|
||||||
|
} > flash
|
||||||
|
__exidx_end = ABSOLUTE(.);
|
||||||
|
|
||||||
|
_eronly = ABSOLUTE(.);
|
||||||
|
|
||||||
|
.data :
|
||||||
|
{
|
||||||
|
_sdata = ABSOLUTE(.);
|
||||||
|
*(.data .data.*)
|
||||||
|
*(.gnu.linkonce.d.*)
|
||||||
|
CONSTRUCTORS
|
||||||
|
. = ALIGN(4);
|
||||||
|
_edata = ABSOLUTE(.);
|
||||||
|
} > sram AT > flash
|
||||||
|
|
||||||
|
.ram_vectors :
|
||||||
|
{
|
||||||
|
*(.ram_vectors)
|
||||||
|
} > sram
|
||||||
|
|
||||||
|
.noinit :
|
||||||
|
{
|
||||||
|
_snoinit = ABSOLUTE(.);
|
||||||
|
*(.noinit*)
|
||||||
|
_enoinit = ABSOLUTE(.);
|
||||||
|
} > sram
|
||||||
|
|
||||||
|
.bss :
|
||||||
|
{
|
||||||
|
_sbss = ABSOLUTE(.);
|
||||||
|
*(.bss .bss.*)
|
||||||
|
*(.gnu.linkonce.b.*)
|
||||||
|
*(COMMON)
|
||||||
|
. = ALIGN(4);
|
||||||
|
_ebss = ABSOLUTE(.);
|
||||||
|
} > sram
|
||||||
|
|
||||||
|
.stab 0 : { *(.stab) }
|
||||||
|
.stabstr 0 : { *(.stabstr) }
|
||||||
|
.stab.excl 0 : { *(.stab.excl) }
|
||||||
|
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||||
|
.stab.index 0 : { *(.stab.index) }
|
||||||
|
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||||
|
.comment 0 : { *(.comment) }
|
||||||
|
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||||
|
.debug_info 0 : { *(.debug_info) }
|
||||||
|
.debug_line 0 : { *(.debug_line) }
|
||||||
|
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||||
|
.debug_aranges 0 : { *(.debug_aranges) }
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# ##############################################################################
|
||||||
|
# boards/arm/ht32f491x3/esk32/src/CMakeLists.txt
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more contributor
|
||||||
|
# license agreements. See the NOTICE file distributed with this work for
|
||||||
|
# additional information regarding copyright ownership. The ASF licenses this
|
||||||
|
# file to you under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
# use this file except in compliance with the License. You may obtain a copy of
|
||||||
|
# the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations under
|
||||||
|
# the License.
|
||||||
|
#
|
||||||
|
# ##############################################################################
|
||||||
|
|
||||||
|
set(SRCS ht32_boot.c)
|
||||||
|
|
||||||
|
if(CONFIG_BOARDCTL OR CONFIG_BOARD_LATE_INITIALIZE)
|
||||||
|
list(APPEND SRCS ht32_appinit.c)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CONFIG_USERLED)
|
||||||
|
list(APPEND SRCS ht32_userleds.c)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_sources(board PRIVATE ${SRCS})
|
||||||
|
|
||||||
|
set_property(GLOBAL PROPERTY LD_SCRIPT "${NUTTX_BOARD_DIR}/scripts/ld.script")
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
############################################################################
|
||||||
|
# boards/arm/ht32f491x3/esk32/src/Makefile
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership. The
|
||||||
|
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance with the
|
||||||
|
# License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
include $(TOPDIR)/Make.defs
|
||||||
|
|
||||||
|
CSRCS += ht32_boot.c
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BOARDCTL),y)
|
||||||
|
CSRCS += ht32_appinit.c
|
||||||
|
else ifeq ($(CONFIG_BOARD_LATE_INITIALIZE),y)
|
||||||
|
CSRCS += ht32_appinit.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_USERLED),y)
|
||||||
|
CSRCS += ht32_userleds.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(TOPDIR)/boards/Board.mk
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* boards/arm/ht32f491x3/esk32/src/ht32_appinit.c
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership. The
|
||||||
|
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the
|
||||||
|
* License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
#include <nuttx/board.h>
|
||||||
|
#include <nuttx/fs/fs.h>
|
||||||
|
#include <nuttx/leds/userled.h>
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Private Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
static int ht32_bringup(void)
|
||||||
|
{
|
||||||
|
int ret = OK;
|
||||||
|
int tmp;
|
||||||
|
|
||||||
|
#if defined(CONFIG_USERLED) && !defined(CONFIG_ARCH_LEDS)
|
||||||
|
# ifdef CONFIG_USERLED_LOWER
|
||||||
|
tmp = userled_lower_initialize("/dev/userleds");
|
||||||
|
if (tmp < 0 && tmp != -EEXIST)
|
||||||
|
{
|
||||||
|
syslog(LOG_ERR, "ERROR: Failed to register /dev/userleds: %d\n", tmp);
|
||||||
|
ret = tmp;
|
||||||
|
}
|
||||||
|
# else
|
||||||
|
board_userled_initialize();
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_FS_BINFS
|
||||||
|
tmp = nx_mount(NULL, "/bin", "binfs", 0, NULL);
|
||||||
|
if (tmp < 0 && tmp != -EBUSY)
|
||||||
|
{
|
||||||
|
syslog(LOG_ERR, "ERROR: Failed to mount binfs at /bin: %d\n", tmp);
|
||||||
|
ret = tmp;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_FS_PROCFS
|
||||||
|
tmp = nx_mount(NULL, "/proc", "procfs", 0, NULL);
|
||||||
|
if (tmp < 0 && tmp != -EBUSY)
|
||||||
|
{
|
||||||
|
syslog(LOG_ERR, "ERROR: Failed to mount procfs at /proc: %d\n", tmp);
|
||||||
|
ret = tmp;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int board_app_initialize(uintptr_t arg)
|
||||||
|
{
|
||||||
|
(void)arg;
|
||||||
|
|
||||||
|
#ifdef CONFIG_BOARD_LATE_INITIALIZE
|
||||||
|
return OK;
|
||||||
|
#else
|
||||||
|
return ht32_bringup();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_BOARD_LATE_INITIALIZE
|
||||||
|
void board_late_initialize(void)
|
||||||
|
{
|
||||||
|
ht32_bringup();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* boards/arm/ht32f491x3/esk32/src/ht32_boot.c
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership. The
|
||||||
|
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the
|
||||||
|
* License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
|
||||||
|
#include "arm_internal.h"
|
||||||
|
#include "chip.h"
|
||||||
|
|
||||||
|
#include "hardware/ht32f491x3_crm.h"
|
||||||
|
#include "hardware/ht32f491x3_flash.h"
|
||||||
|
#include "hardware/ht32f491x3_gpio.h"
|
||||||
|
#include "hardware/ht32f491x3_memorymap.h"
|
||||||
|
#include "hardware/ht32f491x3_pwc.h"
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Pre-processor Definitions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#define HT32_BOARD_HEXT_FREQUENCY 8000000u
|
||||||
|
#define HT32_BOARD_PLL_150_NS 75u
|
||||||
|
#define HT32_BOARD_PLL_150_MS 1u
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void ht32f491x3_clockconfig(void)
|
||||||
|
{
|
||||||
|
/* The ESK32 board has an 8 MHz crystal, so follow Holtek's 150 MHz
|
||||||
|
* HEXT->PLL startup sequence for this board.
|
||||||
|
*/
|
||||||
|
|
||||||
|
modifyreg32(HT32_CRM_CTRL, 0, HT32_CRM_CTRL_HICKEN);
|
||||||
|
while ((getreg32(HT32_CRM_CTRL) & HT32_CRM_CTRL_HICKSTBL) == 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
modifyreg32(HT32_CRM_CFG, HT32_CRM_CFG_SCLKSEL_MASK,
|
||||||
|
HT32_CRM_CFG_SEL_HICK);
|
||||||
|
while ((getreg32(HT32_CRM_CFG) & HT32_CRM_CFG_SCLKSTS_MASK) !=
|
||||||
|
HT32_CRM_CFG_STS_HICK)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
modifyreg32(HT32_CRM_CFG,
|
||||||
|
HT32_CRM_CFG_AHBDIV_MASK |
|
||||||
|
HT32_CRM_CFG_APB1DIV_MASK |
|
||||||
|
HT32_CRM_CFG_APB2DIV_MASK,
|
||||||
|
HT32_CRM_CFG_AHBDIV_NONE |
|
||||||
|
HT32_CRM_CFG_APB1DIV_2 |
|
||||||
|
HT32_CRM_CFG_APB2DIV_1);
|
||||||
|
|
||||||
|
putreg32(HT32_FLASH_PSR_PROGRAM(HT32_FLASH_WAIT_CYCLE_4), HT32_FLASH_PSR);
|
||||||
|
|
||||||
|
modifyreg32(HT32_CRM_APB1EN, 0, HT32_CRM_APB1EN_PWCEN);
|
||||||
|
modifyreg32(HT32_PWC_LDOOV, HT32_PWC_LDOOVSEL_MASK,
|
||||||
|
HT32_PWC_LDO_OUTPUT_1V3);
|
||||||
|
|
||||||
|
modifyreg32(HT32_CRM_CTRL, HT32_CRM_CTRL_HEXTBYPS, HT32_CRM_CTRL_HEXTEN);
|
||||||
|
while ((getreg32(HT32_CRM_CTRL) & HT32_CRM_CTRL_HEXTSTBL) == 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
putreg32((HT32_BOARD_PLL_150_MS << HT32_CRM_PLLCFG_PLLMS_SHIFT) |
|
||||||
|
(HT32_BOARD_PLL_150_NS << HT32_CRM_PLLCFG_PLLNS_SHIFT) |
|
||||||
|
HT32_CRM_PLLCFG_FR_2 |
|
||||||
|
HT32_CRM_PLLCFG_SOURCE_HEXT,
|
||||||
|
HT32_CRM_PLLCFG);
|
||||||
|
|
||||||
|
modifyreg32(HT32_CRM_CTRL, 0, HT32_CRM_CTRL_PLLEN);
|
||||||
|
while ((getreg32(HT32_CRM_CTRL) & HT32_CRM_CTRL_PLLSTBL) == 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
modifyreg32(HT32_CRM_MISC2, HT32_CRM_MISC2_AUTOSTEP_MASK,
|
||||||
|
HT32_CRM_MISC2_AUTOSTEP_ENABLE);
|
||||||
|
modifyreg32(HT32_CRM_CFG, HT32_CRM_CFG_SCLKSEL_MASK,
|
||||||
|
HT32_CRM_CFG_SEL_PLL);
|
||||||
|
while ((getreg32(HT32_CRM_CFG) & HT32_CRM_CFG_SCLKSTS_MASK) !=
|
||||||
|
HT32_CRM_CFG_STS_PLL)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
modifyreg32(HT32_CRM_MISC2, HT32_CRM_MISC2_AUTOSTEP_MASK, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ht32f491x3_boardinitialize(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* boards/arm/ht32f491x3/esk32/src/ht32_userleds.c
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership. The
|
||||||
|
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the
|
||||||
|
* License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
|
||||||
|
#include "arm_internal.h"
|
||||||
|
|
||||||
|
#include "ht32f491x3_gpio.h"
|
||||||
|
|
||||||
|
#include "hardware/ht32f491x3_crm.h"
|
||||||
|
|
||||||
|
#ifndef CONFIG_ARCH_LEDS
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Private Types
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
struct ht32_ledcfg_s
|
||||||
|
{
|
||||||
|
uint32_t clken;
|
||||||
|
uintptr_t base;
|
||||||
|
uint8_t pin;
|
||||||
|
bool active_low;
|
||||||
|
};
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Private Data
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
static const struct ht32_ledcfg_s g_ledcfg[BOARD_NLEDS] =
|
||||||
|
{
|
||||||
|
{BOARD_LED2_GPIO_CLKEN, BOARD_LED2_GPIO_BASE, BOARD_LED2_GPIO_PIN, true},
|
||||||
|
{BOARD_LED3_GPIO_CLKEN, BOARD_LED3_GPIO_BASE, BOARD_LED3_GPIO_PIN, true},
|
||||||
|
{BOARD_LED4_GPIO_CLKEN, BOARD_LED4_GPIO_BASE, BOARD_LED4_GPIO_PIN, true},
|
||||||
|
};
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
uint32_t board_userled_initialize(void)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
for (i = 0; i < BOARD_NLEDS; i++)
|
||||||
|
{
|
||||||
|
modifyreg32(HT32_CRM_AHBEN1, 0, g_ledcfg[i].clken);
|
||||||
|
ht32f491x3_gpioconfig(g_ledcfg[i].base, g_ledcfg[i].pin,
|
||||||
|
HT32_GPIO_MODE_OUTPUT, false,
|
||||||
|
HT32_GPIO_DRIVE_MEDIUM,
|
||||||
|
HT32_GPIO_PULL_NONE, 0);
|
||||||
|
ht32f491x3_gpiowrite(g_ledcfg[i].base, g_ledcfg[i].pin,
|
||||||
|
g_ledcfg[i].active_low);
|
||||||
|
}
|
||||||
|
|
||||||
|
return BOARD_NLEDS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void board_userled(int led, bool ledon)
|
||||||
|
{
|
||||||
|
if (led >= 0 && led < BOARD_NLEDS)
|
||||||
|
{
|
||||||
|
ht32f491x3_gpiowrite(g_ledcfg[led].base, g_ledcfg[led].pin,
|
||||||
|
g_ledcfg[led].active_low ? !ledon : ledon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void board_userled_all(uint32_t ledset)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
for (i = 0; i < BOARD_NLEDS; i++)
|
||||||
|
{
|
||||||
|
board_userled(i, (ledset & (1u << i)) != 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* !CONFIG_ARCH_LEDS */
|
||||||
Executable
+143
@@ -0,0 +1,143 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
############################################################################
|
||||||
|
# boards/arm/ht32f491x3/esk32/tools/flash.sh
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership. The
|
||||||
|
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance with the
|
||||||
|
# License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
TOPDIR="$(cd "${SCRIPT_DIR}/../../../../.." && pwd)"
|
||||||
|
|
||||||
|
DEFAULT_BIN="${TOPDIR}/nuttx.bin"
|
||||||
|
OPENOCD_ROOT="/mnt/c/Program Files (x86)/Holtek HT32 Series/HT32-IDE/xPack/xpack-openocd-0.11.0-4"
|
||||||
|
OPENOCD_EXE="${OPENOCD_ROOT}/bin/openocd.exe"
|
||||||
|
SCRIPTS_DIR="${OPENOCD_ROOT}/scripts"
|
||||||
|
FLASH_LOADER="${OPENOCD_ROOT}/FlashLoader/HT32F491x3_256.HLM"
|
||||||
|
DEVICE_NAME="HT32F49163_100LQFP"
|
||||||
|
FLASH_BASE="0x08000000"
|
||||||
|
FLASH_END="0x0803FFFF"
|
||||||
|
SRAM_BASE="0x20000000"
|
||||||
|
WORKAREA_SIZE="0xC000"
|
||||||
|
BIN_PATH="${DEFAULT_BIN}"
|
||||||
|
DRY_RUN=0
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $0 [options]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--bin PATH Binary to flash. Default: ${DEFAULT_BIN}
|
||||||
|
--device NAME Holtek expected device name. Default: ${DEVICE_NAME}
|
||||||
|
--openocd-root DIR Holtek xPack OpenOCD root.
|
||||||
|
--dry-run Print the OpenOCD command without executing it.
|
||||||
|
--help Show this help.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
$0
|
||||||
|
$0 --dry-run
|
||||||
|
$0 --device HT32F49163_64LQFP
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
while (($# > 0)); do
|
||||||
|
case "$1" in
|
||||||
|
--bin)
|
||||||
|
BIN_PATH="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--device)
|
||||||
|
DEVICE_NAME="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--openocd-root)
|
||||||
|
OPENOCD_ROOT="$2"
|
||||||
|
OPENOCD_EXE="${OPENOCD_ROOT}/bin/openocd.exe"
|
||||||
|
SCRIPTS_DIR="${OPENOCD_ROOT}/scripts"
|
||||||
|
FLASH_LOADER="${OPENOCD_ROOT}/FlashLoader/HT32F491x3_256.HLM"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--dry-run)
|
||||||
|
DRY_RUN=1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--help|-h)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown argument: $1" >&2
|
||||||
|
usage >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "${DRY_RUN}" -eq 0 ]]; then
|
||||||
|
if [[ ! -f "${BIN_PATH}" ]]; then
|
||||||
|
echo "Binary not found: ${BIN_PATH}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f "${OPENOCD_EXE}" ]]; then
|
||||||
|
echo "OpenOCD executable not found: ${OPENOCD_EXE}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f "${FLASH_LOADER}" ]]; then
|
||||||
|
echo "Flash loader not found: ${FLASH_LOADER}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
BIN_WIN="$(wslpath -m "${BIN_PATH}")"
|
||||||
|
SCRIPTS_WIN="$(wslpath -m "${SCRIPTS_DIR}")"
|
||||||
|
LOADER_WIN="$(wslpath -m "${FLASH_LOADER}")"
|
||||||
|
|
||||||
|
OPENOCD_CMD=(
|
||||||
|
"${OPENOCD_EXE}"
|
||||||
|
-s "${SCRIPTS_WIN}"
|
||||||
|
-c "hlm_SRAM ${SRAM_BASE} ${WORKAREA_SIZE}"
|
||||||
|
-c "hlm_loader {${LOADER_WIN}} ${FLASH_BASE} ${FLASH_END}"
|
||||||
|
-c "ht_flags erase_sector"
|
||||||
|
-c "set WORKAREASIZE ${WORKAREA_SIZE}"
|
||||||
|
-f interface/htlink.cfg
|
||||||
|
-f target/HLM491x3.cfg
|
||||||
|
-c "set_expected_name ${DEVICE_NAME}"
|
||||||
|
-c "program ${BIN_WIN} verify reset exit ${FLASH_BASE}"
|
||||||
|
)
|
||||||
|
|
||||||
|
printf 'TOPDIR : %s\n' "${TOPDIR}"
|
||||||
|
printf 'Binary : %s\n' "${BIN_PATH}"
|
||||||
|
printf 'Device : %s\n' "${DEVICE_NAME}"
|
||||||
|
printf 'OpenOCD : %s\n' "${OPENOCD_EXE}"
|
||||||
|
printf 'Flash loader: %s\n' "${FLASH_LOADER}"
|
||||||
|
|
||||||
|
if [[ "${DRY_RUN}" -eq 1 ]]; then
|
||||||
|
[[ -f "${BIN_PATH}" ]] || printf 'Warning : binary not found yet\n'
|
||||||
|
[[ -f "${OPENOCD_EXE}" ]] || printf 'Warning : OpenOCD executable not found\n'
|
||||||
|
[[ -f "${FLASH_LOADER}" ]] || printf 'Warning : flash loader not found\n'
|
||||||
|
printf 'Command :'
|
||||||
|
printf ' %q' "${OPENOCD_CMD[@]}"
|
||||||
|
printf '\n'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "${OPENOCD_CMD[@]}"
|
||||||
Reference in New Issue
Block a user