This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SPI 的MMAP操作,报BUS 错,咋回事呢?



map_base_uart=(unsigned int *)mmap(0,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fbb,0x481a0000);
			if(map_base_uart == NULL)
		  {
		  	printf("UART mmap err!\n");				
		  }
		  else
		  {
		  	printf("UART mmap ok!\n");
		  }		
		 
		  recv_spi[0]= (*(volatile unsigned int *)(map_base_uart)&0xff);//
		  printf("usrt 0H value :   %d \n  ",recv_spi[0]);
		  printf("\n");

分别试了SPI0 和SPI1都不行,报如下错误

root@am335x-evm:/mnt/nfs# ./spi 
spi mode: 0[ 2820.799835] Unhandled fault: external abort on non-linefetch (0x1018) at 0x40091000

bits per word: 8
max speed: 500000 Hz (500 KHz)
UART mmap ok!
Bus error
root@am335x-evm:/mnt/nfs# 

然后分别试了,GPIO0-3; UART0-3  这几个地址,读基地址都可以读到内容。 ,为啥操作SPI 就是不行,但是APP方式调用标准SPI驱动就可以正常收发数据呢?