mirror of
https://github.com/apache/nuttx.git
synced 2026-10-06 05:47:54 +00:00
boards: add Realtek RTL8721Dx and RTL8720F board configurations
Add board-level support for two Realtek Ameba WHC evaluation boards:
- pke8721daf (RTL8721Dx)
- rtl8720f_evb (RTL8720F)
Each board provides:
- defconfig for NSH with WiFi networking support
- CMakeLists.txt (make-only build helper that fails fast on cmake)
- Board-specific bring-up and initialization (leds, SDIO, flash)
- Scripts/Make.defs including the IC-level build fragment and the
make flash target (tools/ameba/Config.mk)
Signed-off-by: raul_chen <raul_chen@realsil.com.cn>
This commit is contained in:
parent
6574028920
commit
7355393fcd
23 changed files with 1339 additions and 0 deletions
|
|
@ -2452,6 +2452,22 @@ config ARCH_BOARD_MPS3_AN547
|
|||
This options selects support for NuttX on the MPS3 AN547
|
||||
board featuring the Cortex-M55.
|
||||
|
||||
config ARCH_BOARD_PKE8721DAF
|
||||
bool "Realtek pke8721daf"
|
||||
depends on ARCH_CHIP_RTL8721DX
|
||||
---help---
|
||||
This options selects support for NuttX on the pke8721daf
|
||||
board featuring the Realtek RTL8721Dx (KM4,
|
||||
Cortex-M33).
|
||||
|
||||
config ARCH_BOARD_RTL8720F_EVB
|
||||
bool "Realtek RTL8720F_EVB"
|
||||
depends on ARCH_CHIP_RTL8720F
|
||||
---help---
|
||||
This options selects support for NuttX on the RTL8720F_EVB
|
||||
board featuring the Realtek RTL8720F (km4tz application/host
|
||||
core, Cortex-M33).
|
||||
|
||||
config ARCH_BOARD_SABRE_6QUAD
|
||||
bool "NXP/Freescale i.MX6 Sabre-6Quad board"
|
||||
depends on ARCH_CHIP_IMX6_6QUAD
|
||||
|
|
@ -3899,6 +3915,8 @@ config ARCH_BOARD
|
|||
default "mps2-an500" if ARCH_BOARD_MPS2_AN500
|
||||
default "mps2-an521" if ARCH_BOARD_MPS2_AN521
|
||||
default "mps3-an547" if ARCH_BOARD_MPS3_AN547
|
||||
default "pke8721daf" if ARCH_BOARD_PKE8721DAF
|
||||
default "rtl8720f_evb" if ARCH_BOARD_RTL8720F_EVB
|
||||
default "rv32m1-vega" if ARCH_BOARD_RV32M1_VEGA
|
||||
default "rv-virt" if ARCH_BOARD_QEMU_RV_VIRT
|
||||
default "star64" if ARCH_BOARD_JH7110_STAR64
|
||||
|
|
@ -4143,6 +4161,12 @@ endif
|
|||
if ARCH_BOARD_MPS3_AN547
|
||||
source "boards/arm/mps/mps3-an547/Kconfig"
|
||||
endif
|
||||
if ARCH_BOARD_PKE8721DAF
|
||||
source "boards/arm/rtl8721dx/pke8721daf/Kconfig"
|
||||
endif
|
||||
if ARCH_BOARD_RTL8720F_EVB
|
||||
source "boards/arm/rtl8720f/rtl8720f_evb/Kconfig"
|
||||
endif
|
||||
if ARCH_BOARD_QEMU_ARMV7A
|
||||
source "boards/arm/qemu/qemu-armv7a/Kconfig"
|
||||
endif
|
||||
|
|
|
|||
36
boards/arm/rtl8720f/rtl8720f_evb/CMakeLists.txt
Normal file
36
boards/arm/rtl8720f/rtl8720f_evb/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# ##############################################################################
|
||||
# boards/arm/rtl8720f/rtl8720f_evb/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.
|
||||
#
|
||||
# ##############################################################################
|
||||
|
||||
# The RTL8720F (Ameba WHC) port currently builds via the make-based build only.
|
||||
# The CMake path does not yet wire up the vendor-SDK machinery (SDK fetch,
|
||||
# libameba_fwlib.a/libameba_wifi.a, the image2 entry ameba_app_start.c, the SDK
|
||||
# image2 linker-script generation, the NP-image build and the app.bin packaging)
|
||||
# that boards/.../scripts/Make.defs -> arch/.../ameba_board.mk provides, so a
|
||||
# CMake configure would not produce a flashable image. Fail fast with a clear
|
||||
# message instead of half-building.
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"rtl8720f_evb (RTL8720F, Ameba WHC) currently supports the make build "
|
||||
"only; CMake is not yet supported. Build with:\n"
|
||||
" ./tools/configure.sh rtl8720f_evb:nsh && make")
|
||||
|
||||
add_subdirectory(src)
|
||||
7
boards/arm/rtl8720f/rtl8720f_evb/Kconfig
Normal file
7
boards/arm/rtl8720f/rtl8720f_evb/Kconfig
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||
#
|
||||
|
||||
if ARCH_BOARD_RTL8720F_EVB
|
||||
endif
|
||||
81
boards/arm/rtl8720f/rtl8720f_evb/configs/nsh/defconfig
Normal file
81
boards/arm/rtl8720f/rtl8720f_evb/configs/nsh/defconfig
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
#
|
||||
# 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_DEBUG_WARN is not set
|
||||
CONFIG_ARCH="arm"
|
||||
CONFIG_ARCH_BOARD="rtl8720f_evb"
|
||||
CONFIG_ARCH_BOARD_RTL8720F_EVB=y
|
||||
CONFIG_ARCH_CHIP="rtl8720f"
|
||||
CONFIG_ARCH_CHIP_RTL8720F=y
|
||||
CONFIG_ARCH_INTERRUPTSTACK=2048
|
||||
CONFIG_ARCH_STACKDUMP=y
|
||||
CONFIG_ARMV8M_SYSTICK=y
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_DEBUG_ASSERTIONS=y
|
||||
CONFIG_DEBUG_FEATURES=y
|
||||
CONFIG_DEBUG_FULLOPT=y
|
||||
CONFIG_DEBUG_SYMBOLS=y
|
||||
CONFIG_DEFAULT_TASK_STACKSIZE=4096
|
||||
CONFIG_DRIVERS_IEEE80211=y
|
||||
CONFIG_DRIVERS_WIRELESS=y
|
||||
CONFIG_EXAMPLES_DHCPD=y
|
||||
CONFIG_EXAMPLES_HELLO=y
|
||||
CONFIG_FS_PROCFS=y
|
||||
CONFIG_FS_TMPFS=y
|
||||
CONFIG_IDLETHREAD_STACKSIZE=4096
|
||||
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
||||
CONFIG_IOB_BUFSIZE=400
|
||||
CONFIG_IOB_NBUFFERS=100
|
||||
CONFIG_IOB_NCHAINS=36
|
||||
CONFIG_IOB_THROTTLE=40
|
||||
CONFIG_LIBC_MEMFD_ERROR=y
|
||||
CONFIG_MM_DEFAULT_ALIGNMENT=32
|
||||
CONFIG_NET=y
|
||||
CONFIG_NETDB_DNSCLIENT=y
|
||||
CONFIG_NETDEV_LATEINIT=y
|
||||
CONFIG_NETDEV_WIRELESS_IOCTL=y
|
||||
CONFIG_NETUTILS_DHCPD=y
|
||||
CONFIG_NETUTILS_DHCPD_ROUTERIP=0xc0a80401
|
||||
CONFIG_NETUTILS_DHCPD_STARTIP=0xc0a80402
|
||||
CONFIG_NETUTILS_IPERF=y
|
||||
CONFIG_NET_ARP_IPIN=y
|
||||
CONFIG_NET_BROADCAST=y
|
||||
CONFIG_NET_ETH_PKTSIZE=1514
|
||||
CONFIG_NET_ICMP_SOCKET=y
|
||||
CONFIG_NET_TCP=y
|
||||
CONFIG_NET_TCP_DELAYED_ACK=y
|
||||
CONFIG_NET_TCP_KEEPALIVE=y
|
||||
CONFIG_NET_TCP_NOTIFIER=y
|
||||
CONFIG_NET_TCP_WRITE_BUFFERS=y
|
||||
CONFIG_NET_UDP=y
|
||||
CONFIG_NSH_BUILTIN_APPS=y
|
||||
CONFIG_NSH_DISABLE_VCONFIG=y
|
||||
CONFIG_NSH_FILEIOSIZE=512
|
||||
CONFIG_NSH_READLINE=y
|
||||
CONFIG_PREALLOC_TIMERS=4
|
||||
CONFIG_RAM_SIZE=262144
|
||||
CONFIG_RAM_START=0x30008000
|
||||
CONFIG_RR_INTERVAL=200
|
||||
CONFIG_RTL8720F_FLASH_FS=y
|
||||
CONFIG_RTL8720F_WIFI=y
|
||||
CONFIG_SCHED_HPWORK=y
|
||||
CONFIG_SCHED_HPWORKPRIORITY=192
|
||||
CONFIG_SCHED_LPWORK=y
|
||||
CONFIG_STACK_COLORATION=y
|
||||
CONFIG_START_DAY=16
|
||||
CONFIG_START_MONTH=6
|
||||
CONFIG_START_YEAR=2026
|
||||
CONFIG_SYSTEM_DHCPC_RENEW=y
|
||||
CONFIG_SYSTEM_NSH=y
|
||||
CONFIG_SYSTEM_NSH_STACKSIZE=2500
|
||||
CONFIG_SYSTEM_PING=y
|
||||
CONFIG_TIMER=y
|
||||
CONFIG_TIMER_ARCH=y
|
||||
CONFIG_USEC_PER_TICK=1000
|
||||
CONFIG_WIRELESS=y
|
||||
CONFIG_WIRELESS_WAPI=y
|
||||
CONFIG_WIRELESS_WAPI_CMDTOOL=y
|
||||
66
boards/arm/rtl8720f/rtl8720f_evb/include/board.h
Normal file
66
boards/arm/rtl8720f/rtl8720f_evb/include/board.h
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/rtl8720f/rtl8720f_evb/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_RTL8720F_RTL8720F_EVB_INCLUDE_BOARD_H
|
||||
#define __BOARDS_ARM_RTL8720F_RTL8720F_EVB_INCLUDE_BOARD_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* The SysTick/core clock is taken from the SDK's SystemCoreClock global at
|
||||
* runtime (see arch/arm/src/rtl8720f/ameba_timerisr.c), so no board-level
|
||||
* clock constant is needed here.
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
#define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __BOARDS_ARM_RTL8720F_RTL8720F_EVB_INCLUDE_BOARD_H */
|
||||
22
boards/arm/rtl8720f/rtl8720f_evb/prebuilt/.gitignore
vendored
Normal file
22
boards/arm/rtl8720f/rtl8720f_evb/prebuilt/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# Realtek RTL8720F vendor blobs and build artefacts.
|
||||
#
|
||||
# These are NOT NuttX source and must never be committed upstream (vendor
|
||||
# blobs are kept out of the NuttX tree). They are vendor outputs from the
|
||||
# ameba-rtos SDK, placed here by the integrator:
|
||||
#
|
||||
# libs/*.a pre-compiled chip archives (fwlib/hal/swlib/misc/...)
|
||||
# km4ns_image2_all.bin prebuilt NP (WiFi/LP core, km4ns) image2 blob
|
||||
# platform_autoconf.h regenerated each build from the SDK menuconfig by
|
||||
# ameba_gen_autoconf.sh (single source of truth)
|
||||
# config_km4 / config_fw vendored SDK kconfig snapshots for axf2bin packaging
|
||||
#
|
||||
# Generated at build time:
|
||||
#
|
||||
# ld.script.gen[.tmp] combined image2 linker script
|
||||
# project_km4tz/ staged include dir for ld preprocessing
|
||||
# pkg/ axf2bin / firmware_package staging area
|
||||
#
|
||||
# Everything in this directory is ignored.
|
||||
|
||||
*
|
||||
!.gitignore
|
||||
33
boards/arm/rtl8720f/rtl8720f_evb/scripts/Make.defs
Normal file
33
boards/arm/rtl8720f/rtl8720f_evb/scripts/Make.defs
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
############################################################################
|
||||
# boards/arm/rtl8720f/rtl8720f_evb/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.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
# All RTL8720F board-build definitions (SDK include sets, fwlib/WiFi source
|
||||
# lists, image2 linker-script generation, PREBUILD/POSTBUILD) live in the
|
||||
# shared per-IC fragment so every board on this IC uses one copy. This board's
|
||||
# own paths (prebuilt/ staging) derive from $(BOARD_DIR) inside it.
|
||||
|
||||
include $(TOPDIR)/arch/arm/src/rtl8720f/ameba_board.mk
|
||||
|
||||
# Flashing via the SDK AmebaFlash.py (make flash AMEBA_PORT=/dev/ttyUSB0)
|
||||
|
||||
AMEBA_FLASH_PROFILE = RTL8720F
|
||||
include $(TOPDIR)/tools/ameba/Config.mk
|
||||
27
boards/arm/rtl8720f/rtl8720f_evb/src/CMakeLists.txt
Normal file
27
boards/arm/rtl8720f/rtl8720f_evb/src/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# ##############################################################################
|
||||
# boards/arm/rtl8720f/rtl8720f_evb/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 rtl8720f_boot.c rtl8720f_bringup.c)
|
||||
|
||||
target_sources(board PRIVATE ${SRCS})
|
||||
|
||||
set_property(GLOBAL PROPERTY LD_SCRIPT "${NUTTX_BOARD_DIR}/scripts/ld.script")
|
||||
27
boards/arm/rtl8720f/rtl8720f_evb/src/Makefile
Normal file
27
boards/arm/rtl8720f/rtl8720f_evb/src/Makefile
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
############################################################################
|
||||
# boards/arm/rtl8720f/rtl8720f_evb/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 = rtl8720f_boot.c rtl8720f_bringup.c
|
||||
|
||||
include $(TOPDIR)/boards/Board.mk
|
||||
69
boards/arm/rtl8720f/rtl8720f_evb/src/rtl8720f_boot.c
Normal file
69
boards/arm/rtl8720f/rtl8720f_evb/src/rtl8720f_boot.c
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/rtl8720f/rtl8720f_evb/src/rtl8720f_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 <nuttx/arch.h>
|
||||
#include <nuttx/board.h>
|
||||
|
||||
#include "rtl8720f_rtl8720f_evb.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: rtl8720f_boardinitialize
|
||||
*
|
||||
* Description:
|
||||
* All RTL8720F architectures must provide the following entry point.
|
||||
* This entry point is called early in the initialization -- after all
|
||||
* memory has been configured and mapped but before any devices have been
|
||||
* initialized.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void rtl8720f_boardinitialize(void)
|
||||
{
|
||||
/* Board-specific early initialization. Nothing to do here. */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_initialize
|
||||
*
|
||||
* Description:
|
||||
* If CONFIG_BOARD_EARLY_INITIALIZE is selected, then an additional
|
||||
* initialization call will be performed in the boot-up sequence to a
|
||||
* function called board_initialize().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_BOARD_EARLY_INITIALIZE
|
||||
void board_early_initialize(void)
|
||||
{
|
||||
rtl8720f_boardinitialize();
|
||||
}
|
||||
#endif
|
||||
203
boards/arm/rtl8720f/rtl8720f_evb/src/rtl8720f_bringup.c
Normal file
203
boards/arm/rtl8720f/rtl8720f_evb/src/rtl8720f_bringup.c
Normal file
|
|
@ -0,0 +1,203 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/rtl8720f/rtl8720f_evb/src/rtl8720f_bringup.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 <sys/types.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include <nuttx/fs/fs.h>
|
||||
#include <nuttx/board.h>
|
||||
|
||||
#include "rtl8720f_rtl8720f_evb.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Private Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/* SDK ROM inter-core IPC-semaphore RTOS hooks. rtos_* come from the NuttX
|
||||
* os_wrapper (ameba_os_wrap.c); IPC_* are SDK ROM symbols.
|
||||
*/
|
||||
|
||||
extern void rtos_critical_enter(uint32_t component_id);
|
||||
extern void rtos_critical_exit(uint32_t component_id);
|
||||
extern void rtos_time_delay_ms(uint32_t ms);
|
||||
extern void IPC_patch_function(void (*enter)(uint32_t),
|
||||
void (*leave)(uint32_t), uint32_t lock_id);
|
||||
extern void IPC_SEMDelayStub(void (*delay)(uint32_t));
|
||||
|
||||
/* RTOS_CRITICAL_SEMA in the SDK os_wrapper_critical.h enum. Our
|
||||
* rtos_critical_enter/exit ignore the component id, so the value is only
|
||||
* passed through to satisfy the ROM signature.
|
||||
*/
|
||||
|
||||
#define AMEBA_RTOS_CRITICAL_SEMA 9
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: rtl8720f_bringup
|
||||
*
|
||||
* Description:
|
||||
* Bring up board features
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int rtl8720f_bringup(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#ifdef CONFIG_FS_PROCFS
|
||||
/* Mount the procfs file system */
|
||||
|
||||
ret = nx_mount(NULL, "/proc", "procfs", 0, NULL);
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: Failed to mount procfs at /proc: %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FS_TMPFS
|
||||
/* Mount the tmp file system */
|
||||
|
||||
ret = nx_mount(NULL, CONFIG_LIBC_TMPDIR, "tmpfs", 0, NULL);
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: Failed to mount tmpfs at /tmp: %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8720F_FLASH_FS
|
||||
/* Mount the persistent data filesystem (littlefs on the SPI NOR VFS1
|
||||
* partition) at /data before WiFi, so the WiFi KV store is available.
|
||||
*/
|
||||
|
||||
/* The SDK flash erase/program path IPC-pauses the NP (km4ns) while the AP
|
||||
* writes the shared XIP flash, so the IPC transport must be up first.
|
||||
*/
|
||||
|
||||
ameba_ipc_initialize();
|
||||
|
||||
ret = ameba_flash_fs_initialize();
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: ameba_flash_fs_initialize failed: %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8720F_WIFI
|
||||
/* Bring up the KM4 IPC transport and start the WHC host WiFi stack. */
|
||||
|
||||
ret = rtl8720f_wifi_initialize();
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: rtl8720f_wifi_initialize failed: %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Install the inter-core HW IPC-semaphore RTOS hooks LAST -- after all the
|
||||
* flash / WHC bring-up above, and just before this (board_late_initialize)
|
||||
* path returns and nx_start() hands off to the init task.
|
||||
*
|
||||
* The shared-flash / WHC paths take the hardware IPC semaphore to
|
||||
* serialize against the NP; the ROM semaphore code then calls an RTOS
|
||||
* critical-section pair plus a delay callback while a contended waiter
|
||||
* waits. That delay callback rtos_time_delay_ms() blocks, so it is only
|
||||
* safe from a real task. Registering it here means the bring-up flash
|
||||
* access above (which runs in this pre-task context) uses the ROM default
|
||||
* (busy-spin, no callback), while every runtime IPC-semaphore user that
|
||||
* follows runs in a task and yields properly.
|
||||
*/
|
||||
|
||||
IPC_patch_function(rtos_critical_enter, rtos_critical_exit,
|
||||
AMEBA_RTOS_CRITICAL_SEMA);
|
||||
IPC_SEMDelayStub(rtos_time_delay_ms);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_app_initialize
|
||||
*
|
||||
* Description:
|
||||
* Perform application specific initialization. This function is never
|
||||
* called directly from application code, but only indirectly via the
|
||||
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
|
||||
*
|
||||
* Input Parameters:
|
||||
* arg - The boardctl() argument is passed to the board_app_initialize()
|
||||
* implementation without modification. The argument has no
|
||||
* meaning to NuttX; the meaning of the argument is a contract
|
||||
* between the board-specific initialization logic and the
|
||||
* matching application logic. The value could be such things as a
|
||||
* mode enumeration value, a set of DIP switch settings, a
|
||||
* pointer to configuration data read from a file or serial FLASH,
|
||||
* or whatever you would like to do with it. Every implementation
|
||||
* should accept zero/NULL as a default configuration.
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) is returned on success; a negated errno value is returned on
|
||||
* any failure to indicate the nature of the failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_BOARDCTL
|
||||
int board_app_initialize(uintptr_t arg)
|
||||
{
|
||||
#ifndef CONFIG_BOARD_LATE_INITIALIZE
|
||||
/* Perform board initialization */
|
||||
|
||||
return rtl8720f_bringup();
|
||||
#else
|
||||
return OK;
|
||||
#endif
|
||||
}
|
||||
#endif /* CONFIG_BOARDCTL */
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_late_initialize
|
||||
*
|
||||
* Description:
|
||||
* If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional
|
||||
* initialization call will be performed in the boot-up sequence to a
|
||||
* function called board_late_initialize(). board_late_initialize() will
|
||||
* be called immediately after up_initialize() is called and just before
|
||||
* the initial application is started. This additional initialization
|
||||
* phase may be used, for example, to initialize board-specific device
|
||||
* drivers.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_BOARD_LATE_INITIALIZE
|
||||
void board_late_initialize(void)
|
||||
{
|
||||
/* Perform board initialization */
|
||||
|
||||
rtl8720f_bringup();
|
||||
}
|
||||
#endif /* CONFIG_BOARD_LATE_INITIALIZE */
|
||||
100
boards/arm/rtl8720f/rtl8720f_evb/src/rtl8720f_rtl8720f_evb.h
Normal file
100
boards/arm/rtl8720f/rtl8720f_evb/src/rtl8720f_rtl8720f_evb.h
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/rtl8720f/rtl8720f_evb/src/rtl8720f_rtl8720f_evb.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_RTL8720F_RTL8720F_EVB_SRC_RTL8720F_RTL8720F_EVB_H
|
||||
#define __BOARDS_ARM_RTL8720F_RTL8720F_EVB_SRC_RTL8720F_RTL8720F_EVB_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/****************************************************************************
|
||||
* Name: rtl8720f_boardinitialize
|
||||
*
|
||||
* Description:
|
||||
* Perform board-specific early initialization.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void rtl8720f_boardinitialize(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: rtl8720f_bringup
|
||||
*
|
||||
* Description:
|
||||
* Bring up board features.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int rtl8720f_bringup(void);
|
||||
|
||||
#ifdef CONFIG_RTL8720F_WIFI
|
||||
/****************************************************************************
|
||||
* Name: rtl8720f_wifi_initialize
|
||||
*
|
||||
* Description:
|
||||
* Bring up the KM4 IPC transport and start the WHC host WiFi stack
|
||||
* (arch/arm/src/rtl8720f/ameba_wifi_init.c).
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int rtl8720f_wifi_initialize(void);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_RTL8720F_FLASH_FS) || defined(CONFIG_RTL8720F_WIFI)
|
||||
/****************************************************************************
|
||||
* Name: ameba_ipc_initialize
|
||||
*
|
||||
* Description:
|
||||
* Bring up the km4tz<->km4ns IPC transport once (idempotent). Required by
|
||||
* the SDK flash erase/program path (inter-core XIP pause) and by WiFi
|
||||
* (arch/arm/src/rtl8720f/ameba_ipc.c).
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void ameba_ipc_initialize(void);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8720F_FLASH_FS
|
||||
/****************************************************************************
|
||||
* Name: ameba_flash_fs_initialize
|
||||
*
|
||||
* Description:
|
||||
* Register the on-chip SPI NOR data partition as an MTD device and mount
|
||||
* a littlefs filesystem on it at /data
|
||||
* (arch/arm/src/rtl8720f/ameba_flash_mtd.c).
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int ameba_flash_fs_initialize(void);
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __BOARDS_ARM_RTL8720F_RTL8720F_EVB_SRC_RTL8720F_RTL8720F_EVB_H */
|
||||
36
boards/arm/rtl8721dx/pke8721daf/CMakeLists.txt
Normal file
36
boards/arm/rtl8721dx/pke8721daf/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# ##############################################################################
|
||||
# boards/arm/rtl8721dx/pke8721daf/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.
|
||||
#
|
||||
# ##############################################################################
|
||||
|
||||
# The RTL8721Dx (Ameba WHC) port currently builds via the make-based build only.
|
||||
# The CMake path does not yet wire up the vendor-SDK machinery (SDK fetch,
|
||||
# libameba_fwlib.a/libameba_wifi.a, the image2 entry ameba_app_start.c, the SDK
|
||||
# image2 linker-script generation, the NP-image build and the app.bin packaging)
|
||||
# that boards/.../scripts/Make.defs -> arch/.../ameba_board.mk provides, so a
|
||||
# CMake configure would not produce a flashable image. Fail fast with a clear
|
||||
# message instead of half-building.
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"pke8721daf (RTL8721Dx, Ameba WHC) currently supports the make build "
|
||||
"only; CMake is not yet supported. Build with:\n"
|
||||
" ./tools/configure.sh pke8721daf:nsh && make")
|
||||
|
||||
add_subdirectory(src)
|
||||
7
boards/arm/rtl8721dx/pke8721daf/Kconfig
Normal file
7
boards/arm/rtl8721dx/pke8721daf/Kconfig
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||
#
|
||||
|
||||
if ARCH_BOARD_PKE8721DAF
|
||||
endif
|
||||
81
boards/arm/rtl8721dx/pke8721daf/configs/nsh/defconfig
Normal file
81
boards/arm/rtl8721dx/pke8721daf/configs/nsh/defconfig
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
#
|
||||
# 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_DEBUG_WARN is not set
|
||||
CONFIG_ARCH="arm"
|
||||
CONFIG_ARCH_BOARD="pke8721daf"
|
||||
CONFIG_ARCH_BOARD_PKE8721DAF=y
|
||||
CONFIG_ARCH_CHIP="rtl8721dx"
|
||||
CONFIG_ARCH_CHIP_RTL8721DX=y
|
||||
CONFIG_ARCH_INTERRUPTSTACK=2048
|
||||
CONFIG_ARCH_STACKDUMP=y
|
||||
CONFIG_ARMV8M_SYSTICK=y
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_DEBUG_ASSERTIONS=y
|
||||
CONFIG_DEBUG_FEATURES=y
|
||||
CONFIG_DEBUG_FULLOPT=y
|
||||
CONFIG_DEBUG_SYMBOLS=y
|
||||
CONFIG_DEFAULT_TASK_STACKSIZE=4096
|
||||
CONFIG_DRIVERS_IEEE80211=y
|
||||
CONFIG_DRIVERS_WIRELESS=y
|
||||
CONFIG_EXAMPLES_DHCPD=y
|
||||
CONFIG_EXAMPLES_HELLO=y
|
||||
CONFIG_FS_PROCFS=y
|
||||
CONFIG_FS_TMPFS=y
|
||||
CONFIG_IDLETHREAD_STACKSIZE=4096
|
||||
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
||||
CONFIG_IOB_BUFSIZE=400
|
||||
CONFIG_IOB_NBUFFERS=100
|
||||
CONFIG_IOB_NCHAINS=36
|
||||
CONFIG_IOB_THROTTLE=40
|
||||
CONFIG_LIBC_MEMFD_ERROR=y
|
||||
CONFIG_MM_DEFAULT_ALIGNMENT=32
|
||||
CONFIG_NET=y
|
||||
CONFIG_NETDB_DNSCLIENT=y
|
||||
CONFIG_NETDEV_LATEINIT=y
|
||||
CONFIG_NETDEV_WIRELESS_IOCTL=y
|
||||
CONFIG_NETUTILS_DHCPD=y
|
||||
CONFIG_NETUTILS_DHCPD_ROUTERIP=0xc0a80401
|
||||
CONFIG_NETUTILS_DHCPD_STARTIP=0xc0a80402
|
||||
CONFIG_NETUTILS_IPERF=y
|
||||
CONFIG_NET_ARP_IPIN=y
|
||||
CONFIG_NET_BROADCAST=y
|
||||
CONFIG_NET_ETH_PKTSIZE=1514
|
||||
CONFIG_NET_ICMP_SOCKET=y
|
||||
CONFIG_NET_TCP=y
|
||||
CONFIG_NET_TCP_DELAYED_ACK=y
|
||||
CONFIG_NET_TCP_KEEPALIVE=y
|
||||
CONFIG_NET_TCP_NOTIFIER=y
|
||||
CONFIG_NET_TCP_WRITE_BUFFERS=y
|
||||
CONFIG_NET_UDP=y
|
||||
CONFIG_NSH_BUILTIN_APPS=y
|
||||
CONFIG_NSH_DISABLE_VCONFIG=y
|
||||
CONFIG_NSH_FILEIOSIZE=512
|
||||
CONFIG_NSH_READLINE=y
|
||||
CONFIG_PREALLOC_TIMERS=4
|
||||
CONFIG_RAM_SIZE=294912
|
||||
CONFIG_RAM_START=0x20020000
|
||||
CONFIG_RR_INTERVAL=200
|
||||
CONFIG_RTL8721DX_FLASH_FS=y
|
||||
CONFIG_RTL8721DX_WIFI=y
|
||||
CONFIG_SCHED_HPWORK=y
|
||||
CONFIG_SCHED_HPWORKPRIORITY=192
|
||||
CONFIG_SCHED_LPWORK=y
|
||||
CONFIG_STACK_COLORATION=y
|
||||
CONFIG_START_DAY=16
|
||||
CONFIG_START_MONTH=6
|
||||
CONFIG_START_YEAR=2026
|
||||
CONFIG_SYSTEM_DHCPC_RENEW=y
|
||||
CONFIG_SYSTEM_NSH=y
|
||||
CONFIG_SYSTEM_NSH_STACKSIZE=2500
|
||||
CONFIG_SYSTEM_PING=y
|
||||
CONFIG_TIMER=y
|
||||
CONFIG_TIMER_ARCH=y
|
||||
CONFIG_USEC_PER_TICK=1000
|
||||
CONFIG_WIRELESS=y
|
||||
CONFIG_WIRELESS_WAPI=y
|
||||
CONFIG_WIRELESS_WAPI_CMDTOOL=y
|
||||
66
boards/arm/rtl8721dx/pke8721daf/include/board.h
Normal file
66
boards/arm/rtl8721dx/pke8721daf/include/board.h
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/rtl8721dx/pke8721daf/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_RTL8721DX_PKE8721DAF_INCLUDE_BOARD_H
|
||||
#define __BOARDS_ARM_RTL8721DX_PKE8721DAF_INCLUDE_BOARD_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* The SysTick/core clock is taken from the SDK's SystemCoreClock global at
|
||||
* runtime (see arch/arm/src/rtl8721dx/ameba_timerisr.c), so no board-level
|
||||
* clock constant is needed here.
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
#define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __BOARDS_ARM_RTL8721DX_PKE8721DAF_INCLUDE_BOARD_H */
|
||||
22
boards/arm/rtl8721dx/pke8721daf/prebuilt/.gitignore
vendored
Normal file
22
boards/arm/rtl8721dx/pke8721daf/prebuilt/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# Realtek RTL8721Dx vendor blobs and build artefacts.
|
||||
#
|
||||
# These are NOT NuttX source and must never be committed upstream (vendor
|
||||
# blobs are kept out of the NuttX tree). They are vendor outputs from the
|
||||
# ameba-rtos SDK, placed here by the integrator:
|
||||
#
|
||||
# libs/*.a pre-compiled chip archives (fwlib/hal/swlib/misc/...)
|
||||
# km0_image2_all.bin prebuilt NP (WiFi/LP core) image2 blob
|
||||
# platform_autoconf.h regenerated each build from the SDK menuconfig by
|
||||
# ameba_gen_autoconf.sh (single source of truth)
|
||||
# config_km4 / config_fw vendored SDK kconfig snapshots for axf2bin packaging
|
||||
#
|
||||
# Generated at build time:
|
||||
#
|
||||
# ld.script.gen[.tmp] combined image2 linker script
|
||||
# project_km4/ staged include dir for ld preprocessing
|
||||
# pkg/ axf2bin / firmware_package staging area
|
||||
#
|
||||
# Everything in this directory is ignored.
|
||||
|
||||
*
|
||||
!.gitignore
|
||||
33
boards/arm/rtl8721dx/pke8721daf/scripts/Make.defs
Normal file
33
boards/arm/rtl8721dx/pke8721daf/scripts/Make.defs
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
############################################################################
|
||||
# boards/arm/rtl8721dx/pke8721daf/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.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
# All RTL8721Dx board-build definitions (SDK include sets, fwlib/WiFi source
|
||||
# lists, image2 linker-script generation, PREBUILD/POSTBUILD) live in the
|
||||
# shared per-IC fragment so every board on this IC uses one copy. This board's
|
||||
# own paths (prebuilt/ staging) derive from $(BOARD_DIR) inside it.
|
||||
|
||||
include $(TOPDIR)/arch/arm/src/rtl8721dx/ameba_board.mk
|
||||
|
||||
# Flashing via the SDK AmebaFlash.py (make flash AMEBA_PORT=/dev/ttyUSB0)
|
||||
|
||||
AMEBA_FLASH_PROFILE = RTL8721Dx
|
||||
include $(TOPDIR)/tools/ameba/Config.mk
|
||||
27
boards/arm/rtl8721dx/pke8721daf/src/CMakeLists.txt
Normal file
27
boards/arm/rtl8721dx/pke8721daf/src/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# ##############################################################################
|
||||
# boards/arm/rtl8721dx/pke8721daf/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 rtl8721dx_boot.c rtl8721dx_bringup.c)
|
||||
|
||||
target_sources(board PRIVATE ${SRCS})
|
||||
|
||||
set_property(GLOBAL PROPERTY LD_SCRIPT "${NUTTX_BOARD_DIR}/scripts/ld.script")
|
||||
27
boards/arm/rtl8721dx/pke8721daf/src/Makefile
Normal file
27
boards/arm/rtl8721dx/pke8721daf/src/Makefile
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
############################################################################
|
||||
# boards/arm/rtl8721dx/pke8721daf/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 = rtl8721dx_boot.c rtl8721dx_bringup.c
|
||||
|
||||
include $(TOPDIR)/boards/Board.mk
|
||||
69
boards/arm/rtl8721dx/pke8721daf/src/rtl8721dx_boot.c
Normal file
69
boards/arm/rtl8721dx/pke8721daf/src/rtl8721dx_boot.c
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/rtl8721dx/pke8721daf/src/rtl8721dx_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 <nuttx/arch.h>
|
||||
#include <nuttx/board.h>
|
||||
|
||||
#include "rtl8721dx_pke8721daf.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: rtl8721dx_boardinitialize
|
||||
*
|
||||
* Description:
|
||||
* All RTL8721Dx architectures must provide the following entry point.
|
||||
* This entry point is called early in the initialization -- after all
|
||||
* memory has been configured and mapped but before any devices have been
|
||||
* initialized.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void rtl8721dx_boardinitialize(void)
|
||||
{
|
||||
/* Board-specific early initialization. Nothing to do here. */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_initialize
|
||||
*
|
||||
* Description:
|
||||
* If CONFIG_BOARD_EARLY_INITIALIZE is selected, then an additional
|
||||
* initialization call will be performed in the boot-up sequence to a
|
||||
* function called board_initialize().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_BOARD_EARLY_INITIALIZE
|
||||
void board_early_initialize(void)
|
||||
{
|
||||
rtl8721dx_boardinitialize();
|
||||
}
|
||||
#endif
|
||||
190
boards/arm/rtl8721dx/pke8721daf/src/rtl8721dx_bringup.c
Normal file
190
boards/arm/rtl8721dx/pke8721daf/src/rtl8721dx_bringup.c
Normal file
|
|
@ -0,0 +1,190 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/rtl8721dx/pke8721daf/src/rtl8721dx_bringup.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 <sys/types.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include <nuttx/fs/fs.h>
|
||||
#include <nuttx/board.h>
|
||||
|
||||
#include "rtl8721dx_pke8721daf.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Private Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/* SDK ROM inter-core IPC-semaphore RTOS hooks. rtos_* come from the NuttX
|
||||
* os_wrapper (ameba_os_wrap.c); IPC_* are SDK ROM symbols. RTL8721Dx's
|
||||
* IPC_patch_function takes no lock-id argument.
|
||||
*/
|
||||
|
||||
extern void rtos_critical_enter(uint32_t component_id);
|
||||
extern void rtos_critical_exit(uint32_t component_id);
|
||||
extern void rtos_time_delay_ms(uint32_t ms);
|
||||
extern void IPC_patch_function(void (*enter)(uint32_t),
|
||||
void (*leave)(uint32_t));
|
||||
extern void IPC_SEMDelay(void (*delay)(uint32_t));
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: rtl8721dx_bringup
|
||||
*
|
||||
* Description:
|
||||
* Bring up board features
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int rtl8721dx_bringup(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#ifdef CONFIG_FS_PROCFS
|
||||
/* Mount the procfs file system */
|
||||
|
||||
ret = nx_mount(NULL, "/proc", "procfs", 0, NULL);
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: Failed to mount procfs at /proc: %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FS_TMPFS
|
||||
/* Mount the tmp file system */
|
||||
|
||||
ret = nx_mount(NULL, CONFIG_LIBC_TMPDIR, "tmpfs", 0, NULL);
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: Failed to mount tmpfs at /tmp: %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8721DX_FLASH_FS
|
||||
/* Mount the persistent data filesystem (littlefs on the SPI NOR VFS1
|
||||
* partition) at /data before WiFi, so the WiFi KV store is available.
|
||||
*/
|
||||
|
||||
ret = ameba_flash_fs_initialize();
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: ameba_flash_fs_initialize failed: %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8721DX_WIFI
|
||||
/* Bring up the KM4 IPC transport and start the WHC host WiFi stack. */
|
||||
|
||||
ret = rtl8721dx_wifi_initialize();
|
||||
if (ret < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR: rtl8721dx_wifi_initialize failed: %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Install the inter-core HW IPC-semaphore RTOS hooks LAST -- after all the
|
||||
* flash / WHC bring-up above, and just before this (board_late_initialize)
|
||||
* path returns and nx_start() hands off to the init task.
|
||||
*
|
||||
* The shared-flash / WHC paths take the hardware IPC semaphore to
|
||||
* serialize against the NP; the ROM semaphore code then calls an RTOS
|
||||
* critical-section pair plus a delay callback while a contended waiter
|
||||
* waits. That delay callback rtos_time_delay_ms() blocks, so it is only
|
||||
* safe from a real task. Registering it here means the bring-up flash
|
||||
* access above (which runs in this pre-task context) uses the ROM default
|
||||
* (busy-spin, no callback), while every runtime IPC-semaphore user that
|
||||
* follows runs in a task and yields properly.
|
||||
*/
|
||||
|
||||
IPC_patch_function(rtos_critical_enter, rtos_critical_exit);
|
||||
IPC_SEMDelay(rtos_time_delay_ms);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_app_initialize
|
||||
*
|
||||
* Description:
|
||||
* Perform application specific initialization. This function is never
|
||||
* called directly from application code, but only indirectly via the
|
||||
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
|
||||
*
|
||||
* Input Parameters:
|
||||
* arg - The boardctl() argument is passed to the board_app_initialize()
|
||||
* implementation without modification. The argument has no
|
||||
* meaning to NuttX; the meaning of the argument is a contract
|
||||
* between the board-specific initialization logic and the
|
||||
* matching application logic. The value could be such things as a
|
||||
* mode enumeration value, a set of DIP switch settings, a
|
||||
* pointer to configuration data read from a file or serial FLASH,
|
||||
* or whatever you would like to do with it. Every implementation
|
||||
* should accept zero/NULL as a default configuration.
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) is returned on success; a negated errno value is returned on
|
||||
* any failure to indicate the nature of the failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_BOARDCTL
|
||||
int board_app_initialize(uintptr_t arg)
|
||||
{
|
||||
#ifndef CONFIG_BOARD_LATE_INITIALIZE
|
||||
/* Perform board initialization */
|
||||
|
||||
return rtl8721dx_bringup();
|
||||
#else
|
||||
return OK;
|
||||
#endif
|
||||
}
|
||||
#endif /* CONFIG_BOARDCTL */
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_late_initialize
|
||||
*
|
||||
* Description:
|
||||
* If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional
|
||||
* initialization call will be performed in the boot-up sequence to a
|
||||
* function called board_late_initialize(). board_late_initialize() will
|
||||
* be called immediately after up_initialize() is called and just before
|
||||
* the initial application is started. This additional initialization
|
||||
* phase may be used, for example, to initialize board-specific device
|
||||
* drivers.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_BOARD_LATE_INITIALIZE
|
||||
void board_late_initialize(void)
|
||||
{
|
||||
/* Perform board initialization */
|
||||
|
||||
rtl8721dx_bringup();
|
||||
}
|
||||
#endif /* CONFIG_BOARD_LATE_INITIALIZE */
|
||||
86
boards/arm/rtl8721dx/pke8721daf/src/rtl8721dx_pke8721daf.h
Normal file
86
boards/arm/rtl8721dx/pke8721daf/src/rtl8721dx_pke8721daf.h
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
/****************************************************************************
|
||||
* boards/arm/rtl8721dx/pke8721daf/src/rtl8721dx_pke8721daf.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_RTL8721DX_PKE8721DAF_SRC_RTL8721DX_PKE8721DAF_H
|
||||
#define __BOARDS_ARM_RTL8721DX_PKE8721DAF_SRC_RTL8721DX_PKE8721DAF_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/****************************************************************************
|
||||
* Name: rtl8721dx_boardinitialize
|
||||
*
|
||||
* Description:
|
||||
* Perform board-specific early initialization.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void rtl8721dx_boardinitialize(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: rtl8721dx_bringup
|
||||
*
|
||||
* Description:
|
||||
* Bring up board features.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int rtl8721dx_bringup(void);
|
||||
|
||||
#ifdef CONFIG_RTL8721DX_WIFI
|
||||
/****************************************************************************
|
||||
* Name: rtl8721dx_wifi_initialize
|
||||
*
|
||||
* Description:
|
||||
* Bring up the KM4 IPC transport and start the WHC host WiFi stack
|
||||
* (arch/arm/src/rtl8721dx/ameba_wifi_init.c).
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int rtl8721dx_wifi_initialize(void);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTL8721DX_FLASH_FS
|
||||
/****************************************************************************
|
||||
* Name: ameba_flash_fs_initialize
|
||||
*
|
||||
* Description:
|
||||
* Register the on-chip SPI NOR data partition as an MTD device and mount
|
||||
* a littlefs filesystem on it at /data
|
||||
* (arch/arm/src/rtl8721dx/ameba_flash_mtd.c).
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int ameba_flash_fs_initialize(void);
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __BOARDS_ARM_RTL8721DX_PKE8721DAF_SRC_RTL8721DX_PKE8721DAF_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue