blob: 577e063cb8a26bf72ab8a09241e9a4a7029415b4 [file]
############################################################################
# tools/ameba/Config.mk
#
# 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.
#
############################################################################
#
# Realtek Ameba WHC flashing support.
#
# Including this fragment in a board's scripts/Make.defs (after
# ameba_board.mk) adds the `flash` target. Usage:
#
# make flash AMEBA_PORT=/dev/ttyUSB0 [ AMEBA_BAUD=1500000 ]
#
# The board must set AMEBA_FLASH_PROFILE to the profile base name
# (e.g. "RTL8721Dx" or "RTL8720F") before including this file.
#
# AMEBA_PORT -- serial port (required)
# AMEBA_BAUD -- baud rate (default 1500000)
#
# Dependencies:
# The ameba-rtos SDK must already be fetched (auto-fetched on first
# build) and its python venv or dep-ful system python must be on PATH
# so that AmebaFlash.py (from the SDK) can import its dependencies.
# AMEBA_BAUD -- serial baud rate (default 1500000)
AMEBA_BAUD ?= 1500000
# FLASH -- Download boot.bin + nuttx.bin via the SDK's AmebaFlash.py. The whole
# recipe (flash-offset lookup from the regenerated platform_autoconf.h, python /
# .rdev-profile resolution, the two AmebaFlash.py downloads) lives in the shared
# ameba_flash.sh, used by BOTH the make and cmake `flash` paths so they flash
# identically. Serial port + baud are passed to it through the environment.
define FLASH
$(Q) AMEBA_PORT="$(AMEBA_PORT)" AMEBA_BAUD="$(AMEBA_BAUD)" \
$(AMEBA_COMMON_DIR)$(DELIM)tools$(DELIM)ameba_flash.sh \
$(AMEBA_SDK) $(AMEBA_FLASH_PROFILE) $(AMEBA_AUTOCONF) \
$(AMEBA_PREBUILT) $(TOPDIR)$(DELIM)nuttx.bin
endef
# ameba_menuconfig -- edit the vendor SDK menuconfig for this board using the
# SDK's own native menuconfig UI, and save the result as the board overlay
# fragment (boards/.../ameba_sdk.conf). The counterpart to NuttX's own
# `make menuconfig`, for the SDK-side options (Wi-Fi/BT firmware, flash layout,
# feature switches). The next build applies the change automatically (the
# fragment is hashed into the SDK-config stamp; see ameba_sdk_config.sh).
#
# Reachable as a top-level target because this fragment is included via the
# board scripts/Make.defs (the $(TOPDIR)/Make.defs symlink), like the flash
# target's FLASH macro. The logic lives in the standalone script so it can
# also be run directly.
# This fragment is pulled in (via the board Make.defs / the $(TOPDIR)/Make.defs
# symlink) BEFORE the main build makefile defines its `all` rule, so a plain
# target here would become make's default goal and `make` with no argument
# would run it instead of building. Save the default goal, define the target,
# then restore it (falling back to `all`, NuttX's default, when nothing was set
# yet). The flash target avoids this because it lives in tools/Unix.mk, after
# `all`; this one lives here, so it must guard the default goal itself.
AMEBA_PREV_GOAL := $(.DEFAULT_GOAL)
.PHONY: ameba_menuconfig
ameba_menuconfig:
$(Q) $(TOPDIR)$(DELIM)tools$(DELIM)ameba$(DELIM)ameba_menuconfig.sh
.DEFAULT_GOAL := $(or $(AMEBA_PREV_GOAL),all)