Articles of embedded linux

linux和embedded式linux的“execle”区别

使用x86平台,我想通过这个方法启动名为myapp的应用程序: execl("./myapp",""); 没关系! 但是在使用ARM平台+embedded式linux时失败了。 为什么? 任何帮助将不胜感激。 提前致谢。

pthread_mutex_timedlock不超时

操作系统:Linux lib:glibc 我有多个线程访问一个硬件,我通过使用互斥体来防止争用。 该软件非常复杂,并且由于recursion调用锁,可能会在系统中产生死锁。 出于这个原因,我正在使用“pthread_mutex_timedlock”而不是“pthread_mutex_lock”。 我宁愿打印一个错误信息,并继续导致系统看门狗和重置。 这可以让我看到这个问题,而不会把系统closures。 这里有一段代码可以帮助你理解我正在做的事情。 pthread_mutex_t MainMutex = PTHREAD_MUTEX_INITIALIZER; #define m_TAKE_LOCK() { \ struct timespec abs_time; \ clock_gettime(CLOCK_REALTIME , &abs_time); \ abs_time.tv_sec += 5; \ if (pthread_mutex_timedlock (&MainMutex, &abs_time) != 0) \ { \ printf("Lock failed PID %d %s\n", getpid(), __func__); \ } \ } #define m_RELEASE_LOCK() pthread_mutex_unlock(&MainMutex); void func1(void) {m_TAKE_LOCK()} void […]

交叉编译nginx-1.0.11

我想知道如何交叉编译nginx-1.0.11。 我已经试过:–with-cc选项,但它给了我一个错误:检查C编译器…发现,但不工作 ./configure:error:找不到C编译器arm-linux-gcc –with-cc-opt也不起作用。 我也尝试手动更改编译器(通过更改Makefile)。 我已经安装了arm-linux-gcc,并且在openssl下正常工作(它成功的交叉编译了openssl,所以问题不在arm-linux编译器中)。 任何帮助将不胜感激..在此先感谢。 🙂

如何知道可执行文件中有哪些function?

我在Linux中有一个二进制文件,我想知道它已经被编译的function。 我的项目由几个对象文件组成,每个对象文件包含不同的function。 有时我不知道我编译的可执行文件是哪一个。 我怎么知道? 我正在用不同的体系结构(arm,mips …)编译工具链。 谢谢。

如何确定NTP通信状态

我正在开发embedded式OpenSUSE 12.3系统,让用户configuration(单个)NTP服务器地址。 我需要能够向用户反馈与指定服务器通信方面的情况。 服务器地址是否有效? NTP是否无法联系服务器? 它正在查询服务器? 或者,我们是完全同步的吗? (注意:一旦NTP认为它是同步的,那么我不在乎它是如何同步的。) 现在我写了一个bash脚本来parsingntpq -np的输出: 如果输出包含"ntpq: read: Connection refused"那么ntpd不会运行 如果输出包含"No association ID's returned"则服务器地址无效 如果输出包含".INIT." 那么ntpd还没有连接到服务器 如果输出不包含以"*"开头的行,那么我们正在查询服务器 否则,我们是同步的。 显然,这是一个后面的痛苦和高度依赖平台,我很想有一个更好的解决scheme。 据我所知,在一个内置的ntp源代码树中有一个libntpq.a,可以被外部应用程序使用,但是直到有一个正式的版本,那么这只是切换到一个新的平台依赖的味道。 有没有官方的方式来确定当前的NTP客户端的通信状态? 再次注意,只有一台服务器将被configuration。

修改Yocto中的内核configuration

我已经尝试了很长时间来修改内核configuration没有运气。 🙁 在meta-xxx-yyy中有一个BSP,带有recipes-kernel / linux / linux_git.bb。 我尝试覆盖我的图层中的内核configuration名为meta-xxx-mylayer,我有食谱 – 内核/ linux / linux_git.bbappend和食谱 – 内核/ linux /文件/ frag.cfg frag.cfg: # CONFIG_NETFILTER is not set CONFIG_AUTOFS4_FS=y linux_git.bbappend: COMPATIBLE_MACHINE_my_mach = "my_mach" FILESEXTRAPATHS_prepend := "${THISDIR}/files:" SRC_URI += "file://frag.cfg" linux_git.bb :(只是文件的一部分) KERNEL_RELEASE = "3.10" PV = "3.10" PR = "r10" S = "${WORKDIR}/git" COMPATIBLE_MACHINE = "(my_mach)" meta-xxx-yyy / conf […]

如何列出用于使用bitbake构build特定软件包的所有.bb和.bbappend文件?

让我们考虑一下“virtual / kernel”包。 我想知道哪些.bb和.bbappend文件参与构build这个包。 我知道我可以通过以下方式获取包名: bitbake -e虚拟/内核| grep ^ BP = 这个命令给了我用来构build虚拟/内核的包的名字,在我的例子中是linux-fslc-4.0+gitAUTOINC+19ebefd40a 。 但是,我不知道如何获得.bb和.bbappend文件(包括它们的位置)的列表,用于构buildlinux-fslc-4.0+gitAUTOINC+19ebefd40a软件包。

ioctl驱动函数是从linux 2.6下的一个primefaces上下文执行的吗?

我正在跟踪我们的一个驱动程序中的“调度primefaces”错误,并且想知道ioctl是否是primefaces上下文。 另外,如果任何人有任何分享如何进出primefaces上下文,以及他们发生的常见的地方,这将是有益的。

简单的字符设备驱动程序

我写了一个简单的字符设备驱动程序,并且想要为craneboard(ARM架构)进行交叉编译。 我的文件名是gDev.c 我将该文件复制到了鹤壁板上的kernel/drivers/char目录。 我修改了同一个目录中的Kconfig文件并添加了以下几行。 config TEST_GCHARD tristate "My Character driver" default m 我将下面一行添加到同一目录中的Makefile中。 obj-$(CONFIG_TEST_GCHARD) += gDev.o 我在arch/arm/configs目录的am3517_crane_defconfig中添加了以下行。 CONFIG_TEST_GCHARD=m 我的问题是,当我在am3517_crane_defconfig中将其设置为m时,该文件不包含在编译中。 但是,如果我将它更改为y ,则会进行编译。 但是,我需要它成为一个模块,我必须启动后, insmod 。 请指导我是否缺less任何步骤。 谢谢。

insmod错误:插入'./hello.ko':-1模块格式无效“

我刚刚制作了我的第一个驱动程序模块,即LDD3之后的Hello World模块。 不幸的是遇到了这个错误: insmod: error inserting './hello.ko': -1 Invalid module format. 我在Ubuntu 11.04和我的环境中这样做: $ uname -r 2.6.38-8-generic 我得到这样的内核源码: sudo apt-cache search linux-source linux-source – Linux kernel source with Ubuntu patches linux-source-2.6.38 – Linux kernel source for version 2.6.38 with Ubuntu patches $sudo apt-get install linux-source-2.6.38 我的/ usr / src: $ls /usr/src/ linux-headers-2.6.38-8 linux-source-2.6.38 vboxguest-5.0.10 linux-headers-2.6.38-8-generic […]