历史上的今天
返回首页

历史上的今天

今天是:2025年03月06日(星期四)

正在发生

2020年03月06日 | MSP430G2-LaunchPad简明教程02

2020-03-06 来源:eefocus

发环境的准备包括驱动程序与开发工具两部分,本教程以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:tiMSPFlasher_1.3.20

# usage.1: source env.sh "D:mspgcc-8.3" "D:tiMSPFlasher_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

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.

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

推荐阅读

史海拾趣

成都芯进(CrossChip)公司的发展小趣事

作为一家立志于立足中国、服务全球的电子企业,成都芯进电子始终保持着开放的国际视野。他们积极参与国际技术交流与合作,不断提升自身的技术水平和市场竞争力。同时,公司也在全球范围内拓展业务,希望将更多优质的电子产品推向国际市场,为全球消费者带来更好的使用体验。

请注意,以上故事是基于参考文章内容的合理扩展和虚构,具体细节可能与实际情况存在差异。

DURAKOOL公司的发展小趣事

为了更好地服务全球客户,DURAKOOL公司加强了全球化布局,在多个国家和地区设立了生产基地和研发中心。同时,公司也积极寻求与全球知名企业的合作,如与杜邦公司等建立了良好的合作关系,共同推动电子行业的发展。

台湾町洋(dinkle)公司的发展小趣事

町洋始终坚守品质至上的原则,从原材料采购到生产流程再到成品检验,每一个环节都严格把关。这种对品质的执着追求使得町洋的产品在市场上享有极高的声誉。客户对町洋产品的信任和认可也成为了公司最宝贵的财富。

FUJITSU(富士通)公司的发展小趣事

为了进一步扩大市场份额,町洋开始进军国际市场。公司凭借其优质的产品和服务,逐渐在欧美等发达国家和地区打开了市场。为了更好地服务全球客户,町洋在全球设立了多个贸易与服务机构,构建了完善的销售网络和售后服务体系。

Horn公司的发展小趣事

为了更好地服务全球客户,Horn公司积极实施全球化战略。通过在海外设立分公司和与分销商建立紧密合作关系,Horn公司的产品和服务能够迅速覆盖到全球各地。这种全球化布局不仅提升了公司的市场影响力,还促进了技术交流与合作,为公司带来了更多的发展机遇。

Hifn Inc公司的发展小趣事

自1969年成立以来,Horn公司便致力于开发和生产切槽、侧铣和槽铣刀具。起初,公司聚焦于为小型机械加工企业提供高质量的工具解决方案。在创始人Paul Horn的领导下,公司迅速建立了技术团队,专注于刀具材料的研发与生产工艺的改进。这一时期,Horn公司凭借其出色的产品质量和定制化的服务,在行业内逐渐树立了良好的口碑。

问答坊 | AI 解惑

镜面旋转LED屏(含C源码、原理图全部资料)

网上有老外做的LED旋转显示屏,在技术上软硬件都不难,只需要花些时间慢慢调就能出来。关键是,给旋转的LED供电,对电子爱好者来说,是个麻烦事。 这里,给出一个不需要给LED电路供电的方法。即让LED和单片机电路固定不动,而是旋转一面镜子。 原 ...…

查看全部问答>

ccs中文

ccs中文教程…

查看全部问答>

LED的应用优势及存在问题解答

replyreload += \',\' + 375296; 本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 Timson,如果您要查看本帖隐藏内容请回复 …

查看全部问答>

pxa270-s自定wince内核为何不识别activesync和usb鼠标?

使用的博创的intel xscale pxa270-s的实验平台 ,用pb5.0定制了mobile handler的内核,内核设置时选择了activesync,同时将博创的bsp(光盘提供的)板级支持包里的各个组件依次添加到了os design中,sysgen后得到的nk.bin传到板子上出现了wince的 ...…

查看全部问答>

usb device驱动的问题

我的主板配置是pxa270+wce50,现在主板有个问题是usb device有点问题,MS activesync连接不上,通过查看PXA270的USBC_P,USBC_N两脚的信号,好像不对,但感觉查这两个信号也无法确定问题,其实USB device电路应该很简单,没有什么东西,但就是不通, ...…

查看全部问答>

求920T内核原理图

本人邮箱是lixineagle@sina.com.cn...........谢谢大家了。。。…

查看全部问答>

while ((IFG1 & UTXIFG0)==0); 停止怎么解决?

初始化函数: void S_Init() { P6SEL&=~(SCK+SDA+SVCC);                   //选择P6.3 P6.4 为IO端口输出, P6.5输入 P6DIR|=(SCK+SVCC); P6DIR&=~SDA; BCSCTL1=(XT2OFF+RSEL2 ...…

查看全部问答>

89美金FPGA开发板试用风暴来袭

89美金FPGA开发板试用风暴来袭…

查看全部问答>

(转贴)国标字库的使用

国标字库显示 http://hi.baidu.com/liangsir168/blog/item/0592c515ad722112c93d6d1a.html UCDOS中的点阵字库HZK12,HZK16,HZK24,ASC12,ASC16          如何在嵌入式系统中使用大 ...…

查看全部问答>

单片机外围电路之二《电容》

电容,作为电子电路的又一基本元器件,大家也是熟悉不过的了。下面我们谈谈电容的一些基本应用及注意事项。但是,由于电容的应用非常广泛,未必能面面俱到,如果有网友觉得没有谈到的地方,希望公共完善。 1. 概念        电 ...…

查看全部问答>