# sysinfopro

`sysinfopro` 是一个用于显示系统信息和硬件详情的工具，集成在板端 `/app/platform_samples/sysinfopro/` 目录中，通过多种选项提供详细的硬件、内存、操作系统、温度、频率及内核模块等相关信息。

## 语法说明

`sysinfopro` 的基本语法如下：

```bash
./sysinfopro [选项]
```

通过不同的选项组合，用户可以便捷地获取系统和硬件的详细信息。

**选项格式：**

- 单个选项：`./sysinfopro -<选项>`
- 多个选项组合：`./sysinfopro -<选项1> -<选项2> ...`

例如：

```bash
./sysinfopro -m -i -o
```

## 参数选项说明

`sysinfopro` 提供了多种选项，用户可以根据需要选择相应的选项来获取特定的信息。以下是 `sysinfopro` 支持的选项及其说明：

- `-a`：显示所有信息（不带参数时也会实现相同效果）。
- `-m`：显示内存信息，包括 ION 内存。
- `-i`：显示硬件信息。
- `-o`：显示操作系统版本信息。
- `-s`：显示 CPU、DDR、GPU 和 BPU 的温度和频率信息。
- `-b`：显示板卡终端的基本信息。
- `-l`：显示 HBRE 库版本信息。
- `-k`：显示当前加载的内核模块。
- `-h`：显示帮助信息。

## 各项命令选项及其功能说明

### 显示所有信息

命令：

```bash
./sysinfopro -a
```

或者执行：

```bash
./sysinfopro
```

功能：
该命令会显示系统和硬件的所有信息，包括内存、硬件型号、操作系统版本、温度和频率等全部内容。适合需要全面了解系统状态的场景。

### 显示内存信息

命令：

```bash
./sysinfopro -m
```

功能：
该命令会显示系统的内存信息，包括总内存、已用内存、空闲内存以及 ION 内存的详细信息。例如：

```bash
[Memory Info]:
        [Total Memory]:         1.28 GB
        [Used Memory]:          0.28 GB
        [Free Memory]:          0.93 GB

        [NOTE] What is displayed is the memory available to the system,
        which is the actual physical memory capacity minus ION and system reserved memory.
        (The content is consistent with "free -h")

[ION Memory Info]:
        [ION CMA Memory Size]:          0.50 GB
        [ION Carveout Memory Size]:     1.00 GB
        [ION Reserved Memory Size]:     1.00 GB
```

此信息可以帮助用户了解系统的内存使用情况以及 ION 内存的分配情况。

### 显示硬件信息

命令：

```bash
./sysinfopro -i
```

功能：
该命令会显示硬件的型号和相关信息，例如：

```bash
[Hardware Model]:
        D-Robotics X5 EVB LP4 1_B board (Board Id = 0x0202)
```

用户可以通过此信息确认硬件型号和板卡 ID。

### 显示操作系统版本信息

命令：

```bash
./sysinfopro -o
```

功能：
该命令会显示操作系统的版本信息，包括 SDK 版本、内核版本、U-Boot 版本等。例如：

```bash
[SDK Version]:
        LNX6.1.83_PL5.1_V1.0.16_20250205-1045

[Kernel Version]:
        Linux buildroot 6.1.83-DR-PL5.1_V1.0.16 #13 SMP PREEMPT Mon Jan 20 20:00:05 CST 2025 aarch64 GNU/Linux

[Uboot Version]:
        U-Boot 2022.10-geffce08a47 (Jan 08 2025 - 20:25:24 +0800)

[Bpu HW_IO Git Commit Hash]:
        42566cb
```

此信息可以帮助用户确认系统所使用的软件版本。

### 显示温度和频率信息

命令：

```bash
./sysinfopro -s
```

功能：
该命令会显示 CPU、DDR、GPU 和 BPU 的温度和频率信息。例如：

```bash
[CPU DDR GPU And BPU Status]:
        =====================1=====================
        temperature-->
                DDR      : 56.4 (C)
                BPU      : 55.9 (C)
                CPU      : 56.0 (C)
        cpu frequency-->
                      min(M)    cur(M)  max(M)
                cpu0: 300       1500    1500
                cpu1: 300       1200    1500
                cpu2: 300       1200    1500
                cpu3: 300       1200    1500
                cpu4: 300       1200    1500
                cpu5: 300       1200    1500
                cpu6: 300       300     1500
                cpu7: 300       1200    1500
        bpu status information---->
                      min(M)    cur(M)  max(M)  ratio
                bpu0: 500       1000    1000    0
        ddr frequency information---->
                      min(M)    cur(M)  max(M)
                ddr:  266       4266    4266
        GPU gc8000 frequency information---->
                      min(M)    cur(M)  max(M)
                gc8000:  200    1000    1000
```

