Tag Info

Hot answers tagged

10

SQLite's small size and levels of completeness, stability & speed make it a popular choice for low-resource environments, which embedded systems usually are. It is used by parts of the current iPhone, Android and Symbian phone operating systems for this reason. You might want to add some details to your question to get more specific answers: do you know ...


8

BDB (libdb) has historically been the embedded database of choice for many applications, shipping with most UNIXes and used by lots of software. If you're accustomed to SQL relational databases, though, BDB is not one - it is simply a (really good) key-value store. SQLite is a different popular embedded database. As the name implies, it is a SQL database ...


8

As with all things pertaining to security, there aren't any guarantees, but you also need to balance risk (and cost) against probability. From experience (and I've been running dozens of *nix boxen since the dark ages), I've never really had significant power-caused filesystem corruption. Some of these machines were even running on non-journalled ...


7

Let's check a few figures for mainstream distributions (i386 binaries): Debian lenny: cdebootstrap -f minimal lenny lenny-minimal produces 77MB. Add ~30MB for the package lists. About 9MB is documentation (/usr/share/doc, /usr/share/man), and about 25MB is locale data; you can remove these (but upgrades will bring the files back). This includes a minimal ...


7

You can easily extract the encrypted password with awk. You then need to extract the prefix $algorithm$salt$ (assuming that this system isn't using the traditional DES, which is strongly deprecated because can be brute-forced these days). correct=$(</etc/shadow awk -v user=bob -F : 'user == $1 {print $2}') prefix=${correct%"${correct#\$*\$*\$}"} For ...


7

Devices most likely get a file in /dev/input/ named eventN where N is the various devices like mouse, keyboard, jack, power-buttons etc. ls -l /dev/input/by-{path,id}/ should give you a hint. Also look at: cat /proc/bus/input/devices Where Sysfs value is path under /sys. You can test by e.g. cat /dev/input/event2 # if 2 is kbd. To implement use ...


6

Is not so powerfull as a normal PC, but you should try arduino platform. You can buy a great and cheap unit here: http://www.libelium.com/ Google a little bit about arduino and you will find a lot of references and a big community


6

If you have a watchdog on your system and a driver that uses /dev/watchdog, all you have to do is kill the process that is feeding it; if there is no such process, then you can touch /dev/watchdog once to turn it on, and if you don't touch it again, it will reset. You also might be interested in resetting the device using the "magic sysrq" way. If you have ...


6

Having a watchdog on an embedded system will dramatically improve the availability of the device. Instead of waiting for the user to see that the device is frozen or broken, it will reset if the software fails to update at some interval. Some examples: Linux System http://linux.die.net/man/8/watchdog VxWorks (RTOS) ...


5

On Debian, there are apt-cross and dpkg-cross from Emdebian, which let you set up cross-compilation for many architectures (you get cross-compilers and libraries). On Ubuntu, there's a crosschain for ARM, and a project to improve on this. You can also create toolchain using crosstool-ng which is not link to a distribution.


5

Not knowing your price range, I suggest Gumstix. The boards are quite expensive, but very powerfull, especially with the ATmel Robostix expansion board. I suggest the Robostix Starter Pack, this should get you going programming with Gumstix.


5

Use the sysfs control files in /sys/class/gpio. The following links will hopefully be useful to helping you get started: http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO Have seen reports of this article on the Beagle Board also working with the mini2440: http://blog.makezine.com/archive/2009/02/blinking_leds_with_the_beagle_board.html In ...


5

Actually google did more writing an app platform / virtual machine system to run on top of linux than they did modifying linux. They basically just used it as a base to build off of, they hardly had to touch it. As for your question, just start doing things. Get yourself some linux distros, install them on your computers or in VM's, learn your way around ...


5

Jason Huggins gave a fantastic talk at PyCon 2012 that described, in great detail, a robot that could play "Angry Birds" on the phone: Worth watching the talk, it was very entertaining. Most importantly, the plans for the hardware and software of the core toolkit, BitBeam, are online in a github repo. I'm sure it would give you a great start.


4

A relatively popular boot loader for embedded devices is Uboot: http://www.denx.de/wiki/view/DULG/Introduction http://sourceforge.net/projects/u-boot/ The Uboot project originated from Germany; Uboot sounds like submarine in German, so the name sounds somewhat funny for German ears. I hope I didn't tell you something obvious.


4

The only NAT that an IPIP tunnel might work with is one-to-one NAT, which is clearly not what you have in the cellular case. This "150 bytes/second for an open SSH connection" business is very strange and you should investigate. No such thing happens for me with OpenSSH -> OpenSSH sessions (there's the unavoidable keepalives, but you actually WANT those ...


4

Damn Small Linux is the only off-the-shelf 50MB distribution that I know of. It is vaguely debian-ish so one can use apt and friends if needed.


4

OpenWrt is a powerful distribution for open source routers. It supports for a lot of devices. A 2.6er kernel, an 2.4 is available, too. The web-interface is surprisingly useful, e.g. it supports switching between normal and advanced mode, in the advanced mode it supports more options and transactions for a set of configuration changes. It can be easily ...


4

I managed to solve my problem using two steps: The first was to get rid of the null at the start of the line in inittab which just allows errors to be seen on the console. This revealed that the error was to do with /proc/mounts. I changed inittab so that the ::sysinit:/bin/mount -t proc /proc came above the remount,rw / stuff and it's now ok. The mystery ...


4

It could be a missing dependency. Notably you'll get that type of message if the runtime linker ("program interpreter") set in the ELF header does not exist on your system. To check for that, run: readelf -l your_executable|grep "program interpreter" If what it gives you does not exist on your system, or has missing dependencies (check with ldd), you'll ...


4

Well, the way you can fix this is to fix the "power can be cut at any time" problem. Is it impossible to add even a minute of battery power? Alternatively, maybe you could use two SD cards. Write the data to one card, sync, write to the other. Each block of your data would need a checksum and block number, but then even with some pretty unlucky power ...


4

Those customer devices run custom operating systems, or a highly-customized embedded Linux or other UNIX-type OS; sometimes not even Bash and ncurses are included. It's unlikely that you will be able to run your custom scripts (specially after the PlayStation 3/Linux situation), unless you can get more documentation about them - which might be quite ...


4

Perhaps the easiest way is to use your netbook - just because you don't have to filter out unrelated traffic later. You can use tcpdump to dump all traffic on your ethernet device. After starting up tcpdump you connect your equipment. After nothing flashes any more you disconnect it and you can look at the dump with wireshark. The dump should contain ...


4

System Management Mode is not the only thing that makes x86 bad at hard real time. The unpredictability of the execution speed due to caches, pipelines and so on makes x86, and any other high-end processor, bad at real time. All these features that make a processor fast on average also make the worst case difficult to manage. The current generation of ARM ...


4

It's taken a bit of time, but I thought I'd hold off answering until I had answers to all 3 of my sub-questions. Before I start though, I will mention that the correct term when it comes to "de-fragmenting" working memory is referred to "compacting" working memory. 1. Did rm not execute because there wasn't enough contiguous RAM? I was correct in my ...


4

BSD-licensed systems (e.g. FreeBSD) do not require you to disclose source code, thus they might be a feasible choice. Also, there are comercial UNIXes like QNX, but they probably will be quite expensive. As for Red Hat, you are not paying for the distro per se, you are paying for support and consulting. The source code of all the packages is available for ...


4

A Linux distribution consists of many pieces. All the pieces that are based on software licensed under the GNU GPL and other copyleft licenses must have the code source released. For example, if you ship something built on a Linux kernel, you must provide the Linux kernel source as well as any patch that you have made to the kernel source (however, for the ...


4

Yes, it is a strong solution, but powerfull! Making r/o useable You have to mount some directories in rw, like /var, /etc and maybe /home. This could by done using aufs or unionfs. I like this another way, using /dev/shm and mount --bind: cp -a /var /dev/shm/ mount --bind /dev/shm/var /var You could before, move all directories who have not to change in ...


4

That is distribution specific, but a few things I can think of: /etc/mtab, /etc/adjtime and /etc/resolv.conf are typical files that may need modified. /etc/motd and /etc/issue might be as well. cups updates some of its configuration files by itself as well. Some things might want to create a nologin file in /etc as well. In most instances, you should be ...


4

The first error is because you're passing both -H newc and -c. You have to make up your mind on the format of the archive you want to generate. The "Operation not permitted" is a bug in GNU cpio, it's passing wrong arguments to the function that outputs that error message and should exit there. The other errors are because you're not running that command as ...



Only top voted, non community-wiki answers of a minimum length are eligible