news 2026/9/21 19:30:46

MicroPython CC3200 移植版完全指南:WiPy 与 CC3200-LAUNCHXL 的构建、烧录、REPL 接入与 OTA 升级

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MicroPython CC3200 移植版完全指南:WiPy 与 CC3200-LAUNCHXL 的构建、烧录、REPL 接入与 OTA 升级

MicroPython CC3200 移植版完全指南:WiPy 与 CC3200-LAUNCHXL 的构建、烧录、REPL 接入与 OTA 升级

【免费下载链接】micropythonMicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems项目地址: https://gitcode.com/gh_mirrors/mi/micropython

本指南以 MicroPython 仓库中 ports/cc3200/README.md 为骨架,系统讲解 TI CC3200 WiFi SoC(ARM Cortex-M4)移植版的完整工作流:从工具链准备、bootloader 与应用镜像编译,到两块官方开发板(WiPy 与 CC3200-LAUNCHXL)的串口烧录、Telnet/FTP 远程接入,再到基于内置 FTP 服务器的 OTA 固件升级。读完本文,你将掌握在 Linux/macOS 环境下把 MicroPython 跑起来并完成远程维护的每一步具体操作,同时了解这些操作背后对应的源码实现位置,方便深入排查与二次开发。

移植版概览:CC3200 WiFi SoC 与两块目标板

CC3200 是德州仪器(TI)推出的单芯片 WiFi SoC,采用 ARM Cortex-M4 内核,将应用处理器与 WiFi 子系统集成在同一颗芯片中。MicroPython 针对该芯片提供了独立移植版,位于 ports/cc3200,支持两块开发板:

  • WiPy:基于 CC3200 的 Wi-Fi 开发板,出厂即预刷默认版本 MicroPython,无法通过串口重新编程,只能通过 OTA 方式升级;
  • TI CC3200-LAUNCHXL:TI 官方 LaunchPad 评估板,支持串口(UART)与 OTA 两种升级方式。

两块板卡的定义分别在 boards/WIPY/mpconfigboard.h(板名 "WiPy")与 boards/LAUNCHXL/mpconfigboard.h(板名 "LaunchPad")中,二者均定义 MCU 名为 "CC3200"。两块板最明显的差异之一是天线配置:WiPy 定义MICROPY_HW_ANTENNA_DIVERSITY (1)支持天线分集,而 LAUNCHXL 为(0)

从源码布局看,该移植版是一个相当完整的嵌入式软件栈(见 application.mk 与 bootloader.mk):

  • hal/:TI 官方寄存器级 HAL 驱动(GPIO、UART、SPI、I2C、ADC、Timer、SDHost、加密单元等);
  • simplelink/drivers/cc3100/:TI SimpleLink WiFi 协议栈及其操作系统抽象层;
  • FreeRTOS/:移植版所依赖的实时操作系统(含 ARM_CM3 移植与 heap_4 内存管理);
  • ftp/telnet/:内置的 FTP 服务器(含 OTA updater)与 Telnet 服务器;
  • mods/:MicroPython 模块层实现(networksocketsslmachinepyb.*系列等);
  • fatfs/lib/oofatfs/:串行 Flash 与 SD 卡的文件系统支持;
  • bootmgr/:独立的二级引导程序源码。

构建环境与工具链准备

主机平台限制

当前 CC3200 移植版只在Linux 与 macOS下构建,不支持 Windows直接编译(Windows 仅能借助 TI 的 CCS_Uniflash 完成烧录环节)。构建所需工具链为 ARM 嵌入式 GCC 交叉编译器(gcc-arm-embedded 系列),对应关系见 ports/cc3200/Makefile:

CROSS_COMPILE ?= arm-none-eabi-

Makefile 同时给出了 Cortex-M4 相关的编译选项(-mcpu=cortex-m4-mthumb、软浮点-msoft-float等)以及-Os体积优化、-ffunction-sections -fdata-sections分段裁剪等面向嵌入式场景的配置。

烧录工具

烧录镜像需要以下工具之一:

  • cc3200tool:开源的 CC3200 烧录/调试工具,本文介绍的所有make烧录目标(erasedeployservicepack)都基于它;
  • TI CCS_Uniflash:TI 官方工具,仅支持 Windows,且所有技术支持由 TI 提供。

Makefile 关键默认值

ports/cc3200/Makefile 中定义了可被命令行覆盖的默认参数,理解这些默认值可以避免踩坑:

变量默认值说明
BOARDWIPY目标板,可改为LAUNCHXL
BTYPErelease构建类型,可选release/debug
BTARGETapplication构建目标,可选application/bootloader
PORT/dev/ttyUSB1烧录串口设备
BUILDbuild/$(BOARD)/$(BTYPE)构建输出目录

此外,Makefile 中按板卡区分了串行 Flash 容量:FLASH_SIZE_WIPY = 2MFLASH_SIZE_LAUNCHXL = 1M,该值在make erase格式化 Flash 时作为--size参数传入。

编译 bootloader 与应用镜像

CC3200 的启动依赖两级镜像:先由片上 ROM 引导bootloader,再由 bootloader 校验并跳转到application(MicroPython 主镜像)。因此首次烧录必须分别编译两者。

编译 bootloader

make BTARGET=bootloader BTYPE=release BOARD=LAUNCHXL

bootloader 的构建规则位于 bootmgr/bootloader.mk:它只链接引导所需的最小 HAL 子集(cpu、gpio、prcm、spi、systick 等)、SimpleLink 驱动(以SL_TINY宏裁剪)以及 bootmgr/main.c 和汇编入口 bootmgr/runapp.s,最终产物为bootmgr/build/<BOARD>/<BTYPE>/bootloader.bin

编译 release 应用镜像

make BTARGET=application BTYPE=release BOARD=LAUNCHXL

应用镜像的构建产物包括:

  • build/<BOARD>/release/application.axf:ELF 可执行文件;
  • build/<BOARD>/release/application.bin:objcopy 生成的裸二进制;
  • build/<BOARD>/release/mcuimg.bin:经 appsign.sh 签名后的最终刷写镜像;
  • build/<BOARD>/release/firmware.zip:打包 zip,内含mcuimg.bin(boards/WIPY/deploy.md 说明该 zip 中的 mcuimg.bin 应通过 FTP 复制到 WiPy 的/flash/sys目录)。

releasedebug的差异在 application.mk 中体现:release 定义-DNDEBUG;debug 定义-DDEBUG。在debug构建下,mpconfigport.h会关闭部分与 CPython 的兼容选项(MICROPY_CPYTHON_COMPAT (0))以释放 RAM 供调试使用。

编译 debug 镜像(配合 TI CCS 调试)

make BTARGET=application BTYPE=debug BOARD=LAUNCHXL

如需调试移植版特有代码,必须用 debug 类型关闭该移植文件的优化(详见 Makefile 注释)。调试时可以使用 TI 的 CCS(Code Composer Studio)工具链,使用随发布提供的CC3200.ccxml作为调试器配置文件。bootloader 的 debug 构建还有一个细节:稳定源码(hal、misc、simplelink、cc3100、py、stm32 等目录)仍强制-Os优化,只对端口相关代码关闭优化(见 bootmgr/bootloader.mk),从而在可调试性与镜像体积之间取得平衡。

烧录 CC3200-LAUNCHXL

前提条件

  • 已用release模式编译好 bootloader 与应用镜像;
  • 板上SOP2 跳线已短接(进入烧录模式);
  • Linux 系统已识别板卡并生成ttyUSB*设备(见下文ftdi_sio驱动配置)。

使用 make 目标烧录

按 README 的步骤执行:

# 1. 格式化串行 Flash(随后立刻按板上的 Reset 按钮) make erase # 2. 写入 bootloader 与 application(随后立刻按 Reset 按钮) make deploy # 3.(强烈推荐)安装最新 TI WiFi 固件 servicepack # 从 CC3200SDK-SERVICEPACK 包中取出 ota_*.ucf 与 ota_*.ucf.signed.bin, # 复制到移植版目录后执行: make servicepack # 4. 移除 SOP2 跳线并复位板卡

这些目标的底层实现都在 ports/cc3200/Makefile 中:

