关于mcu不使用IDE(keil,IAR),使用交叉编译工具开发的问题
背景
本文以ti的msp430系列单片机为例
首先去官网下载交叉编译链
https://www.ti.com.cn/tool/cn/MSP430-GCC-OPENSOURCE
我们这里用windows做测试,下载windwos的就可以
安装以后参照这个 https://zhuanlan.zhihu.com/p/356963477
主要就是两个关键点:
第一:如果是使用vscode编辑器,json文件头文件的配置,写上交叉编译的头文件的路径
第二: makefile的编写
补充知识 https://www.cnblogs.com/codedingzhen/p/18075102
all: MKDIR-BUILD TO-OBJECTS TO-OUT TO-ELF
###########################################################
# Toolchain
###########################################################
CC = $(MSPGCC_BIN_DIR)/msp430-elf-gcc
GDB = $(MSPGCC_BIN_DIR)/msp430-elf-gdb
SIZE = $(MSPGCC_BIN_DIR)/msp430-elf-size
###########################################################
# Directories
###########################################################
MSPGCC_ROOT_DIR = /usr/local/msp430-gcc
MSPGCC_BIN_DIR = $(MSPGCC_ROOT_DIR)/bin
SUPPORT_FILE_DIRECTORY = Drivers/Include_ld
BUILD_DIR = Build
###########################################################
# Files
###########################################################
SOURCES = $(wildcard ./Src/*.c)
C_INCLUDES = -IInc\
-I/usr/local/msp430-gcc/msp430-elf/include
###########################################################
# Flags
###########################################################
OBJECTS=$(BUILD_DIR)/blink.o
CFLAGS = -I $(SUPPORT_FILE_DIRECTORY) -mmcu=$(DEVICE) -O2 -g
LFLAGS = -L $(SUPPORT_FILE_DIRECTORY) -T $(DEVICE).ld
###########################################################
# DEVICE
###########################################################
DEVICE = msp430g2553
###########################################################
# Command
###########################################################
TO-OBJECTS:
@echo "compiling..."
$(CC) -I $(SUPPORT_FILE_DIRECTORY) $(C_INCLUDES) -L $(SUPPORT_FILE_DIRECTORY) -mmcu=$(DEVICE) -o2 -g $(SOURCES) -o $(BUILD_DIR)/blink.o
$(SIZE) -t $(OBJECTS)
TO-OUT: ${OBJECTS}
@echo "To outFile..."
$(CC) -nostartfiles $(CFLAGS) $(LFLAGS) $? -o $(BUILD_DIR)/$(DEVICE).out
$(SIZE) -t $(BUILD_DIR)/$(DEVICE).out
TO-ELF: $(OBJECTS)
@echo "To elfFile..."
$(CC) -nostartfiles $(CFLAGS) $(LFLAGS) $? -o $(BUILD_DIR)/$(DEVICE).elf
$(SIZE) -t $(BUILD_DIR)/$(DEVICE).elf
MKDIR-BUILD:
mkdir Build
Debug:
$(GDB) $(BUILD_DIR)/$(DEVICE).elf
clean:
-rm -fR $(BUILD_DIR)