Part Number: PROCESSOR-SDK-AM437X
The code to access QSPI registers:
/////////////////////////////////////////////////////////////////////////////////////////
int i,fd;
unsigned int val;
void *g_addr=NULL,*prcm_addr=NULL;
fd=open("/dev/mem",O_RDWR|O_SYNC);
if(fd==-1){
printf("@E:open /dev/mem\n");
return -1;
}
prcm_addr=mmap(NULL,0x2000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x44df8000); //p142 0x44df8800
if(prcm_addr==NULL){
printf("@E:prcm_addr null\n");
return -1;
}
*(volatile unsigned int *)(prcm_addr+0x800+0x258)=2; // PRCM_CM_PER_QSPI_CLKCTRL , enable qspi module
val= *(volatile unsigned int *)(prcm_addr+0x800+0x258); // It's curious that the val is 0x30000002, but not 0x2 . why ???
g_addr=mmap(NULL,0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x47900000); //qspi reg
if(!g_addr){
printf("@E:g_addr null\n");
return -1;
}
val=*(volatile unsigned int *)(g_addr); //panic here !!!!
printf("qspi id:0x%x\n");
val=*(volatile unsigned int *)(g_addr+0x40);
printf("qspi clock ctrl:0x%x\n");
close(fd);
The err output:
/////////////////////////////////////////////////////////////////////
root@dc-plc:/run/media/mmcblk0p1# ./test
[ 27.546739] Unhandled fault: external abort on non-linefetch (0x1018) at 0xb6f98000
[ 27.546750] pgd = d05ae09c
[ 27.546754] [b6f98000] *pgd=995e5831, *pte=47900303, *ppte=47900a33
[ 27.546836] omap_l3_noc 44000000.ocp: L3 application error: target 9 mod:1 (unclearable)
Bus error (core dumped)
How I can to access the QSPI regsters?
Thanks!