erase: cc3200tool -p $(PORT) format_flash --size $(FLASH_SIZE_$(BOARD)) deploy: cc3200tool -p $(PORT) \ write_file bootmgr/build/$(BOARD)/$(BTYPE)/bootloader.bin /sys/mcuimg.bin \ write_file build/$(BOARD)/$(BTYPE)/mcuimg.bin /sys/factimg.bin servicepack: cc3200tool -p $(PORT) \ write_file --file-size=0x20000 --signature ota_1.0.1.6-2.7.0.0.ucf.signed.bin \ ota_1.0.1.6-2.7.0.0.ucf /sys/servicepack.ucf

可见deploy将 bootloader 写入/sys/mcuimg.bin、应用写入/sys/factimg.bin(factory image),而servicepack会把带签名的 WiFi 固件写入/sys/servicepack.ucf,这些路径与 SimpleLink 文件系统约定一一对应。

使用 TI Uniflash 烧录(Windows)

若在 Windows 下操作,可改用 CCS_Uniflash:

  1. 打开 CCS_Uniflash 并连接板卡(默认端口 22);
  2. 格式化串行 Flash(CC3200-LAUNCHXL 选 1MB,WiPy 选 2MB,其余选项不勾选);
  3. 标记以下文件为擦除:/cert/ca.pem/cert/client.pem/cert/private.key/tmp/pac.bin
  4. 添加文件/sys/mcuimg.bin,路径指向cc3200\bootmgr\build\<BOARD_NAME>\bootloader.bin
  5. 再添加文件/sys/factimg.bin,路径指向cc3200\build\<BOARD_NAME>\mcuimg.bin
  6. 点击 "Program" 应用所有更改;
  7. 用 "Service Pack Update" 按钮刷入最新 servicepack(如servicepack_1.0.0.10.0.bin);
  8. 关闭 CCS_Uniflash,移除 SOP2 跳线并复位板卡。

关于 WiPy 的特别说明

WiPy 出厂即预装默认版 MicroPython,无法通过串口编程,只能通过 OTA 方式升级(见下文)。这与 LAUNCHXL 的烧录流程有本质区别。

接入 REPL:Telnet 与 UART

固件启动后,有两种方式进入 MicroPython REPL。

方式一:Telnet(WiFi 接入)

板卡上电后默认以AP(热点)模式启动,默认网络参数定义在 mpconfigport.h:

参数默认值
SSIDwipy-wlan
密钥www.wipy.io
安全类型SL_SEC_TYPE_WPA_WPA2(WPA/WPA2)
信道5

连接该热点后,使用任意 Telnet 客户端:

  • host = 192.168.1.1,port = 23
  • 登录用户名micro,密码python

你也可以在 REPL 中通过network模块将 WLAN 重新初始化为 station 模式去连接其他 AP,或改用不同的 SSID/密钥重新配置 AP 模式。Telnet 服务器由 telnet/telnet.c 实现,并在 serverstask.c 的任务循环中完成初始化、使能、复位与运行管理。

方式二:UART(串口)

  • UART REPL 在标准配置下默认开启,位于UART0,波特率 115200(由MICROPY_STDIO_UARTMICROPY_STDIO_UART_BAUD控制,见两块板的 mpconfigboard.h);
  • CC3200-LAUNCHXL:需要按ftdi_sio驱动的相关文档配置 Linux 内核驱动。配置完成后插入板卡会生成两个/dev/ttyUSB*设备,串口控制台在第二个设备上(通常为/dev/ttyUSB1,这也正是 Makefile 中PORT默认值的来源);
  • WiPy:板载没有 USB-UART 转换芯片,需要外接 USB-UART 转换器,连接GPIO01(Tx)GPIO02(Rx)

一个值得注意的设计是:UART 是否作为 REPL 输出由MICROPY_STDIO_UART配置控制,但该配置是在高层完成的——通过 boot.py 中合适的os.dupterm()调用实现,因此即使编译期配置不同,你也可以在运行时覆盖 REPL 的输出端口。

文件系统与 SD 卡

板卡在 CC3200 外接的串行 Flash 上维护一个小的 FatFS 文件系统:WiPy 为 192K,LaunchPad 为 64K。与之对应,两块板在 mpconfigboard.h 与 boards/WIPY/mpconfigboard.h 中分别定义了串行 Flash 块数MICROPY_PORT_SFLASH_BLOCK_COUNT为 32(LAUNCHXL)与 96(WiPy),与 README 给出的容量描述吻合。文件系统底层的串行 Flash 磁盘驱动在 fatfs/src/drivers/sflash_diskio.c,相关 Python 接口见 mods/pybflash.c。

