Questions tagged «embedded»

在嵌入式计算机系统(例如网络设备,移动电话,媒体播放器,机顶盒等)中使用Unix。

2
整理RAM / OOM故障
这个问题相当冗长,因此我将在顶部询问问题,然后逐一探讨提出问题的方法: (基于Busybox的)rm是否没有执行,因为没有足够的连续RAM? 如果是这样,是否有一种轻巧的方法来对DMA进行碎片整理-无需重新启动系统? 如果不是,是什么原因造成的?我如何防止它将来发生? 在过去几天中我们的测试系统相当密集地运行之后,我通过telnet进入系统并检查了测试结果。当我删除一些数据时,系统返回了命令行(就像命令已正确执行一样)。当我检查目录是否有另一组结果时,我看到该文件仍然存在(使用ls)。 此后,我注意到越来越多的shell命令无法按预期执行。 rm无法正确执行后,我将从dmesg的输出开始: 从进程6821(rm)分配长度61440失败 DMA每个CPU: CPU 0:嗨:0,btch:1 usd:0 Active_anon:0 active_file:1 inactive_anon:0 inactive_file:0无法清除:6脏:0回写:0不稳定:0空闲:821平板:353映射:0页表:0反弹:0 DMA空闲时间:3284kB分钟:360kB低点:448kB高位:540kB active_anon:0kB inactive_anon:0kB active_file:4kB inactive_file:0kB不可撤销:24kB当前:8128kB pages_scanned:0 all_unreclaimable?没有 lowmem_reserve []:0 0 0 DMA:31 * 4kB 47 * 8kB 42 * 16kB 64 * 32kB 1 * 64kB 0 * 128kB 0 * 256kB 0 * …
11 linux  memory  embedded 

