D-link Boxee set-top-box is available for pre-order on amazon for 199 USD. It can only be pre-ordered to addresses in the US for now and shipments should start in November. D-Link disclosed that its device is based on an Intel Atom processor CE4100 (Sodaville), not an ARM or MIPS processor as many other STBs do. It is running on embedded Linux. Key features listed by D-Link for the device (beside its weird shape) are basically those of the Boxee media-streaming software on which it’s based: Enjoy thousands of shows available for free from your favorite networks, ready to watch at any time Check-out free movies from the web & watch new releases in stunning HD from premium movie services Play videos, songs, or pictures from your computer or home network Plays any non-DRM video, music, and photos and media from anywhere on the Internet The device features the following input/output and […]
ViewSonic Android Tablet: ViewPad 7
Lots of Android Tablet were shown at IFA 2010 in Berlin. The most hyped was Samsung Galaxy Tab. Charbax has lot of videos about different devices. Among them, ViewSonic Viewpad 7 seems to be worth looking at with Android 2.2, #G, Wifi, video calling, capacitive touch screen and a retail price that should be 399 Euros. It actually seems to be doing all what the pricey Samsung tablet is doing (except lower camcorder resolution). On the hardware side, it is most likely using Qualcomm MSM7227 (ARM11). Jean-Luc Aufranc (CNXSoft)Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011. www.cnx-software.com
Digital Signage: Implementing a smooth scrolling text
Many digital signage hardware feature scroll text. However, in many cases the scrolling text is either not smooth, sometimes teared or very slow. It may depends on the performance of the hardware used but also on the implementation of the software. Once easy way to implemented scrolling text is just to redraw the text again and again at different position. However, this is very slow and yields poor results unless maybe you have a Truetype accelerator or similar hardware font accelerator. The next step is then to convert the text into pixmaps. This can either be done in the digital signage manager software (Windows PC/MAC or Linux based) or the digital signage player. Doing so in the latter makes it much more flexible. So you may create 2 pixmaps whose width and length match the region to be displayed, you write the text on those 2 pixmaps, then simply move […]
Android Tablet Review: Augen Gentouch 2
Soldierknowsbest reviewed the Augen Gentouch 2 (same as Augen Gentouch 78 ??), one of the first Android tablet available (Cost around 150 USD). Basically, his advice is to avoid it, the device is terrible: poor touch screen (resistive), no multitouch, navigation requires to use external buttons, Android Market not working, some dodgy battery usage… On the hardware side, Augen Gentouch uses Telechips 8902 @ 600 Mhz, 256MB DDR2, 2GB Internal Storage, Wifi etc… Jean-Luc Aufranc (CNXSoft)Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011. www.cnx-software.com
Media Player based on SMP8653 – Magic Box HDP500
Magic Box HDP500 manufactured by gmini (apparently a Russian company) is a new media player featuring the 500-Mhz SMP8653 chipset from Sigma Designs. It does not use Android OS yet, and as far I know no company has yet released SMP8653 Android based products. Having said that, it comes with most of the connectivity you would expect from a decent set-top box: USB connector (device: USB storage,host: laptop/PC connection), Audio/Video Composite ouput, Component (YPbPr) output, HDMI and optical digital audio output and and Ethernet port. On the software side, it is a full featured 1080p media player, with video, music and picture galleries, Internet Radio, UPnP support… It could also be used as a NAS with the USB host connection to your PC. The missing features are: no support for digital TV (e.g. DVB-T, DMB-TH), no Wifi support, no web applications/web browser, no movie download (BT/Emule), no Real media video […]
Enabling swap in embedded systems
If your embedded system running Linux does not have enough memory, you can enable swap to get more memory. However if your platform does not have MMU (Memory Management Unit) as is the case for Sigma Designs EM8620 series, it won’t support swap, so forget it. If your platform does have MMU, as is the case for many newer platforms such as Sigma Designs SMP8630, SMP8640 and SMP8650 series, you can enable swap support. First you’ll have to make sure swap support is enabled in your kernel:
1 2 |
CONFIG_SWAP=y CONFIG_SWAP_PREFETCH=y |
and swapon/swapoff is enabled in busybox. So for example if you have an IDE harddisk with the second partition configured as swap. (Use fdisk to create a partition and mkswap /dev/hda2 to initialize the partition), you can enable the swap as follows:
1 |
swapon /dev/hda2 |
If you get out-of-memory killer kernel error, you can change the “swapiness” to avoid oom-killer to kick in.
1 |
echo 0 > /proc/sys/vm/mapped |
[…]
How to do a framebuffer screenshot
I’ll explain how to do framebuffer screenshots on 16-bit and 32-bit framebuffer. For 16-bit this is fully based on http://docs.blackfin.uclinux.org/doku.php?id=framebuffer Capturing screenshots Whatever the bit-depth of your framebuffer, the first step is to capture the frambuffer raw data on the board:
1 |
cat /dev/fb0 > screen.raw |
Now the you need to take the raw image, and convert it to a standard image format. This step depends on what type of display is there Converting 16-bit Framebuffer screenshot (RGB565) into png To convert the raw rgb data extracted from /dev/fb0, use iraw2png perl script
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/usr/bin/perl -w $w = shift || 240; $h = shift || 320; $pixels = $w * $h; open OUT, "|pnmtopng" or die "Can't pipe pnmtopng: $!\n"; printf OUT "P6%d %d\n255\n", $w, $h; while ((read STDIN, $raw, 2) and $pixels--) { $short = unpack('S', $raw); print OUT pack("C3", ($short & 0xf800) >> 8, ($short & 0x7e0) >> 3, ($short & 0x1f) << 3); } close OUT; |
To do the conversion, type the following command in the host:
1 |
./iraw2png 640 480 < screen.raw > screen.png |
where 640 and 480 are respectively the width and height of your framebuffer. This has been tried on a 16-bit framebuffer on EM8620 series. Converting 32-bit Framebuffer screenshot (ARGB, RGBA, BGRA…) into png The solution proposed here is not as neat as the blackfin’s solution for 16-bit framebuffer, […]
uClinux kernel panic: Stack overflow
If you’re using ucLinux, you may get kernel panic errors coming out of nowhere. There may be several reasons (buffer overflow, out of memory..), but the most common is stack overflow for the process or one of the threads. To increase the stack size of a flat binary you’ll need to adjust the LDFLAGS as follows:
1 |
LDFLAGS+=-Wl,-elf2flt="-s65536" |
This will set the stack size to 64KB. To change the stack size of a thread (e.g. 32KB below), you’ll need to set the stack size attribute:
1 2 3 4 5 6 7 |
pthread_attr_init(&attr); err = pthread_attr_setstacksize(&attr, 32*1024); if (err) { printf("pthread_attr_setstacksize returned non-zero: %s\n", strerror(errno)); } err = pthread_create(&pthThread, &attr, thread, NULL); |
How to detect which thread suffers from stack overflow? First, you can check your code for recursive function calls and local variables (especially arrays) both of which will be added at runtime to the stack to estimate what should be the stack size. So if you have large arrays you may use a pointer + a call to malloc instead. If this can not fix […]