TI中文支持网
TI专业的中文技术问题搜集分享网站

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驱动就可以正常收发数据呢?

Jian Zhou:

这个和驱动有关,估计你调这个驱动的时候,SPI的寄存器地址空间已经被SPI驱动占用了

zhongquan sha:

回复 Jian Zhou:

周一已经解决了

你说的没错哦,是和驱动有关,说和驱动有关,的确是修改了驱动后,再MMAP就OK了

说和驱动没关系呢,也可以,找到办法了,不知道手册问题,还是理解问题,反正没发下手

SPI时钟找不到控制寄存器, 手册有描述可以,但没找到在什么地方!

Jian Zhou:

回复 zhongquan sha:

驱动文件里面应该有时钟配置寄存器的定义啊

zhongquan sha:

回复 Jian Zhou:

时钟配置,不受控感觉

MMAP方式修改了后,再读取,发现值未能修改成功

估计还要啥相关地方的寄存器没有设置或设置的不对,,

赞(0)
未经允许不得转载:TI中文支持网 » SPI 的MMAP操作,报BUS 错,咋回事呢?
分享到: 更多 (0)