Articles of embedded linux

request_irq中的dev_id参数是什么?

在函数声明中 int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long irqflags, const char *devname, void *dev_id); dev_id是一个“in”参数还是一个“out”参数? 我们从哪里得到这个号码?

使用可加载的内核模块修改framebuffer(/ dev / graphics / fb0)参数

问题:我必须configurationAndroid平台使用的各种LCD显示器。 几乎在所有情况下都没有关于液晶显示器的免费电气规格。 但是通过经验和逆向工程,参数可以被合理地猜测出来。 我正在尝试使用可加载的内核模块来微调显示参数(任何其他build议也欢迎)。 请在下面find相关信息。 硬件:爱特梅尔SAMA5D31-EK(ARM 5处理器) SW: Andriod Linux(目标),Ubuntu(主机系统),Sourcery CodeBench(交叉编译器)代码片段,从board-dt.c文件 static struct fb_videomode at91_tft_vga_modes[] = { ….. .xres =435; .yres =235; …. } static struct fb_monspecs at91fb_default_monspecs = { ……… .modedb = at91_tft_vga_modes, …… } static struct atmel_lcd_fb_info __initdata ek_lcdc_data = { ………. .default_monspecs = & at91fb_default_monspecs; ……… } 我添加了这个代码,所以可加载的内核模块可以访问lcdc_data结构 extern void set_fb_video(struct fb_videomode […]

使用RNDADDENTROPY将熵添加到/ dev / random

我有一个产生一些噪声的设备,我想添加到embedded式Linux系统中/ dev / random设备的熵池中。 我正在阅读/ dev / random的手册页 ,我不太了解你传递给RNDADDENTROPY ioctl调用的结构。 RNDADDENTROPY Add some additional entropy to the input pool, incrementing the entropy count. This differs from writing to /dev/random or /dev/urandom, which only adds some data but does not increment the entropy count. The following structure is used: struct rand_pool_info { int entropy_count; int buf_size; […]

如何检测Linux板上GPIO引脚的变化

我在基于ARM的Linux板(imx233 CPU)上使用3.12内核。 我的目的是检测GPIO引脚的变化(1到0)。 我可以读取不断调用下面的函数的引脚值(在while(1)循环中) int GPIO_read_value(int pin){ int gpio_value = 0; char path[35] = {'\0'}; FILE *fp; sprintf(path, "/sys/class/gpio/gpio%d/value", pin); if ((fp = fopen(path,"rb+")) == NULL){ //echo in > direction //error } fscanf(fp, "%d", &gpio_value); fclose(fp); return gpio_value; } 但是这会给CPU造成太多的负担。 我不使用nanosleep或nanosleep ,因为换针发生的时间很短,这会导致我错过这个事件。 据我所知,这是不可能使用poll() 。 是否有任何poll()函数,我可以用它来检测一个GPIO引脚变化? 编辑:以防万一,如果我做错了什么,这里是我的poll()用法,不检测引脚更改 struct pollfd pollfds; int fd; int nread, result; pollfds.fd […]

for_each_process – 它是否迭代线程和进程?

我想迭代内核中的所有任务(线程和进程),并使用for_each_processmacros打印tid / pid和名称: #define for_each_process(p) \ for (p = &init_task ; (p = next_task(p)) != &init_task ; ) 我怎样才能区分线程和进程? 所以我会这样打印: if (p->real_parent->pid == NULL) printk("PROCESS: name: %s pid: %d \n",p->comm,p->pid); else printk("THREAD: name: %s tid: %d \n",p->comm,p->pid);

单独的线程优先检查使用命令行在Linux中

我可以看到在/ proc / $(pidof任务)/和给予应用程序中使用的线程数 猫的状态。 有没有什么办法来检查Linux中使用命令个人线程优先? 问候, 学习者

如何解释/ proc / mounts?

当我做以下。 "cat /proc/mounts". tmpfs /export/ftp/import tmpfs rw,relatime,size=102400k 0 0 tmpfs /export/ftp/export tmpfs rw,relatime,size=10240k,mode=755 0 0 embedded式设备的文档说,导入和导出位于DRAM中 但是在其他设备上 ubi18_0 /nvdata1/temporary-download ubifs rw,sync 0 0 ubi18_0 /export/ftp/import ubifs rw,sync 0 0 ubi18_0 /export/http/import ubifs rw,sync 0 0 tmpfs /export/ftp/export tmpfs rw,size=10240k,mode=755 0 0 embedded式设备的文档说,import位于NAND,输出位于DRAM。 我真的不知道在DRAM,NAND,NOR中有什么。 我在设备上的基本知识是NOR有u-boot。 NAND有内核和rootfs。

什么是linux irq域名,为什么他们需要?

什么是irq域,我读内核文档( https://www.kernel.org/doc/Documentation/IRQ-domain.txt )他们说: 注册为唯一irqchips的中断控制器的数量呈上升趋势:例如,GPIO控制器等不同types的子驱动程序通过将它们的中断处理程序build模为irqchips(即有效的级联中断控制器),避免重新实现与IRQ核心系统相同的callback机制。 GPIO控制器如何被称为中断控制器?

将u-Boot加载到内存中而不是闪烁

在我的基于ARM的定制电路板中,每当我做出更改时,我都会将u-boot刷新到NAND。 (放一些debugging语句/修改)。 有没有办法直接加载到RAM内存的uboot映像,而不是每次闪烁? 对于linux内核映像,我将它加载到内存中,并使用bootm来启动映像。 同样,对于u-boot,我正在尝试。 请提供您的build议。

如何在linuxembedded式中更改看门狗定时器

我必须使用Linux看门狗驱动程序(/ dev / watchdog)。 它很好,我写这样一个字符: echo 1 > /dev/watchdog 看门狗启动后约1分钟,系统重启。 问题是,我怎样才能改变超时? 我必须改变驱动程序的时间间隔?