完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我有一个带有一些寄存器的简单硬件。 我有内核驱动程序。 我从内核空间知道我可以使用iowrite32()写入一些硬件内存并使用ioread32()读取。 但我不知道如何从用户空间向内核空间发送一些值,这些空间将被写入硬件。 我有以下问题。 1.如何从用户空间向内核空间发送一些值,数组或任何数据? 2.在哪里(在哪个函数中)我应该将这些iowrite32()和ioread32()函数放在内核空间中? 我正在使用这些函数在proble方法中,当我插入模块时,它会从内存中写入和读取。 3.我如何访问或处理来自用户空间的内乱? 等待回复。 问候 |
|
相关推荐
7个回答
|
|
嗨,
所以我认为您为UIO链接的说明是过度的。 我认为你可以完全没有内核代码,假设你仍然在KO中设置UIO驱动程序。 通用UIO应该允许您使用兼容DTS的字符串将硬件注册为UIO控制。 备份一秒,您为IP添加的设备树节点是什么? 它应该在某处有UIO,并将中断连接到中断控制器。 希望默认情况下在您的内核中启用设备树UIO功能,以便它只是探测。 一旦你有了UIO,你只需在/ dev / uio的打开文件上读取等待中断。 您不应该在/ sys / class中,除非您正在寻找只读信息。 |
|
|
|
Hipete_128,
非常感谢你的帮助。 我有一个带reg =的IP; 它与axi DMA IP连接,将数据写入DDR。 所以我必须在用户空间中进行grep DMA中断。 所以要获得中断,我必须从文件/ dev / uio的第4个字节位置读取? 还有一件事我必须包括一个axi计时器IP来计算我的自定义IP执行算法的时间。 所以我还需要axi定时器IP的驱动程序? |
|
|
|
嗨,
粘贴更多 - 粘贴整个节点。 它应该有一个中断字符串以及一个兼容的字符串。 不知道计时器适合的位置。你不能只使用内核的时间感,一切都是软件。 如果这不够准确,那意味着您的计时器连接到硬件触发器和事件。 通用内核定时器驱动程序难以理解这一点(它们通常被写为为内核本身提供定时服务),所以我也只是UIO,因为定时器是一个简单的IP来管理。 |
|
|
|
|
|
|
|
/ *
*注意:此文件由Xilinx自动生成。 *版本: *今天是:2016年4月17日星期日23:23:38 * / / { amba_pl:amba_pl { #address-cells =; #size-cells =; compatible =“simple-bus”; 范围; axi_dma_0:dma @ 40400000 { #dma-cells =; compatible =“xlnx,axi-dma-1.00.a”; interrupt-parent =; 中断=; reg =; dma-channel @ 40400030 { compatible =“xlnx,axi-dma-s2mm-channel”; dma-channels =; 中断=; xlnx,datawidth =; xlnx,device-id =; }; }; testIP_0:testIP @ 43c00000 { compatible =“xlnx,testIP-1.0”; reg =; xlnx,s-axi-axilites-addr-width =; xlnx,s-axi-axilites-data-width =; }; }; }; 所以你的自定义IP没有定义自己的中断。 它是否有连接的中断源? 这就是我所期望的。 要使UIO正常工作,请将兼容字符串设置为“generic-uio”。 然后,您将有一个中断元组,因为IP中断与其与GIC的连接匹配。 |
|
|
|
|
|
|
|
啊!
您是否只想将整个批次作为来自用户空间的寄存器进行控制? 在这种情况下,将两者的compat字符串更改为“generic-uio”,然后您将为每个IP获得两个UIO节点。 在程序中打开并正常读/写寄存器。 但是,从用户空间控制DMA非常棘手,因为您需要使用内存的物理地址为数据缓冲区编程DMA。 用户空间无权访问已分配的memorys phy地址,因此您需要预先分配物理内存(常见解决方案),否则您将需要一些内核端帮助。 我不清楚你想要从用户空间控制多少以及从内核空间控制多少。 但尝试让内核控制DMA却让用户空间拦截中断会很奇怪。 如果您希望内核控制DMA(将使用中断),您可能会发现最简单的方法就是将线路分成硬件并为您的设备做出第二次只读中断,这实际上只是DMA中断。 HTH |
|
|
|
只有小组成员才能发言,加入小组>>
2429 浏览 7 评论
2830 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2298 浏览 9 评论
3378 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2468 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1303浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
592浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
455浏览 1评论
2010浏览 0评论
736浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 13:17 , Processed in 1.408698 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号