HPM6750系列--第三篇 搭建MACOS编译和调试环境

一、目的

        在上一篇《HPM6750系列--第二篇 搭建Ubuntu开发环境》我们介绍了Ubuntu上开发HPM6750,本篇主要介绍MAC系统上的开发环境的搭建过程,整个过程和Ubuntu上基本类似。

  

        

二、准备       

        首先我们在Mac电脑上打开一个terminal,然后创建一个目录,专门存放跟hpm有关的内容,如下

        1、创建工作目录

$ cd
$ mkdir -p ~/workspace/third/hpm
$ cd ~/workspace/third/hpm

        2、下载HPM-SDK代码仓库

git clone https://github.com/hpmicro/hpm_Sdk.git

        3、安装brew

$ /bin/bash -c "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

        4、安装cmake 

brew install cmake
cmake --version

         如果cmake版本低于3.12.0则需要更新,直接从官网下载安装包即可

Download | CMakehttps://cmake.org/download/

        

        5、下载工具链 

 Release riscv32-unknown-elf newlib multilib · hpmicro/riscv-gnu-toolchain · GitHubGNU toolchain for RISC-V, including GCC. Contribute to hpmicro/riscv-gnu-toolchain development by creating an account on GitHub.https://github.com/hpmicro/riscv-gnu-toolchain/releases/tag/2022.05.15

        

         下载完成后,解压到~/workspace/third/hpm/toolchain目录下

cd  ~/workspace/third/hpm
mkdir toolchain
cp ~/Dowload/riscv32-unknown-elf-newlib-multilib_2022.05.15_macos_intel.tar toolchain/
cd toolchain/
tar -xvf riscv32-unknown-elf-newlib-multilib_2022.05.15_macos_intel.tar

        验证一下工具链可用,我们可以执行一下命令

cd ~/workspace/third/hpm/toolchain/riscv32-unknown-elf-newlib-multilib/bin
./riscv32-unknown-elf-gcc -v

         

        6、设置环境变量并保存到~/.bash_profile

export GNURISCV_TOOLCHAIN_PATH="/Users/coder/workspace/third/hpm/toolchain/riscv32-unknown-elf-newlib-multilib"
export HPM_SDK_TOOLCHAIN_VARIANT=
export HPM_SDK_BASE="/Users/coder/workspace/third/hpm/hpm_Sdk"
export OPENOCD_SCRIPTS="/Users/coder/workspace/third/hpm/hpm_Sdk/boards/openocd"

        7、确认环境变量生效

        新开一个Terminal然后输入

        8、安装python依赖

cd ~/workspace/third/hpm/hpm_Sdk/
pip3 install --user -r "$HPM_SDK_BASE/scripts/requirements.txt"

        9、编译openocd

                1、下载openocd源码
cd ~/workspace/third/hpm/
https://github.com/hpmicro/riscv-openocd.git
                2、准备编译环境
brew install libtool automake libusb wget pkg-config gcc texinfo
                3、编译
                
cd riscv-openocd
./bootstrap
./configure --disable-werror
make

               

                如果编译没有任何问题在src目录下有openocd程序,确认一下是否可运行

三、实战

        1、编译hello_world

mkdir -p ~/workspace/work/hpm
cp -r ~/workspace/third/hpm/hpm_Sdk/samples/hello_world ~/workspace/work/hpm/
cd ~/workspace/work/hpm/hello_world/
mkdir build
cd build
cmake -DBOARD=hpm6750evkmini -DCMAKE_BUILD_TYPE=Debug ..

         

        

make

        至此我们就已经编译完成

        2、下载调试

        新开一个Terminal执行openocd

cd ~/workspace/third/hpm/riscv-openocd
./src/openocd -f probes/ft2232.cfg -f soc/hpm6750-single-core.cfg -f boards/hpm6750evkmini.cfg

         

         

         3、GDB调试

        在GDB调试时我们发现工具链的里面的gdb不能使用(本地依赖未满足),故通过brew安装了一个通用版本的GDB

         关于这个问题正在跟进后面会贴出解决办法!!! 

        

        上图的问题是缺少guile模块

brew install guile

 

        上图的问题是缺少python2.7,针对这个问题必须从官网下载这个版本进行安装,使用brew无法安装        https://www.python.org/downloads/macos/icon-default.png?t=N5K3https://www.python.org/downloads/macos/ 

        再次检查工具链中的gdb是否可用

