完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在ZedBoard上运行Linaro Ubuntu OS。
我的系统使用适当的FSBL和HDMI流以及UartLite IP进行启动。 我试图使用mmap()函数将UARTLite IP映射到用户空间,并访问所需的寄存器,而不是使用驱动程序并编写应用程序代码以通过UARTLite IP将数据导入操作系统。 输出显示总线错误而不是打印接收的数据。开发/存储文件打开,我也获得用户映射的地址。 但之后代码终止并显示Bus Error消息。 是否可以为UARTLite使用内存映射IO方法? #include #include #include #include #define UL_BASE_ADDRESS 0x42C00000 #define UL_RX_OFFSET 0 #define UL_TX_OFFSET 4 #define UL_STATUS_OFFSET 8 #define UL_CTRL_OFFSET 12 #define MAP_SIZE 4096UL #define MAP_MASK(MAP_SIZE - 1) int main(){int memfd; void * mapped_base,* mapped_dev_base; off_t dev_base = UL_BASE_ADDRESS; memfd = open(“/ dev / mem”,O_RDWR | O_SYNC); if(memfd == -1){printf(“无法打开/dev/mem.n”); 出口(0); } printf(“/ dev / mem opens。 n”); //将一页内存映射到用户空间,以便设备在该页面中,但它可能不在页面的开头。 mapped_base = mmap(0,MAP_SIZE,PROT_READ | PROT_WRITE,MAP_SHARED,memfd,dev_base& ~MAP_MASK); if(mapped_base ==(void *)-1){printf(“无法将内存映射到用户空间。 n”); 出口(0); } printf(“映射到地址%p。 n”的内存,mapped_base); //获取用户空间中设备的地址,该地址将偏离基数//当页面开始时映射为内存时映射 mapped_dev_base = mapped_base +(dev_base& MAP_MASK); printf(“Memory mapped_dev_base is%p。 n”,mapped_dev_base); printf(“ctrl reg的内存地址为%p。 n”,mapped_dev_base + UL_CTRL_OFFSET); *((volatile unsigned long *)(mapped_dev_base + UL_CTRL_OFFSET))= 16; printf(“收到的数据”); volatile unsigned long int receive = 0; 的printf( “%录”,接收); 而(1){ receive = *((volatile unsigned long *)(mapped_dev_base + UL_RX_OFFSET)); printf(“%lu n”,接收); if((*((volatile unsigned long *)(mapped_dev_base + UL_STATUS_OFFSET))& 0x00000002)== 0x00000002)*((volatile unsigned long *)(mapped_dev_base + UL_CTRL_OFFSET))= 0x0000000F; } //在退出之前取消映射内存 if(munmap(mapped_base,MAP_SIZE)== -1){printf(“无法从用户空间取消映射内存。 n”); 出口(0); } 关闭(memfd); 返回0;} |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
2500 浏览 7 评论
2871 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2330 浏览 9 评论
3424 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2512 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
2454浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
660浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
521浏览 1评论
801浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-24 20:19 , Processed in 1.205388 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191