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


    CV1811C环境编译

    SDK目录结构

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

    准备编译环境

    • 在虚拟机上安装一个ubuntu系统,或者使用本地的ubuntu系统,推荐Ubuntu 20.04 LTS
    • 安装串口工具: mobarXterm 或者 xshell 或者其他
    • 安装编译依赖的工具
      1. sudo apt install pkg-config
      2. sudo apt install build-essential
      3. sudo apt install ninja-build
      4. sudo apt install automake
      5. sudo apt install autoconf
      6. sudo apt install libtool
      7. sudo apt install wget
      8. sudo apt install curl
      9. sudo apt install git
      10. sudo apt install gcc
      11. sudo apt install libssl-dev
      12. sudo apt install bc
      13. sudo apt install slib
      14. sudo apt install squashfs-tools
      15. sudo apt install android-sdk-libsparse-utils
      16. sudo apt install android-sdk-ext4-utils
      17. sudo apt install jq
      18. sudo apt install cmake
      19. sudo apt install python3-distutils
      20. sudo apt install tclsh
      21. sudo apt install scons
      22. sudo apt install parallel
      23. sudo apt install ssh-client
      24. sudo apt install tree
      25. sudo apt install python3-dev
      26. sudo apt install python3-pip
      27. sudo apt install device-tree-compiler
      28. sudo apt install libssl-dev
      29. sudo apt install ssh
      30. sudo apt install cpio
      31. sudo apt install squashfs-tools
      32. sudo apt install fakeroot
      33. sudo apt install libncurses5
      34. sudo apt install flex
      35. sudo apt install bison

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

    获取SDK

      1. git clone -b 'BranchName' git@github.com:sophgo/sophpi.git //在github上增加ssh key
      2. cd sophpi
      3. ./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 位,这增加了密钥的安全性。

     编译固件

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

     SD卡烧录

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

     perf编译与移植

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

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

  • 相关阅读:
    【Redis】解决Redis并发竞争key问题
    java面试题(一年工作经验)的心得
    数据结构篇【5】——哈希表开散列实现(哈希桶)及封装
    计算机网络第3章(数据链路层)-----总结1
    Qt在空窗口中创建自己的按钮
    用了 TCP 协议,数据一定不会丢吗?
    EXPLIAN查询type
    对于PatchGAN的理解
    登录/注册
    [vite] Failed to load source map for */*.css.js
  • 原文地址:https://blog.csdn.net/qq_41808475/article/details/138046210