cd ~/workspace/third/hpm/toolchain/riscv32-unknown-elf-newlib-multilib/bin
./riscv32-unknown-elf-gdb

         

        问题解决。

        安装通用版本的GDB

brew install gdb

        新开一个Terminal定位到工程目录

cd ~/workspace/work/hpm/hello_world
gdb output/demo.elf

        

         连接GDB和OpenOCD

target remote localhost:3333

        加载代码

load

         

        复位、设置断点、单步执行 

        至此我们已经完成了HPM-SDK的MACOS开发环境搭建,我们会介绍如何配合visual studio code进行开发调试 。

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/2443.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手搓GPT系列之 - 通过理解LSTM的反向传播过程,理解LSTM解决梯度消失的原理 - 逐条解释LSTM创始论文全部推导公式,配超多图帮助理解(中篇)

近期因俗事缠身,《通过理解LSTM的反向传播过程,理解LSTM解决梯度消失的原理 - 逐条解释LSTM创始论文全部推导公式,配超多图帮助理解》的中下篇鸽了实在太久有些不好意思了。为了避免烂尾,还是抽时间补上(上篇在此&…

Day8——操作系统基础windows

文章目录 操作系统基础操作系统的定义 什么是windows 操作系统基础 操作系统的定义 什么是windows

1分钟学会使用docker-compose部署 registry 以及可视化镜像

获取 docker-compose: curl -L https://github.com/docker/compose/releases/download/2.2.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose docekr-compose.yaml: version: 3.3services:registry-ui:image: joxit/docker-registry-ui:mainrestart: always…

Spring之Bean生命周期源码解析

系列文章目录 文章目录 系列文章目录扫描包寻找候选的组件通过组件索引寻找通过包路径扫描所有候选组件 生成Bean的名字解析设置BeanDefinition信息检查Spring容器中是否已经存在该beanName注册BeanDefinition 实例化非懒加载的单例Bean合并BeanDefinition创建非懒加载单例Bean…

线性代数克莱姆法则的几何含义

以二元一次方程组的求解为例: { a c a 1 b c b 1 c 1 a c a 2 b c b 2 c 2 \left\{\begin{array}{l} a_{c}a_{1} b_{c}b_{1} c_{1} \\ a_{c}a_{2} b_cb_{2} c_{2} \end{array}\right. {ac​a1​bc​b1​c1​ac​a2​bc​b2​c2​​ 其中 a c a_c ac​和 b c b_…

Ansible自动化运维工具之playbook剧本编写含lnmp

1.playbook的相关知识 1.1 playbook 的简介 playbook是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部…

Django框架-5

路由系统 通过URL(Uniform Resource Locator,统一资源定位符)可以访问互联网上的资源——用户通过 浏览器向指定URL发起请求,Web服务器接收请求并返回用户请求的资源,因此可以将URL视为用户与服务器之间交互的桥梁。 …

MongoDB的安装

MongoDB数据库 MongoDB数据的特点: 面相文档存储的分布式数据库 具有很强的扩展性 支持丰富的查询表达式,很接近于关系性数据库 使用类似于json的结构保存数据,可以轻易的查询到文档中内嵌的对象及数组 下载安装包 首先去官网下载安装…

Spring 定时任务@Scheduled 注解中的 Cron 表达式

引言: Spring 框架提供了强大的定时任务功能,通过 Scheduled 注解可以方便地定义和管理定时任务。其中,Cron 表达式作为定时任务触发的时间表达式,扮演着重要的角色。本篇博客将详细介绍和讲解 Cron 表达式的语法和常见用法&…

多元分类预测 | Matlab鹈鹕算法(POA)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,POA-HKELM分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab鹈鹕算法(POA)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,POA-HKELM分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab…

专业科普:什么是单片机?

一、什么是单片机 单片机诞生于20世纪70年代末,它是指一个集成在一块芯片上的完整计算机系统。单片机具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器&#xff…

threejs纹理

个人博客地址: https://cxx001.gitee.io 前面我们介绍了各种可以用来覆盖对象的材质,也介绍了如何修改材质的颜色、关泽和不透明度,但是我们还没有详细介绍如何在材质中使用外部图片(也叫纹理). 将纹理应用于材质 1. 加载纹理并应用到网格 纹理最基础…