使用c语言编写统计带宽的工具

本文介绍了一种使用C语言编写的带宽统计工具,该工具基于Linux内核,但能在任意系统上运行。文章强调了用户级代码在Android 8.0 64位系统上的适用性,而内核级代码则适用于32位系统,需要注意兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>

#include <sys/time.h>
#include <time.h>

#include <sys/mman.h>
#include <unistd.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include <errno.h>


#define RK322X_DDR_MSCH_PHYS     0xff720000
#define RK322X_DDR_MSCH_SIZE     1024*64

#define INIT_REG0_OFFSET    0x8 
#define INIT_REG1_OFFSET    0xc 
#define INIT_REG2_OFFSET    0x138 
#define INIT_REG3_OFFSET    0x14c 
#define INIT_REG4_OFFSET    0x160
#define INIT_REG5_OFFSET    0x174 
#define TRIGGER_OFFSET      0x28        
#define COUNTER_REG0_OFFSET 0x13c
#define COUNTER_REG1_OFFSET 0x150
#define COUNTER_REG2_OFFSET 0x164
#define COUNTER_REG3_OFFSET 0x178
#define CPU_MSCH_OFFSET     0x1800
#define GPU_MSCH_OFFSET     0x400
#define PERI_MSCH_OFFSET    0x800
#define VOP0_MSCH_OFFSET    0xc00
#define VOP1_MSCH_OFFSET    0x1000
#define VIDEO_MSCH_OFFSET   0x1400

//unsigned long long *io_base; //unsigned long long:64bits
//unsigned char *io_base;
void *io_base;

void relative_init(int offset)
{
  
  //printf("**************%x %x %d\n",io_base,io_base+1,sizeof(void *));//void *io_base时 f62e9000 f62e9001 4
    *((unsigned long long *)(io_base + INIT_REG0_OFFSET + offset)) = 0x8;
    *((unsigned long long *)(io_base + INIT_REG1_OFFSET + offset)) = 0x1;
    *((unsigned long long *)(io_base + INIT_REG2_OFFSET + offset)) = 0x6;
    *((unsigned long long *)(io_base + INIT_REG3_OFFSET + offset)) = 0x10;
    *((unsigned long long *)(io_base + INIT_REG4_OFFSET + offset)) = 0x8;
    *((unsigned long long *)(io_base + INIT_REG5_OFFSET + offset)) = 0x10;
    //printf("iobase: %x, INIT_REG0_OFFSE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值