小编Sam*_*nko的帖子

GPIO和SPI有什么关系?

我发现内核中的GPIO驱动程序留下/sys/class/gpio来控制gpio,但我发现GPIO也可以被控制/dev/mem,我发现这个映射可能在spi-bcm2708(它调用__ioremap作为平台驱动程序)中完成,但我不这样做了解spi和GPIO之间的关系,它们在linux中如何协同工作?

driver spi linux-kernel gpio raspberry-pi

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

Linux 在哪里调用摄像头驱动进行图像传输

OV5640 相机的Linux 驱动程序提供了有限的功能。

static struct i2c_driver ov5640_i2c_driver = {
    .driver = {
        .name  = "ov5640",
        .of_match_table = ov5640_dt_ids,
    },
    .id_table = ov5640_id,
    .probe    = ov5640_probe,
    .remove   = ov5640_remove,
};
Run Code Online (Sandbox Code Playgroud)

这些功能是nameproberemove

我对驱动程序不是很熟悉,但我找不到渲染像素的驱动程序的任何部分,因此我可以将它们存储到数组中。我也找不到任何用于读取像素的虚拟内存地址。

捕获的图像数据传输发生在代码的哪一部分?我正在寻找两个位置:一个在驱动程序中,一个在调用驱动程序的更高级别。

camera driver linux-kernel imx6

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

C语言中如何正确输入字符串

我目前正在学习 C,所以我想制作一个程序,要求用户输入一个字符串并输出输入的字符数,代码编译得很好,当我只输入 1 个字符时,它就可以了,但是当我输入2个或更多字符,无论我输入多少个字符,它总是说只有一个字符,然后就崩溃了。这是我的代码,我不知道出了什么问题。

int main(void)
{
    int siz;
    char i[] = "";

    printf("Enter a string.\n");
    scanf("%s", i);

    siz = sizeof(i)/sizeof(char);

    printf("%d", siz);
    getch();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我目前正在学习编程,所以如果有一种方法可以使用相同的 scanf() 函数来完成它,我会很感激,因为我还没有学会如何使用任何其他函数,并且可能不会理解它是如何工作的。

c arrays string input scanf

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

使用Beaglebone Black快速读取模拟输入

我需要每5毫秒读取一次BBB中的所有7个模拟引脚。我正在使用以下C代码进行此操作:

void main(){
    char value_str[7];
    long int value_int = 0;

    FILE* f0 = fopen("/sys/bus/iio/devices/iio:device0/in_voltage0_raw", "r");

    while(1){
            fread(&value_str, 6, 6, f0);
            value_int = strtol(value_str,NULL,0);
            printf("0 %li\n", value_int);
            fflush(stdout);

            usleep(5000);
            rewind(f0);
    }
Run Code Online (Sandbox Code Playgroud)

但是,CPU使用率确实很高(20%)。有什么方法可以以不同的方式读取模拟输入,从而不会占用太多CPU?有人建议使用“ DMA”,但我在这方面完全迷失了……

任何帮助将不胜感激。

analog-digital-converter beagleboneblack iio

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

内核导出符号vs全局符号vs静态全局?

我有点堆栈与内核符号类型的含义.简单的静态符号与C static具有相同的含义.因此局部静态变量具有局部范围和静态分配.静态函数作用域是一个文件.但静态导出符号呢?如何应对EXPORT_SYMBOL(),EXPORT_PER_CPU_SYMBOL(),EXPORT_UNUSED_SYMBOL()如果宏观出口静态符号?全局符号和导出符号有什么区别?链接器是否有责任为导出的符号添加其他信息?全局静态变量内置内核是否在所有内核和可加载模块中都可见?

可以从可加载模块访问内核导出的符号.内核中的这种符号是否很好用?当内核解析符号时,它是通过内核符号表进行查找的吗?

c linux linux-kernel

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

如何查找STM32F103RET的设备ID

我被告知每个STM32F103RET设备都带有一个唯一的设备ID.如果检索ID的过程是什么?我正在运行一个系统,其中我与多个STM borads进行通信.为了区分每个STM板,我可以使用这个唯一的Id.谢谢

stm32 libopencm3

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

谁能解释一下fork是如何工作的?

我真的不明白fork()是如何工作的.我理解一个fork的例子,但是当我有多个调用时,我没有.我有一个这样的例子,它打印4行hello,有多少个进程是产生的?

int main(void)
{
       fork();
       fork();
       printf("hello\n");

       return 0;
}
Run Code Online (Sandbox Code Playgroud)

c unix posix fork

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

如何读取sysfs设备路径?

我的USB触摸屏连接到我的硬件设置.当我使用时,cat /proc/bus/input/devices我得到有关我的设备的以下详细信息:

I: Bus=0003 Vendor=2965 Product=5023 Version=0110
N: Name="Kortek Kortek Touch"
P: Phys=usb-0000:00:14.0-3.4/input2
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.4/3-3.4:1.2/0003:2965:5023.0006/input/input7
U: Uniq=S20131028
H: Handlers=mouse1 event7 js0
B: PROP=0
B: EV=1b
B: KEY=30000 0 0 0 0 0 0 0 0
B: ABS=3
B: MSC=10
Run Code Online (Sandbox Code Playgroud)

我想知道这条线S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.4/3-3.4:1.2/0003:2965:5023.0006/input/input7意味着什么.怎么看?路径中的数字是多少?

linux usb sysfs

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

arm archtecture上的dma_map_single内部

我试图了解ARM体系结构的DMA内部,参考内核文档:http://lxr.free-electrons.com/source/Documentation/DMA-API-HOWTO.txt.

我的理解是我们在内核空间中分配内存(使用DMA约束)并将其传递给dma_map_single()函数,该函数将根据DMA需要更改内存的映射属性(写入组合或非高速缓存).然后,如果平台支持IOMMU,它将返回设备总线的虚拟地址,否则它将返回可以直接从设备访问的物理地址.

这是正确的理解吗?

目前,我无法映射它的源代码,任何带有代码片段的指针都会非常有用.

arm memory-management linux-device-driver linux-kernel dma

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

Linux 串行通信与中断

我有两个设备通过串行端口相互连接。一个作为主人,另一个作为奴隶。

主设备是一个基于 ARM 的套件,运行 Linux。

目前的情况是master发送命令然后轮询com端口直到slave回复。

现在我不想使用轮询。我需要处理器执行其他任务,直到从机回复。

我知道解决方案是使用中断,但找不到更多详细信息。我找到了一些使用信号的解决方案。它以非阻塞模式读取 tty,然后在数据准备好时发送 io 信号。

那么,串行通信中中断和信号有什么区别呢?当使用中断时我应该编写设备驱动程序或内核模块等吗?为了不使用轮询,还有其他有效的解决方案吗?

linux signals serial-port linux-kernel interrupt-handling

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