设为首页 加入收藏

TOP

普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境(一)
2023-07-23 13:30:19 】 浏览:66
Tags:普冉 PY32 系列 Ubuntu GCC Toolchain VSCode

目录

以下介绍PY32F0系列在Ubuntu下如何使用GCC Arm Embedded Toolchain环境进行开发和烧录

项目模板

GitHub 仓库地址: https://github.com/IOsetting/py32f0-template

仓库文件结构

├── Build                       # 编译结果
├── Docs                        # 数据手册和用户手册
├── Examples
│   ├── FreeRTOS                # FreeRTOS 例子
│   ├── HAL                     # 非 FreeRTOS 的例子, 基于HAL外设库
│   └── LL                      # 非 FreeRTOS 的例子, 基于LL外设库
├── Libraries
│   ├── BSP                     # delay 和 printf 的 BSP 库, 用于 HAL外设库
│   ├── BSP_LL                  # delay 和 printf 的 BSP 库, 用于 LL外设库
│   ├── CMSIS
│   ├── FreeRTOS                # FreeRTOS library
│   ├── LDScripts               # 编译连接描述文件
│   ├── PY32F0xx_HAL_Driver     # HAL 外设驱动库
│   └── PY32F0xx_LL_Driver      # LL(low layer)外设驱动库
├── Makefile                    # Make设置
├── Misc
│   ├── Flash
│   │   ├── JLinkDevices        # JLink Flash 算法文件
│   │   └── Sources             # Flash 算法文件源代码
│   ├── Puya.PY32F0xx_DFP.x.pack # DFP pack文件, 用于 PyOCD 烧录
│   └── SVD                     # SVD 文件, 用于Debug
├── README.md
├── rules.mk                    # 预置的 make 规则
└── User                        # 用户项目代码目录

环境准备

硬件方面

  • PY32F0 开发板, 或任何基于 PY32F002/003/030 系列的电路
  • 烧录工具(任一)
    • J-Link: J-Link OB programmer
    • PyOCD: DAPLink or J-Link

注: STLink测试不能直接用, 写入会有Timeout错误

软件方面

环境配置和编译过程

1. 安装 GNU Arm Embedded Toolchain

根据你的PC架构, 从 Arm GNU Toolchain Downloads 下载工具链, 然后解压文件到合适的目录下, 例如

sudo mkdir -p /opt/gcc-arm/
sudo tar xvf arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.xz -C /opt/gcc-arm/
cd /opt/gcc-arm/
sudo chown -R root:root arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi/

J-Link / J-Trace Downloads 下载并安装 SEGGER JLink

# installation command for .deb
sudo dpkg -i JLink_Linux_V784f_x86_64.deb
# uncompression command for .tar.gz
sudo tar xvf JLink_Linux_V784f_x86_64.tgz -C [target folder]

默认的安装路径是 /opt/SEGGER

将目录 [项目目录]/Misc/Flash/JLinkDevices 复制到 [User home]/.config/SEGGER/JLinkDevices/ 目录下, 对于最新版本 V7.67之后的 JLink, 不再需要单独编辑 JLinkDevices.xml 了

cd py32f0-template
cp -r Misc/Flash/JLinkDevices/ ~/.config/SEGGER/

关于如果给JLink配置新型号的芯片: https://wiki.segger.com/J-Link_Device_Support_Kit

2. (选项二): 安装 PyOCD

不要使用Ubuntu自带的apt仓库里的PyOCD, 这个版本 0.13.1+dfsg-1 太低, 无法识别 JLink OB

从Pip安装PyOCD

pip uninstall pyocd

这样会将 PyOCD 安装到这些目录

/home/[user]/.local/bin/pyocd
/home/[user]/.local/bin/pyocd-gdbserver
/home/[user]/.local/lib/python3.10/site-packages/pyocd-0.34.2.dist-info/*
/home/[user]/.local/lib/python3.10/site-packages/pyocd/*

在 Ubuntu 中, .profile 会自动把 .local 加入 PATH, 所以只需要执行一下 source ~/.profile 就能用 pyocd 命令了

3. 导出这个模板仓库

Clone到本地目录下

git clone https://github.com/IOsetting/py32f0-template.git

4. 修改 Makefile

根据自己本地环境, 修改Makefile

  • USE_LL_LIB 普冉的开发包中提供了两套外设驱动库, HAL 和 LL, 设置 USE_LL_LIB ?= y 就会切换到LL.
  • ENABLE_PRINTF_FLOAT 设置为 y 会在编译中添加 -u _printf_float 参数, 这样可以支持 printf 打印浮点数, 但是这也会增加最后固件的大小.
  • USE_FREERTOS 设置USE_FREERTOS ?= y用于在项目中包含 FreeRTOS
  • USE_DSP 在项目中包含 CMSIS DSP
  • FLASH_PROGRM
    • 如果用 J-Link, FLASH_PROGRM 可以设为 jlink 或 pyocd
    • 如果用的是 DAPLink, 设为 FLASH_PROGRM ?= pyocd
    • ST-LINK 暂时还不支持, 等能解决问题的大佬出手
  • ARM_TOOCHAIN 确认这个指向了正确的 arm-none-eabi-gcc 所在路径
##### Project #####

PROJECT           ?= app
# The path for generated files
BUILD_DIR         = Build


##### Options #####

# Use LL library instead of HAL, y:yes, n:no
USE_LL_LIB        ?= n
# Enable printf float %f support, y:ye
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇微机原理与系统设计笔记1 | 绪论.. 下一篇LVGL 中图片使用问题

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目