e814977c0f
The SD boot loader was not satisfactory because 1) the SD slot is on an optional board and, hence, cannot be part of a fundamental solution. And 2) it is too big. The only storage on borard is the Winbond W25 SPI-bsed FLASH. This commit adds support for a bootload to 1) read code in HEX format from a serial port and write it to the W25 FLASH, or 2) read code in binary form from the W25 FLASH into SRAM and execute the loaded program. boards/z80/ez80/z20x/configs: Added w25boot configuration boards/z80/ez80/z20x/src: Add bootloader logic, w25_main.c. Add logic to manage shared SRAM memory map so that the loaded program does not clobber the bootloader memory. Add logic to recover the bootloader memory into the heap after the loaded program as started. boards/z80/ez80/z20x/scripts: Rework scripts and configuration to support a bootloader and program build. The boolloader cannot use all of SRAM; the program must not clobber the SRAM region used by the bootloader.
119 lines
4.3 KiB
Plaintext
119 lines
4.3 KiB
Plaintext
############################################################################
|
|
# boards/z80/ez80/z20x/scripts/Make.defs
|
|
#
|
|
# 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/z80/src/ez80/Toolchain.defs
|
|
include $(TOPDIR)/tools/zds/zds_Config.mk
|
|
|
|
# CFLAGS
|
|
|
|
ifeq ($(CONFIG_WINDOWS_NATIVE),y)
|
|
ARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
|
|
EARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
|
|
ARCHSTDINCLUDES = -stdinc:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
|
|
ARCHUSRINCLUDES = -usrinc:.
|
|
else
|
|
ARCHASMINCLUDES = -include:'$(WTOPDIR)\include;$(WZDSSTDINCDIR);$(WZDSZILOGINCDIR)'
|
|
EARCHASMINCLUDES = -include:'$(ETOPDIR)\include;$(EZDSSTDINCDIR);$(EZDSZILOGINCDIR)'
|
|
ARCHSTDINCLUDES = -stdinc:'$(WTOPDIR)\include;$(WZDSSTDINCDIR);$(WZDSZILOGINCDIR)'
|
|
ARCHUSRINCLUDES = -usrinc:'.'
|
|
endif
|
|
|
|
# Assembler definitions
|
|
|
|
ARCHASMCPUFLAGS = -cpu:$(ARCHCPU) -NOigcase
|
|
ARCHASMLIST = -list -NOlistmac -name -pagelen:56 -pagewidth:80 -quiet
|
|
ARCHASMWARNINGS = -warn
|
|
ARCHASMDEFINES = -define:$(ARCHCPUDEF)=1 -define:$(ARCHFAMILY)=1 -define:__ASSEMBLY__
|
|
AFLAGS = $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
|
|
|
|
# Compiler definitions
|
|
|
|
ARCHCPUFLAGS = -chartype:S -promote -cpu:$(ARCHCPU) -NOgenprintf -NOmodsect \
|
|
-asmsw:" $(ARCHASMCPUFLAGS) $(EARCHASMINCLUDES) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)"
|
|
ARCHLIST = -keeplst -NOlist -NOlistinc -keepasm
|
|
ARCHPICFLAGS =
|
|
ARCHWARNINGS = -warn
|
|
ARCHDEFINES = -define:$(ARCHCPUDEF) -define:$(ARCHFAMILY)
|
|
ARCHINCLUDES = $(ARCHSTDINCLUDES) $(ARCHUSRINCLUDES)
|
|
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
|
|
|
|
CPPDEFINES = -D$(ARCHFAMILY) -D$(ARCHCPUDEF) -D__ASSEMBLY__
|
|
CPPINCLUDES = -I$(TOPDIR)$(DELIM)include
|
|
CPPFLAGS = $(CPPDEFINES) $(CPPINCLUDES)
|
|
|
|
# Librarian definitions
|
|
|
|
ARFLAGS = -quiet -warn
|
|
|
|
# Linker definitions
|
|
#
|
|
# Possible configurations
|
|
#
|
|
# 1. FLASH-resident bootloader (CONFIG_Z20X_BOOTLOADER)
|
|
# 2. RAM-resident applications loaded by bootloader (CONFIG_Z20X_PROGRAM)
|
|
# 3. FLASH-resident, standalone program (CONFIG_Z20X_STANDALONE)
|
|
# 4. FLASH-resident, standalone copy-to-RAM program (CONFIG_Z20X_COPYTORAM)
|
|
|
|
ifeq ($(CONFIG_Z20X_BOOTLOADER),y)
|
|
LDSCRIPT = z20x_loader.linkcmd
|
|
else ifeq ($(CONFIG_Z20X_PROGRAM),y)
|
|
LDSCRIPT = z20x_program.linkcmd
|
|
else ifeq ($(CONFIG_Z20X_STANDALONE),y)
|
|
LDSCRIPT = z20x_flash.linkcmd
|
|
else ifeq ($(CONFIG_Z20X_COPYTORAM),y)
|
|
LDSCRIPT = z20x_copytoram.linkcmd
|
|
endif
|
|
|
|
LINKCMDTEMPLATE = $(TOPDIR)$(DELIM)boards$(DELIM)$(CONFIG_ARCH)$(DELIM)$(CONFIG_ARCH_CHIP)$(DELIM)$(CONFIG_ARCH_BOARD)$(DELIM)scripts$(DELIM)$(LDSCRIPT)
|
|
|
|
# Windows native host tool definitions
|
|
|
|
ifeq ($(CONFIG_WINDOWS_NATIVE),y)
|
|
HOSTCC = mingw32-gcc.exe
|
|
HOSTINCLUDES = -I.
|
|
HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -g -pipe
|
|
HOSTLDFLAGS =
|
|
HOSTEXEEXT = .exe
|
|
|
|
# Windows-native host tools
|
|
|
|
#MKDEP = $(TOPDIR)\tools\mkdeps.exe --winnative
|
|
MKDEP = $(TOPDIR)$(DELIM)tools$(DELIM)mknulldeps.sh
|
|
else
|
|
|
|
# Linux/Cygwin host tool definitions
|
|
|
|
HOSTCC = gcc
|
|
HOSTINCLUDES = -I.
|
|
HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -g -pipe
|
|
HOSTLDFLAGS =
|
|
|
|
# This is the tool to use for dependencies (i.e., none)
|
|
|
|
MKDEP = $(TOPDIR)$(DELIM)tools$(DELIM)mknulldeps.sh
|
|
|
|
# ZDS-II cannot follow Cygwin soft links, so we will have to use directory copies
|
|
|
|
DIRLINK = $(TOPDIR)$(DELIM)tools$(DELIM)copydir.sh
|
|
DIRUNLINK = $(TOPDIR)$(DELIM)tools$(DELIM)unlink.sh
|
|
endif
|