在RISC-V64架构的CV1811C开发板上应用perf工具进行多线程程序性能分析及火焰图调试

本文主要是介绍在RISC-V64架构的CV1811C开发板上应用perf工具进行多线程程序性能分析及火焰图调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CV1811C环境编译

SDK目录结构

.
├── build               // 编译目录,存放编译脚本以及各board差异化配置
├── buildroot-2021.05   // buildroot开源工具
├── freertos            // freertos系统
├── fsbl                // fsbl启动固件,prebuilt形式存在
├── install             // 执行一次完整编译后,各image的存放路径
├── isp_tuning          // 图像效果调试参数存放路径
├── linux_5.10          // 开源linux内核
├── middleware          // 自研多媒体框架,包含so与ko
├── opensbi             // 开源opensbi库
├── ramdisk             // 存放最小文件系统的prebuilt目录
└── u-boot-2021.10      // 开源uboot代码

准备编译环境

  • 在虚拟机上安装一个ubuntu系统,或者使用本地的ubuntu系统,推荐Ubuntu 20.04 LTS
  • 安装串口工具: mobarXterm 或者 xshell 或者其他
  • 安装编译依赖的工具
    sudo apt install pkg-config
    sudo apt install build-essential
    sudo apt install ninja-build
    sudo apt install automake
    sudo apt install autoconf
    sudo apt install libtool
    sudo apt install wget
    sudo apt install curl
    sudo apt install git
    sudo apt install gcc
    sudo apt install libssl-dev
    sudo apt install bc
    sudo apt install slib
    sudo apt install squashfs-tools
    sudo apt install android-sdk-libsparse-utils
    sudo apt install android-sdk-ext4-utils
    sudo apt install jq
    sudo apt install cmake
    sudo apt install python3-distutils
    sudo apt install tclsh
    sudo apt install scons
    sudo apt install parallel
    sudo apt install ssh-client
    sudo apt install tree
    sudo apt install python3-dev
    sudo apt install python3-pip
    sudo apt install device-tree-compiler
    sudo apt install libssl-dev
    sudo apt install ssh
    sudo apt install cpio
    sudo apt install squashfs-tools
    sudo apt install fakeroot
    sudo apt install libncurses5
    sudo apt install flex
    sudo apt install bison

    注意:cmake版本最低要求3.16.5,安装cmake=3.16.5参考安装cmake=3.16.5_cmake 3.16-CSDN博客

获取SDK

  • git clone -b 'BranchName' git@github.com:sophgo/sophpi.git //在github上增加ssh key
    cd sophpi
    ./scripts/repo_clone.sh --gitclone scripts/subtree.xml

    在拉取源码之前要先向github中添加秘钥,进去./ssh目录下,找到id_rsa.pud并查看其内容将其添加到github中。如果没有,则在该目录下输入以下命令重新生成

ssh-keygen -t rsa -b 4096  //-t rsa 指定密钥类型为 RSA;-b 4096 指定密钥的位数为 4096 位,这增加了密钥的安全性。

 编译固件

source build/cvisetup.sh
defconfig cv1811c_wevb_0006a_spinand  //要注意板子是nand还是emmc,命令是不一样的
build_all
  • 编译成功后可以在sophpi/install/soc_cv1811c_wevb_0006a_spinand目录下看到生成的image

 SD卡烧录

  • 接好EVB板的串口线
  • 将SD卡格式化成FAT32格式
  • 将install目录下的image放入SD卡根目录
.
├── boot.emmc
├── cfg.emmc
├── fip.bin
├── fw_payload_uboot.bin
├── rootfs.emmc
└── system.emmc
  • 将SD卡插入的SD卡槽中
  • 将平台重新上电,开机自动进入烧录:
  • 烧录成功,拔掉SD卡,重新给板子上电,进入系统

 perf编译与移植

进入到sophpi/linux_5.10/tools目录下可以看到有perf文件夹,修改Makefile.conf文件,添加LIBC_SUPPORT := 1。 请注意,perf 是一个非常强大的工具,其功能可能因内核版本和系统配置的不同而有所差异。

不需要进入,直接在tools中编译。(perf文件一般不需要下载,linux kernel中包含

这篇关于在RISC-V64架构的CV1811C开发板上应用perf工具进行多线程程序性能分析及火焰图调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/925099

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni