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

news2024/11/17 20:30:47

一、目的

        在上一篇《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.coloradmin.cn/o/705612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果Vision Pro手势+眼球融合交互的奥秘

毫无疑问,Vision Pro在眼球追踪手势的融合交互体验上,给AR/VR头戴设备带来了新突破,在用户体验上的提升非常明显。 ​那么,为什么Vision Pro上这一功能会被如此值得关注呢?为了弄清楚,我们先来看看主流VR设…

037:mapboxGL输入经纬度,地址坐标转换,弹出位置点地址信息

第037个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中输入经纬度,地址坐标转换,弹出位置点地址信息. 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共158行)相关API参考:专栏目标示例效果 配置方式…

配置Jenkins slave agent(通过jnlp)方式连接

上一章,使用ssh的方式添加了两个agent,并都成功完成了构建任务,这一章使用jnlp的方式配置agent,jnlp方式配置agent有个好处,就是agent是主动去找到Master请求连接的,master->agent的通道可以配置一个age…

【AUTOSAR】BMS开发实际项目讲解(二十九)----电池管理系统电池充放电功率控制与SOC

电池充放电功率控制 关联的系统需求 Sys_Req_3901、Sys_Req_3902、Sys_Req_3903、Sys_Req_3904; 功能实现描述 电池充放电功率控制主要包括以下内容: 60S可用功率 参见[CELL] 30S可用功率 参见[CELL] 10S可用功率 参见[CELL] SOP算法 ID Description ASI…

LVDS接口ADC要点数据采集流程

一:要点 1.如果两片AD,四路输出做了同步化处理之后,一定只用同步化模块读时钟(一片AD的时钟)去上传数据,到DDR3模块。 2.ADS42和LTC2208的ADC的数据伴随时钟都来源与输入的采样时钟(有些采样时…

虚拟机上用docker + nginx跑前端并支持https和http

情况是这样,我在虚拟机上,使用docker跑前端,需要这个前端支持https,原http的话自动跳转到https。另外,前端部署使用了负载均衡,即使用了3个docker跑前端:1个入口,另外2个是前端&…

Wi-Fi模块(ESP8266)详解

Wi-Fi模块——ESP8266 0. Wi-Fi模块概述1. 常见的Wi-Fi模块2. ESP8266模块2.1 概念2.2 特点 3. STM32F103C8T6使用ESP8266进行无线通信的示例代码 0. Wi-Fi模块概述 Wi-Fi模块是一种用于无线通信的设备,它能够通过Wi-Fi技术实现设备之间的无线数据传输和互联网连接…

java面试Day18

1.什么是 MySQL 执行计划?如何获取执行计划并对其进行分析? MySQL 执行计划是指 MySQL 查询优化器生成的一份详细的查询执行计划,它展示了 MySQL 在执行查询时所采取的具体执行计划,包括表的访问顺序、数据读取方式、使用的索引、…

大模型入局传统算法,LLMZip基于LLaMA-7B实现1MB文本压缩率90%!

论文链接: https://arxiv.org/abs/2306.04050 随着以ChatGPT、GPT-4为代表的AI大模型逐渐爆火进入公众视野,各行各业都开始思考如何更好的使用和发展自己的大模型,有一些评论甚至认为大模型是以人工智能为标志的第四次产业革命的核心竞争产品…

11.窗口看门狗-WWGD

1.窗口看门狗概述: (1)之所以称为窗口是因为其喂狗时间是一个有上下限的范围内(窗口),可以通过设定相关寄存器,设定其上限时间(下限时间固定)。喂狗的时间不能过早也不能过晚。而独立看门狗限制喂狗时间在0-x内&#…

Zigbee模块(CC2530)详解

Zigbee模块(CC2530) 0. Zigbee概述1. 常见的Zigbee模块2. CC2530模块3. STM32使用CC2530模块方法代码模板 0. Zigbee概述 Zigbee是一种无线通信协议,专为低功耗、低数据速率的应用而设计。它工作在2.4 GHz频段,常用于家庭自动化、…

MYSQL-SELECT语句超详解

目录 前言: SELECT语法 示例 单个字段查询 多个字段查询 查询所有字段 没有FROM的SELECT 查询系统时间 数值计算 虚拟表dual WHERE语句 示例 AND OR 比较运算符 AND OR 运算符优先级 IN NOT IN BETWEEN NOT BETWEEN LIKE EXISTS ORDER BY LIMIT …

SpringBoot(三)SpringBoot搭建简单服务端

之前的两篇文章介绍了如何使用ItelliJ社区版创建SpringBoot项目以及SpringBoot的starter。本篇,介绍下如何使用SpringBoot搭建一个简单的服务端,实现一个新用户注册的场景,供前端和移动端去使用。本篇需要你对SpringBoot的starter&#xff0c…

基于LLM构建文本生成系统

背景: 在流量存量时代,内容运营重要性不言而喻。在流量时代,内容可以不要过于多样化和差异化,只需要有足够多的人流量,按流量转化比率来看,1000个人有1%概率转化,素材不变只要增加足够多的流量…

SpringSecurity之概述

概述 是一个功能强大且高度可定制的身份验证和访问控制框架; 是一个专注于为Java应用程序提供身份验证和授权的框架 核心功能 1.认证 2.验证 3.攻击防范 原理解析 SpringSecurity 采用的是责任链的设计模式,它有一条很长的过滤器链; WebAsy…

探索分治算法:解决复杂问题的有效策略

目录 引言: 一. 基本原理: 二. 适用场景: 三. 分治算法的步骤: 四. 示例:归并排序算法 五. 优缺点: 引言: 在计算机科学中,分治算法是一种在解决复杂问题时常被使用的有效策略…

OBU协议-【CWAVE 客户端接口使用手册】Protobuf-CWAVEII版

1. 说明 (Instruction) 本文档针对所有在 OBU上位机进行开发的客户端程序 上位机进行开发的客户端程序 。开发时需使用者 使用谷歌提供的 protobuf工具结合我公司提供的 nebulalink.servercwaveii.proto文 件进行开发。 Protobuf相关介绍: https://www.ibm.com/deve…

springcloud笔记一

涉及到的技术: 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署 所以需要远程调用 注册中心:可以维护每个节点的信息,并且监护节点的状态 配置中心:管理微服务群的配置 服务网关:用户通过服务网关作为入口访问,然后通过路由到…

【三维重建】【深度学习】NeRF_Pytorch代码--预备基础知识

【三维重建】【深度学习】NeRF_Pytorch代码–预备基础知识 给定一个场景的多视角的图像,神经辐射场(NeRF)通过图像重建误差优化一个神经场景表征,优化后可以实现逼真的新视角合成效果。NeRF最先是应用在新视点合成方向&#xff0c…

TrainingOperator--PyTorchJob实现机制分析

前言 由 Pytorch分布式训练(一)_chenxy02的博客-CSDN博客 可知Pytorch分布式训练实现进程间寻址,主要依靠以下 四个参数: MASTER_ADDRMASTER_PORTWORLD_SIZERANK MASTER_PORT和MASTER_ADDR的目的是告诉进程组中负责进程通信协调的核心进程…