MSP430G2-LaunchPad简明教程02[开发环境准备(基于mspgcc)]

开发环境的准备包括驱动程序与开发工具两部分,本教程以Win7平台为例,Linux平台下的开发也可参考。

驱动程序

小红板自带一个免驱的USB仿真器供调试与程序烧写用途,以及一个最高支持9600bps波特率的application UART的通信接口。为避免后续开发中的奇怪问题,建议安装针对后者的驱动。驱动的下载地址为MSP-EXP430G2 LaunchPad Driver,解压后可得430cdc.cat(驱动数字签名)、430cdc.inf与LaunchPad_Driver.exe三个文件。

将小红板使用USB数据线与PC连接后,在设备管理器中会产生3个新设备,其中的MSP430 Application UART是需要安装上述驱动方可正常运行的,因此应依次进行如下的操作:【右键】-【更新驱动程序软件】-【浏览计算机以查找驱动软件】,在地址栏中填入下载并解压好的驱动程序所在路径,点击下一步即可完成安装。

MSP430G2-LaunchPad简明教程02[开发环境准备(基于mspgcc)]_第1张图片

最终在设备管理器中的将有三个如下图所示的设备图标。

MSP430G2-LaunchPad简明教程02[开发环境准备(基于mspgcc)]_第2张图片

开发工具

对于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格式的安装程序。

双击该图标将进入如下安装界面

MSP430G2-LaunchPad简明教程02[开发环境准备(基于mspgcc)]_第3张图片

【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 | [email protected]
# Date       : 2020-02-10
# Description: configure MSP430 build system environment 
# E-mail     : [email protected]
# 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  \
() again" && return 1
else
    pMspgcc="$1"
    # pMspflasher="$2"
fi

# This is e-mail address of maintainer
[email protected]

# 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.

至此开发环境即完成配置。

你可能感兴趣的:(#,msp430)