1
如何为Beagleboard构建从头开始的Cross Linux从头开始的GCC交叉编译器(CLFS)?
目前,我尝试按照Scratch的Cross Linux的说明从头开始构建嵌入式Linux 。 一切正常,直到我尝试编译GCC交叉编译器。我想为Beagleboard-xM构建Linux。因此,我选择了以下设置: export CLFS_ABI="aapcs-linux" export CLFS_HOST="x86_64-cross-linux-gnu" export CLFS_TARGET="armv7a-unknown-linux-uclibceabi" export CLFS_ARCH="arm" export CLFS_ENDIAN="little" export CLFS_ARM_ARCH="armv7" export CLFS_ARM_MODE="arm" export CLFS_FLOAT="hard" export CLFS_FPU="neon" 否,一旦我尝试运行此页面上的说明,该命令就会make all-gcc all-target-libgcc出错。 checking for armv7a-unknown-linux-uclibceabi-gcc... /mnt/clfs/sources/gcc-build/./gcc/xgcc -B/mnt/clfs/sources/gcc-build/./gcc/ -B/mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/bin/ -B/mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/lib/ -isystem /mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/include -isystem /mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/sys-include checking for suffix of object files... configure: error: in `/mnt/clfs/sources/gcc-build/armv7a-unknown-linux-uclibceabi/libgcc': configure: error: cannot compute …

4
随时断电可安全使用SD卡
我们正在开发一个小型嵌入式Linux系统(2.6.35英寸),该OS具有一个较小的内部NAND设备用于OS和应用程序(250-500Meg),以及一个带有8Gb SDHC SD卡的SD卡用于数据存储。 可以随时切断设备电源。 系统必须将数据存储到SD卡。这些数据非常重要……这是系统的全部目的。系统通常与远程位置的任何网络完全断开连接,并且每隔4-8周通过运动网检索一次数据。 目前,我们只是在SD卡上安装了VFAT。这主要是因为第一个测试客户端可以轻松地将数据手动复制到他们的Win7笔记本电脑上。 但是,我现在担心在错误的时间断电导致数据丢失只是时间问题。 配置这样的系统以防止数据丢失的最佳方法是什么?JFFS2听起来像我想要的数据写入方式(并且对性能的要求根本不高),但是使用block2mtd听起来很笨拙,等等。我也不确定卡的损耗平衡如何相互作用用它。 最好的方法是什么? 编辑 我现在正在考虑离开文件系统VFAT,并一次分配大小为0xFF的日大小文件,这应该大大限制了关机后再启动的风险。然后,我只能将记录追加到这些预先创建的块中,并且希望SD卡不是那么愚蠢,以至于它们会将擦除/耗损级别写入到0xFF区域中。 我可以使用noatime,但是是否有等效的VFAT nomtime来防止写入修改后的时间字段?我需要某种方法来阻止任何元数据更新,直到创建新的一天的文件为止。 编辑2 电子堆栈交换上的某人提醒我,NAND上也有ECC数据,因此无法防止擦除。 那么,通过block2mtd进行JFFS2在这种情况下是否合适? 编辑3 比我想的还要糟。即使您将完全相同的内容写入磁盘,我拥有的SD卡也会擦除数据块。擦除块为64KB,太大,无法完全延迟写入。我将在一种日志中将多达128KB的数据存储在NAND闪存(我可以控制其写入行为)中,然后将128KB的块写入SD卡上VFAT分区中的128KB对齐的文件中(在(如果其他SD卡具有128KB擦除块)。

1
通过qemu在Debian armel上运行Debian i386二进制文件
我试图按照该指南在运行Debian armel的SheevaPlug上设置Ventrilo服务器。该页面指出,我可以使用QEMU在arm系统上运行为i386制作的二进制文件。 qemu的安装程序说我需要安装qemu,qemu-user和qemu-libc-i386。我在apt-get中找到了前两个,但是qemu-libc-i386不是软件包。所以我试图运行qemu来运行ventrilo服务器,如下所示: # qemu-i386 ./ventrilo_srv /lib/ld-linux.so.2: No such file or directory 看来这ld-linux.so.2是我在armel中拥有的i386版本ld-linux.so.3。 因此,我知道该如何使用另一种Linux发行版,但是,如果他们可以在他们的疯狂发行版中运行,我似乎应该能够在Debian中运行它。有没有可以安装libc-i386的软件包,因此可以运行该软件包(类似于x64系统的ia32-libs?),我也尝试so.2从另一个i386系统复制该软件包,但没有得到我的帮助。任何地方。
10 debian  embedded  arm  qemu 

2
永不中断的文件系统(可接受数据丢失)
关于这个问题有几个现有的话题,但是我所寻求的略有不同。我在嵌入式Linux上有SD卡,它会掉电。我也许可以在某个时候修改硬件,正确关闭硬件等等,但是等等,但是现在,我只是想找到一个在断电后仍能正常工作的文件系统。数据丢失是可以接受的。我宁愿不丢失比当前正在写的文件更多的信息,但我还是宁愿丢失所有文件,也不愿面对“无法装载”,“等待10分钟fsck”或“无法创建新文件”。文件由于此inode出现了一些错误”。该程序必须继续! 为了确保这一点,我正在付出很多努力。我使用的是工业级组件,有硬件看门狗,软件看门狗,内部,外部,用于重新启动程序的init,不断检查内存,文件描述符的守护程序等等,我有看门狗看我的看门狗,而这些看门狗又会监视其他看门狗...但是我似乎无法保证SD卡能够安装并正常运行? 目前,我最好的选择是在SD卡上使用JFS,在我的安装中包括fsck和fsck.jfs。(添加600kb +占用了我的ram和flash。这是不好的。)并在每次启动时运行fsck(可能会增加很多启动时间。这有些不好。)。不过似乎有点难过。 有谁知道更好的方法或更好的文件系统? 更新:e2fsprogs-libs(对jfsutils的依赖)在我的发行版中似乎很难编译。我将研究ZFS(不过,它并不是我的发行版中的本机。它似乎做了很多我不需要的事情。) UPDATE2:有关我的系统和测试的更多信息:SD卡存储是辅助的可选存储。SD卡是2Gb-8Gb工业级microSD。SD卡是通过我的rc使用mount -t命令安装的。选项“ noatime”,但不“ sync”。我的发行版是一个定制的Analog Device风格的uClinux,具有3.10内核和1.21 busybox。我的主要存储是带有jffs2的spi闪存。我从来没有任何问题。我什至不知道是否有fsck.jffs2可用。另一方面,南德(Nand)闪过光芒……但这是另一回事。SD卡的用途是存储测量数据。“监控”程序会将结果附加到文件中,并具有策略性的同步放置。当文件超过给定大小时,将创建一个新文件。当达到给定数量的文件时,最早的文件将被删除。如果当前的测量文件由于掉电而丢失,那就没有灾难了。文件通常为50-100kb,1个结果通常为1kb。这只是初始开发阶段。没有固定的东西。这是我第一次处理嵌入式系统中的非闪存文件系统。(我在x86服务器上使用了ext4。) 我从vfat开始。默认文件系统。(我认为工厂可能有选择它的理由。如果一切正常,我并不是很在乎。)我从未见过嵌入式vfat设备中的任何断电问题。我在WinCE中遇到了FAT问题。但是,当我的“监视”程序达到100-200个文件时,它拒绝再创建文件。似乎FAT在根目录中有一个特殊的文件限制问题,在子目录中有一个稍大的文件限制问题。我需要能够在1个目录中创建500-1000个文件。所以vfat不会。 然后我切换到ext2。我没有在启动时插入fsck。(不知道我必须这样做。)由于出现“ inode something something”错误,一天之内,我的“监控”程序无法创建更多文件。灾害! 我当前的解决方案是在启动时使用“ e2fsck -y”的ext2。到目前为止,这似乎很有希望。但是e2fsck和“启动时fsck”的整个概念困扰着我。e2fsck本身就花费了超过350kb的主闪存和ram。(当它不运行时。)这意味着这是我最大的程序。它比busybox大。它几乎可以与我的内核媲美。 我一直在考虑ext3。它具有日志化的元数据,不会受到伤害。我对此有多大帮助还不确定。我的小文件和可控同步文件应该被覆盖吗?它具有有序的写入顺序。这意味着数据也有日志记录。但是,这可能导致不确定的滞后。在我的情况下,这很糟糕。(这可能不是问题。)它还具有计划的同步功能。例如。每5秒提交一次。我认为这干扰了我自己的同步。太多的写入操作对SD卡不利。甚至工业的。我找不到有关如何禁用此功能的任何文档。ext3 仍然需要在每次启动时都运行fsck!但是ext3仍然是可能的。 分机4。将解决ext3的许多性能问题。不过我真的不需要性能。而且我的发行版似乎没有内置的mkfs.ext4和fsck.ext4。也许这不是问题。可能会。例如。e2progs-libs(对jfsutils的依赖)似乎有很多编译问题。 JFS,XFS,BRFSS。我的内核都支持。当前未包含在我的用户空间工具框中。一切似乎都是相当大的,复杂的系统。而且它们似乎都在启动时需要“ fsck”等效项吗? 我还考虑过抛出自己的文件系统:始终写入文件表的2个副本。遍历时,它将选择具有正确CRC和最新序列号的一个。进行两个阶段的写入序列。临时分配,修复提交。无需fsck。恐怕这可能会有些天真。 UPDATE3:顺便说一句,嵌入式系统(至少是嵌入式系统)的本质是它们是自治的,无人看管的,遥不可及的,并且它们必须运行多年。诸如fsck之类的程序可能需要人与人之间的交流,使我无所适从。

4
在SmartTV上运行Linux?
我最近买了三星SmartTV。设置wifi连接后,我浏览了http://ip.comlex.de,它为我提供了有关浏览器的以下信息: REMOTE_ADDR:###。###。###。### REMOTE_HOST:XXXXXXXXXXXXXXXXXXX.net REQUEST_TIME:1381093040 QUERY_STRING: HTTP_ACCEPT:text / html,application / xhtml + xml,application / xml,application / vnd.hbbtv.xhtml + xml,application / ce-html + xml,application / vnd.oipf.xhtml + xml; q = 0.9,/ ; q = 0.8 HTTP_ACCEPT_CHARSET:HTTP_ACCEPT_ENCODING:gzip,缩小 HTTP_ACCEPT_LANGUAGE:HTTP_REFERER:http://pagerank.comlex.de/ HTTP_USER_AGENT:Mozilla / 5.0(SMART-TV; X11; Linux i686)AppleWebKit / 535.20 +(KHTML,例如Gecko)版本/5.0 Safari / 535.20 + 因此,是否有HTTP_USER_AGENT建议的在SmartTV上运行的Linux?如何找到有关所用Linux的更多信息?我可以以某种方式从台式机登录电视吗? 可能的解决方案:http …

4
哪种文件系统可以提供最好的保护,以保护数据免于因断电而损坏?
我运行一个小的uClibc和busybox一个x86设备上基于嵌入式系统。我使用的是initramfs,但是我也在ext3IDE模式下将自定义目录安装在紧凑型闪存设备上,该目录用于存储由自定义编写的c ++应用程序创建的持久性测量记录数据。我选择了ext3文件系统,因为在读过的几本书中(在Karim Yaghmour 撰写的《构建嵌入式Linux系统》和Christopher Hallinan 撰写的《Embedded Linux Primer》)中,在IDE模式下使用CF驱动器时,建议使用该文件系统来防止电源丢失。这尤其重要,数据也很关键。 但是,由于我上一个问题中的一些评论,即在文件写入过程中发生断电时如何还原损坏的ext3文件的混淆,看来实际上该文件系统不能提供防止由于电源引起的数据损坏的安全性的保证。失利。所以我想知道 是否ext3实际上是这个设置的最佳选择? 光盘写入操作期间的断电是否只会定期破坏我要追加到文件中的部分数据,还是会破坏整个文件? 断电时未写入的数据是否完全安全?特别是,我的initramfs.cpio文件也可能会损坏吗? 我是否可以在应用程序代码中使用任何方法来保护数据(即创建一个额外的分区并将数据写入镜像,以便始终有2个副本)-对于我的应用程序而言,速度并不是真正的问题,因此复制操作成本很高是可以接受的。 我已经阅读并阅读了以下相关问题的答案:日志文件系统是否可以保证在电源故障后不会损坏?,但并没有涵盖使我感到困惑的某些事情。 我意识到我在问很多问题,但似乎尽管阅读了很多材料,但是在断电的情况下,我还是根本无法理解我的数据所带来的风险。

3
开源路由器固件选项?
存在哪些为路由器设计的发行版?请包括以下内容 链接到项目页面 链接到支持的硬件列表 他们有什么区别,为什么选择此选项 友好的网页界面? 以上友好的界面容易被禁用? 最初未安装的软件的软件包管理?(例如ipkg / opkg) 好的文档?

6
Linux可编程控制器
我正在寻找用于家庭自动化和一般娱乐项目的可编程Linux控制器。 要求: 控制电器-开/关开关和调光器(可能使用继电器) 从传感器接收模拟和数字数据(开关,温度等) USB连接 运行Linux 优点: 网络连接/ Web界面 Python支持 小显示屏 键盘和VGA支持 过去,我使用Handy Board玩得很开心,但是几个月前它就坏了,而且缺少许多重要功能。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.