4.1.5. 设计说明¶
4.1.5.1. 源码说明¶
BWM模块的源代码位于:linux-5.10/drivers/misc/artinchip-bwm.c
4.1.5.2. 模块架构¶
BWM模块主要是监测DDR的带宽,所以BWM模块的驱动,主要可以分为两部分:
- 初始化BWM,使BWM模块可以正常工作,这部分主要在probe函数中实现。 
- 向用户层提供接口,方便用户可以实时查看DDR的带宽数据。这部分是通过sysfs向用户提供结点,方便用户调用。 
4.1.5.4. 数据结构设计¶
管理BWM资源数据的结构体
struct bwm_dev {
    struct attribute_group attrs;
    void __iomem    *base;
    struct clk *clk;
    struct reset_control *rst;
    u32 axi_cpu;
    u32 axi_dma;
    u32 axi_de;
    u32 axi_ve;
    u32 ahb_dma;
};
4.1.5.5. 接口设计¶
4.1.5.5.1. axi_cpu_show¶
| 函数原型 | static ssize_t axi_cpu_show(struct device *dev, struct device_attribute *attr, char *buf) | 
|---|---|
| 功能说明 | 显示cpu所占带宽 | 
| 参数定义 | dev:设备指针 attr:unused buf:指向存储结果的指针 | 
| 返回值 | 返回写入的字符数 | 
| 注意事项 | 
4.1.5.5.2. axi_dma_show¶
| 函数原型 | static ssize_t axi_dma_show(struct device *dev, struct device_attribute *attr, char *buf) | 
|---|---|
| 功能说明 | 显示axi dma所占带宽 | 
| 参数定义 | dev:设备指针 attr:unused buf:指向存储结果的指针 | 
| 返回值 | 返回写入的字符数 | 
| 注意事项 | 
4.1.5.5.3. axi_de_show¶
| 函数原型 | static ssize_t axi_de_show(struct device *dev, struct device_attribute *attr, char *buf) | 
|---|---|
| 功能说明 | 显示de所占带宽 | 
| 参数定义 | dev:设备指针 attr:unused buf:指向存储结果的指针 | 
| 返回值 | 返回写入的字符数 | 
| 注意事项 | 
4.1.5.5.4. axi_ve_show¶
| 函数原型 | static ssize_t axi_ve_show(struct device *dev, struct device_attribute *attr, char *buf) | 
|---|---|
| 功能说明 | 显示ve所占带宽 | 
| 参数定义 | dev:设备指针 attr:unused buf:指向存储结果的指针 | 
| 返回值 | 返回写入的字符数 | 
| 注意事项 | 
4.1.5.5.5. ahb_dma_show¶
| 函数原型 | static ssize_t ahb_dma_show(struct device *dev, struct device_attribute *attr, char *buf) | 
|---|---|
| 功能说明 | 显示ahb dma所占带宽 | 
| 参数定义 | dev:设备指针 attr:unused buf:指向存储结果的指针 | 
| 返回值 | 返回写入的字符数 | 
| 注意事项 | 
4.1.5.5.6. enable_store¶
| 函数原型 | static ssize_t enable_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t size) | 
|---|---|
| 功能说明 | 打开或关闭BWM模块 | 
| 参数定义 | dev:设备指针 attr:unused buf:指向操作字符串的指针 size:字符串长度 | 
| 返回值 | 返回写入的字符数 | 
| 注意事项 | 
4.1.5.5.7. set_period_store¶
| 函数原型 | static ssize_t set_period_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t size) | 
|---|---|
| 功能说明 | 显示dma所占带宽 | 
| 参数定义 | dev:设备指针 attr:unused buf:指向操作字符串的指针 size:字符串长度 | 
| 返回值 | 返回写入的字符数 | 
| 注意事项 |