PicoMOD6/Linux development state and releases

  • We are currently porting Linux to the PicoMOD6. Different to the previous boards (NetDCU5.2/6/8/9/10/11, PicoMOD1, PicoCOM1/2), this is not done by our partner company emlix anymore. Instead we are doing this directly at F&S now. This means two major changes compared to the previous emlix releases:


    • You always get the full Linux version when buying a Starterkit, no limited Evaluation BSP and no expensive Professional BSP anymore, just one Linux BSP at the same price as the Windows CE Starterkit.
    • The BSP will be based on BuildRoot.


    Please refer to this posting to get more information about this.


    We already had two pre-releases. They were mainly intended for special customers and provided the basic infrastructure, i.e. Linux kernel with device drivers and a basic root file system with tools and runtime environment to be stored on the board.


    V0.1 (08.12.2009)

    • Kernel

      • Support for serial (ttySAC2)
      • Support for Ethernet
      • Support for USB 1.1 Host (HID, Mass Storage)
      • Support for MTD (NAND-Flash), RAM disks and loopback devices
      • Filesystems: EXT2, EXT3, NFS, TMPFS, VFAT, JFFS2, CRAMFS
      • Framebuffer (incl. virtual consoles)
      • Support for I2C
      • Support for RTC
      • LCD 640x480 TFT (LG.Philips LB064V02 and compatible)


    • BuildRoot root file system

      • Based on uCLibc and separate toolchain
      • Busybox
      • DirectFB
      • MPlayer


    V0.2 (09.02.2010)

    • Kernel

      • Improved serial support (ttySAC0, ttySAC1)
      • Support for SD/SDIO/MMC-Card
      • Support for SPI
      • Support for CAN (Socket-CAN, via SPI1)
      • Support for second USB 1.1 Host port
      • Support for Backlight-PWM
      • Support for touch (however accidentally not activated in the supplied kernel image)


    • BuildRoot root file system

      • Added Qt libraries
      • Additional root file system image with Java & JavaVM instead of Qt (added 18.03.2010)


    The Java system is working quite good, a customer is reporting that his pre-compiled 3MB application worked right away.


    Currently we are porting the remaining device drivers and trying to make the BSP more consistent. As we have to build up the whole board and development infrastructure from bottom up, it takes a little longer until our first F&S Linux BSP is released in its final official version. However we are making good progress. And we are extending the support for additional applications. For example we already had our first OpenGL sample program running, saw our first webcam images on the display and hardware acceleration for video decoding with GStreamer is on its best way, too. We are also switching BuildRoot to take the same toolchain that we also use to compile the Linux kernel. This requires quite a lot modifications in the BuildRoot build process, especially as this also moves the underlying C-library from uCLibc to glibc.


    Outlook on the next release

    • Kernel

      • Support for Video for Linux (V4L2)
      • Improved CAN driver talking directly to SPI (instead of via SPI driver)
      • Support for on-board MicroSD card slot (board revision 1.2)


    • BuildRoot root file system

      • Based on glibc and the same toolchain that is used for the kernel
      • Use udev (that is Busybox mdev) for dynamic device creation
      • GStreamer library enhanced to use hardware acceleration for video decoding of H.264, VC1, WMV9
      • MPlayer supports tv:// urls
      • Support for USB cameras (UVC standard)
      • OpenGL-ES 2.0 support for hardware accelerated 3D applications (including vertex shaders and fragment shaders written in OpenGL Shader Language)


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Here is an update on the current state of the PicoMOD6 Linux-BSP.


    We are making good progress on the software side. New features of the upcoming release will be:


    • Audio support
    • GStreamer with accelerated video (and of course audio)
    • DirectFB with accelerated 2D graphics
    • Small video player application (for H.264 videos)
    • OpenGL ES 2.0 support


    And the board is really really fast. We have a combined OpenGL/Video decoder demo with a rotating cube where two faces show a static image, but the other four faces show two different (!) videos, of course decoded and rendered in parallel in real time. And nonetheless we still get an average frame rate of nearly 40 fps at VGA display resolution (640x480 pixels), never going below 30fps!!! Decoding a H.264 video alone, with full VGA video resolution, can show up to 60 fps.


    The 2D acceleration ind DirectFB is about two to three times faster than the software solution (depending on the graphic primitive, df_dok benchmark of DirectFB) and if alpha blending is used, it is even up to 17 times faster (e.g. when filling rectangles)!!!


    Our next big goal is the release now. Here we want to switch to Buildroot 2010.05 first (currently 2010.02) and then gather the changes that accumulated in the last few weeks. And of course write some documentation. Then by the end of July, we're planning to have the first official release.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • We are in fact nearly done with the next release. Let me tell what happened in the last few weeks.


    When we checked the reason, why U-Boot could not access the flash data that was written by NBoot (the stepstone bootloader, NBoot is short for "NAND-Boot"), it became clear that NBoot was in a rather terrible state. NBoot is a software that was ported by our hardware people rather quickly from board to board, mainly to get the new board running in the first place. This resulted in code that was more and more difficult to handle with every new board. Now was the time to make a cut and we decided to overhaul the code comprehensively. In the end, we now have a more or less completely rewritten NBoot with a whole bunch of new features. However this development caused a delay of about six weeks to the Linux project and adding another two weeks of holidays during the summer, this is the two months that we are late.


    But we're again making good progress with the next release. All flash memory problems are solved, and even Linux can access the flash data via MTD now. Currently we are working on making the display configuration as easy as possible and on joining the different kernel versions of our developers that have worked on different parts (drivers, etc.).


    So please be patient for a few more days and then the next release will be online.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Well, we are done. The development for the PicoMOD6 V1.0 release is finished. On Monday we'll just have to rebuild all the packages one last time to see if everything is OK, then we'll create the change logs and put everything on the server. So thanks again for your patience.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • The new release V1.0 is now online. Please note that you have to update NBoot and U-Boot to be able to use the new features. How this is done can be found in the README.txt.


    Here is a list of changes from V0.2 to V1.0:


    • NBoot V08 (Oct 04 2010)
      Completely rewritten

      • Determines load address of bootloader automatically (allows WinCE & Linux in any configuration)
      • Can detect type of loaded image (EBoot, U-Boot, old NBoot (before V08), new NBoot, NProg, SD-Boot)
      • New user interface, depending completely on the type of loaded image
      • Command 'f' will now save the currently loaded image to the correct place in NAND, no matter what type of image
      • Serial loading of binary images outputs size information while loading
      • Serial loading times out after one minute if no data is received
      • Serial loading of binary images now recognizes files that are too long or too short and will fail gracefully in these cases
      • Serial loading now supports the new binary format with F&S prefix header for all types of images, allowing shorter, unpadded files
      • Loading from SD Card (command 'c') searches for eboot.nb0, uboot.nb0, u-boot.bin and uboot.bin now (in this order), not only eboot.nb0
      • Bootloader files loaded from SD Card may be shorter than 256KB, making padding to 256KB unnecessary (especially useful for uboot.bin)
      • New command 'P' to load NBoot from SD Card (FAT)
      • New command 'S' to store NBoot to SD Card (raw mode, allows booting directly from SD Card with appropriate external configuration)
      • Errors for bootloader image loaded from NAND are not only detected, but 1-bit errors are also corrected without causing a failure
      • Error detection for NBoot image loaded from NAND now actually works; errors are not only detected, but up to eight 1-bit errors are actually corrected without causing a failure
      • When writing NBoot image to NAND, the image is also read back and verified, reducing the risk of an unbootable board
      • Erase command for NAND flash now works without errors
      • New command 'B' to show list of bad blocks
      • Bad blocks are also recognized if the bad block marker is in page #1, not only in page #0; this is required by newer flash chips
      • Blocks are now actually marked bad if erasing or writing of data fails (only main bootloader image with 1-bit ECC); bad blocks are never touched anymore (even 'E' will skip them)
      • New unmark command 'U' to erase flash and clear all bad block markers (dangerous, bad block information is irretrievably lost)
      • Command 'x' can now also directly run a loaded NBoot image (useful for NBoot development)
      • Improved progress, warning and error messages
      • New command 'A' can execute actions stored in a file "action.txt" on the SD Card, allowing automatic installation of NBoot and bootloader (experimental code, still needs improvement)
      • NBoot can detect whether it was started from NAND or SD Card and automatically loads the second stage from the same device; this makes a special SD-Boot version of NBoot obsolete in the future
      • Improved and optimized NAND code, SD Card code and other library code
      • Completely new makefile system allowing better mapping of modules to stage 1 and stage 2; no "make clean" necessary for different targets, all targets are built in separate subdirectories



    • U-Boot V1.0 (18.10.2010)

      • Added support for USB host (USB hubs and mass storage devices)
      • Added support for FAT filesystems (ported back from u-boot-2010.09 and enhanced)
      • Changed spare area layout to match the layout of NBoot, added ECC-8 support for NBoot region
      • Access to NBoot and U-Boot regions now actually works
      • Added new default partitions NBoot, UBoot and UBootEnv; this moves the TargetFS to /dev/mtdblock5 in Linux
      • Increased Kernel partition from 2MB to 3MB
      • Added software protection for NBoot partition to avoid accidental erasing, e.g. when calling "nand erase" without further parameters:

        Code
        1. nand nboot [protect | unprotect]


      • Placed environment fix in NAND, removed support for MoviNand and OneNand (not required on PicoMOD6); this reduced the image size considerably
      • Reduced environment to 16KB; this allows for a bad block
      • Added support for sntp command (time synching with time server)
      • Removed command "reginfo" as it only produces empty output on ARM
      • Aligned strings when calling "help"
      • Added new environment variables for easy switching between NFS and local boot and for testing kernels:

        Code
        1. run bootnfs --> switch to NFS boot (TargetFS mounted via NFS)
        2. run bootlocal --> switch to local boot (TargetFS loaded from NAND)
        3. run r --> download & start kernel without storing to NAND


      • Added target "make uboot.nb0" to create image file that is padded to 256KB (required for NBoot); this target is also automatically built when calling "make" without any arguments
      • Removed some debug strings that accidentally slipped into the previous releases



    • Linux Kernel V1.0 (18.10.2010)

      • Support for sound
      • Improved CAN access (backported from kernel 2.6.33; now requires ip program of iproute2 package V2.6.33 to set baud rate)
      • Support for Micro-SD slot on PicoMOD6 Rev 1.20
      • New /dev/fs-mem to allow access to kernel memory buffers (required for efficient video acceleration support)
      • Support for standard analog resistive touch
      • Support for QT18C11 (QTouch) and QT602240 (MaxTouch) capacitive touch
      • Kernel can take MTD partition table from U-Boot (mtdparts)
      • MTD access to all PicoMOD6 NAND partitions (incl. U-Boot & NBoot)
      • New built-in display drivers: LQ050, TX09D70, G104SN02, TCG104SVL, TCT104VG2
      • Optimized configuration (drivers available as modules, unneeded features and debug messages removed, kernel size < 1.7MB now)



    • BuildRoot V1.0 (18.10.2010), based on BuildRoot 2010.08

      • Root filesystem built with external toolchain (based on glibc)
      • Supported packages: BusyBox, gstreamer, MPlayer, DirectFB, iproute2
      • Support for mdev (udev implementation from BusyBox)
      • BusyBox reconfigured for better PicoMOD6 support
      • Support for ip program (from iproute2 package) to set baud rate for CAN driver
      • Newer DirectFB version 1.4.6 than in standard BuildRoot 2010.08
      • Hardware 2D acceleration for DirectFB
      • Hardware video acceleration for gstreamer
      • TV-in support for MPlayer
      • Newer iproute2 version 2.6.33 than in standard BuildRoot 2010.08
      • Removed bug that happened with "make source" and external toolchain in standard BuildRoot 2010.08
      • Support to add additional libraries (OpenGL, libgcc, libstdc++) to root filesystem
      • Support to add kernel modules to root filesystem
      • Available as modified download package, including PicoMOD6 configuration (buildroot-2010.08-f+s-V1.0.tar.bz2)


    Some things we had to postpone to the next release as it would have delayed this release too long:


    • The easy display configuration in U-Boot is still missing
    • The feature in BuildRoot to select additional kernel modules and libraries to be included in the root filesystem uses a static configuration right now. Therefore it will only work with the provided kernel modules. In the future it will be possible to integrate any self compiled kernel with BuildRoot by calling a small utility program or script.


    The documentation is also still missing, but this is developed independently from the software releases. We will have a first version soon and then we'll improve in rather quick increments. For now we have updated the README.txt file.


    In the next few days we will also add a few more examples.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • In the last few days, we have added some examples to the web site. So if you want to see what really can be done with this platform, try fsplayer and fsplayer-gl. You'll not be disappointed. The other examples are a little less spectacular, but they show how to access several features of the board. If there is a README.txt included in the package, read this to see how the examples are run. Otherwise in the smaller examples, the instructions are included in the source file(s).


    • backlight
      Small program showing how to set the backlight brightness (if connected via PWM).



    • fsplayer
      Small video player for raw H.264 video streams (no sound). Frame rate, size and position can be set on the command line. Some video samples and the source code of the player are included. Please read the README.txt of fsplayer to see how to run the samples and how to encode videos to be played with this player.



    • fsplayer-gl
      Small OpenGL demo application showing a rotating cube where two faces show a BMP image and the four other faces show two different videos. Of course everything is decoded, scaled and rendered in realtime. The source code, the OpenGL headers and libraries, two sample images and two sample H.264 videos are included.



    • gpio
      Small program showing how to access GPIO pins from user space via the /sys filesystem.



    • gstreamer
      Some sample programs showing how to play sound and/or videos with gstreamer and hardware acceleration. A sample video (MPEG4, .avi format) is included.


    We are also reworking the CAN examples soon so that they'll run with the new CAN version of V1.0 again.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • As promised we have updated the CAN examples on the server. In fact the four program files remain the same, but there was a library and an additional header file missing and by adding a Makefile, building these examples is much easier now.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Right now we are very busy about preparation for Embedded World exhibition in Nuremberg.


    We will release a new BSP version after Embedded World. Please check the PicoMOD6/Linux development state and releases
    thread to get information about progress.

    F&amp;S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Any news on the updates ?
    Specifically, being able to boot from USB would be really useful to us.
    Failing that, has the nboot / uboot from October 2010 be put into production boards yet ? At least if new boards were supplied with this I could automate programming using the serial port. At the moment I can't do this since the boot loaders need updating too.
    Thanks.

  • We are currently overhauling U-Boot. This means the new display selection, configuration and drawing support (incl. bootscreen, etc.) will come, automatic installation support and FAT/VFAT improvements. We also heard about problems with some USB sticks in U-Boot and will be looking into it. However this is work in progress and not yet done. Especially the display driver is quite a lot of work as it should support most features of the controller hardware and also should be easily ported to new hardware (PicoCOM3&4, PicoMOD7, etc.). To support all these U-Boot features, also the Linux display driver needs improvements.


    Besides that we also have a new toolchain. So all in all there are some larger changes. We expect the next release in about four weeks, give or take a few days.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Today we have released a new Linux version V1.1 for the PicoMOD6. This is a major rework of U-Boot, adding several new features like LCD driver, draw commands, autoload feature, mmc support and many enhancements. The other parts only got small improvements, mainly bug fixes. But we also have a new toolchain that avoids some problems with BuildRoot that we had with the older toolchain.


    Here is a list of changes from V1.0 to V1.1.


    • U-Boot V1.1 (07.06.2011)
      Major rework

      • New MMC driver for MMC/SD-Cards, supports external SD-Slot (mmc 0) and on-board Micro-SD-Slot (mmc 1); use after mmcinit
      • New environment variables autoload, autoaddr, autommc and autousb to allow automatic start of an autoscript file from SD-Card or USB stick; this can be used to automatically install software and is therefore enabled by default (clear variables if not wanted)
      • New command line parser to allow quoting with "..." and '...'; this also keeps several words grouped as one argument
      • New LCD driver with up to five overlay windows with arbitrary size, position; support for alpha blending and color keying and 14 different pixel formats (1, 2, 4, 8 bpp with color map, and up to 28 bits per pixel RGBA-8884 truecolor)
      • New command "lcd" to set and show all display parameters
      • New command "win" to set and show all window parameters
      • List of predefined LCD panels (rather short now, but will be expanded in the future)
      • New command "cmap" to handle color maps
      • New command "fbpool" to handle the framebuffers of the windows
      • New commands "draw" and "adraw" to draw pixels, lines, frames, filled rectangles, circles, filled discs, turtle polygons, text, bitmaps and four different test images; draw simply stores the alpha value to the window, adraw directly applies alpha to the current window content.
      • Support for BMP and PNG bitmaps; bitmaps can be grouped to "multi-bitmaps" and each individual bitmap can be accessed; bitmaps can be drawn with double width and/or double height
      • Text can have attributes bold, inverse, underline, strike-through, double width, double height and transparent; however only one font with 8x16 pixels is available
      • New command "bminfo" to list infos of the bitmaps in a multi-bitmap
      • Improved console devices to support different consoles; e.g. there can be a console on each LCD window
      • New automatically generated environment variables "lcd" and "win0" to "win4" holding the current LCD and window configuration. These can be used to permanently store the display settings.
      • New environment variable "splashcmd" that is executed after initalizing the display, e.g. to show a splash screen (boot logo)
      • Console settings (stdin, stdout, stderr) can be stored in the environment; useful if the console should not appear on the LCD
      • Using the MMU now; however the data cache is not enabled by default as the USB driver will not work then; you can say "dcache on" to enable the data cache manually
      • Support for FAT media without partition table; handle FAT16 root directory correctly
      • Timing is now correct (was way too fast); this also improves USB stick recognition
      • New highly optimized memory functions in assembler (memcpy, memmove, memset, memset32)
      • Compiler now optimizes code for ARMv6 (ARM11)
      • Several small fixes, no compiler warnings anymore
      • Several fixes to reduce memory footprint
      • Removed some unnecessary debug messages
      • Removed serial download (loadb and loads); this was necessary to keep the U-Boot binary size below 256KB.



    • Linux Kernel V1.1 (07.06.2010)

      • Real Time Clock (RTC) consumed too much power from the battery
      • Improved CAN access
      • Sound codec now also works as module
      • Backlight starts with maximum, not minimum brightness
      • Improved settings for capacitive touches QT18C11 and QT602240



    • BuildRoot V1.1 (07.06.2011), based on BuildRoot 2010.08

      • Avoid non-buildroot paths in gst-plugins-ugly patch for PicoMOD6
      • Use correct switch "--without_normal" to compile ncurses without static libs
      • Added another small patch for tslib-1.0
      • Added comments to mdev.conf
      • Provide a prototype in toolchain/toolchain-external/ext-tool.mk to remove ncurses from toolchain if using old Samsung toolchain



    • Toolchain

      • New F&S crosscompiler toolchain based on GCC 4.4.3. This has no built-in packages, so we hopefully don't have any conflicts with BuildRoot anymore like we had with ncurses in V1.0.


    As always look into the README.txt for installation and usage information. But as the improvements in U-Boot were so significant, we have added a separate text file NewUBootCommands.txt that shows all the new commands and features. Please have a look there, too. All this text stuff will find its way into a PDF documentation hopefully soon.


    This is sort of an interim release. We have very good LCD support in U-Boot now, but we still miss a corresponding driver in Linux. This will come with the next release in a few weeks.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • You will find V1.1 on our download area.

    F&amp;S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Yes, I know that. My question is when will PicoMod6 be shipped from F&S with the new nboot and uboot already installed ?
    Until that time, we still have to manually update nboot and uboot which is inconvenient. When F&S ship the boards with the new bootloaders, I just need to issue production with USB sticks with the right scripts on and they can program the systems without special software tools / RS232 etc.
    Thanks for your reply.