Articles of embedded

mkdir,带符号的path名

我有一个小问题,我需要从我的C代码或C ++目录,无所谓。 但是,目录名称必须包含“:”,“','”等字符。 在目前的一般情况下,当我尝试使用mkdir()函数创build时,我得到EINVAL错误,但是从system("mkdir …")一切正常。 我怎么解决这个问题? 谢谢!!!

优化embedded式Linux系统的根文件系统大小

我正在开发一个在Linux上运行的embedded式系统。 为了减less产品的启动时间(这是一个IPnetworking摄像头),我想减less根文件系统的大小 。 我已经有一个function性的根文件系统,目前我正在手动删除部分,看看是否会挂载根文件系统。 是否有更合理的方法来减less文件系统大小而不是使用当前的反复试验方法更新了更多详细信息 :目标上使用的原始文件系统是用于组织中多个embedded式产品的通用文件系统。 我想剥离文件系统到最低限度的运行我的具体产品.ie IPNetCam。 我想知道是否有任何分析方法可以确定启动和运行特定应用程序所需的确切文件集。

将32位转换为浮点值

我正在使用DSP处理器来实现在Linux系统上使用C的BFSK跳频机制。 在程序的接收部分,我得到一组样本的input,我使用Goertzelalgorithm对其进行解调,以确定接收的比特是0还是1。 现在,我可以单独检测位。 但是我必须以浮点数组的forms返回数据进行处理。 所以,我需要打包每32位接收forms的一个浮点值。 对,我正在做一些事情: uint32_t i,j,curBit,curBlk; unint32_t *outData; //this is intiallized to address of some pre-defined location in DSP memory float *output; for(i=0; i<num_os_bits; i++) //Loop for number of data bits { //Demodulate the data and set curBit=0x0000 or 0x8000 curBlk=curBlk>>1; curBlk=curBlk|curBit; bitsCounter+=1; if(i!=0 && (bitsCounter%32)==0) //32-bits processed, save the data in array […]

SDL导致CEF3产生额外的窗口

我试图让CEF3(Chromium Embedded Framework: https ://bitbucket.org/chromiumembedded/cef)与SDL(Simple DirectMedia Layer: https ://www.libsdl.org/)一起工作。 我对这两个库的使用意图是使用SDL打开一个窗口,从中接收事件并渲染OpenGLgraphics(与其他库(如GLEW)结合使用)。 我想使用CEF3为用户界面提供graphics元素,然后通过OpenGL纹理将其显示在屏幕上。 所有这些工作,我可以打开SDL窗口,处理事件,我可以绘制OpenGL纹理,并从CEF3中的屏幕渲染获得OpenGL兼容的数据。 问题是,如果我在testing环境中一起运行SDL和CEF3,CEF3会产生多个附加窗口。 这是我用于CEF3的代码。 void Example::webTest() { //Args CefMainArgs cefArgs; //Settings CefSettings cefSettings; cefSettings.pack_loading_disabled = true; cefSettings.windowless_rendering_enabled = true; //Initialize CefInitialize(cefArgs, cefSettings, nullptr, nullptr); //Render Handler renderHandler = new InterfaceRenderHandler(); //Window Info CefWindowInfo cefWindowInfo; //cefWindowInfo.SetAsWindowless(0, true); cefWindowInfo.windowless_rendering_enabled = true; cefWindowInfo.transparent_painting_enabled = true; //Interface Browser CefRefPtr<InterfaceBrowserClient> […]

从ARM的源代码交叉编译Qt 4.7的问题

我试图从源代码交叉编译Qt 4.7.1,这里有一些关于我的设置的注释: 我的预期输出是为了运行Qt应用程序而需要存在的共享对象库。 我的目标平台是采用ARM Cortex-A8架构的TI AM335x处理器。 我的开发平台是x86 64位Ubuntu虚拟机 我对这个应该如何工作的理解是,我下载了我的目标平台(这是TI的Linaro工具链)的工具链,我下载了Qt 4.7.1的源代码,我设置了mkspec来使用我的工具链,运行configure ,那么只需要运行make / make install ,我应该能够find所有.so的地方,我告诉它安装到。 但是,我有很多问题让这个想法工作。 首先,我下载了TI SDK版本:ti-sdk-am335x-evm-06.00.00.00,其中arm工具位于: [root_install_dir]/linux-devkit/sysroots/i686-arago-linux/usr/bin 我更新了我的$PATH与该目录: mike @ mike-VirtualBox:〜$ echo $ PATH /home/mike/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin:/ usr / local / Trolltech /Qt-4.8.5/bin:/home/mike/bin:/usr/lib/lightdm/lightdm:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin目录:/ bin中:在/ usr /游戏:/首页/麦克风/箱 然后我根据最接近的例子创build了自己的mkspec: cp […]

如何用QEMU和KGDBdebuggingLinux内核?

我已经能够使用以下方式启动一个基于powerpc的系统(MPC8544DS具体)来调用qemu(v1.7.0) qemu-system-ppc -M mpc8544ds -m 512 -kernel zImage -s -nographic -initrd busyboxfs.img -append "root=/dev/ram rdinit=/bin/sh kgdboc=ttyS0,115200 kgdbwait" 其中zImage是一个自定义交叉编译的Linux Kernel(v2.6.32),它已经启用并编译了KGDB(用于启动代码debugging),而busyboxfs.img是基于busybox的rootfs。 因为我使用-s标志到Qemu,所以我可以使用cross gdb插入到内核中,如下所示: (gdb) target remote localhost:1234 Remote debugging using localhost:1234 mem_serial_in (p=<value optimized out>, offset=5) at drivers/serial/8250.c:405 405 } 但是,如果我删除-s标志并试图通过/dev/ttyS0破解内核,它会给我一个权限被拒绝的错误: (gdb) set remotebaud 115200 (gdb) target remote /dev/ttyS0 permission denied 是因为它被Qemu所控制吗? 另外,在互联网上的例子中,kgdboc已经被设置为ttyAMA0 ,我已经理解了代表AMBA总线,这是基于ARM的系统特有的。 我们有类似的PowerPC吗? 我在这里做错了什么?

