树莓派玩转STM32开发(二)——环境搭建

本文介绍Nano Pi K1 Plus上面的STM32开发环境搭建。Nano Pi K1 Plus和STM32的介绍篇请看传送门

准备工作:

1、一台能上网的电脑(Windows系统)

2、一张8GB或者更大空间的TF卡(Class10或者更高)

3、一个MicroUSB接口的电源,电压5V,最大输出电流最好是2A,但是不要低于1.5A

4、一个USB转TTY串口

5、还有Nano P1 K1 Plus这块板子

准备物品

首先打开Friendly ARM官方提供的镜像下载地址:http://download.friendlyarm.com/nanopik1plus

下载nanopi-k1-plus_sd_friendlycore-xenial_4.14_arm64_20191219.img.zip和win32diskimager.rar,这两个文件分别在official-ROMs和tools目录中。

将上面两个文件解压到当前目录,最终文件如下图:

镜像和烧录工具

将TF卡插入电脑,运行Win32DiskImager.exe,选中TF卡对应的盘符,选择刚刚解压出来的镜像,点击“write”按钮。注意此操作会覆盖TF卡原有的分区表和文件系统,也就是说原有的文件都会丢失,注意备份重要资料!

将镜像写入TF卡

烧写成功之后,就可以将TF卡插到Nano Pi K1 Plus的TF卡槽中,并将USB转TTY串口连接到电脑(杜邦线如何连请看官方wiki或者百度一下~)。

使用PuTTY工具打开串口,在我的电脑上串口对应COM3,不清楚的同学可以对开始菜单的Windows徽标点击右键,选择“设备管理器”,在“端口(COM和LPT)”一栏中可以看到。

查看当前串口设备名

Connection type选择Serial,Serial line为COM3,Speed为115200,点击“Open”按钮。

使用PuTTY连接串口,波特率115200

对Nano Pi K1 Plus供电之后就能在终端看到输出了。

U-Boot输出的信息
进入Shell

恭喜你,现在你已经多了一台真正意义上的Linux设备,在开启你的奇妙之旅之前,还有一些配置的工作要做,比如网络、更换APT源和下一步搭建STM32环境必须的工具安装。

配置网络

首先要为设备配置网络,由于我主要使用WiFi网络(网线总能让桌面显得乱糟糟的),所以在此以配置WiFi为例。在终端运行 sudo nmtui 命令,会进入一个“Network Manager TUI”界面。

网络配置界面

选择“Activate a connection”,可以在列表中看到当前物理环境下可检测到的WiFi SSID。建议将Nano Pi连接到当前计算机所在的那个网络环境,使两者在同一个局域网中。

选择WiFi网络

选中需要连接的WiFi SSID,点击回车,输入WiFi密码,然后“OK”,连接激活之后,在选择的SSID前面会多了一个星号*。

连接WiFi

在终端执行 ifconfig 命令即可查看当前网络配置情况,可以执行 ping www.baidu.com,查看是否成功连接到以太网。

查看网络配置以及连接情况

请保证网络已经成功连接到以太网,接下要做的是更换APT包管理器的源。系统自带的源速度太慢,需要更换为国内的镜像源。此处推荐中科大源。

此时可以将串口断开,使用ssh连接到Nano Pi了。查看 ifconfig 命令的输出可以得到当前板子无线网口获取到的IP地址是192.168.1.10。仍通过PuTTY这个工具,Connection type选择SSH,Host Name为Nano Pi的IP地址,Prot为22,点击“Open”按钮:

SSH连接Nano Pi

可以使用两种身份登陆SSH,一个是普通用户,用户名和密码都是 pi ;另一种是root用户,密码是 fa 。此处选择普通用户登陆。

更换APT安装源

APT是Advanced Packaging Tools的缩写,中文名是高级打包工具,它是Debian及其派生的Linux软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。APT最早被设计成dpkg的前端,用来处理deb格式的软件包。现在经过APT-RPM组织修改,APT已经可以安装在支持RPM的系统管理RPM包。

APT工具可以管理当前系统上面的软件包,常用功能包括安装,更新和删除。通过APT可以快速的安装一个软件包,如 sudo apt install git ,会自动在安装源中检索名为git的软件包,并检查它的依赖关系,如果它依赖A软件包,但是本地没有安装,APT会将git和A软件包一起安装在系统内,大大减小了自己手动管理依赖,编译安装的时间。

更换APT安装源分别执行如下命令:

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
sudo nano /etc/apt/sources.list

将如下内容拷贝进去:

# 默认注释了源码仓库,如有需要可自行取消注释
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main restricted universe multiverse

文件修改完成后分别按Ctrl+o,点击回车保存,然后按Ctrl+x退出编辑器。

修改后的sources.list文件内容

接下来更新软件包版本数据库,执行:

sudo apt update && sudo apt upgrade -y

首次更新的时间可能比较长,等待它下载并安装完成之后,系统的软件包都更新至最新版本了。

安装构建STM32开发环境所依赖的工具

STM32是ARMv7的指令集架构,需要交叉编译工具链arm-none-eabi-gcc,同时还需要项目依赖管理工具make,版本管理工具git和调试下载工具openocd。

执行如下命令安装必要工具:

sudo apt install -y bash-completion telnet git make gcc-arm-none-eabi gdb-arm-none-eabi libnewlib-arm-none-eabi man usbutils libtool pkg-config automake libusb-1.0-0-dev libhidapi-dev libusb-dev

等安装结束之后,可以将STM32开发板连接到Nano Pi K1 Plus的一个USB Host接口上,执行 lssub 命令,可以看到已经检测到STM32的仿真器设备。

Bus 006 Device 002: ID 0483:374b STMicroelectronics ST-LINK/V2.1 (Nucleo-F103RB)

查看当前已连接的USB设备

编译OpenOCD

OpenOCD是开源的片上调试、片上编程和边界扫描测试工具,它支持ARM、MIPS和RISC-V等多种SoC。它支持多种仿真器,支持GDB Server功能,可以使用GDB来对目标芯片上的代码进行调试,也可以通过Telnet,使用TCL脚本语言与OpenOCD系统进行交互。

openocd的作用

首先从 https://gitee.com/virusv/openocd.git 拉取openocd的最新源码。因为openocd官方仓库速度巨慢,慢到怀疑人生,所以我在码云为它创建了一个镜像。

拉下来的OpenOCD源码

接下来对OpenOCD进行编译,在openocd目录下依次执行下列命令:

./bootstrap  # 会生成一个 configure 可执行文件
./configure
make -j2 && sudo make install  # -j 2是防止内存紧张导致构建过程异常中断

./configure结果

执行完 make -j2 && sudo make install 之后,执行 openocd -v 可以查看当前OpenOCD的版本。

openocd -v 的输出
openocd支持的仿真器类型
openocd支持的目标芯片

使用openocd通过仿真器连接至开发板:

sudo openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c init

通过st-link连接至stm32

上面的信息显示当前选择的是SWD协议,速率是1MHz,ST-Link设备的Vendor ID和Product ID分别是0483和374B,目标电压3.232297V,目标有6个硬件断点,4个硬件观察点,当前监听3333端口用于gdb连接,监听6666用于tcl连接,监听4444用于telnet连接。

目前用到最多的是3333端口和4444端口。可以通过 telnet 127.0.0.1 4444 连接至openocd,输入help查看一下openocd支持的功能。

openocd支持的功能

好了,今天的文章到这儿就结束了,主要介绍了在Linux下如何搭建STM32开发环境,以及openocd的编译安装,目前已经可以正常连接到stm32开发板,接下来的文章将介绍如何编写一个简单的stm32点灯程序并使用openocd烧录。


参考资料:
[1]. http://openocd.org/doc/html/GDB-and-OpenOCD.html
[2]. https://wiki.st.com/stm32mpu/wiki/GDB
[3]. http://wiki.friendlyarm.com/wiki/index.php/NanoPi_K1_Plus/z


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,302评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,563评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,433评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,628评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,467评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,354评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,777评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,419评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,725评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,768评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,543评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,387评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,794评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,032评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,305评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,741评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,946评论 2 336

推荐阅读更多精彩内容