MicroPython CC3200 移植版完全指南:WiPy 与 CC3200-LAUNCHXL 的构建、烧录、REPL 接入与 OTA 升级
发布时间:2026/9/21 19:30:51 作者:尧图编辑部 阅读量:1,286

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 SoCARM 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-LAUNCHXLTI 官方 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.mkhal/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 模块层实现network、socket、ssl、machine、pyb.*系列等fatfs/与lib/oofatfs/串行 Flash 与 SD 卡的文件系统支持bootmgr/独立的二级引导程序源码。构建环境与工具链准备主机平台限制当前 CC3200 移植版只在Linux 与 macOS下构建不支持 Windows直接编译Windows 仅能借助 TI 的 CCS_Uniflash 完成烧录环节。构建所需工具链为 ARM 嵌入式 GCC 交叉编译器gcc-arm-embedded 系列对应关系见 ports/cc3200/MakefileCROSS_COMPILE ? arm-none-eabi-Makefile 同时给出了 Cortex-M4 相关的编译选项-mcpucortex-m4、-mthumb、软浮点-msoft-float等以及-Os体积优化、-ffunction-sections -fdata-sections分段裁剪等面向嵌入式场景的配置。烧录工具烧录镜像需要以下工具之一cc3200tool开源的 CC3200 烧录/调试工具本文介绍的所有make烧录目标erase、deploy、servicepack都基于它TI CCS_UniflashTI 官方工具仅支持 Windows且所有技术支持由 TI 提供。Makefile 关键默认值ports/cc3200/Makefile 中定义了可被命令行覆盖的默认参数理解这些默认值可以避免踩坑变量默认值说明BOARDWIPY目标板可改为LAUNCHXLBTYPErelease构建类型可选release/debugBTARGETapplication构建目标可选application/bootloaderPORT/dev/ttyUSB1烧录串口设备BUILDbuild/$(BOARD)/$(BTYPE)构建输出目录此外Makefile 中按板卡区分了串行 Flash 容量FLASH_SIZE_WIPY 2M、FLASH_SIZE_LAUNCHXL 1M该值在make erase格式化 Flash 时作为--size参数传入。编译 bootloader 与应用镜像CC3200 的启动依赖两级镜像先由片上 ROM 引导bootloader再由 bootloader 校验并跳转到applicationMicroPython 主镜像。因此首次烧录必须分别编译两者。编译 bootloadermake BTARGETbootloader BTYPErelease BOARDLAUNCHXLbootloader 的构建规则位于 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 BTARGETapplication BTYPErelease BOARDLAUNCHXL应用镜像的构建产物包括build/BOARD/release/application.axfELF 可执行文件build/BOARD/release/application.binobjcopy 生成的裸二进制build/BOARD/release/mcuimg.bin经 appsign.sh 签名后的最终刷写镜像build/BOARD/release/firmware.zip打包 zip内含mcuimg.binboards/WIPY/deploy.md 说明该 zip 中的 mcuimg.bin 应通过 FTP 复制到 WiPy 的/flash/sys目录。release与debug的差异在 application.mk 中体现release 定义-DNDEBUGdebug 定义-DDEBUG。在debug构建下mpconfigport.h会关闭部分与 CPython 的兼容选项MICROPY_CPYTHON_COMPAT (0)以释放 RAM 供调试使用。编译 debug 镜像配合 TI CCS 调试make BTARGETapplication BTYPEdebug BOARDLAUNCHXL如需调试移植版特有代码必须用 debug 类型关闭该移植文件的优化详见 Makefile 注释。调试时可以使用 TI 的 CCSCode 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-size0x20000 --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.binfactory image而servicepack会把带签名的 WiFi 固件写入/sys/servicepack.ucf这些路径与 SimpleLink 文件系统约定一一对应。使用 TI Uniflash 烧录Windows若在 Windows 下操作可改用 CCS_Uniflash打开 CCS_Uniflash 并连接板卡默认端口 22格式化串行 FlashCC3200-LAUNCHXL 选 1MBWiPy 选 2MB其余选项不勾选标记以下文件为擦除/cert/ca.pem、/cert/client.pem、/cert/private.key与/tmp/pac.bin添加文件/sys/mcuimg.bin路径指向cc3200\bootmgr\build\BOARD_NAME\bootloader.bin再添加文件/sys/factimg.bin路径指向cc3200\build\BOARD_NAME\mcuimg.bin点击 Program 应用所有更改用 Service Pack Update 按钮刷入最新 servicepack如servicepack_1.0.0.10.0.bin关闭 CCS_Uniflash移除 SOP2 跳线并复位板卡。关于 WiPy 的特别说明WiPy 出厂即预装默认版 MicroPython无法通过串口编程只能通过 OTA 方式升级见下文。这与 LAUNCHXL 的烧录流程有本质区别。接入 REPLTelnet 与 UART固件启动后有两种方式进入 MicroPython REPL。方式一TelnetWiFi 接入板卡上电后默认以AP热点模式启动默认网络参数定义在 mpconfigport.h参数默认值SSIDwipy-wlan密钥www.wipy.io安全类型SL_SEC_TYPE_WPA_WPA2WPA/WPA2信道5连接该热点后使用任意 Telnet 客户端host 192.168.1.1port 23登录用户名micro密码python你也可以在 REPL 中通过network模块将 WLAN 重新初始化为 station 模式去连接其他 AP或改用不同的 SSID/密钥重新配置 AP 模式。Telnet 服务器由 telnet/telnet.c 实现并在 serverstask.c 的任务循环中完成初始化、使能、复位与运行管理。方式二UART串口UART REPL 在标准配置下默认开启位于UART0波特率 115200由MICROPY_STDIO_UART与MICROPY_STDIO_UART_BAUD控制见两块板的 mpconfigboard.hCC3200-LAUNCHXL需要按ftdi_sio驱动的相关文档配置 Linux 内核驱动。配置完成后插入板卡会生成两个/dev/ttyUSB*设备串口控制台在第二个设备上通常为/dev/ttyUSB1这也正是 Makefile 中PORT默认值的来源WiPy板载没有 USB-UART 转换芯片需要外接 USB-UART 转换器连接GPIO01Tx与GPIO02Rx。一个值得注意的设计是UART 是否作为 REPL 输出由MICROPY_STDIO_UART配置控制但该配置是在高层完成的——通过 boot.py 中合适的os.dupterm()调用实现因此即使编译期配置不同你也可以在运行时覆盖 REPL 的输出端口。文件系统与 SD 卡板卡在 CC3200 外接的串行 Flash 上维护一个小的 FatFS 文件系统WiPy 为 192KLaunchPad 为 64K。与之对应两块板在 mpconfigboard.h 与 boards/WIPY/mpconfigboard.h 中分别定义了串行 Flash 块数MICROPY_PORT_SFLASH_BLOCK_COUNT为 32LAUNCHXL与 96WiPy与 README 给出的容量描述吻合。文件系统底层的串行 Flash 磁盘驱动在 fatfs/src/drivers/sflash_diskio.c相关 Python 接口见 mods/pybflash.c。此外该移植版支持 SD 卡任意 SD 卡都可以接入并通过SD类 API 配置引脚。磁盘驱动实现位于 fatfs/src/drivers/sd_diskio.cPython 侧接口在 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 AirOTA 是 WiPy 唯一可用的升级途径同时也适用于 LAUNCHXL。手动 OTA在 release 模式下编译新的mcuimg.bin通过 FTP 将其上传到/flash/sys/mcuimg.bin上传约耗时 6 秒TI SimpleLink 文件系统为每个文件做镜像备份速度较慢文件不会出现在/flash/sys/目录中——它实际上绕过了 FatFS 直接写入但请放心文件已成功传输且带有MD5 校验和用于完整性验证复位 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 0x5555AAAA、UPDATE_IMG_TOKEN 0xAA5555AA决定从工厂镜像还是升级镜像启动。自动化 OTAdeploy-ota仓库提供了主机端一键升级脚本确保板卡已运行且与电脑处于同一网络后执行make BTARGETapplication BTYPErelease BOARDLAUNCHXL WIPY_IP192.168.1.1 WIPY_USERmicro WIPY_PWDpython deploy-otaWIPY_IP、WIPY_USER、WIPY_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/modsnetwork、socket、ssl、machine、pyb.*等模块实现ports/cc3200/ftp/updater.c 与 ports/cc3200/bootmgr/bootmgr.hOTA 升级与双镜像引导逻辑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),仅供参考