为了实际需要,需要准备一套BIT的自动烧录环境,具体要求:插入自动烧录,记录烧录信息,然后自动开始进入等待产测阶段,然后等待工人操作,然后记录产测信息。
github
幸好之前有Tim老师的一套使用Smart板子的自动烧录脚本,用的都是esptool工具,我只需要稍加修改即可。但是在修改之前还需要了解这个脚本的工作流程和原理。
- 首先检测板子插入
使用udev(简单介绍)自动检测BIT板子(CH340芯片)插入与断开。其实了解udev的用法,检测变量状态即可。 烧录固件到板子
使用esptool工具进行烧录,这是一个Python的通过串口通信的脚本,在原tim老师的脚本里面使用的esptool工具很早了,只能烧录ESP8266,那么需要更新esptool脚本,因为已经把esptool放置到脚本内,所以不要在执行环境中安装,但是需要Python、pip和pyserial(pip install)然后就是按照esptool工具的语法准备烧录语句。$DIR/esptool.py --chip esp32 --port $DEVNAME --baud 460800 write_flash -z --compress --flash_mode dio --flash_freq 40m 0x1000 $DIR/bit_BL_DIO_40M.bin 0x8000 $DIR/bit_partitions.bin 0xe000 $DIR/bit_boot_app0.bin 0x10000 $DIR/bit_default.bin
后来因为考虑到实际需求可能有之前存在问题的板子进行二次烧录与产测,所以在前面加入了清除固件步骤,然后再执行烧录。
$DIR/esptool.py --chip esp32 --port $DEVNAME --baud 460800 erase_flash
记录产测log
板子在产测时候会有一些硬件信息输出,需要做记录,以便后面分析。那么就需要通过串口读取,查了一些资料后得知可以直接cat /dev/ttyUSB0
获取数据,同时通过stty指令可以设置串口参数,stty -F $DEVNAME raw speed 115200 cat $DEVNAME >> $QCFILE
issue
Error:
ModuleNotFoundError: No module named 'serial'
pyserial 是非root安装,需要用root权限安装, sudo -H pip/pip3 install pyserial
在串口接受部分尚未添加结束操作,如果后续添加操作需要处理这部分