mirror of
https://github.com/Polprzewodnikowy/SummerCart64.git
synced 2024-11-28 08:24:14 +01:00
smallest cleanup
This commit is contained in:
parent
3a75e1240f
commit
7c4b5f7754
35
build.sh
35
build.sh
@ -15,6 +15,7 @@ FILES=(
|
|||||||
BUILT_CIC=false
|
BUILT_CIC=false
|
||||||
BUILT_N64=false
|
BUILT_N64=false
|
||||||
BUILT_RISCV=false
|
BUILT_RISCV=false
|
||||||
|
BUILT_SW=false
|
||||||
BUILT_FPGA=false
|
BUILT_FPGA=false
|
||||||
BUILT_UPDATE=false
|
BUILT_UPDATE=false
|
||||||
BUILT_RELEASE=false
|
BUILT_RELEASE=false
|
||||||
@ -44,7 +45,6 @@ build_n64 () {
|
|||||||
if [ ! -z "${GIT_BRANCH+x}" ]; then N64_FLAGS+=" -DGIT_BRANCH='\"$GIT_BRANCH\"'"; fi
|
if [ ! -z "${GIT_BRANCH+x}" ]; then N64_FLAGS+=" -DGIT_BRANCH='\"$GIT_BRANCH\"'"; fi
|
||||||
if [ ! -z "${GIT_TAG+x}" ]; then N64_FLAGS+=" -DGIT_TAG='\"$GIT_TAG\"'"; fi
|
if [ ! -z "${GIT_TAG+x}" ]; then N64_FLAGS+=" -DGIT_TAG='\"$GIT_TAG\"'"; fi
|
||||||
if [ ! -z "${GIT_SHA+x}" ]; then N64_FLAGS+=" -DGIT_SHA='\"$GIT_SHA\"'"; fi
|
if [ ! -z "${GIT_SHA+x}" ]; then N64_FLAGS+=" -DGIT_SHA='\"$GIT_SHA\"'"; fi
|
||||||
if [ ! -z "${GIT_MESSAGE+x}" ]; then N64_FLAGS+=" -DGIT_MESSAGE='\"$GIT_MESSAGE\"'"; fi
|
|
||||||
make all -j USER_FLAGS="$N64_FLAGS"
|
make all -j USER_FLAGS="$N64_FLAGS"
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
|
|
||||||
@ -64,15 +64,29 @@ build_riscv () {
|
|||||||
BUILT_RISCV=true
|
BUILT_RISCV=true
|
||||||
}
|
}
|
||||||
|
|
||||||
build_fpga () {
|
build_sw () {
|
||||||
if [ "$BUILT_FPGA" = true ]; then return; fi
|
if [ "$BUILT_SW" = true ]; then return; fi
|
||||||
|
|
||||||
build_n64
|
build_n64
|
||||||
build_riscv
|
build_riscv
|
||||||
|
|
||||||
|
pushd fw > /dev/null
|
||||||
|
mkdir -p output_files > /dev/null
|
||||||
|
cat ../sw/n64/build/n64boot.bin ../sw/riscv/build/governor.bin > output_files/SC64_software.bin
|
||||||
|
objcopy -I binary -O ihex output_files/SC64_software.bin output_files/SC64_software.hex
|
||||||
|
popd
|
||||||
|
|
||||||
|
BUILT_SW=true
|
||||||
|
}
|
||||||
|
|
||||||
|
build_fpga () {
|
||||||
|
if [ "$BUILT_FPGA" = true ]; then return; fi
|
||||||
|
|
||||||
|
build_sw
|
||||||
|
|
||||||
pushd fw > /dev/null
|
pushd fw > /dev/null
|
||||||
if [ "$SKIP_FPGA_REBUILD" = true ] && [ -f output_files/SummerCart64.sof ]; then
|
if [ "$SKIP_FPGA_REBUILD" = true ] && [ -f output_files/SummerCart64.sof ]; then
|
||||||
quartus_cpf -c SummerCart64.cof
|
echo Skipping FPGA build
|
||||||
else
|
else
|
||||||
if [ "$DEBUG_ENABLED" = true ]; then
|
if [ "$DEBUG_ENABLED" = true ]; then
|
||||||
quartus_sh --set VERILOG_MACRO="DEBUG" ./SummerCart64.qpf
|
quartus_sh --set VERILOG_MACRO="DEBUG" ./SummerCart64.qpf
|
||||||
@ -91,9 +105,8 @@ build_update () {
|
|||||||
build_fpga
|
build_fpga
|
||||||
|
|
||||||
pushd fw/output_files > /dev/null
|
pushd fw/output_files > /dev/null
|
||||||
cat sc64_firmware_ufm_auto.rpd sc64_firmware_cfm0_auto.rpd > SC64_update_tmp.bin
|
objcopy -I binary -O binary --reverse-bytes=4 sc64_firmware_cfm0_auto.rpd SC64_firmware.bin
|
||||||
objcopy -I binary -O binary --reverse-bytes=4 SC64_update_tmp.bin SC64_update.bin
|
cat SC64_software.bin SC64_firmware.bin > SC64_update.bin
|
||||||
rm SC64_update_tmp.bin
|
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
|
|
||||||
BUILT_UPDATE=true
|
BUILT_UPDATE=true
|
||||||
@ -120,7 +133,8 @@ print_usage () {
|
|||||||
echo " cic - assemble UltraCIC-III software"
|
echo " cic - assemble UltraCIC-III software"
|
||||||
echo " n64 - compile N64 bootloader software"
|
echo " n64 - compile N64 bootloader software"
|
||||||
echo " riscv - compile cart governor software"
|
echo " riscv - compile cart governor software"
|
||||||
echo " fpga - compile FPGA design (triggers 'n64' and 'riscv' build)"
|
echo " sw - compile all software (triggers 'n64' and 'riscv' build)"
|
||||||
|
echo " fpga - compile FPGA design (triggers 'sw' build)"
|
||||||
echo " update - convert programming .pof file to raw binary for self-upgrade (triggers 'fpga' build)"
|
echo " update - convert programming .pof file to raw binary for self-upgrade (triggers 'fpga' build)"
|
||||||
echo " release - collect and zip files for release (triggers 'cic' and 'update' build)"
|
echo " release - collect and zip files for release (triggers 'cic' and 'update' build)"
|
||||||
echo " -c | --force-clean"
|
echo " -c | --force-clean"
|
||||||
@ -142,6 +156,7 @@ fi
|
|||||||
TRIGGER_CIC=false
|
TRIGGER_CIC=false
|
||||||
TRIGGER_N64=false
|
TRIGGER_N64=false
|
||||||
TRIGGER_RISCV=false
|
TRIGGER_RISCV=false
|
||||||
|
TRIGGER_SW=false
|
||||||
TRIGGER_FPGA=false
|
TRIGGER_FPGA=false
|
||||||
TRIGGER_UPDATE=false
|
TRIGGER_UPDATE=false
|
||||||
TRIGGER_RELEASE=false
|
TRIGGER_RELEASE=false
|
||||||
@ -157,6 +172,9 @@ while test $# -gt 0; do
|
|||||||
riscv)
|
riscv)
|
||||||
TRIGGER_RISCV=true
|
TRIGGER_RISCV=true
|
||||||
;;
|
;;
|
||||||
|
sw)
|
||||||
|
TRIGGER_SW=true
|
||||||
|
;;
|
||||||
fpga)
|
fpga)
|
||||||
TRIGGER_FPGA=true
|
TRIGGER_FPGA=true
|
||||||
;;
|
;;
|
||||||
@ -193,6 +211,7 @@ if [ "$DEBUG_ENABLED" = true ]; then USER_FLAGS+=" -DDEBUG"; fi
|
|||||||
if [ "$TRIGGER_CIC" = true ]; then build_cic; fi
|
if [ "$TRIGGER_CIC" = true ]; then build_cic; fi
|
||||||
if [ "$TRIGGER_N64" = true ]; then build_n64; fi
|
if [ "$TRIGGER_N64" = true ]; then build_n64; fi
|
||||||
if [ "$TRIGGER_RISCV" = true ]; then build_riscv; fi
|
if [ "$TRIGGER_RISCV" = true ]; then build_riscv; fi
|
||||||
|
if [ "$TRIGGER_SW" = true ]; then build_sw; fi
|
||||||
if [ "$TRIGGER_FPGA" = true ]; then build_fpga; fi
|
if [ "$TRIGGER_FPGA" = true ]; then build_fpga; fi
|
||||||
if [ "$TRIGGER_UPDATE" = true ]; then build_update; fi
|
if [ "$TRIGGER_UPDATE" = true ]; then build_update; fi
|
||||||
if [ "$TRIGGER_RELEASE" = true ]; then build_release; fi
|
if [ "$TRIGGER_RELEASE" = true ]; then build_release; fi
|
||||||
|
@ -16,7 +16,6 @@ fi
|
|||||||
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||||
GIT_TAG=$(git describe --tags 2> /dev/null)
|
GIT_TAG=$(git describe --tags 2> /dev/null)
|
||||||
GIT_SHA=$(git rev-parse HEAD)
|
GIT_SHA=$(git rev-parse HEAD)
|
||||||
GIT_MESSAGE=$(git log -1 --pretty=format:%s)
|
|
||||||
|
|
||||||
if [ -t 1 ]; then
|
if [ -t 1 ]; then
|
||||||
DOCKER_OPTIONS="-it"
|
DOCKER_OPTIONS="-it"
|
||||||
@ -27,6 +26,5 @@ docker exec \
|
|||||||
-e GIT_BRANCH="$GIT_BRANCH" \
|
-e GIT_BRANCH="$GIT_BRANCH" \
|
||||||
-e GIT_TAG="$GIT_TAG" \
|
-e GIT_TAG="$GIT_TAG" \
|
||||||
-e GIT_SHA="$GIT_SHA" \
|
-e GIT_SHA="$GIT_SHA" \
|
||||||
-e GIT_MESSAGE="$GIT_MESSAGE" \
|
|
||||||
$CONTAINER_NAME \
|
$CONTAINER_NAME \
|
||||||
./build.sh $@
|
./build.sh $@
|
||||||
|
@ -27,9 +27,7 @@
|
|||||||
<verify_protect>0</verify_protect>
|
<verify_protect>0</verify_protect>
|
||||||
<epof>0</epof>
|
<epof>0</epof>
|
||||||
<ufm_source>2</ufm_source>
|
<ufm_source>2</ufm_source>
|
||||||
<ufm_filepath>../sw/n64/build/n64boot.hex</ufm_filepath>
|
<ufm_filepath>output_files/SC64_software.hex</ufm_filepath>
|
||||||
<cfm0_filepath>../sw/riscv/build/governor.hex</cfm0_filepath>
|
|
||||||
<cfm0_file_start_addr>305152</cfm0_file_start_addr>
|
|
||||||
</MAX10_device_options>
|
</MAX10_device_options>
|
||||||
<advanced_options>
|
<advanced_options>
|
||||||
<ignore_epcs_id_check>1</ignore_epcs_id_check>
|
<ignore_epcs_id_check>1</ignore_epcs_id_check>
|
||||||
|
@ -89,7 +89,7 @@ module n64_bootloader (
|
|||||||
|
|
||||||
bus.ack = source_request == T_N64 && data_ack;
|
bus.ack = source_request == T_N64 && data_ack;
|
||||||
bus.rdata = 16'd0;
|
bus.rdata = 16'd0;
|
||||||
if (bus.ack && bus.address >= 32'h10000000 && bus.address < 32'h10016800) begin
|
if (bus.ack && bus.address >= 32'h10000000 && bus.address < 32'h10010000) begin
|
||||||
if (bus.address[1]) bus.rdata = {data_rdata[23:16], data_rdata[31:24]};
|
if (bus.address[1]) bus.rdata = {data_rdata[23:16], data_rdata[31:24]};
|
||||||
else bus.rdata = {data_rdata[7:0], data_rdata[15:8]};
|
else bus.rdata = {data_rdata[7:0], data_rdata[15:8]};
|
||||||
end
|
end
|
||||||
|
@ -33,7 +33,7 @@ package sc64;
|
|||||||
|
|
||||||
parameter bit [31:0] SC64_VER = 32'h53437632;
|
parameter bit [31:0] SC64_VER = 32'h53437632;
|
||||||
parameter int CLOCK_FREQUENCY = 32'd100_000_000;
|
parameter int CLOCK_FREQUENCY = 32'd100_000_000;
|
||||||
parameter bit [31:0] CPU_RESET_VECTOR = {4'(ID_CPU_FLASH), 28'h0035800};
|
parameter bit [31:0] CPU_RESET_VECTOR = {4'(ID_CPU_FLASH), 28'h0010000};
|
||||||
parameter int UART_BAUD_RATE = 32'd1_000_000;
|
parameter int UART_BAUD_RATE = 32'd1_000_000;
|
||||||
|
|
||||||
`ifdef DEBUG
|
`ifdef DEBUG
|
||||||
|
@ -15,16 +15,16 @@ BUILD_DIR = build
|
|||||||
|
|
||||||
SRC_FILES = \
|
SRC_FILES = \
|
||||||
startup.S \
|
startup.S \
|
||||||
ipl2.S \
|
|
||||||
exception.S \
|
|
||||||
boot.c \
|
boot.c \
|
||||||
crc32.c \
|
crc32.c \
|
||||||
error.c \
|
error.c \
|
||||||
exception.c \
|
exception.c \
|
||||||
|
exception.S \
|
||||||
font.c \
|
font.c \
|
||||||
init.c \
|
init.c \
|
||||||
interrupt.c \
|
interrupt.c \
|
||||||
io.c \
|
io.c \
|
||||||
|
ipl2.S \
|
||||||
main.c \
|
main.c \
|
||||||
sc64.c \
|
sc64.c \
|
||||||
storage.c \
|
storage.c \
|
||||||
@ -56,7 +56,7 @@ $(BUILD_DIR)/n64boot.elf: $(OBJS) N64.ld
|
|||||||
$(BUILD_DIR)/n64boot.bin: $(BUILD_DIR)/n64boot.elf
|
$(BUILD_DIR)/n64boot.bin: $(BUILD_DIR)/n64boot.elf
|
||||||
@$(OBJCOPY) -O binary $< $@
|
@$(OBJCOPY) -O binary $< $@
|
||||||
@chksum64 $@ > /dev/null
|
@chksum64 $@ > /dev/null
|
||||||
@truncate --size=90k $@
|
@truncate --size=64k $@
|
||||||
|
|
||||||
$(BUILD_DIR)/n64boot.hex: $(BUILD_DIR)/n64boot.bin
|
$(BUILD_DIR)/n64boot.hex: $(BUILD_DIR)/n64boot.bin
|
||||||
@$(OBJCOPY) -I binary -O ihex $< $@
|
@$(OBJCOPY) -I binary -O ihex $< $@
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
MEMORY {
|
MEMORY {
|
||||||
rdram (rwx) : org = 0x80300000, len = 1M
|
rdram (rwx) : org = 0x803E0000, len = 128k
|
||||||
flash (r) : org = 0xB0000000, len = 90k
|
flash (r) : org = 0xB0000000, len = 64k
|
||||||
}
|
}
|
||||||
|
|
||||||
ENTRY(entry_handler)
|
ENTRY(entry_handler)
|
||||||
|
|
||||||
__exception_stack_size = 8k;
|
__exception_stack_size = 8k;
|
||||||
__stack_size = 64k;
|
__stack_size = 16k;
|
||||||
|
|
||||||
SECTIONS {
|
SECTIONS {
|
||||||
.flash : {
|
.flash : {
|
||||||
|
@ -76,6 +76,8 @@ typedef struct {
|
|||||||
#define START_X_OFFSET (19)
|
#define START_X_OFFSET (19)
|
||||||
|
|
||||||
|
|
||||||
|
extern const io32_t entry_handler __attribute__((section(".data")));
|
||||||
|
|
||||||
static const vi_regs_t vi_config[] = {{
|
static const vi_regs_t vi_config[] = {{
|
||||||
.CR = VI_CR_TYPE_32,
|
.CR = VI_CR_TYPE_32,
|
||||||
.H_WIDTH = SCREEN_WIDTH,
|
.H_WIDTH = SCREEN_WIDTH,
|
||||||
@ -106,12 +108,14 @@ static const vi_regs_t vi_config[] = {{
|
|||||||
.V_SCALE = ((0x100 * SCREEN_HEIGHT) / 60),
|
.V_SCALE = ((0x100 * SCREEN_HEIGHT) / 60),
|
||||||
}};
|
}};
|
||||||
|
|
||||||
static io32_t *exception_framebuffer = (io32_t *) (0x0026A000UL);
|
static io32_t *exception_framebuffer;
|
||||||
|
|
||||||
|
|
||||||
static void exception_init_screen (void) {
|
static void exception_init_screen (void) {
|
||||||
const vi_regs_t *cfg = &vi_config[OS_INFO->tv_type];
|
const vi_regs_t *cfg = &vi_config[OS_INFO->tv_type];
|
||||||
|
|
||||||
|
exception_framebuffer = (io32_t *) (((io32_t) (&entry_handler)) - (SCREEN_WIDTH * SCREEN_HEIGHT * sizeof(io32_t)));
|
||||||
|
|
||||||
for (int y = 0; y < SCREEN_HEIGHT; y++) {
|
for (int y = 0; y < SCREEN_HEIGHT; y++) {
|
||||||
for (int x = 0; x < SCREEN_WIDTH; x++) {
|
for (int x = 0; x < SCREEN_WIDTH; x++) {
|
||||||
uint32_t color;
|
uint32_t color;
|
||||||
@ -237,8 +241,7 @@ void exception_fatal_handler (uint32_t exception_code, uint32_t interrupt_mask,
|
|||||||
exception_print("----- SummerCart64 n64boot -----\n");
|
exception_print("----- SummerCart64 n64boot -----\n");
|
||||||
exception_print("branch: %s\n", version->git_branch);
|
exception_print("branch: %s\n", version->git_branch);
|
||||||
exception_print("tag: %s\n", version->git_tag);
|
exception_print("tag: %s\n", version->git_tag);
|
||||||
exception_print("sha: %s\n", version->git_sha);
|
exception_print("sha: %s\n\n", version->git_sha);
|
||||||
exception_print("msg: %s\n\n", version->git_message);
|
|
||||||
exception_print("%s at pc: 0x%08lX\n", exception_get_description(exception_code), e->epc.u32);
|
exception_print("%s at pc: 0x%08lX\n", exception_get_description(exception_code), e->epc.u32);
|
||||||
exception_print("sr: 0x%08lX cr: 0x%08lX hw: 0x%08lX [%4s]\n", e->sr, e->cr, sc64_version, (char *) (&sc64_version));
|
exception_print("sr: 0x%08lX cr: 0x%08lX hw: 0x%08lX [%4s]\n", e->sr, e->cr, sc64_version, (char *) (&sc64_version));
|
||||||
exception_print("zr: 0x%08lX at: 0x%08lX v0: 0x%08lX v1: 0x%08lX\n", e->zr.u32, e->at.u32, e->v0.u32, e->v1.u32);
|
exception_print("zr: 0x%08lX at: 0x%08lX v0: 0x%08lX v1: 0x%08lX\n", e->zr.u32, e->at.u32, e->v0.u32, e->v1.u32);
|
||||||
|
@ -4,6 +4,11 @@
|
|||||||
#include "fatfs/ff.h"
|
#include "fatfs/ff.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define ROM_ENTRY_OFFSET (8)
|
||||||
|
#define ROM_CODE_OFFSET (4096)
|
||||||
|
#define ROM_MAX_LOAD_SIZE (1 * 1024 * 1024)
|
||||||
|
|
||||||
|
|
||||||
static const char *fatfs_error_codes[] = {
|
static const char *fatfs_error_codes[] = {
|
||||||
"Succeeded",
|
"Succeeded",
|
||||||
"A hard error occurred in the low level disk I/O layer",
|
"A hard error occurred in the low level disk I/O layer",
|
||||||
@ -28,35 +33,47 @@ static const char *fatfs_error_codes[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#define FF_CHECK(x, message) { \
|
#define FF_CHECK(x, message, ...) { \
|
||||||
FRESULT fatfs_result = x; \
|
fresult = x; \
|
||||||
if (fatfs_result != FR_OK) { \
|
if (fresult != FR_OK) { \
|
||||||
error_display("%s:\n %s\n", message, fatfs_error_codes[fatfs_result]); \
|
error_display(message " [%s]:\n %s\n", __VA_ARGS__ __VA_OPT__(,) #x, fatfs_error_codes[fresult]); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void storage_run_menu (storage_backend_t storage_backend) {
|
void storage_run_menu (storage_backend_t storage_backend) {
|
||||||
|
void (* menu)(void);
|
||||||
|
FRESULT fresult;
|
||||||
FATFS fs;
|
FATFS fs;
|
||||||
FIL fil;
|
FIL fil;
|
||||||
|
UINT br;
|
||||||
|
FSIZE_t size = ROM_MAX_LOAD_SIZE;
|
||||||
|
const TCHAR *path = "";
|
||||||
|
|
||||||
if (storage_backend == STORAGE_BACKEND_SD) {
|
if (storage_backend == STORAGE_BACKEND_SD) {
|
||||||
FF_CHECK(f_mount(&fs, "0:", 1), "Couldn't mount SD drive");
|
path = "0:";
|
||||||
FF_CHECK(f_chdrive("0:"), "Couldn't chdrive to SD drive");
|
|
||||||
} else if (storage_backend == STORAGE_BACKEND_USB) {
|
} else if (storage_backend == STORAGE_BACKEND_USB) {
|
||||||
FF_CHECK(f_mount(&fs, "1:", 1), "Couldn't mount USB drive");
|
path = "1:";
|
||||||
FF_CHECK(f_chdrive("1:"), "Couldn't chdrive to USB drive");
|
|
||||||
} else {
|
} else {
|
||||||
error_display("Unknown storage backend [%d]\n", storage_backend);
|
error_display("Unknown storage backend [%d]\n", storage_backend);
|
||||||
}
|
}
|
||||||
|
|
||||||
FF_CHECK(f_open(&fil, "sc64menu.elf", FA_READ), "Couldn't open menu file");
|
FF_CHECK(f_mount(&fs, path, 1), "Couldn't mount drive");
|
||||||
|
FF_CHECK(f_chdrive(path), "Couldn't chdrive");
|
||||||
// TODO: Implement ELF loader here
|
FF_CHECK(f_open(&fil, "sc64menu.n64", FA_READ), "Couldn't open menu file");
|
||||||
|
FF_CHECK(f_lseek(&fil, ROM_ENTRY_OFFSET), "Couldn't seek to entry point offset");
|
||||||
|
FF_CHECK(f_read(&fil, &menu, sizeof(menu), &br), "Couldn't read entry point");
|
||||||
|
FF_CHECK(f_lseek(&fil, ROM_CODE_OFFSET), "Couldn't seek to code start offset");
|
||||||
|
if ((f_size(&fil) - ROM_CODE_OFFSET) < size) {
|
||||||
|
size = (f_size(&fil) - ROM_CODE_OFFSET);
|
||||||
|
}
|
||||||
|
FF_CHECK(f_read(&fil, menu, size, &br), "Couldn't read menu file");
|
||||||
|
FF_CHECK(br != size, "Read size is different than expected");
|
||||||
FF_CHECK(f_close(&fil), "Couldn't close menu file");
|
FF_CHECK(f_close(&fil), "Couldn't close menu file");
|
||||||
|
|
||||||
deinit();
|
deinit();
|
||||||
|
|
||||||
// menu();
|
menu();
|
||||||
|
|
||||||
|
while (1);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
|
|
||||||
version_t version = {
|
static version_t version = {
|
||||||
#ifdef GIT_BRANCH
|
#ifdef GIT_BRANCH
|
||||||
.git_branch = GIT_BRANCH,
|
.git_branch = GIT_BRANCH,
|
||||||
#else
|
#else
|
||||||
@ -17,11 +17,6 @@ version_t version = {
|
|||||||
#else
|
#else
|
||||||
#warning "No GIT_SHA provided"
|
#warning "No GIT_SHA provided"
|
||||||
#endif
|
#endif
|
||||||
#ifdef GIT_MESSAGE
|
|
||||||
.git_message = GIT_MESSAGE,
|
|
||||||
#else
|
|
||||||
#warning "No GIT_MESSAGE provided"
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ typedef const struct {
|
|||||||
const char *git_branch;
|
const char *git_branch;
|
||||||
const char *git_tag;
|
const char *git_tag;
|
||||||
const char *git_sha;
|
const char *git_sha;
|
||||||
const char *git_message;
|
|
||||||
} version_t;
|
} version_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ $(BUILD_DIR)/governor.elf: $(OBJS) SC64.ld
|
|||||||
@$(OBJDUMP) -D $@ > $(BUILD_DIR)/governor.lst
|
@$(OBJDUMP) -D $@ > $(BUILD_DIR)/governor.lst
|
||||||
|
|
||||||
$(BUILD_DIR)/governor.bin: $(BUILD_DIR)/governor.elf
|
$(BUILD_DIR)/governor.bin: $(BUILD_DIR)/governor.elf
|
||||||
@$(OBJCOPY) -O binary $< $@
|
@$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x10016800 $< $@
|
||||||
|
|
||||||
$(BUILD_DIR)/governor.hex: $(BUILD_DIR)/governor.bin
|
$(BUILD_DIR)/governor.hex: $(BUILD_DIR)/governor.bin
|
||||||
@$(OBJCOPY) -I binary -O ihex $< $@
|
@$(OBJCOPY) -I binary -O ihex $< $@
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
MEMORY {
|
MEMORY {
|
||||||
ram (rwx) : org = 0x00000000, len = 16k
|
ram (rwx) : org = 0x00000000, len = 16k
|
||||||
rom (rx) : org = 0x10035800, len = 16k
|
rom (rx) : org = 0x10010000, len = 26k
|
||||||
}
|
}
|
||||||
|
|
||||||
ENTRY(reset_handler)
|
ENTRY(reset_handler)
|
||||||
|
Loading…
Reference in New Issue
Block a user