HPM6750系列--第二篇 搭建Ubuntu开发环境
本篇就给大家介绍一下HPM6750 Ubuntu开发环境搭建、工具链配置、openocd的配置以及GDB调试
一、目的
作为命令行的深度用户,本篇就给大家介绍一下HPM6750 Ubuntu开发环境搭建

二、准备
1、查看系统环境
Ubuntu 18.04
uname -a

2、安装并查看cmake版本
sudo apt-get install cmake
cmake --version
如果版本低于3.12.0则需要更新cmake(通过cmake源码编译升级)
具体方法如下:
编译cmake的过程中依赖一些package,通过以下命令安装一下
sudo apt-get install libncurses-dev sudo apt-get install libssl-dev下载cmake源码、解压、配置、编译、安装
wget https://cmake.org/files/v3.22/cmake-3.22.0.tar.gz tar -zxvf cmake-3.22.0.tar.gz cd cmake-3.22.0/ ./configure make sudo make install sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force cmake --version
3、下载工具链
工具链最近有更新,注意下载后工具链的配置使用最新的文件名和路径,下文中使用旧工具链的名称进行展示(请自行替换成新工具链的路径和名称)

4、下载openocd源码
cd ~/workspace/third/hpm/
git clone https://github.com/hpmicro/riscv-openocd.git
三、实战
1、创建工作目录,专门存放跟hpm有关的内容
mkdir -p ~/workspace/third/hpm
cd ~/workspace/third/hpm
2、准备工具链
mkdir -p ~/workspace/third/hpm/toolchain
cd ~/workspace/third/hpm/toolchain/
将先前下载的工具链压缩包拷贝到toolchain目录下解压
tar -zxvf riscv32-unknown-elf-newlib-multilib_2022.05.15_linux.tar.gz
cd riscv32-unknown-elf-newlib-multilib
进入解压工具链后目录查看一下工具链如下
验证工具链可用性
cd ~/workspace/third/hpm/toolchain/riscv32-unknown-elf-newlib-multilib/bin
3、编译openocd工具
cd ~/workspace/third/hpm/
git clone https://github.com/hpmicro/riscv-openocd.git
3-1、准备编译环境
sudo apt-get install libtool automake wget pkg-config gcc texinfo libusb-dev vim openocd libusb-1.0-0-dev
3-2、配置并编译
cd riscv-openocd
./bootstrap
./configure --disable-werror --enable-ftdi
make
如果编译没有任何问题在src目录下有openocd程序,确认一下是否可运行
3-3、验证openocd可运行

4、下载hpm_sdk仓库代码
git clone https://github.com/hpmicro/hpm_sdk.git
5、准备必要编译环境
sudo apt install build-essential cmake ninja-build libc6-i386 libc6-i386-cross libstdc++6-i386-cross openocd
6、准备环境变量
export GNURISCV_TOOLCHAIN_PATH="/home/fire/workspace/third/hpm/toolchain/riscv32-unknown-elf-newlib-multilib"
export HPM_SDK_TOOLCHAIN_VARIANT=
注意要替换成自己工具链路径
为了避免每次都要导出环境变量,我们将这些环境变量放到~/.bashrc文件中
export GNURISCV_TOOLCHAIN_PATH="/home/fire/workspace/third/hpm/toolchain/riscv32-unknown-elf-newlib-multilib"
export HPM_SDK_TOOLCHAIN_VARIANT=
export HPM_SDK_BASE="/home/fire/workspace/third/hpm/hpm_sdk"
export OPENOCD_SCRIPTS="/home/fire/workspace/third/hpm/hpm_sdk/boards/openocd"

保存后重新打开一个新的terminal
7、获取python依赖
cd ~/workspace/third/hpm/hpm_sdk
source env.sh
pip3 install --user -r "$HPM_SDK_BASE/scripts/requirements.txt"
如果出现如下情况请先安装pip3,然后重试上面的pip3 install命令
sudo apt install python3-pip

8、编译
mkdir -p ~/workspace/work/hpm6750evkmini/
cp -r samples/hello_world ~/workspace/work/hpm6750evkmini/
cd ~/workspace/work/hpm6750evkmini/hello_world/
mkdir build
cd build
cmake -DBOARD=hpm6750evkmini ..
make
如果没有问题的话,输出如下
7、调试下载
查看一下gdb工具是否可用

这边指出我的机器上C库版本太低,故需要升级(这边强烈建议先备份系统)
sudo apt install bison gawk
cd ~/Desktop/
wget https://ftp.gnu.org/pub/gnu/glibc/glibc-2.30.tar.gz
tar -zxvf glibc-2.30.tar.gz
cd glibc-2.30
mkdir build
cd build
m
make
sudo make install
cd /lib/x86_64-linux-gnu/
sudo ln -sf /usr/local/glibc/lib/libm-2.30.so libm.so.6
以上步骤请仔细操作,尤其最后一行链接操作,请先确认新安装的c库存在
ll /usr/local/glibc/lib/libm-2.30.so
重新打开一个terminal再次确认gdb可用
cd ~/workspace/third/hpm/hpm_sdk/
source env.sh
cd ../toolchain/riscv-gnu-toolchain/bin/
./riscv32-unknown-elf-gdb

8、开始调试
新开一个terminal调用openocd(开发板这个时候要连接在PC上)
cd ~/workspace/third/hpm/hpm_sdk/
source env.sh
cd boards/openocd
/home/fire/workspace/third/hpm/riscv-openocd/src/openocd -f probes/ft2232.cfg -f soc/hpm6750-single-core.cfg -f boards/hpm6750evkmini.cfg
注意下面截图中所有的"/home/fire/workspace/third/hpm/openocd/bin/openocd"都需要替换成"/home/fire/workspace/third/hpm/riscv-openocd/src/openocd"
替换原因是第一次搭建环境时都是使用先楫编译好的openocd程序,但是本文中我们是自己手动源码编译出openocd程序,即/home/fire/workspace/third/hpm/riscv-openocd/src/openocd
如果有以下错误则按提供的方法解决(缺少libhidapi-hidraw.so.0)

sudo apt install libhidapi-hidraw0
再次执行openocd命令

上图报告libusb访问权限问题,可以按下面的方法解决(执行命令时添加sudo)

此时说明openocd已经正常工作,注意GDB Server在端口3333上监听
starting gdb server for hpm6750.cpu0 on 3333
9、GDB调试
新开一个terminal,执行调试命令
cd ~/workspace/third/hpm/hpm_sdk/
source env.sh
cd samples/hello_world
分别执行命令
file build/output/demo.elf
target remote localhost:3333
load
当执行target remote localhost:3333时,openocd窗口有如下输出

添加断点
b main

更多关于GDB调试的内容请自行查找
如果整个过程没有任何问题的话,通过minicom串口工具能有如下输出
至此,HPM6750的Ubuntu开发环境搭建完成,总体上调试过程还比较繁琐,后续介绍基于vscode的编译调试环境。
本篇重点一个是要准备好各种环境,另外一个重点是要添加配置到~/.bashrc文件中。
export GNURISCV_TOOLCHAIN_PATH="/home/fire/workspace/third/hpm/toolchain/riscv32-unknown-elf-newlib-multilib"
export HPM_SDK_TOOLCHAIN_VARIANT=
export HPM_SDK_BASE="/home/fire/workspace/third/hpm/hpm_sdk"
export OPENOCD_SCRIPTS="/home/fire/workspace/third/hpm/hpm_sdk/boards/openocd"
更多推荐




所有评论(0)