47 lines
1.1 KiB
C
47 lines
1.1 KiB
C
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <fcntl.h>
|
|
#include <comm/ddr_arb.h>
|
|
#include <kwrap/examsys.h>
|
|
#if !defined(__FREERTOS)
|
|
#include <sys/ioctl.h>
|
|
#include "ddr_arb_ioctl.h"
|
|
#endif
|
|
|
|
#if !defined(__FREERTOS)
|
|
unsigned short arb_chksum(DDR_ARB id, unsigned int addr, unsigned int len)
|
|
{
|
|
ARB_CHKSUM chksum = {
|
|
.version = DDR_ARB_IOC_VERSION,
|
|
.ddr_id = (unsigned int)id,
|
|
.phy_addr = addr,
|
|
.len = len,
|
|
.sum = 0,
|
|
};
|
|
|
|
|
|
int fd = open("/dev/nvt_ddr_arb0", O_RDWR);
|
|
if (fd < 0) {
|
|
printf("Error to open /dev/nvt_ddr_arb0\n");
|
|
return 0;
|
|
}
|
|
if (ioctl(fd, DDR_ARB_IOC_CHKSUM, (void *)&chksum) < 0) {
|
|
printf("DDR_ARB_IOC_CHKSUM failed.\n");
|
|
return 0;
|
|
}
|
|
close(fd);
|
|
return chksum.sum;
|
|
}
|
|
#endif
|
|
|
|
EXAMFUNC_ENTRY(vendor_chksum, argc, argv)
|
|
{
|
|
unsigned int phy_addr = 0x100000; // must be word alignment
|
|
unsigned int len = 0x100000; // must be word alignment
|
|
unsigned short sum = arb_chksum(0, phy_addr, len);
|
|
printf("the sum value on phy_addr(0x%08X) with len(0x%08X) is 0x%08X.\n", phy_addr, len, sum);
|
|
return 0;
|
|
}
|