|
各位大虾门好。我遇到一个问题,问题如下:使用mmap读写硬件寄存器,读入和写出的相同地址,数据不同,请大虾门知道,我的测试程序代码如下:
#include <sys/mman.h>
#include <sys/types.h>
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define PINMUX_ADDR 0x01C14000
int main(int argc,char **argv)
{
char *FPGA_PIN_base;
int data=0x1F0F0F0F;
int fd;
fd = open("/dev/mem",O_RDWR|O_SYNC); //鎵撳紑mem鏂囦欢锛岃闂洿鎺ュ湴鍧€
if(fd == -1)
{
printf("ERROR OF OPEN mem!\n");
exit(-1);
}
printf("OPEN the mem!\n");
////////////////////////////////////////////////////////////////////////////////////////////
FPGA_PIN_base=(char *)mmap(0,1024,PROT_READ|PROT_WRITE,MAP_SHARED,fd,PINMUX_ADDR);
printf("FPGA_PIN=0x%x.PINMUX=0x%x\n",FPGA_PIN_base,data);
///////////////////////////////////////////////////////////////////////////////////////////////////
data = *(volatile unsigned int *)(FPGA_PIN_base+0x134);
printf("FPGA_PIN=0x%x.PINMUX5=0x%x\n",FPGA_PIN_base+0x134,data);
printf("FPGA_PIN=0x%x.PINMUX5=0x%x\n",FPGA_PIN_base+0x134,*(volatile unsigned int *)(FPGA_PIN_base+0x134));
*(volatile unsigned int *)(FPGA_PIN_base+0x134)=0x23; //PINMUX5 0x01C14000+0x134=0x01C14134
data = *(volatile unsigned int *)(FPGA_PIN_base+0x134);
printf("FPGA_PIN=0x%x.PINMUX5=0x%x\n",FPGA_PIN_base+0x134,data);
printf("FPGA_PIN=0x%x.PINMUX5=0x%x\n",FPGA_PIN_base+0x134,*(volatile unsigned int *)(FPGA_PIN_base+0x134));
return 0;
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|