首页 > 系统相关 >AIR32F103(二) Linux LibOpenCM3开发环境

AIR32F103(二) Linux LibOpenCM3开发环境

时间:2022-10-27 00:12:18浏览次数:82  
标签:gcc flash none LibOpenCM3 st AIR32F103 eabi Linux arm

目录

Linux 开发环境

在Linux下和STM32F1xx的开发环境是一样的, 可以使用 gcc-arm 编译, 用 st-flash 烧录. 开发库可以使用 SPL, 或者 Libopencm3.

安装 st-flash

首先检查一下系统中是否有st-flash和st-info命令, 没有的话需要安装

安装步骤

git clone https://github.com/stlink-org/stlink.git
cd stlink/
make
# 如果报 libusb 错误, 就安装一下 libusb-1.0-0-dev, 再make
sudo apt install libusb-1.0-0-dev
make clean
make
cd build/Release/
sudo make install

如果运行 st-info 出现下面的错误

st-info: error while loading shared libraries: libstlink.so.1: cannot open shared object file: No such file or directory

运行一下sudo ldconfig可以解决问题

将 AIR32F103 通过 stlink 接上PC后, 可以通过 st-info 查看信息, 似乎并不能正确识别, 但是无所谓, 能检测到就可以了

~$ st-info --probe
Failed to parse flash type or unrecognized flash type
Found 1 stlink programmers
  version:    V2J37S7
  serial:     56FF6B064966485627461667
  flash:      131072 (pagesize: 1024)
  sram:       20480
  chipid:     0x410
  dev-type:   STM32F1xx_MD

Update 2022-07-23: 检测同一型号贴在bluepill核心板上的 MH32F103ACBT6 识别的结果和 AIR32F103 还不一样, 输出是这样的

$ st-info --probe
Failed to parse flash type or unrecognized flash type
Found 1 stlink programmers
  version:    V2J37S7
  serial:     56FF6B064966485627461667
  flash:      262144 (pagesize: 2048)
  sram:       65536
  chipid:     0x414
  dev-type:   F1xx_HD

Libopencm3 项目模板

项目模板: https://github.com/IOsetting/libopencm3-freertos-template

  1. 安装 GCC ARM

在GCC ARM网站下载工具链接https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downloads, 然后解压到合适的目录

tar xvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 
cd /opt/gcc-arm/
sudo mv ~/Backup/linux/gcc-arm-none-eabi-10.3-2021.10/ .
sudo chown -R root:root gcc-arm-none-eabi-10.3-2021.10/

检查版本

/opt/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gcc --version
  1. 导出项目
git clone --recurse-submodules https://github.com/IOsetting/libopencm3-freertos-template.git your-project

如果导出子模块过程中出错了, 可以在项目目录下运行下面的命令修复

git submodule update --init

因为AIR32F103CBT6配置比C8T6高一规格, 需要修改下Makefile, 将 DEVICE 设成 stm32f103cbt6

DEVICE 			= stm32f103cbt6
  1. 编译 Libopencm3
cd your-project
PREFIX=/opt/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi- make -C libopencm3
  1. 编译项目
PREFIX=/opt/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi- make -C user

FreeRTOS例子的编译

如果编译带 FreeRTOS 的例子, 会提示错误fatal error: FreeRTOSConfig.h: No such file or directory,
编译需要带上选项FREERTOS=1

PREFIX=/opt/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi- FREERTOS=1 make -C user
  1. 烧录
st-flash --reset write user/app.bin 0x8000000 

正常烧录的输出

st-flash 1.7.0-201-g254a525
Failed to parse flash type or unrecognized flash type
2022-07-23T09:05:17 INFO common.c: STM32F1xx_MD: 20 KiB SRAM, 128 KiB flash in at least 1 KiB pages.
file user/app.bin md5 checksum: 1e3bc73ae2b3cc6a26876b261f6ef48, stlink checksum: 0x0002486f
2022-07-23T09:05:17 INFO common_flash.c: Attempting to write 1808 (0x710) bytes to stm32 address: 134217728 (0x8000000)
-> Flash page at 0x8000000 erased (size: 0x400)
-> Flash page at 0x8000400 erased (size: 0x400)

2022-07-23T09:05:17 INFO flashloader.c: Starting Flash write for VL/F0/F3/F1_XL
2022-07-23T09:05:17 INFO flash_loader.c: Successfully loaded flash loader in sram
2022-07-23T09:05:17 INFO flash_loader.c: Clear DFSR
  2/  2 pages written
2022-07-23T09:05:17 INFO common_flash.c: Starting verification of write complete
2022-07-23T09:05:17 INFO common_flash.c: Flash written and verified! jolly good!
2022-07-23T09:05:17 WARN common.c: NRST is not connected
 *  Terminal will be reused by tasks, press any key to close it. 

标签:gcc,flash,none,LibOpenCM3,st,AIR32F103,eabi,Linux,arm
From: https://www.cnblogs.com/milton/p/16830626.html

相关文章

  • 红帽推出业界最完整的Linux容器解决方案
    世界领先的开放原始码软件解决方案供应商红帽公司发布IT产业最完整的企业级Linux容器解决方案。红帽的容器产品组合可满足各种应用交付需求,免费的开发工具或整合管理功......
  • linux 中如何删除特定字符之间的数据
     001、[root@pc1test2]#lsa.txt[root@pc1test2]#cata.txt##测试数据jdewethdesdgetfgwet[root@pc1test2]#sed's/e.*e//'a.txt......
  • Linux 下无法的显示IP的问题
    1.检查是否VM下的服务是否已经启动,DHCP和NAT服务是否启动,2.选择如下:3.下载CCleaner清除注册表信息等。4.显示出IP5.使用远程连接工具连接OK......
  • linux安装JDK(yum方式)
    输入下列命令,显示可以安装的jdkyumlistjava*选择一个jdk进行安装yuminstalljava-1.8.0-openjdk.x86_64输入y,完成安装输入,查看是否安装成功java-version......
  • Linux基本操作
    01P-Linux命令基础习惯-Linux系统编程date显示系统当前时间cat/etc/shells 查看当前可使用的shellecho$SHELL 查看当前使用的shell主键盘快捷键:上 Ctrl-p 下 Ct......
  • Linux安装配置Go语言
    Linux安装配置Go语言官网:https://go.dev/dl/从官网下载,选择linux下载压缩包。sudocp-rgo//usr/localsudogedit/etc/profilesource/etc/profile验证......
  • Linux 内存管理
    Linux操作系统采用了哪种方式来管理内存呢?在回答这个问题前,我们得先看看Intel处理器的发展历史。早期Intel的处理器从80286开始使用的是段式内存管理。但是很快发现,......
  • linux虚拟机更改网关——长久生效
    1:cd /etc/sysconfig/network-scripts 2:备份原有网关文件,本机为ifcfg-ens33  3:ping一下空的地址,如图中的192.168.254.144,确认IP没被占用  4:确认网关,并更改......
  • Linux LVS-NAT模式的实现
    结构图:环境准备lvs[root@lvs~]#cat/etc/sysconfig/network-scripts/ifcfg-eth0TYPE=EthernetBOOTPROTO=noneNAME=eth0DEVICE=eth0ONBOOT=yesIPADDR=10.0.0.8......
  • 《Unix/Linux系统编程》第六章学习笔记 20201209戴骏
    信号和信号处理1.信号和中断中断:从I/O设备或协处理器发送到CPU的外部请求,它将CPU从正常执行转移到中断处理。信号:发送给进程的请求,将进程从正常执行转移到中断处理。......