Articles of embedded linux

如何解决“iptables:无链/目标/匹配的名称”?

我在我的linuxembedded式系统上构build并安装了iptables。 如果我列出所有的规则,一切工作正常: #iptables –list Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 但是,如果我添加一个新的规则来阻止icmp ping,我会得到follwing错误: iptables -A INPUT -i eth0 -p icmp –icmp-type any -s 0/0 -d 10.20.3.179 -m state –state NEW,ESTABLISHED,RELATED -j DROP iptables: No chain/target/match […]

如何在使用GDB生成核心转储文件时限制核心转储文件的大小

我正在ARM9主板上运行一个embedded式应用程序,总闪存容量仅为180MB。 我能够运行gdb ,但是当我这样做 (gdb) generate-core-dump 我得到一个错误 warning: Memory read failed for corefile section, 1048576 bytes at 0x4156c000. warning: Memory read failed for corefile section, 1048576 bytes at 0x50c00000. Saved corefile core.5546 The program is running. Quit anyway (and detach it)? (y or n) [answered Y; input not from terminal] Tamper Detected **********OUTSIDE ifelse 0********* length […]

P1010 MAC切换端口直接连接,无需PHY

我有一个带有freescale P1010处理器的定制板,其中P1010的eTSEC2(增强型3速以太网控制器)端口在SGMII模式下直接连接到Marvell 88E6046以太网交换机端口9。 Linux(3.17)DSA驱动程序能够探测和检测交换机(端口9是'cpu',而端口0和1被指定为'lan1'和'lan2')。 然而问题是没有交换机连接的PHY('ifconfig up'无法连接到ethx)。 U-boot创build一个'通用PHY'eth0,因为它发现有一些(交换机)连接到处理器P1010,但是当Linux启动并且交换机连接到这个“通用PHY”(eth0)时,我无法ping通它(lan1或lan2,虽然DSA链接了)。 我能想到这个行为有两个原因。 交换机端口9直接连接到处于SGMII模式下的处理器MAC,但两者之间没有任何外部PHY。 即使在直接连接交换机时,也不会在“反向MII”模式下进行configuration,因此端口9的内部PHY不会被检测到。 鉴于上述情况,以太网交换机仍然可以使用DSA驱动程序? 另外我尝试使用处理器的内部PHY将其附加到eth0,但不能。 不知何故,以太网驱动总是find外部物理层,而没有。 即使在dts文件中定义了“固定链接”属性,它也不会查找内部PHY。 另外在我的devise中, MDC和MDIO线路的处理器都连接到Switch。 在处理器切换无PHY MAC-MAC连接,它创build2硕士? 如果这些被断开? 是否因为MDC / MDIO连接,我无法访问P1010处理器的内部PHY?

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。