1、脚本化思维入门:什么是嵌入式开发中的重复劳动?为什么需要脚本化?脚本化能解决哪些痛点?

大家好,我是你们的讲师。今天咱们聊聊嵌入式开发里一个特别实在的话题——重复劳动。

说实话,我入行头三年,每天干得最多的事就是:改一个参数,编译,下载,看波形。再改一个参数,再编译,再下载,再看波形。一天下来,手都酸了。后来我就在想,这些事真的需要我亲自盯着吗?

嗯,这就是脚本化思维的起点。

什么是嵌入式开发中的重复劳动?

说白了,就是那些你闭着眼睛都能做,但又不得不做的事。我把它分成三类:

  • 编译与烧录:每次改一行代码,就要点一遍IDE里的编译按钮,再点下载。一天点几十次,手指头都抗议。
  • 参数配置:比如I2C的速率、UART的波特率、GPIO的上下拉。每次换一个外设,就要手动改寄存器或者CubeMX里的下拉菜单。
  • 测试与验证:手动发一串数据,看返回对不对。不对就改代码,再试。循环往复。

你想想看,这些活有什么技术含量?没有。但它们就是占用了你大量时间。

核心观点:重复劳动的本质是「人肉执行机器指令」。而脚本化,就是把这些指令交给真正的机器去跑。

为什么需要脚本化?

我个人的习惯是:任何需要做三次以上的操作,我都会写个脚本。为什么?

  1. 省时间:脚本跑一次可能只要几秒,你手动操作可能要几分钟。一天省下半小时,一年就是一百多个小时。
  2. 不出错:人总会疲劳,疲劳就会犯错。我曾在项目里因为手动改错一个寄存器地址,导致整板子不工作,查了两天。脚本不会犯这种低级错误。
  3. 可复现:今天写的脚本,下个月还能用。你手动操作,下个月可能就忘了步骤。

我记得有一次,客户要求批量修改100个固件的设备ID。手动改?得改到天亮。我写了个Python脚本,5分钟搞定。客户都惊了。

脚本化能解决哪些痛点?

我挑几个最典型的痛点来说:

痛点 手动做法 脚本化做法
批量修改配置 打开CubeMX,点100次下拉菜单 写个脚本批量替换.ioc文件中的参数
自动化测试 手动发串口指令,看返回 用pyserial写个脚本,自动发、自动比对
固件批量烧录 插一个板子,点一次烧录 用命令行烧录工具,配合脚本批量操作
日志分析 打开几百KB的log文件,肉眼找关键词 用Python正则表达式,一秒筛选出异常

一个小技巧:刚开始别想着写大脚本。先从一个简单的任务开始,比如「自动编译并下载」。跑通了,再慢慢加功能。

脚本化会不会增加学习成本?

这个问题我经常被问到。我的回答是:短期看,确实要花点时间学Python或者Shell。但长期看,这笔投资回报率极高。

你想想看,你花一周学会写脚本,之后五年都能受益。而手动操作,你每天都要花时间,而且永远学不到新东西。

避坑指南:我曾经犯过一个错——脚本写得太复杂,结果调试脚本的时间比手动操作还长。后来我学乖了:先写能用的,再写好看的。别一上来就追求完美。

一个简单的例子

假设你每次编译完都要手动复制固件到某个文件夹。手动操作是这样的:

  1. 打开文件管理器
  2. 找到build目录
  3. 复制firmware.bin
  4. 粘贴到目标文件夹

用Python脚本,只需要几行:

import shutil
import os

source = "./build/firmware.bin"
target = "./output/firmware_v1.0.bin"

if os.path.exists(source):
    shutil.copy2(source, target)
    print("固件已复制到:", target)
else:
    print("错误:找不到固件文件")

你看,就这么简单。把这个脚本加到编译命令后面,每次编译完自动复制。省心。

总结一下

脚本化思维,说白了就是「别让自己当机器人」。嵌入式开发里那些重复、机械、低价值的操作,都值得用脚本去替代。

嗯,这一章先讲到这里。下一章我会带大家搭建一个实用的脚本开发环境。到时候咱们手把手写第一个自动化脚本。

记住:你今天花10分钟写的脚本,可能在未来帮你省下10小时。