此命令显示 CPU、DDR、GPU 和 BPU 的温度和频率信息，包括各个组件的最小、当前和最大频率，以及温度值。这些信息可以帮助用户监控硬件的运行状态，确保设备在正常温度和频率范围内工作。

该命令本质是调用的 `hrut_somstatus` 命令。

### 显示板卡终端基本信息

命令：

```bash
./sysinfopro -b
```

功能：
该命令会显示板卡终端的基本信息，例如：

```bash
[Board Info]:
        soc_gen: X5
        soc_name: X5M
        hw_name: X5_EVB_LP4
        board_version: 1_B
        hw_info: X5_EVB_LP4_1_B_cxmt_4096MB_4266
        bootdevice_name: emmc
        soc_uid: 0x308064960e290c8d022981b300000000
        ddr_type: LPDDR4
        ddr_size: 4096MB
        ddr_vendor: cxmt
        ddr_freq: 4266 Mbps
        board_id: 0x0202
        bak_slot: 0
```

此命令显示包括 SoC 类型、内存大小和类型、板卡版本、启动设备等信息，这些信息可以帮助用户了解板卡的基本配置和硬件参数。

### 显示 HBRE 库版本信息

命令：

```bash
./sysinfopro -l
```

功能：
该命令会显示 hbre 库的版本信息，例如：

```bash
[HBRE lib version]:
        libcam                         1.1.0-95e439a
        libvpf                         1.0.0-95e439a
        libdsp                         1.0.0-43bee14
        libboardinfo                   1.0.0-06d329f
        libefuse                       1.0.1-a2050b3
        libhbmem                       1.0.0-352c38e
        libhbipcfhal                   1.0.0-efc96c3
        libalog                        1.0.1-c1fe766
        libmultimedia                  1.2.3-551f280
        libte600_engine                1.0.0-44a4499
        libupdate                      1.0.1-91d3da7
        libpowerctl                    0.1.1-e011866
        libsecure_storage              1.0.0-edff2b7
        libhbplayer                    1.0.1-cc40383
        gc8000l                        6.4.14-d392a64
        x5_camsys                      unknown-fb47281b6
        libNano2D/libNano2Dutil        2.0-183cd6e
```

这些信息方便开发人员了解当前使用的库版本。

**注意**：如果使用了未经发布的 hbre 库，版本信息中会附带 `-dirty` 后缀，表示当前使用的库版本是从开发过程中直接构建的，并未经过正式发布。这通常意味着库文件包含未提交的更改或本地修改，因此可能与正式版有所不同。示例如下：

```bash
        libcam                         1.1.0-95e439a-dirty
```

`-dirty` 后缀的来源是代码库中存在尚未提交或尚未合并的本地更改，表明该版本不是正式发布的版本。

### 显示当前加载的内核模块

命令：

```bash
./sysinfopro -k
```

功能：
该命令会显示当前已加载的内核模块列表，例如：

```bash
[Kernel Module List]:
        Module                  Size  Used by    Tainted: P
        usb_f_fs               45056  3
        libcomposite           77824 10 usb_f_fs
        bpu_hw_io_x5           24576  0
        bpu_cores              28672  1 bpu_hw_io_x5
        bpu_framework          73728  2 bpu_hw_io_x5,bpu_cores
        ...
```

此命令显示当前加载的内核模块及其相关信息，包括模块的大小、使用次数等。这些信息可以帮助用户了解当前系统中加载的内核模块及其依赖关系。

### 显示帮助信息

命令：

```bash
./sysinfopro -h
```

功能：
该命令会显示工具的帮助信息，介绍工具的使用方法和选项说明：

```bash
sysinfopro - display system information and hardware details.

Usage: sysinfopro [options]

Options can be combined. For example:
         ./sysinfopro -m -i -o

Options:
        -a      Show all information
        -m      Show memory information, include ION memory
        -i      Show hardware information
        -o      Show OS version
        -s      Show temperature and frequency of CPU DDR GPU and BPU
        -b      Show basic information of board terminal
        -l      Show hbre library version
        -k      Show currently loaded kernel modules
        -h      Show this help message
```

用户可以通过帮助信息快速了解工具的使用方法和各个选项的功能。
