0

我有一个 mc96f8316(ABOV) 的项目,它是一个 8051 内核。我的 sdcc 有这样的版本:

SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/TININative/ds400/hc08/s08/stm8 3.8.0 #10562 (Linux)
published under GNU General Public License (GPL)

我的项目有树:

.
├── inc
│   ├── et9562b.h
│   ├── log.h
│   ├── main.h
│   ├── MC96F8316.h
│   ├── mc96f8x16_cg.h
│   ├── mc96f8x16_gpio.h
│   ├── mc96f8x16.h
│   ├── mc96f8x16_i2c.h
│   ├── mc96f8x16_tim.h
│   ├── mc96f8x16_uart.h
│   └── mc96f8x16_wdt.h
├── Makefile
├── obj
├── src
    ├── log.c
    ├── main.c
    ├── mc96f8x16_cg.c
    ├── mc96f8x16_gpio.c
    ├── mc96f8x16_i2c.c
    ├── mc96f8x16_tim.c
    ├── mc96f8x16_uart.c
    └── mc96f8x16_wdt.c

Makefile如下:

#####################################################################
CC              = sdcc
SRC_DIR         = ./src
INC_DIR         = ./inc
OBJ_DIR         = ./obj
CFLAGS          = -I$(INC_DIR) --stack-auto --model-large
LDFLAGS         = --xram-loc 0x00 --code-loc 0x00 --stack-loc 0xB0 --xstack-loc 0x0100 --data-loc 0x00 --idata-loc 0x30 "-Wl -bBSEG=0x20" --iram-size 0x100 --xram-size 0x200 --code-size 0x4000 --stack-size 0x80
RM              = rm -rf
SRCS            = $(wildcard $(SRC_DIR)/*.c)
RELS            = $(patsubst %.c, $(OBJ_DIR)/%.rel, $(notdir $(SRCS)))
TARGET          = all
PROJECT_NAME    = CHARGECASE_HDX_2968
#####################################################################

$(TARGET): $(OBJ_DIR)/$(PROJECT_NAME).bin

$(OBJ_DIR)/$(PROJECT_NAME).bin: $(OBJ_DIR)/$(PROJECT_NAME).hex
    objcopy -I ihex -O binary $< $@

$(OBJ_DIR)/$(PROJECT_NAME).hex: $(OBJ_DIR)/$(PROJECT_NAME).ihx
    packihx $< > $@

$(OBJ_DIR)/$(PROJECT_NAME).ihx: $(RELS)
    $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@

$(OBJ_DIR)/%.rel: $(SRC_DIR)/%.c $(INC_DIR)/%.h
    $(CC) $(CFLAGS) -c $< -o $@

.PHONY: clean
clean:
    $(RM) $(OBJ_DIR)/*
#####################################################################

make在Ubuntu OS 的终端上运行后,我有这样的日志:

minh@minh:~/workspaces/ChargeCase/8051$ make
sdcc -I./inc --stack-auto --model-large -c src/mc96f8x16_i2c.c -o obj/mc96f8x16_i2c.rel
sdcc -I./inc --stack-auto --model-large -c src/mc96f8x16_wdt.c -o obj/mc96f8x16_wdt.rel
sdcc -I./inc --stack-auto --model-large -c src/log.c -o obj/log.rel
sdcc -I./inc --stack-auto --model-large -c src/main.c -o obj/main.rel
sdcc -I./inc --stack-auto --model-large -c src/mc96f8x16_cg.c -o obj/mc96f8x16_cg.rel
sdcc -I./inc --stack-auto --model-large -c src/mc96f8x16_tim.c -o obj/mc96f8x16_tim.rel
sdcc -I./inc --stack-auto --model-large -c src/mc96f8x16_uart.c -o obj/mc96f8x16_uart.rel
sdcc -I./inc --stack-auto --model-large -c src/mc96f8x16_gpio.c -o obj/mc96f8x16_gpio.rel
src/mc96f8x16_gpio.c:23: warning 158: overflow in implicit constant conversion
sdcc -I./inc --stack-auto --model-large --xram-loc 0x00 --code-loc 0x00 --stack-loc 0xB0 --xstack-loc 0x0100 --data-loc 0x00 --idata-loc 0x30 "-Wl -bBSEG=0x20" --iram-size 0x100 --xram-size 0x200 --code-size 0x4000 --stack-size 0x80 obj/mc96f8x16_i2c.rel obj/mc96f8x16_wdt.rel obj/log.rel obj/main.rel obj/mc96f8x16_cg.rel obj/mc96f8x16_tim.rel obj/mc96f8x16_uart.rel obj/mc96f8x16_gpio.rel -o obj/CHARGECASE_HDX_2968.ihx
memory overlap at 0x0 for RSEG1
memory overlap at 0x1 for RSEG1
memory overlap at 0x2 for RSEG1
memory overlap at 0x3 for RSEG1
memory overlap at 0x4 for RSEG1
memory overlap at 0x5 for RSEG1
memory overlap at 0x6 for RSEG1
memory overlap at 0x7 for RSEG1
memory overlap at 0x8 for RSEG1
memory overlap at 0x9 for RSEG1
memory overlap at 0xA for RSEG1
memory overlap at 0xB for RSEG1
memory overlap at 0xC for RSEG1
memory overlap at 0xD for RSEG1
memory overlap at 0xE for RSEG1
memory overlap at 0xF for RSEG1
memory overlap at 0x10 for RSEG1
memory overlap at 0x11 for RSEG1
memory overlap at 0x12 for RSEG1
memory overlap at 0x13 for RSEG1
memory overlap at 0x14 for RSEG1
memory overlap at 0x15 for RSEG1
memory overlap at 0x16 for RSEG1
memory overlap at 0x17 for RSEG1
memory overlap at 0x18 for RSEG1
memory overlap at 0x19 for RSEG1
memory overlap at 0x1A for RSEG1
memory overlap at 0x1B for RSEG1
memory overlap at 0x1C for RSEG1
memory overlap at 0x1D for RSEG1
memory overlap at 0x1E for RSEG1
memory overlap at 0x1F for RSEG1
memory overlap at 0x0 for RSEG1
memory overlap at 0x1 for RSEG1
memory overlap at 0x2 for RSEG1
memory overlap at 0x3 for RSEG1
memory overlap at 0x4 for RSEG1
memory overlap at 0x5 for RSEG1
memory overlap at 0x6 for RSEG1
memory overlap at 0x7 for RSEG1
memory overlap at 0x8 for RSEG1
memory overlap at 0x9 for RSEG1
memory overlap at 0xA for RSEG1
memory overlap at 0xB for RSEG1
memory overlap at 0xC for RSEG1
memory overlap at 0xD for RSEG1
memory overlap at 0xE for RSEG1
memory overlap at 0xF for RSEG1
memory overlap at 0x10 for RSEG1
memory overlap at 0x11 for RSEG1
memory overlap at 0x12 for RSEG1
memory overlap at 0x13 for RSEG1
memory overlap at 0x14 for RSEG1
memory overlap at 0x15 for RSEG1
memory overlap at 0x16 for RSEG1
memory overlap at 0x17 for RSEG1
memory overlap at 0x18 for RSEG1
memory overlap at 0x19 for RSEG1
memory overlap at 0x1A for RSEG1
memory overlap at 0x1B for RSEG1
memory overlap at 0x1C for RSEG1
memory overlap at 0x1D for RSEG1
memory overlap at 0x1E for RSEG1
memory overlap at 0x1F for RSEG1
memory overlap at 0x0 for RSEG1
memory overlap at 0x1 for RSEG1
memory overlap at 0x2 for RSEG1
memory overlap at 0x3 for RSEG1
memory overlap at 0x4 for RSEG1
memory overlap at 0x5 for RSEG1
memory overlap at 0x6 for RSEG1
memory overlap at 0x7 for RSEG1
memory overlap at 0x8 for RSEG1
memory overlap at 0x9 for RSEG1
memory overlap at 0xA for RSEG1
memory overlap at 0xB for RSEG1
memory overlap at 0xC for RSEG1
memory overlap at 0xD for RSEG1
memory overlap at 0xE for RSEG1
memory overlap at 0xF for RSEG1
memory overlap at 0x10 for RSEG1
memory overlap at 0x11 for RSEG1
memory overlap at 0x12 for RSEG1
memory overlap at 0x13 for RSEG1
memory overlap at 0x14 for RSEG1
memory overlap at 0x15 for RSEG1
memory overlap at 0x16 for RSEG1
memory overlap at 0x17 for RSEG1
memory overlap at 0x18 for RSEG1
memory overlap at 0x19 for RSEG1
memory overlap at 0x1A for RSEG1
memory overlap at 0x1B for RSEG1
memory overlap at 0x1C for RSEG1
memory overlap at 0x1D for RSEG1
memory overlap at 0x1E for RSEG1
memory overlap at 0x1F for RSEG1
memory overlap at 0x0 for RSEG1
memory overlap at 0x1 for RSEG1
memory overlap at 0x2 for RSEG1
memory overlap at 0x3 for RSEG1
memory overlap at 0x4 for RSEG1
memory overlap at 0x5 for RSEG1
memory overlap at 0x6 for RSEG1
memory overlap at 0x7 for RSEG1
memory overlap at 0x8 for RSEG1
memory overlap at 0x9 for RSEG1
memory overlap at 0xA for RSEG1
memory overlap at 0xB for RSEG1
memory overlap at 0xC for RSEG1
memory overlap at 0xD for RSEG1
memory overlap at 0xE for RSEG1
memory overlap at 0xF for RSEG1
memory overlap at 0x10 for RSEG1
memory overlap at 0x11 for RSEG1
memory overlap at 0x12 for RSEG1
memory overlap at 0x13 for RSEG1
memory overlap at 0x14 for RSEG1
memory overlap at 0x15 for RSEG1
memory overlap at 0x16 for RSEG1
memory overlap at 0x17 for RSEG1
memory overlap at 0x18 for RSEG1
memory overlap at 0x19 for RSEG1
memory overlap at 0x1A for RSEG1
memory overlap at 0x1B for RSEG1
memory overlap at 0x1C for RSEG1
memory overlap at 0x1D for RSEG1
memory overlap at 0x1E for RSEG1
memory overlap at 0x1F for RSEG1
memory overlap at 0x0 for RSEG0
memory overlap at 0x1 for RSEG0
memory overlap at 0x2 for RSEG0
memory overlap at 0x3 for RSEG0
memory overlap at 0x4 for RSEG0
memory overlap at 0x5 for RSEG0
memory overlap at 0x6 for RSEG0
memory overlap at 0x7 for RSEG0
memory overlap at 0x8 for RSEG0
memory overlap at 0x9 for RSEG0
memory overlap at 0xA for RSEG0
memory overlap at 0xB for RSEG0
memory overlap at 0xC for RSEG0
memory overlap at 0xD for RSEG0
memory overlap at 0xE for RSEG0
memory overlap at 0xF for RSEG0
memory overlap at 0x10 for RSEG0
memory overlap at 0x11 for RSEG0
memory overlap at 0x12 for RSEG0
memory overlap at 0x13 for RSEG0
memory overlap at 0x14 for RSEG0
memory overlap at 0x15 for RSEG0
memory overlap at 0x16 for RSEG0
memory overlap at 0x17 for RSEG0
memory overlap at 0x18 for RSEG0
memory overlap at 0x19 for RSEG0
memory overlap at 0x1A for RSEG0
memory overlap at 0x1B for RSEG0
memory overlap at 0x1C for RSEG0
memory overlap at 0x1D for RSEG0
memory overlap at 0x1E for RSEG0
memory overlap at 0x1F for RSEG0
memory overlap at 0x20 for RSEG0
memory overlap at 0x21 for RSEG0
memory overlap at 0x22 for RSEG0
memory overlap at 0x23 for RSEG0
memory overlap at 0x24 for RSEG0
memory overlap at 0x25 for RSEG0
memory overlap at 0x26 for RSEG0
memory overlap at 0x27 for RSEG0
memory overlap at 0x28 for RSEG0
memory overlap at 0x29 for RSEG0
memory overlap at 0x2A for RSEG0
memory overlap at 0x2B for RSEG0
memory overlap at 0x2C for RSEG0
memory overlap at 0x2D for RSEG0
memory overlap at 0x2E for RSEG0
memory overlap at 0x2F for RSEG0
memory overlap at 0x30 for RSEG0
memory overlap at 0x31 for RSEG0
memory overlap at 0x32 for RSEG0
memory overlap at 0x33 for RSEG0
memory overlap at 0x34 for RSEG0
memory overlap at 0x35 for RSEG0
memory overlap at 0x36 for RSEG0
memory overlap at 0x37 for RSEG0
memory overlap at 0x38 for RSEG0
memory overlap at 0x39 for RSEG0
memory overlap at 0x3A for RSEG0
memory overlap at 0x3B for RSEG0
memory overlap at 0x3C for RSEG0
memory overlap at 0x3D for RSEG0
memory overlap at 0x3E for RSEG0
memory overlap at 0x3F for RSEG0
memory overlap at 0x40 for RSEG0
memory overlap at 0x41 for RSEG0
memory overlap at 0x42 for RSEG0
memory overlap at 0x43 for RSEG0
memory overlap at 0x44 for RSEG0
memory overlap at 0x45 for RSEG0
memory overlap at 0x46 for RSEG0
memory overlap at 0x47 for RSEG0
memory overlap at 0x48 for RSEG0
memory overlap at 0x49 for RSEG0
memory overlap at 0x4A for RSEG0
memory overlap at 0x4B for RSEG0
memory overlap at 0x4C for RSEG0
memory overlap at 0x4D for RSEG0
memory overlap at 0x4E for RSEG0
memory overlap at 0x4F for RSEG0
memory overlap at 0x50 for RSEG0
memory overlap at 0x51 for RSEG0
memory overlap at 0x52 for RSEG0
memory overlap at 0x53 for RSEG0
memory overlap at 0x54 for RSEG0
memory overlap at 0x55 for RSEG0
memory overlap at 0x56 for RSEG0
memory overlap at 0x57 for RSEG0
memory overlap at 0x58 for RSEG0
memory overlap at 0x59 for RSEG0
memory overlap at 0x5A for RSEG0
memory overlap at 0x5B for RSEG0
memory overlap at 0x5C for RSEG0
memory overlap at 0x5D for RSEG0
memory overlap at 0x5E for RSEG0
memory overlap at 0x5F for RSEG0
memory overlap at 0x60 for RSEG0
memory overlap at 0x61 for RSEG0
memory overlap at 0x62 for RSEG0
memory overlap at 0x63 for RSEG0
memory overlap at 0x64 for RSEG0
memory overlap at 0x65 for RSEG0
memory overlap at 0x66 for RSEG0
memory overlap at 0x67 for RSEG0
memory overlap at 0x68 for RSEG0
memory overlap at 0x69 for RSEG0
memory overlap at 0x6A for RSEG0
memory overlap at 0x6B for RSEG0
memory overlap at 0x6C for RSEG0
memory overlap at 0x6D for RSEG0
memory overlap at 0x6E for RSEG0

?ASlink-Error-Could not get 4 consecutive bytes in internal RAM for area BSEG_BYTES.
make: *** [Makefile:28: obj/CHARGECASE_HDX_2968.ihx] Error 1

请帮我修复它,我有一个问题:如何编写startup文件?

4

0 回答 0