Skip to content

# 15.1. BPU sysfs接口说明

注意

对于J6E芯片请结合实际存在的bpu节点来进行相应的操作。

## 15.1.1. sysfs节点说明

BPU sysfs节点地址：

    ls /sys/devices/system/bpu
    bpu0/     core_num  group     power/    ratio     uevent    users

各个文件节点可以使用“cat”命令进行获取信息、“echo”命令进行设置；bpu0对应bpu的第一个Core，每个目录内的节点设置如下（以BPU0为例）：

- bpu0目录：

    ls /sys/devices/system/bpu/bpu0/
    devfreq          iommu_group    queue                                thres
    driver           limit          ratio                                trace
    driver_override  mem_heap_size  subsystem                            uevent
    fw_version       modalias       supplier:platform:28109000.mailbox2  use_iommu
    hotplug          of_node        supplier:platform:29f01000.scmi      users
    hw_debug         power          task_running
    hw_prio_en       power_enable   task_time
    iommu            power_level    test

- power_enable：读写文件，该Core核心开关，用于开启/关闭对应BPU核心硬件电源。

- devfreq：读写文件，用于读取/设置该Core核心频率（以BPU0为例）：

  - 将调频策略设为userspace：

      echo userspace > /sys/devices/system/bpu/bpu0/devfreq/*/governor
      (*代表目录下唯一文件夹)

  - 查看BPU支持频率：

      cat /sys/devices/system/bpu/bpu0/devfreq/*/available_frequencies
      (*代表目录下唯一文件夹)

  - 设置BPU为目标频率，目标频率需要被BPU支持(只有userspace的策略可以进行调频操作)：

      echo 1333330000 > /sys/devices/system/bpu/bpu0/devfreq/*/userspace/set_freq
      (*代表目录下唯一文件夹)

  - 确认被设置的频率：

      cat /sys/devices/system/bpu/bpu0/devfreq/*/cur_freq
      (*代表目录下唯一文件夹)

- power_level：读写文件，用于设置该Core核心工作的功率级别（包括工作电源及频率）：

  - 1：linux dvfs动态调节。

  - 0：性能优先，最高功耗。

  - < 0：在范围内，值越小，功耗等级越低。

- users：只读文件，用于获取使用该Core的用户信息。详细信息请参考下文users一项。

- queue：只读文件，获取驱动当前可设置的task数量。

    cat /sys/devices/system/bpu/bpu0/queue

- ratio：只读文件，获取Core 0核心的使用率信息。

    cat /sys/devices/system/bpu/bpu0/ratio

- task_time：只读文件，获取该Core上处理过的task任务信息，对应每一个任务有如下子项：

     cat /sys/devices/system/bpu/bpu0/task_time
     index   id:hwid type    group   prio    s_time  e_time  r_time
     1       1:1     2       0:1441  0       176015  176015  412us
     1       1:1     2       0:1441  0       176015  176016  409us
     1       1:1     2       0:1441  0       176016  176016  406us
     1       1:1     2       0:1441  0       176016  176017  410us
     1       1:1     2       0:1441  0       176017  176017  409us
     1       1:1     2       0:1441  0       176017  176017  408us
     1       1:1     2       0:1441  0       176017  176018  412us
     1       1:1     2       0:1441  0       176018  176018  416us
     1       1:1     2       0:1441  0       176018  176019  412us
     1       1:1     2       0:1441  0       176019  176019  416us
     1       1:1     2       0:1441  0       176019  176020  409us
     1       1:1     2       0:1441  0       176020  176020  405us
     1       1:1     2       0:1441  0       176020  176020  406us
     1       1:1     2       0:1441  0       176020  176021  414us
     1       1:1     2       0:1441  0       176021  176021  413us
     1       1:1     2       0:1441  0       176021  176022  406us
     1       1:1     2       0:1441  0       176022  176022  408us
     1       1:1     2       0:1441  0       176022  176023  405us
     1       1:1     2       0:1441  0       176023  176023  414us
     1       1:1     2       0:1441  0       176023  176024  415us
     1       1:1     2       0:1441  0       176024  176024  406us
     1       1:1     2       0:1441  0       176024  176024  407us

    -  index ：该任务位于BPU硬件FIFO中的位置。
    -  id    ：用户设置的中断id。
    -  hwid  ：底层驱动维护的中断id。
    -  type  ：task对应的类型。
    -  group ：用户设置的组id，用户进程号。
    -  prio  ：任务优先级。
    -  s_time：任务处理开始的时间戳。
    -  e_time：任务处理结束的时间戳。
    -  r_time：任务被处理的总耗时。

- core_num：只读文件，BPU中核心Core的数量。

    cat /sys/devices/system/bpu/core_num

- group：只读文件，运行在BPU上的任务组信息。通过“cat group”可得：

    cat /sys/devices/system/bpu/group
    group           prop    ratio

    -  group：用户设置的组id和进程号。
    -  prop ：当前group用户设置的比例值。
    -  ratio：当前group实际的运行占用率。

- ratio：只读文件，所有BPU Core平均的使用率。

    cat /sys/devices/system/bpu/ratio
    99

- users：只读文件，当前使用BPU的用户信息，用户会被归类为通过BPU框架设置任务的用户和指定各个Core设置任务的用户。通过“cat users”可得：

    cat /sys/devices/system/bpu/users
    *User via BPU Bus*
    user            ratio
    *User via BPU Core(0)*

    -  user：用户进程号。
    -  ratio：该用户对应Core上的占用率。

## 15.1.2. 使用示例

下文所有案例均以BPU0为目标，所有命令可以在运行模型应用后执行。

### 15.1.2.1. bpu core 操作说明

执行以下命令：

    //打开 BPU Core 0
    echo 1 > /sys/devices/system/bpu/bpu0/power_enable
    //关闭 BPU Core 0
    echo 0 > /sys/devices/system/bpu/bpu0/power_enable

### 15.1.2.2. 降低BPU Core功耗

该命令不会关闭BPU核心，只会降低对应核心频率/功耗，具体值及对应含义，参考 BPU Core 核心功率级别设置

    echo -2 > /sys/devices/system/bpu/bpu0/power_level