作为命令行的深度用户,本篇就给大家介绍一下HPM6750 Ubuntu开发环境搭建
1、系统环境
Ubuntu 18.04
2、查看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、下载工具链
riscv-gnu-toolchain_linux_x86-64.tar.gz
链接: https://pan.baidu.com/s/1MQcL6DYauRbBmrRV8sC4Rg 提取码: nkt4
4、下载openocd工具
openocd_linux_x86-64.tar.gz
链接: https://pan.baidu.com/s/1tnKPzwOxIsRo4HABHYbBnw 提取码: x4up
以上两个压缩包也可以从先楫官网获取
1、创建工作目录,专门存放跟hpm有关的内容
- mkdir -p ~/workspace/third/hpm
- cd ~/workspace/third/hpm
-
2、准备工具链
- cd ~/workspace/third/hpm
- mdkir toolchain
将先前下载的工具链压缩包拷贝到toolchain目录下解压
tar -zxvf riscv-gnu-toolchain_linux_x86-64.tar.gz
解压后目录如下
ls -al
3、准备openocd工具
- cd ~/workspace/third/hpm
- mdkir openocd
将刚才下载openocd压缩包拷贝到~/workspace/third/hpm/openocd目录下然后解压
tar -zxvf openocd_linux_x86-64.tar.gz
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
6、准备环境变量
- export GNURISCV_TOOLCHAIN_PATH="/home/fire/workspace/third/hpm/toolchain/riscv-gnu-toolchain"
- export HPM_SDK_TOOLCHAIN_VARIANT=
注意要替换成自己工具链路径
为了避免每次都要导出环境变量,我们将这两行放到.bashrc文件中
保存后重新打开一个新的terminal
7、获取python依赖
- cd ~/workspace/third/hpm/hpm_sdk
- source env.sh
- pip3 install --user -r "$HPM_SDK_BASE/scripts/requirements.txt"
8、编译
- cd samples/hello_world/
- mkdir build
- cd build
- cmake -DBOARD=hpm6750evkmini ..
make
如果没有问题的话,输出如下
7、调试下载
查看一下gdb工具是否可用
这边指出我的机器上C库版本太低,故需要升级(这边强烈建议先备份系统)
- 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
- ../configure --prefix=/usr/local/glibc
- 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
- cd ~/workspace/third/hpm/hpm_sdk/
- source env.sh
- cd boards/openocd
- /home/fire/workspace/third/hpm/openocd/bin/openocd -f probes/ft2232.cfg -f soc/hpm6750-single-core.cfg -f boards/hpm6750evkmini.cfg
-
如果有以下错误则按提供的方法解决(缺少libhidapi-hidraw.so.0)
sudo apt-get install -y 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开发环境搭建完成