开发环境的准备包括驱动程序与开发工具两部分,本教程以Win7平台为例,Linux平台下的开发也可参考。
驱动程序
小红板自带一个免驱的USB仿真器供调试与程序烧写用途,以及一个最高支持9600bps波特率的application UART的通信接口。为避免后续开发中的奇怪问题,建议安装针对后者的驱动。驱动的下载地址为MSP-EXP430G2 LaunchPad Driver,解压后可得430cdc.cat(驱动数字签名)、430cdc.inf与LaunchPad_Driver.exe三个文件。
将小红板使用USB数据线与PC连接后,在设备管理器中会产生3个新设备,其中的MSP430 Application UART是需要安装上述驱动方可正常运行的,因此应依次进行如下的操作:【右键】-【更新驱动程序软件】-【浏览计算机以查找驱动软件】,在地址栏中填入下载并解压好的驱动程序所在路径,点击下一步即可完成安装。
最终在设备管理器中的将有三个如下图所示的设备图标。
开发工具
对于MSP430的开发工具有多种选择,IDE方案有IAR或者TI官方基于Eclipse封装的CCS。但本教程将提供一套更为简单粗暴的轻量级开发环境配置方案(mspgcc+mspdebug),可支持Windows/Linux平台开发。
工具 | 描述 |
---|---|
mspgcc | 开源的msp430单片机编译器,本文使用的是当前较新的8.3版本。 |
mspdebug | 开源的msp430单片机调试器,也可用于烧写用途;可创建gdb server供gdb调试,作用类似OpenOCD,在较新版本中的mspgcc自带该工具,无需单独安装。(官方推荐的MSPFlasher也是一个不错的选择。) |
make/gmake | GNU make,GNU全家桶中的项目管理工具。 |
Git Bash/Mingw/Cygwin.. | 若在Windows平台下开发,需要有一个Bash运行环境,网上有大量的安装教程,本教程不冗述。 |
vim/notepad++... | 文本编辑器,用于代码编写,可根据个人爱好自由选择。 |
mspgcc & mspdebug
在TI官网的下载页面下,找到【GCC all-in-one installer】子表格中,根据自身的操作系统找到对应的下载选项即可。下载完成后将有一个齿轮图标的exe格式的安装程序。
双击该图标将进入如下安装界面
【Directory】填写自己的安装路径(本人填写的是D:\mspgcc-8.3),路径不允许带空格与中文;复选框【Add binary directory %PATH%】是用于设置环境变量PATH的,我建议不勾选这个,以避免和既有的GNU全家桶存在潜在冲突;若为了使用方便且不存在上述风险亦可勾选该选项。最后勾选同意协议的选项即可完成安装。
安装完成之后,在程序根目录下的bin目录将存放如下的应用程序
$ ls
libusb0.dll msp430-elf-gcc-8.3.1.exe msp430-elf-objcopy.exe
make.exe msp430-elf-gcc-ar.exe msp430-elf-objdump.exe
MSP430.dll msp430-elf-gcc-nm.exe msp430-elf-ranlib.exe
msp430-elf-addr2line.exe msp430-elf-gcc-ranlib.exe msp430-elf-readelf.exe
msp430-elf-ar.exe msp430-elf-gcov.exe msp430-elf-run.exe
msp430-elf-as.exe msp430-elf-gcov-dump.exe msp430-elf-size.exe
msp430-elf-c++.exe msp430-elf-gcov-tool.exe msp430-elf-strings.exe
msp430-elf-c++filt.exe msp430-elf-gdb.exe msp430-elf-strip.exe
msp430-elf-cpp.exe msp430-elf-gprof.exe msp430-gdbproxy.exe
msp430-elf-elfedit.exe msp430-elf-ld.bfd.exe mspdebug.exe
msp430-elf-g++.exe msp430-elf-ld.exe readline5.dll
msp430-elf-gcc.exe msp430-elf-nm.exe regex2.dll
经常使用gcc开发的同学是不是会感觉到很熟悉呢?这也是一个完整的GNU全家桶,而且和常见的针对ARM平台的交叉编译器有着一模一样的架构,一模一样的命名风格($CROSS_COMPILE+$UTILITY_NAME);不仅有gcc、g++,包括ar、nm、ld在内的工具也一应俱全,此外还有调试与烧录程序所需的mspdebug。相较于Linux平台,Windows平台下的工具链还多了几个dll格式动态库。
由于我们没有将该bin目录添加至环境变量PATH中,因此我们还需要编写一个环境配置脚本env.sh来完成环境的配置,该脚本中不仅会修改环境变量PATH,还将封装包括CC、LD等在内的交叉编译工具链常用的环境变量供Makefile使用。在此提供一个示例脚本可直接使用,支持Windows平台的Msys(Git Bash)\Cygwin与Linux。
#!/bin/sh
# ------------------------------------------------------------------------
# Author : Weilun Fong | wlf@zhishan-iot.tk
# Date : 2020-02-10
# Description: configure MSP430 build system environment
# E-mail : mcu@zhishan-iot.tk
# Page :
# Project :
# Version :
# ------------------------------------------------------------------------
# ------------------------------------------------------------------------
# Usage:
# $1: root path of mspgcc, e.g.: D:\mspgcc-8.3
# $2: root path of MSP430Flasher, e.g.: D:\ti\MSPFlasher_1.3.20
# usage.1: source env.sh "D:\mspgcc-8.3" "D:\ti\MSPFlasher_1.3.20"
# usage.2: source env.sh "D:\mspgcc-8.3"
#
# @note: You can fill with fixed path here instead of script parameters
# ------------------------------------------------------------------------
if [ -z "$1" ]; then
echo "$0:$LINENO: error: Incomplete parameters. Try $0 <mspgcc-path> \
(<MSP430Flasher path>) again" && return 1
else
pMspgcc="$1"
# pMspflasher="$2"
fi
# This is e-mail address of maintainer
MAINTAINER_EMAIL=mcu@zhishan-iot.tk
# Judge run environment
UNAME_O=`uname -o 2> /dev/null`
UNAME_S=`uname -s 2> /dev/null`
if [ "$UNAME_S" == Linux ]; then
ENV=Linux
else
if [ "$UNAME_O" == Cygwin ]; then
ENV=Cygwin
elif [ "$UNAME_O" == Msys ]; then
ENV=Mingw
else
# Just support Linux/Cygwin/Mingw now. If you meet others, please report
# to us.
echo "$0:$LINENO: error: Unknown platform... Report to <$MAINTAINER_EMAIL>" && return 1
fi
fi
# Configure absolute path
# specify root path of mspgcc
if [ "$ENV" == Linux ]; then
export SYSROOT="$pMspgcc"
export PATH=$PATH:$SYSROOT/bin
if [ -n "$pMspflasher" ]; then
export MSPFLASHER_PATH="$pMspflasher"
fi
elif [ "$ENV" == Cygwin ]; then
export SYSROOT="$pMspgcc"
export PATH=$PATH:`cygpath -p "$pMspgcc" -a`/bin
if [ -n "$pMspflasher" ]; then
export MSPFLASHER_PATH="$pMspflasher"
fi
elif [ "$ENV" = Mingw ]; then
export SYSROOT=`cygpath -p "$pMspgcc" -a`
export PATH=$PATH:$SYSROOT/bin
if [ -n "$pMspflasher" ]; then
export MSPFLASHER_PATH=`cygpath -p "$pMspflasher" -a`
fi
fi
if [ ! -d "$SYSROOT" ]; then
echo "$0:$LINENO: error: Target path $SYSROOT is non-existent." && return 1
fi
export PATH=$PATH:$MSPFLASHER_PATH
# ------------------------------------------------------------
# @note: the CROSS_COMPILE value in older version is "msp430-"!!!
# ------------------------------------------------------------
# export CROSS_COMPILE=msp430-
export CROSS_COMPILE=msp430-elf-
# modify environment variable PATH
# Define toolchain
export ARCH=msp430
export CC=${CROSS_COMPILE}gcc
export CXX=${CROSS_COMPILE}g++
export CPP=${CROSS_COMPILE}cpp
export AS=${CROSS_COMPILE}as
export AR=${CROSS_COMPILE}ar
export GDB=${CROSS_COMPILE}gdb
export LD=${CROSS_COMPILE}ld
export M4=m4
export NM=${CROSS_COMPILE}nm
export OBJCOPY=${CROSS_COMPILE}objcopy
export OBJDUMP=${CROSS_COMPILE}objdump
export RANLIB=${CROSS_COMPILE}ranlib
export STRIP=${CROSS_COMPILE}strip
# ------------------------------------------------------------
# @note: some version of mspgcc toolchain don't have mspdebug
# ------------------------------------------------------------
which mspdebug > /dev/null
if [ $? -eq 0 ]; then
export MSPDEBUG=mspdebug
export DEBUG_DRIVER=tilib
fi
# Define command line parameters
export CFLAGS="-I$SYSROOT/include"
export LDFLAGS="-L$SYSROOT/include"
# Check result
$CC -dumpversion > /dev/null
if [ $? -ne 0 ]; then
echo "$0:$LINENO: error: Failed to set compile toolchain" && return 1
fi
# For MSP430Flasher
# export MSPFLASHER=MSP430Flasher
# which $MSPFLASHER > /dev/null
# if [ $? -ne 0 ]; then
# echo "$0:$LINENO: error: Failed to set MSPFlasher" && return 1
# fi
脚本注释中的usage有相关的使用说明,如:
source env.sh "D:\mspgcc-8.3"
唯一的一个脚本输入参数为mspgcc安装位置,即bin目录的父目录。需要注意的是务必使用source命令运行该脚本以生效相关的参数。最后输入如下命令查看mspgcc工具链是否已经正确配置(实际上上文的示例脚本中已带自我检测功能):
$ $CC --version
msp430-elf-gcc.exe (Mitto Systems Limited - msp430-gcc 8.3.1.25) 8.3.1
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
至此开发环境即完成配置。