PerlEmbed – C# – Mono – Linux

有没有人尝试在Mono Linux上使用perlembed? 这是链接: perlembed 这是我第一次尝试DllImport签名: private const string PERL_LIB = "/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so"; [DllImport(PERL_LIB, EntryPoint = "perl_alloc", SetLastError = true)] public static extern IntPtr Alloc(); [DllImport(PERL_LIB, EntryPoint = "perl_construct", SetLastError = true)] public static extern void Construct(IntPtr hPerl); [DllImport(PERL_LIB, EntryPoint = "perl_destruct", SetLastError = true)] public static extern void Destruct(IntPtr hPerl); [DllImport(PERL_LIB, EntryPoint = "perl_free", SetLastError = […]

构build一个makefile依赖/inheritance树

道歉,如果我解释这很糟糕,或者要求出血明显,但我是Linux内核的新手,有点在深处… 我们有一个embedded式Linux系统,这个系统包含一个非常糟糕的SDK,其中包含数百个文件夹,大多数文件夹包含一个rules.make,make,make.config或者一些变体,而根文件夹包含一个“master”makefile&rules.make,这意味着你可以从根文件夹中input“make sysall”,然后构build整个包。 到目前为止这样好,但试图debugging它是有点问题,因为文档会说: “ 要让内核输出debugging消息,只需定义#outputdebugmessagesplz ” 好的,但是这些东西中的一些是在“master”make / rules文件中定义的,其中一些是在子make / rules / config文件中定义的,一些是在.h文件中定义的。当然,它更好打开/closures这些东西从“顶部”make.config而不是修改个别.h文件,然后必须记得再次closures它们。 所以我认为从主“make”文件开始recursion地构build一个树,并遵循它所做的一切,定义或重新定义的所有东西,等等,但是似乎并没有一个简单的方法呢? 我假设我缺less一个“make”选项,把这个信息吐出来,或者只是makefile / config的用法。

交叉编译PHP

我已经下载了PHP 5.4.0源代码,将其解压缩并移入源文件夹。 我做了一个configuration: ./configure –build=x86_64-unknown-linux-gnu –host=arm-linux-uclibcgnueabi –prefix=/usr/arm/www CC="arm-linux-uclibcgnueabi-gcc –sysroot=/toolchains/gnu_cortex-a9_tools/" –disable-libxml –disable-dom –without-iconv –without-openssl –disable-simplexml –disable-xml –disable-xmlreader –disable-xmlwriter –without-pear –without-sqlite3 –disable-pdo –without-pdo-sqlite –disable-phar –with-config-file-path=/etc/ 其次是 make 没有错误,一切运行良好。 接下来我做一个make install。 make install 再次,一切运行良好。 我将它移动到目标平台并运行 /usr/arm/www/bin/php -v PHP 5.4.0 (cli) (built: Aug 15 2012 16:07:41) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend […]

想要将整数转换为没有itoafunction的string

我想在C中转换int to char *而不使用itoa()函数。 因为在我的Linux系统我itoafunction不存在。 我正在使用这个代码,我从这里find 我想在使用Linux的embedded式设备上运行这个function。 所以我正在寻找不使用itoa 。 我不想使用sprintf也因为它的用途只是打印。 所以任何机构请帮我找出这个问题。 谢谢