标签: linux-device-driver

request_irq- irq标志设置为0; 这有效吗?

在浏览2.6.35时的一些驱动程序中,观察到request_irq传递了0irq标志的值.当看到interrupt.h- 0对应IRQ_TRIGGER_NONE;

这相当于IRQ_NONE以前内核中的情况吗?

谢谢.

linux linux-device-driver linux-kernel

1
推荐指数
1
解决办法
5179
查看次数

设备树和代码大小

根据我对设备树的理解,主要用途之一是从驱动程序中删除特定于平台的代码以支持多个平台.设备树如何处理单个外设的多个配置?

例如,如果我想在平台A中使用LCD面板A而在平台B中使用LCD面板B,我是否需要将LCD面板A和面板B相关代码保留在最终二进制文件中?如果是这种情况,并且有多个外围设备有多个选项,则二进制文件中似乎会有大量额外代码.

kernel arm linux-device-driver linux-kernel device-tree

1
推荐指数
1
解决办法
1740
查看次数

1
推荐指数
1
解决办法
3525
查看次数

Linux DMA API问题

https://www.kernel.org/doc/Documentation/DMA-API.txt上的文字后面几个内联问题

Part Ia - Using large dma-coherent buffers
------------------------------------------

void *
dma_alloc_coherent(struct device *dev, size_t size,
                 dma_addr_t *dma_handle, gfp_t flag)

Consistent memory is memory for which a write by either the device or
the processor can immediately be read by the processor or device
without having to worry about caching effects.  (You may however need
to make sure to flush the processor's write buffers before telling
devices to read that memory.)
Run Code Online (Sandbox Code Playgroud)

Q1.假设分配的区域是可缓存的是否安全?作为需要冲洗的最后一行状态

Q1A.此API是否从较低的16MB分配内存,这被认为是DMA安全的.

dma_addr_t
dma_map_single(struct device *dev, void …
Run Code Online (Sandbox Code Playgroud)

linux arm linux-device-driver linux-kernel dma

1
推荐指数
1
解决办法
2418
查看次数

什么是i/o端口,i/o端口地址?那个地址是RAM的一部分吗?

什么是i/o端口,i/o端口地址?当驱动程序想要与硬件通信时,例如并行端口(0x378).那个端口地址(0x378)是RAM地址还是别的?

linux device linux-device-driver linux-kernel

1
推荐指数
1
解决办法
2548
查看次数

设备驱动程序Hello world的make文件出错

我有简单的代码与设备驱动程序hello world with make file.it在12.04 LTS的情况下执行得很好但最近我将我的ubuntu升级到14.04之后,相同的程序无法编译.有错误消息

make

make -C /lib/modules/3.13.0-45-generic/build M= modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-45-generic'
make[2]: *** No rule to make target `/usr/src/linux-headers-3.13.0-45-generic/arch/x86/syscalls/syscall_32.tbl', needed by `arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h'.  Stop.
make[1]: *** [archheaders] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-45-generic'
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

提前致谢......

c linux makefile linux-device-driver linux-kernel

1
推荐指数
1
解决办法
1859
查看次数

在Linux IRQ中调用schedule()

我正在制作一个仿真驱动程序,要求我schedule()在ATOMIC上下文中调用以使仿真部分工作.现在我有这个hack,允许我schedule()在ATOMIC(例如自旋锁)上下文中调用:

int p_count = current_thread_info()->preempt_count;

current_thread_info()->preempt_count = 0;
schedule();
current_thread_info()->preempt_count = p_count;
Run Code Online (Sandbox Code Playgroud)

但是这在IRQ中不起作用,系统只是停止调用schedule().

有没有办法以某种方式破解内核以允许我这样做?我正在使用Linux内核4.2.1和用户模式Linux

linux-device-driver linux-kernel user-mode-linux

1
推荐指数
1
解决办法
655
查看次数

如何使用raspberry Pi或任何其他Linux PC或设备创建虚拟/模拟USB鼠标

我需要创建一个模拟的USB设备.插入PC或平板电脑时,设备应该像USB鼠标一样.动机是检查系统的鼠标驱动程序.我想让其中一个Raspberry Pi USB端口像鼠标一样.

当我将Raspberry Pi USB端口连接到我的PC时,它应该显示鼠标已连接.

如何制作这种虚拟/模拟设备?

此外,我需要监控并向PC发送点击消息.

embedded usb linux-device-driver embedded-linux raspberry-pi

1
推荐指数
1
解决办法
6346
查看次数

研究设备驱动程序源文件?

我想研究一些设备驱动程序的源文件,这些驱动程序是在raspberry pi(raspian),beaglebone(debian)或我的笔记本电脑(ubuntu)上安装和加载的.

我的目标是通过研究一些实际工作的驱动程序的源文件来学习如何正确实现我自己的模块.

我对与实际硬件(USB,I2C,SPI,UART等)通信的驱动程序特别感兴趣.

有人能告诉我如何找到这些来源吗?它们是否在某些特定文件夹中可用,例如/ usr/src/****或者我是否必须从特定内核版本下载所有内核源文件?

我们非常感谢所有建议,意见和建议.

ps我读过"Linux内核开发第3版"但请告诉我你是否知道关于这个主题的任何其他免费/开源书籍.

最好的问候Henrik

kernel linux-device-driver linux-kernel raspberry-pi beagleboneblack

1
推荐指数
1
解决办法
1139
查看次数

用户空间程序中的“易失性”趋向于指示错误是真的吗?

当我搜索“ volatile”及其用户空间使用情况时,发现了Theodore Tso和Linus Torvalds之间的邮件。根据这些大师的说法,在用户空间中使用“ volatile”可能是一个错误?在这里查看讨论

尽管他们有一些解释,但我真的听不懂。谁能用一些简单的语言来解释他们为什么这么说?我们不应该在用户空间中使用volatile?

c linux-device-driver linux-kernel

1
推荐指数
1
解决办法
163
查看次数