資源簡介
imx6平臺(tái)ds90ub964調(diào)試幫助文檔,包含官方debug流程說明文檔,環(huán)視程序,g2d官方說明文檔
代碼片段和文件信息
#include???
#include???
#include???
#include???
#include???
#include???
#include???
#include???
#include???
#include???
#include???
#define?FATAL?do?{?fprintf(stderr?“Error?at?line?%d?file?%s?(%d)?[%s]\n“?__LINE__?__FILE__?errno?strerror(errno));?exit(1);?}?while(0)
#define?MAP_SIZE?4096UL
#define?MAP_MASK?(MAP_SIZE?-?1)
int?main(int?argc?char?**argv)?{
int?fd;
void?*map_base?*virt_addr;
unsigned?long?read_result?writeval;
off_t?target;
int?access_type?=?‘w‘;
if(argc?2)?{
???? fprintf(stderr?“\nUsage:\t%s?{?address?}?[?type?[?data?]?]\n“
“\taddress?:?memory?address?to?act?upon\n“
“\ttype????:?access?operation?type?:?[b]yte?[h]alfword?[w]ord\n“
“\tdata????:?data?to?be?written\n\n“
argv[0]);
???? exit(1);
}
target?=?strtoul(argv[1]?0?0);
if(argc?>?2)
???? access_type?=?tolower(argv[2][0]);
if((fd?=?open(“/dev/mem“?O_RDWR?|?O_SYNC))?==?-1)?
FATAL;
printf(“/dev/mem?opened.\n“);
fflush(stdout);
map_base?=?mmap(0?MAP_SIZE?PROT_READ?|?PROT_WRITE?MAP_SHARED?fd?target?&?~MAP_MASK);
if(map_base?==?(void?*)-1)
FATAL;
printf(“Memory?mapped?at?address?%p.\n“?map_base);
fflush(stdout);
virt_addr?=?map_base?+?(target?&?MAP_MASK);
switch(access_type)?{
???? case?‘b‘:
read_result?=?*((unsigned?char?*)?virt_addr);
break;
???? case?‘h‘:
read_result?=?*((unsigned?short?*)?virt_addr);
break;
???? case?‘w‘:
read_result?=?*((unsigned?long?*)?virt_addr);
break;
???? default:
fprintf(stderr?“Illegal?data?type?‘%c‘.\n“?access_type);
exit(2);
}
printf(“Value?at?address?0x%x?(%p):?0x%x\n“?target?virt_addr?read_result);
fflush(stdout);
if(argc?>?3)?{
???? writeval?=?strtoul(argv[3]?0?0);
???? switch(access_type)?{
case?‘b‘:
???? *((unsigned?char?*)?virt_addr)?=?writeval;
???? read_result?=?*((unsigned?char?*)?virt_addr);
???? break;
case?‘h‘:
???? *((unsigned?short?*)?virt_addr)?=?writeval;
???? read_result?=?*((unsigned?short?*)?virt_addr);
???? break;
case?‘w‘:
???? *((unsigned?long?*)?virt_addr)?=?writeval;
???? read_result?=?*((unsigned?long?*)?virt_addr);
???? break;
???? }
???? printf(“Written?0x%x;?readback?0x%x\n“?writeval?read_result);
???? fflush(stdout);
}
if(munmap(map_base?MAP_SIZE)?==?-1)?FATAL;
close(fd);
return?0;
}
評(píng)論
共有 條評(píng)論