此外该移植版支持 SD 卡:任意 SD 卡都可以接入,并通过SD类 API 配置引脚。磁盘驱动实现位于 fatfs/src/drivers/sd_diskio.c,Python 侧接口在 mods/pybsd.c。注意 TI SimpleLink 文件系统出于安全性会将每个文件镜像存储,因此 Flash 写入较慢(这也是 OTA 需要约 6 秒的原因之一)。

通过 FTP 上传脚本

板卡内置 FTP 服务器(实现见 ftp/ftp.c),用于向板内文件系统上传 MicroPython 脚本。连接参数:

  • ftp://192.168.1.1
  • 用户名micro,密码python

官方测试过的 FTP 客户端包括 FileZilla、FireFTP、FireFox、IE 与 Chrome;其他符合规范的客户端一般也能工作,但需要确认其使用单连接模式(合规 FTP 客户端默认即为单连接)。原因见下文“已知问题”中对 FileZilla 的说明:出于代码体积考虑,该 FTP 服务器只允许一条命令连接和一条数据连接。

OTA 固件升级(Over The Air)

OTA 是 WiPy 唯一可用的升级途径,同时也适用于 LAUNCHXL。

手动 OTA

  1. 在 release 模式下编译新的mcuimg.bin
  2. 通过 FTP 将其上传到/flash/sys/mcuimg.bin
  3. 上传约耗时 6 秒(TI SimpleLink 文件系统为每个文件做镜像备份,速度较慢);
  4. 文件不会出现在/flash/sys/目录中——它实际上绕过了 FatFS 直接写入,但请放心文件已成功传输,且带有MD5 校验和用于完整性验证;
  5. 复位 MCU:按板载开关,或在 REPL 中执行:
import machine machine.reset()

OTA 的升级路径常量定义在 ftp/updater.c(如UPDATER_IMG_PATH "/flash/sys/mcuimg.bin"),该文件同时负责固件签名校验(使用shamd5.h的摘要算法),并在引导侧由 bootmgr/bootmgr.h 中的镜像令牌(FACTORY_IMG_TOKEN 0x5555AAAAUPDATE_IMG_TOKEN 0xAA5555AA)决定从工厂镜像还是升级镜像启动。

自动化 OTA:deploy-ota

仓库提供了主机端一键升级脚本,确保板卡已运行且与电脑处于同一网络后执行:

make BTARGET=application BTYPE=release BOARD=LAUNCHXL WIPY_IP=192.168.1.1 WIPY_USER=micro WIPY_PWD=python deploy-ota

WIPY_IPWIPY_USERWIPY_PWD均可省略,省略时使用上述默认值(见 application.mk)。该目标调用 tools/update-wipy.py:脚本通过 Python 标准库ftplib建立 FTP 连接、登录、自动创建/flash/sys目录并上传mcuimg.bin,随后通过telnetlib登录 Telnet 执行复位,并在--verify模式下验证固件是否正确更新。该脚本也可脱离 make 单独使用:

python tools/update-wipy.py --file build/LAUNCHXL/release/mcuimg.bin --verify

注意事项与已知问题

旧版本 CC3200-LAUNCHXL 无法运行

早期硅片(pre-release)版本的 CC3200 在 RAM 块上存在缺陷,MicroPython 无法在其上运行。请务必使用v4.1 或更高版本的 LAUNCHXL 板卡,否则该移植版无法工作。

FileZilla 使用限制

不要使用 FileZilla 的“快速连接”按钮,应打开站点管理器新建配置:

  • 在 "General" 标签中将加密方式设为"Only use plain FTP (insecure)"(仅使用明文 FTP);
  • 在 "Transfer Settings" 标签中将最大连接数限制为1

否则 FileZilla 在检索/保存文件时会尝试打开第二条命令连接,而该 FTP 服务器出于简化与减小代码体积的考虑,只允许一条命令连接和一条数据连接。

从源码进一步深入

