数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 99|回复: 2

[other] Python-msp430-tools(修复版),多文件格式 BSL给MSP430G2553烧录

[复制链接]
发表于 2026-1-31 10:02:52 | 显示全部楼层 |阅读模式
本帖最后由 coolzlp003 于 2026-1-31 13:51 编辑

汉朔价签使用的是MSP430G2553,要对该板子进行编程和烧录,按照网上大部分教程
都需要安装CCS或则IAR,然后生成Ti-Txet格式,再使用 launchpad 进行烧录,
或则使用CH340,USB转串口,进行BSL烧录,该软件 仅支持TXT格式的文件烧录,甚是不便


由于CSS、IAR还需要下载安装,有些麻烦,一番学习后,改为用vscode+mps430-elf-gcc,实现编译固件
但是gcc只能编译成,elf格式,或则hex文件,并不能直接编译成ti-txt格式用上述的软件下载
于是花了很多时间去测试和尝试 mspdebug、msp430proxy++、msp430flasher、等命令行工具,
也许是我姿势不对,不管怎么折腾,就是进不了BSL模式进行下载,折腾了很多天
在一切尝试都失败了,想放弃掉,偶然搜到一个工具 python-msp430-tools (基于python2的)
①转换成txt格式,使用上述工具进行烧录,根据readme里教程,解压缩,
然后进到解压缩目录文件夹下,安装 python setup.py install --user
安装结束可以查看帮助,输入msp430-convert --help,查看由elf或则hex转换格式 ti-txt格式命令
测试转换 msp430-convert -i elf -f titext -o ./Build/blink.txt ./Build/blink.elf
发现可以转换成txt格式,于是用上面的工具烧录测试,烧录后并没led闪烁,相反导致电脑死机蓝屏,测试好多次都是这样
百思不得其解,于是就打开 之前msp430flasher里一个烧录测试的txt文件,进行对比,突然发现,使用msp430-convert转换的txt
每16字节结束最后位置少了个空格,于是找到源文件内的python-msp430-tools-0.9.2\msp430\memory\titext.py,复制源码,喂给豆包,
把需要告诉它,很快找到问题症结,修改后代码替换原有代码
def save(memory, filelike):
    """output TI-Text to given file object"""
    for segment in sorted(memory.segments):
        filelike.write('@{:04x}\n'.format(segment.startaddress).encode('ascii'))
        data = bytearray(segment.data)
        for i in range(0, len(data), 16):
            # 核心修改:在拼接的字节字符串末尾添加一个空格,再换行
            hex_line = ' '.join(['{:02x}'.format(x) for x in data[i:i + 16]]) + ' '
            filelike.write('{}\n'.format(hex_line).encode('ascii'))
    filelike.write(b'q\n')

然后重新安装python setup.py install --user,再进行转换,可以一切正常了


②在上述的转换命令能正常使用后,想着能不能直接使用 msp430-bsl进行烧录
于是使用如下命令 :msp430-bsl --port COM19 --speed 9600 --control-delay=0.5 --invert-reset -e -P -V -r blink.hex -vv
[color=rgba(0, 0, 0, 0.85)][backcolor=rgba(0, 0, 0, 0.04)] [color=rgba(0, 0, 0, 0.85)]1.报错 TypeError: unicode strings are not supported, please encode to bytes: '\x80'
错误代码及源码喂给豆包,

# 原错误代码(bsl.py 开头)
BSL_SYNC = '\x80'
CMD_FAILED = '\x70'
DATA_FRAME = '\x80'
DATA_ACK = '\x90'
DATA_NAK = '\xA0'


# 修正后代码(加b前缀,转为bytes类型)
BSL_SYNC = b'\x80'
CMD_FAILED = b'\x70'
DATA_FRAME = b'\x80'
DATA_ACK = b'\x90'
DATA_NAK = b'\xA0'

还有其余地方一并修改掉,修改后保存,重新安装
2 再次进行烧录,已经没有上面的报错了,但是出现另外一个错误。

msp430-bsl --port COM19 --speed 9600 --control-delay=0.5 --invert-reset -e -P -V -r blink.hex -vv

Debug is False
Verbosity level set to 3
Python version: 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)]
pySerial version: 3.5
action list:
   <bound method BSL.mass_erase of <msp430.bsl.target.SerialBSLTarget object at 0x00000230D47FA910>> ()
   <bound method Target.program_file of <msp430.bsl.target.SerialBSLTarget object at 0x00000230D47FA910>> ()
   <bound method Target.verify_by_file of <msp430.bsl.target.SerialBSLTarget object at 0x00000230D47FA910>> ()
   <bound method SerialBSLTarget.reset of <msp430.bsl.target.SerialBSLTarget object at 0x00000230D47FA910>> ()
   <bound method SerialBSLTarget.reset of <msp430.bsl.target.SerialBSLTarget object at 0x00000230D47FA910>> ()
INFO:BSL:Opening serial port 'COM19'
INFO:BSL:ROM-BSL start pulse pattern

An error occurred:
'device type not known 2553/0203'
Cleaning up after error...
INFO:BSL:closing serial port


将 \msp430\target.py 及错误代码 喂给豆包,说是已经识别出 设备ID 0x2553/ BSL版本号 0x0203,需要在设备清单里添加
查看 Ti官方手册里的 BSL说明 如下


于是在 target .py里添加相关信息

# known device list
DEVICEIDS = {
    # CPUID   BSLVER family
    (0x1132, None): F1x,      # F1122, F1132
    (0x1232, None): F1x,      # F1222, F1232
    (0xf112, None): F1x,      # F11x, F11x1, F11x1A
    (0xf123, 0x0140): F1x,    # F21x1
    (0xf123, None): F1x,      # F122, F123X
    (0xf143, None): F1x,      # F14x
    (0xf149, None): F1x,      # F13x, F14x(1)
    (0xf169, None): F1x,      # F16x
    (0xf16c, None): F1x,      # F161x
   (0x2553, None): F2x,      # 新增:MSP430G2553(核心适配点)
    (0xf227, None): F2x,      # F22xx
    (0xf249, None): F2x,      # F22xx
    (0xf26f, None): F2x,      # F24x
    (0xf413, None): F4x,
    (0xf427, None): F4x,      # FE42x, FW42x, F41(5,7), F42x0
    (0xf439, None): F4x,      # FG43x
    (0xf449, None): F4x,      # F43x, F44x
    (0xf46f, None): F4x,      # FG46xx
}


再次执行安装命令,接着使用 msp430-bsl --port COM19 --speed 9600 --control-delay=0.5 --invert-reset -e -P -V -r blink.hex -vv
开始跑BSL烧录进度了~~~,修复基于python3,非常好用的工具,可以 适配windows、macos、以及linux下均可正常使用



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
发表于 2026-3-21 19:35:04 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
游客请登录后查看回复内容

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2026-4-1 14:01 , Processed in 0.202800 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz!

© MyDigit.Net Since 2006

快速回复 返回顶部 返回列表