烧录AT32

# 安装pyocd ``` pip install pyocd ``` # 下载AT的包 [雅特力pack包下载地址](https://www.arterytek.com/cn/support/index.jsp) 下载这个 -> pack -> 支持AT32 MCU型号于Keil5 MDK运行 # 添加路径 解压好后, 在~/.bashrc里添加路径, 对应型号对应包 ``` export AT32F405_DFP_PACK_FILE="xxx/Keil5_AT32MCU_AddOn_V2.4.2_ZH/ArteryTek.AT32F402_405_DFP.2.1.1.pack" ``` # 操作芯片 操作时, 在指令后面添加 --pack=$AT32F405_DFP_PACK_FILE, 例如 ``` pyocd list --targets --pack=$AT32F405_DFP_PACK_FILE pyocd flash -t at32f405cbt7 build/*.hex --pack=$AT32F405_DFP_PACK_FILE ``` # 自己的操作 1. 拷贝key, key里define开启, 关掉if 1, 编译A.hex放一边, 烧录A.hex 2. 关闭keydefine, 开启if 1, 编译正式app, 烧录 # 20250515 方法1: 1. 普通烧录bl 2. 开key, if 0, stlink编译烧录 3. 关key, if 1, stlink编译烧录 方法2: 1. 普通烧录bl 2. 开key, if 1, stlink编译烧录(可以编译完长期不改, 放一边) 3. 关key, if 1, cdbus gui 烧录_e # 新电脑配置udev规则 20251211 新电脑识别得到stlink, 但是烧录不了, 需要配置一下udev 执行以下指令看一下设备 ``` lsusb -> jax@jax-pc:~$ lsusb Bus 003 Device 011: ID 0483:3748 STMicroelectronics ST-LINK/V2 ``` 再执行 ``` ll /dev/bus/usb/003/011 -> crw-rw-rw- 1 root root 189, 266 Dec 11 16:13 /dev/bus/usb/003/011 ``` 发现属组(group)不是 plugdev, 添加udev规则 ``` vim /etc/udev/rules.d/99-stlink.rules ``` 添加以下内容 ``` SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="3748", MODE="0664", GROUP="plugdev" ``` 重新载入规则 ``` sudo udevadm control --reload-rules sudo udevadm trigger ``` 重新拔插, 会发现属组变了 ``` crw-rw-rw- 1 root plugdev 189, 266 Dec 11 16:13 /dev/bus/usb/003/011 ``` 然后就可以烧录了 ps: 但是我可以烧录的老电脑, 插入之后属组并不是plugdev, 不知道为什么, 可能之前是通过别的方法配置的, 先不管了

评论