若想在理解操作流程后继续深入,推荐按以下路径阅读源码:

  • ports/cc3200/README.md:官方移植版说明(本文依据);
  • ports/cc3200/Makefile 与 ports/cc3200/application.mk:构建参数与全部源码清单;
  • ports/cc3200/mpconfigport.h:移植版功能开关(REPL、线程、VFS、WLAN AP 默认参数等);
  • ports/cc3200/mods:networksocketsslmachinepyb.*等模块实现;
  • ports/cc3200/ftp/updater.c 与 ports/cc3200/bootmgr/bootmgr.h:OTA 升级与双镜像引导逻辑;
  • ports/cc3200/tools/smoke.py 与 ports/cc3200/tools/update-wipy.py:自动化验证与升级脚本。

需要说明的是,本移植版仅支持在 Linux/macOS 下构建、依赖第三方 cc3200tool 或 TI 工具烧录,且受旧版硬件缺陷限制,实际使用时请以仓库当前代码与本文所列前提为准。

【免费下载链接】micropythonMicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems项目地址: https://gitcode.com/gh_mirrors/mi/micropython

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/21 19:30:44

3步搞定怎么开通公众号 实战项目避坑指南

3步搞定怎么开通公众号 实战项目避坑指南 面试被问原理答不上来,别慌,这往往是新手最头疼的环节。很多学员在培训机构的实战项目里卡壳,核心原因不是代码写不对,而是对底层逻辑和配置流程一知半解。比如怎么开通公众号这个看似简单的问题,背后涉及微信开放平台的架构设计、API权限体系以及前端交互逻辑。…

作者头像 李华
网站建设 2026/9/21 19:30:44

图解原理:黑魂3巨人尤姆怎么打的3个致命坑

图解原理:黑魂3巨人尤姆怎么打的3个致命坑 官方文档太长抓不住重点?别慌。很多老玩家卡死在巨人尤姆身上,不是操作不行,是没人用 图解原理 的方式讲清楚他的机制。今天这篇避坑指南,直接拆解你反复读档的三个原因,全是实战踩出来的血泪经验。 坑一:被“熔岩喷吐”秒了,以为是手残 现象…

作者头像 李华
网站建设 2026/9/21 19:30:41

3个维度看清lsjsp,面试必问的选型不踩坑

3个维度看清lsjsp,面试必问的选型不踩坑 版本升级后 API 全变了,这是很多开发者在接手新项目时最头疼的问题。特别是当技术栈里出现像 lsjsp 这样相对小众或特定场景下的组件时,文档稀疏、社区讨论少,一旦遇到版本迭代,那种“断崖式”的 API 变更让人抓狂。在近期的技术面试中, 面试必问…

作者头像 李华
网站建设 2026/9/21 19:30:30

5个技巧搞定精选笑话性能瓶颈附完整示例

5个技巧搞定精选笑话性能瓶颈附完整示例 看了一堆教程还是不会写项目?别怪教程不好,是你没见过真实的生产环境。很多开发者拿着Hello World的代码去套业务逻辑,结果系统一上量就卡死。今天咱们不整虚的,直接拆解【精选笑话】模块在真实高并发场景下的性能杀手,给你一套【完整示例】,从代码层面手把手教你…

作者头像 李华
网站建设 2026/9/21 19:30:17

3步搞定出库单软件,面试必问的底层逻辑全解析

3步搞定出库单软件,面试必问的底层逻辑全解析 看了一堆教程还是不会写项目?这是很多开发者入职后的第一个噩梦。别急,今天咱们不聊虚的,直接拆解一个让无数人头疼的场景: 出库单软件 。 为什么选这个?因为在后端开发面试中,库存一致性、并发扣减、事务隔离级别是 面试必问…

作者头像 李华
网站建设 2026/9/21 19:30:17

3个鼠标练习技巧助你从入门到精通告别面试翻车

3个鼠标练习技巧助你从入门到精通告别面试翻车 面试被问原理答不上来,那种手心出汗、大脑空白的感觉,谁经历过谁懂。很多学员以为鼠标练习只是练手感,其实它是理解底层事件循环与渲染机制的最佳入口。想从入门到精通,光靠无脑点击远远不够,必须透过现象看本质。…

作者头像 李华