Embedded Linux practical labs with the Beagle Board

Beagle boardGet valuable embedded Linux experience using our practical labs on a Beagle Board.

We were asked to customize our embedded Linux training session with specific labs on OMAP 3530 hardware. After a successful delivery on the customer site, using Beagle boards, here are our training materials, released as usual under the terms of the Creative Commons Attribution-ShareAlike 3.0 license:

  • Lecture slides (PDF, ODF): the same slides as in our embedded Linux sessions.
  • Practical labs (PDF, ODF), with specific instructions for the Beagle Board.
  • Training agenda: (PDF, ODF)

If you are the happy owner of such a board (both attractive and cheap), or are interested in getting one, you can get valuable embedded Linux experience by reading our lecture materials and by taking our practical labs.

Here’s what you would practise with if you decide to take our labs:

  • Build a cross-compiling toolchain with crosstool-NG
  • Compile U-boot and the X-loader and install it on MMC and flash storage.
  • Manipulate Linux kernel sources and apply source patches
  • Configure, compile and boot a Linux kernel for an emulated PC target
  • Configure, cross-compile and boot a Linux kernel on your Beagle Board
  • Build a tiny filesystem from scratch, based on BusyBox, and with a web server interface. Practice with NFS booting.
  • Put your filesystem on MMC storage, replacing NFS. Practice with SquashFS.
  • Put your filesystem on internal NAND flash storage. Practice with JFFS2 too.
  • Manually cross-compile libraries (zlib, libpng, libjpeg, FreeType and DirectFB) and a DirectFB examples, getting familiar with the tricks required to cross-compile components provided by the community.
  • Build the same kind of graphical system automatically with Buildroot.
  • Compile your own application against existing libraries. Debug a target application with strace, ltrace and gdbserver running on the target.
  • Do experiments with the rt-preempt patches. Measure scheduling latency improvements.
  • Implement hotplugging with mdev, BusyBox’s lightweight alternative to udev.

Note that the labs were tested with Rev. C boards, but are also supposed to work fine with Rev. B ones. You may also be able to reuse some of our instructions with other boards with a TI OMAP3 processor.

Of course, if you like the materials, you can also ask your company to order such a training session from us. We will be delighted to come to your place and spend time with you and your colleagues.

About Michael Opdenacker

Michael Opdenacker is the founder of Free Electrons. He is best known for all the free embedded Linux and kernel training materials that he created together with Thomas Petazzoni. He is always looking for ways to increase performance, reduce size and boot time, and to maximize Linux' world domination. More details...
This entry was posted in Hardware, News, Technical, training and tagged , , , . Bookmark the permalink.

20 Responses to Embedded Linux practical labs with the Beagle Board

  1. Maciej Wasiel says:

    Hi,
    I’m following your lab instructions and, like some other people on the web who have followed this tutorial, I’ve run into a problem when booting a cross-compiled kernel on my beagle board where the boot process stops after busybox starts up. The following is the serial output:

    Texas Instruments X-Loader 1.4.4ss (Aug 8 2010 – 14:57:52)
    Beagle Rev C4
    Reading boot sector
    Loading u-boot.bin from mmc

    U-Boot 2010.06-00267-gb1f95b4 (Aug 08 2010 – 15:08:09)

    OMAP3530-GP ES3.1, CPU-OPP2 L3-165MHz
    OMAP3 Beagle board + LPDDR/NAND
    I2C: ready
    DRAM: 256 MiB
    NAND: 256 MiB
    In: serial
    Out: serial
    Err: serial
    Board revision Ax/Bx
    Die ID #7c4e000400000000040373050f01300b
    Hit any key to stop autoboot: 0
    mmc1 is available
    reading boot.scr

    ** Unable to read “boot.scr” from mmc 0:1 **
    reading uImage

    2291592 bytes read
    Booting from mmc …
    ## Booting kernel from Legacy Image at 82000000 …
    Image Name: Linux-2.6.35-rc6-dirty
    Image Type: ARM Linux Kernel Image (uncompressed)
    Data Size: 2291528 Bytes = 2.2 MiB
    Load Address: 80008000
    Entry Point: 80008000
    Verifying Checksum … OK
    Loading Kernel Image … OK
    OK

    Starting kernel …

    Uncompressing Linux… done, booting the kernel.
    Linux version 2.6.35-rc6-dirty (mwasiel@mwasiel-desktop) (gcc version 4.3.2 (crosstool-NG-1.4.2) ) #1 Mon Aug 9 01:21:59 EDT 2010
    CPU: ARMv7 Processor [411fc083] revision 3 (ARMv7), cr=10c53c7f
    CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
    Machine: OMAP3 Beagle Board
    Memory policy: ECC disabled, Data cache writeback
    OMAP3430/3530 ES3.1 (l2cache iva sgx neon isp )
    SRAM: Mapped pa 0×40200000 to va 0xfe400000 size: 0×100000
    Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024
    Kernel command line: console=ttyS2,115200n8 vram=12M omapfb.mode=dvi:1024x768MR-16@60 omapfb.debug=y omapdss.def_disp=dvi root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait
    PID hash table entries: 1024 (order: 0, 4096 bytes)
    Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
    Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
    Memory: 128MB 128MB = 256MB total
    Memory: 255252k/255252k available, 6892k reserved, 0K highmem
    Virtual kernel memory layout:
    vector : 0xffff0000 – 0xffff1000 ( 4 kB)
    fixmap : 0xfff00000 – 0xfffe0000 ( 896 kB)
    DMA : 0xffc00000 – 0xffe00000 ( 2 MB)
    vmalloc : 0xd0800000 – 0xf8000000 ( 632 MB)
    lowmem : 0xc0000000 – 0xd0000000 ( 256 MB)
    modules : 0xbf000000 – 0xc0000000 ( 16 MB)
    .init : 0xc0008000 – 0xc00d9000 ( 836 kB)
    .text : 0xc00d9000 – 0xc043d000 (3472 kB)
    .data : 0xc043e000 – 0xc046f8c0 ( 199 kB)
    Hierarchical RCU implementation.
    Verbose stalled-CPUs detection is disabled.
    NR_IRQS:402
    Clocking rate (Crystal/Core/MPU): 26.0/332/500 MHz
    omap_hwmod: l3_hwmod: cannot be enabled (3)
    omap_hwmod: l4_core_hwmod: cannot be enabled (3)
    omap_hwmod: l4_per_hwmod: cannot be enabled (3)
    omap_hwmod: l4_wkup_hwmod: cannot be enabled (3)
    Reprogramming SDRC clock to 332000000 Hz
    GPMC revision 5.0
    IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts
    Total of 96 interrupts on 1 active controller
    OMAP GPIO hardware version 2.5
    OMAP clockevent source: GPTIMER12 at 32768 Hz
    Console: colour dummy device 80×30
    Calibrating delay loop… 489.46 BogoMIPS (lpj=1912832)
    pid_max: default: 32768 minimum: 301
    Mount-cache hash table entries: 512
    CPU: Testing write buffer coherency: ok
    regulator: core version 0.5
    NET: Registered protocol family 16
    Found NAND on CS0
    Registering NAND on CS0
    Unable to get DVI reset GPIO
    OMAP DMA hardware revision 4.0
    bio: create slab at 0
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    i2c_omap i2c_omap.1: bus 1 rev3.12 at 2600 kHz
    twl4030: PIH (irq 7) chaining IRQs 368..375
    twl4030: power (irq 373) chaining IRQs 376..383
    twl4030: gpio (irq 368) chaining IRQs 384..401
    regulator: VUSB1V5: 1500 mV normal standby
    regulator: VUSB1V8: 1800 mV normal standby
    regulator: VUSB3V1: 3100 mV normal standby
    twl4030_usb twl4030_usb: Initialized TWL4030 USB module
    regulator: VMMC1: 1850 3150 mV at 3000 mV normal standby
    regulator: VDAC: 1800 mV normal standby
    regulator: VDVI: 1800 mV normal standby
    regulator: VSIM: 1800 3000 mV at 1800 mV normal standby
    i2c_omap i2c_omap.3: bus 3 rev3.12 at 100 kHz
    Switching to clocksource 32k_counter
    musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=0
    musb_hdrc musb_hdrc: USB OTG mode controller at fa0ab000 using DMA, IRQ 92
    NET: Registered protocol family 2
    IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
    TCP established hash table entries: 8192 (order: 4, 65536 bytes)
    TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
    TCP: Hash tables configured (established 8192 bind 8192)
    TCP reno registered
    UDP hash table entries: 256 (order: 0, 4096 bytes)
    UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    NET: Registered protocol family 1
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    NetWinder Floating Point Emulator V0.97 (double precision)
    VFS: Disk quotas dquot_6.5.2
    Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
    msgmni has been set to 498
    alg: No test for stdrng (krng)
    io scheduler noop registered
    io scheduler deadline registered
    io scheduler cfq registered (default)
    Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
    serial8250.0: ttyS0 at MMIO 0x4806a000 (irq = 72) is a ST16654
    serial8250.1: ttyS1 at MMIO 0x4806c000 (irq = 73) is a ST16654
    serial8250.2: ttyS2 at MMIO 0×49020000 (irq = 74) is a ST16654
    console [ttyS2] enabled
    brd: module loaded
    loop: module loaded
    usbmon: debugfs is not available
    ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
    ehci-omap ehci-omap.0: OMAP-EHCI Host Controller
    ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 1
    ehci-omap ehci-omap.0: irq 77, io mem 0×48064800
    ehci-omap ehci-omap.0: USB 2.0 started, EHCI 1.00
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 3 ports detected
    i2c /dev entries driver
    TCP cubic registered
    NET: Registered protocol family 17
    NET: Registered protocol family 15
    Power Management for TI OMAP3.
    VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 1
    regulator_init_complete: incomplete constraints, leaving VDVI on
    regulator_init_complete: incomplete constraints, leaving VDAC on
    drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
    Freeing init memory: 836K
    init started: BusyBox v1.4.1 (2007-04-20 15:26:03 CEST) multi-call binary
    Starting pid 346, console /dev/ttyS2: ‘/etc/init.d/rcS’
    mmc0: new high speed SD card at address 0007
    mmcblk0: mmc0:0007 SD02G 1.90 GiB
    mmcblk0: p1

  2. Maciej Wasiel says:

    Found the solution to my post above. ttyS0 has to be changed to ttyS2 in fwlabs/sysdev/xkernel/data/rootfs/etc/inittab file when using initramfs.

  3. vamsi says:

    hi,
    i got the beagleboard-xM recently and following your manual to boot up the board.
    i am tryin to make the boot image on a new MMC card.
    i copied the MLO file, uboot.bin(from mkimage) and uImage to the FAT partition. however the board doesnt read from MMC when i turn it on.are there any other files that have to be copied onto the board.i would greatly appreciate your response.

    Thanks,
    Vamsi

  4. abhishek kunwar says:

    Hi’
    While booting 2.6.35.8 kernel on beagleboard-xm (A3) I got this kernel panic :
    Detailed error:
    Root-NFS: No NFS server available, giving up.
    VFS: Unable to mount root fs via NFS, trying floppy.
    VFS: Cannot open root device “nfs” or unknown-block(2,0)
    Please append a correct “root=” boot option; here are the available partitions:
    b300 3870720 mmcblk0 driver: mmcblk
    b301 3863601 mmcblk0p1
    Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

    I am passing root=/dev/nfs but I don’t know how to solve this issue.

    • Passing root=/dev/nfs is not sufficient, you also need to pass the ip= and nfsroot= options. Moreover, your NFS server must be set up appropriately on your development workstation.

  5. Pragnya says:

    Hello sir,

    I installed the latest angstrom demo image on beagleboard rev C4 using
    SD card. Logged in as root. Pico projector is connected to HDMI port
    and shows the login screen. I have a serial port connected with tera
    term pro and a mouse and keyboard connected to beagleboard. I can play
    the included BigBunny movie on pico projector.
    Now my project aim is to use this beagle board as an interface between my system and DLP Pico Projector to configure the projector using i2c commands.
    so when i type the following command to check for i2c buses on beagle board it isa displaying the below lines..

    root@beagleboard:/dev# ls i2c*
    -sh: i2c bus not found

    What does it mean? Is that mean the drivers are not there ?
    Please help me in finding out what is the problem and what i need to do.
    Thank you in advance.

  6. thala says:

    VFS: Cannot open root device “nfs” or unknown-block(2,0)
    What does it mean? Is that mean the drivers are not there ?
    Please help me in finding out what is the problem and what i need to do.
    Thank you in advance.

    • Hi,

      This kind of error typically happens when root filesystem support over NFS is not available, or if the kernel failed to mount the root filesystem for multiple reasons.

      Could you post the few lines that appeared before this final error?

      Michael.

  7. John says:

    Hi,
    I followed the lab instructions to build a rootfs (busybox-1.19.4) and ended up with the following kernel panic while booting from an mmc card:
    Kernel panic – not syncing: No init found. Try passing init= option to kernel.

    My bootcmd is listed below:
    mmc rescan 0
    setenv bootargs ‘console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait’
    setenv bootcmd ‘fatload mmc 0 0×80300000 uImage ; bootm 0×80300000′
    bootd

    I have also tried passing the following values to init in my bootcmd but the error still persists:
    init=linuxrc, init=/linurc, init=/sbin/init.

    The following is the serial output:

    1924680 bytes read
    ## Booting kernel from Legacy Image at 80300000 …
    Image Name: Linux-2.6.32
    Image Type: ARM Linux Kernel Image (uncompressed)
    Data Size: 1924616 Bytes = 1.8 MiB
    Load Address: 80008000
    Entry Point: 80008000
    Verifying Checksum … OK
    Loading Kernel Image … OK
    OK

    Starting kernel …

    Uncompressing Linux………………………………………………………………………………………………………… d.
    Linux version 2.6.32 (john@john-MacBookPro) (gcc version 4.4.3 (crosstool-NG 1.13.0) ) #1 Thu Dec 29 01:08:15 PST 2011
    CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7f
    CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
    Machine: OMAP3 Beagle Board
    Memory policy: ECC disabled, Data cache writeback
    OMAP3630 ES1.0 (l2cache iva sgx neon isp )
    SRAM: Mapped pa 0×40200000 to va 0xfe400000 size: 0×100000
    Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048
    Kernel command line: console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait
    PID hash table entries: 2048 (order: 1, 8192 bytes)
    Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    Memory: 256MB 256MB = 512MB total
    Memory: 515712KB available (3300K code, 299K data, 124K init, 0K highmem)
    Hierarchical RCU implementation.
    NR_IRQS:402
    Clocking rate (Crystal/Core/MPU): 26.0/332/600 MHz
    Reprogramming SDRC clock to 332000000 Hz
    GPMC revision 5.0
    IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts
    Total of 96 interrupts on 1 active controller
    OMAP GPIO hardware version 2.5
    OMAP clockevent source: GPTIMER12 at 32768 Hz
    Console: colour dummy device 80×30
    Calibrating delay loop… 492.62 BogoMIPS (lpj=1925120)
    Mount-cache hash table entries: 512
    CPU: Testing write buffer coherency: ok
    regulator: core version 0.5
    NET: Registered protocol family 16
    Found NAND on CS0
    Registering NAND on CS0
    OMAP DMA hardware revision 5.0
    bio: create slab at 0
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    i2c_omap i2c_omap.1: bus 1 rev4.0 at 2600 kHz
    twl4030: PIH (irq 7) chaining IRQs 368..375
    twl4030: power (irq 373) chaining IRQs 376..383
    twl4030: gpio (irq 368) chaining IRQs 384..401
    regulator: VUSB1V5: 1500 mV normal standby
    regulator: VUSB1V8: 1800 mV normal standby
    regulator: VUSB3V1: 3100 mV normal standby
    twl4030_usb twl4030_usb: Initialized TWL4030 USB module
    regulator: VMMC1: 1850 3150 mV normal standby
    regulator: VDAC: 1800 mV normal standby
    regulator: VPLL2: 1800 mV normal standby
    regulator: VSIM: 1800 3000 mV normal standby
    i2c_omap i2c_omap.3: bus 3 rev4.0 at 100 kHz
    Switching to clocksource 32k_counter
    musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=0
    musb_hdrc: USB OTG mode controller at fa0ab000 using DMA, IRQ 92
    NET: Registered protocol family 2
    IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
    TCP established hash table entries: 16384 (order: 5, 131072 bytes)
    TCP bind hash table entries: 16384 (order: 4, 65536 bytes)
    TCP: Hash tables configured (established 16384 bind 16384)
    TCP reno registered
    NET: Registered protocol family 1
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    NetWinder Floating Point Emulator V0.97 (double precision)
    VFS: Disk quotas dquot_6.5.2
    Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    JFFS2 version 2.2. (NAND) �© 2001-2006 Red Hat, Inc.
    msgmni has been set to 1007
    alg: No test for stdrng (krng)
    io scheduler noop registered
    io scheduler anticipatory registered (default)
    io scheduler deadline registered
    io scheduler cfq registered
    omapfb: configured for panel omap3beagle
    omapfb: DISPC version 3.0 initialized
    Console: switching to colour frame buffer device 128×48
    omapfb: Framebuffer initialized. Total vram 1572864 planes 1
    omapfb: Pixclock 64000 kHz hfreq 59.0 kHz vfreq 76.9 Hz
    Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
    serial8250.0: ttyS0 at MMIO 0x4806a000 (irq = 72) is a ST16654
    serial8250.1: ttyS1 at MMIO 0x4806c000 (irq = 73) is a ST16654
    serial8250.2: ttyS2 at MMIO 0×49020000 (irq = 74) is a ST16654
    console [ttyS2] enabled
    brd: module loaded
    loop: module loaded
    usbmon: debugfs is not available
    ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
    ehci-omap ehci-omap.0: OMAP-EHCI Host Controller
    ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 1
    ehci-omap ehci-omap.0: irq 77, io mem 0×48064800
    ehci-omap ehci-omap.0: USB 2.0 started, EHCI 1.00
    usb usb1: configuration #1 chosen from 1 choice
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 3 ports detected
    i2c /dev entries driver
    TCP cubic registered
    NET: Registered protocol family 17
    NET: Registered protocol family 15
    Power Management for TI OMAP3.
    VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    regulator_init_complete: incomplete constraints, leaving VDVI on
    regulator_init_complete: incomplete constraints, leaving VDAC on
    drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
    Waiting for root device /dev/mmcblk0p2…
    usb 1-2: new high speed USB device using ehci-omap and address 2
    usb 1-2: configuration #1 chosen from 1 choice
    hub 1-2:1.0: USB hub found
    hub 1-2:1.0: 5 ports detected
    mmc0: new high speed SD card at address 1234
    mmcblk0: mmc0:1234 SA02G 1.81 GiB
    mmcblk0: p1 p2
    kjournald starting. Commit interval 5 seconds
    EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
    EXT3 FS on mmcblk0p2, internal journal
    EXT3-fs: recovery complete.
    EXT3-fs: mounted filesystem with writeback data mode.
    VFS: Mounted root (ext3 filesystem) on device 179:2.
    Freeing init memory: 124K
    Kernel panic – not syncing: No init found. Try passing init= option to kernel.

    – John

    • santhosh says:

      Hi,

      Cross check bootloader environment variables are set properly.

      Check your file system path in bootloader environment variables.

      If possible, Please share the uboot environment variables.

      @uboot prompt type “printenv” command, send the details.

      Regards,
      Santhosh

  8. Jerzy says:

    Hi,
    Recently, I played a little with emulating BB on Qemu. I’ve :
    Ubuntu 11.10
    Ubuntu native Qemu version 0.15.50 with beagle emulating capability
    X-loader v. 1.41
    U-boot-2011.09
    I started with ext2 ramdisk RFS.
    I downloaded bb_nandflash.sh and bb_nandflash_ecc.c and prepared nand image like this :
    bb_nandflash.sh x-load.bin.ift nand.bin x-loader
    bb_nandflash.sh u-boot.bin nand.bin u-boot
    bb_nandflash.sh uImage nand.bin kernel
    bb_nandflash.sh rootfs.ext2 nand.bin rootfs
    bb_nandflash_ecc nand.bin 0×0 0×1000000

    I started Qemu
    sudo qemu-system-arm -M beagle -m 128M -nographic -mtdblock nand.bin

    Everything worked fine but
    1. What about U-boot commandes history on Qemu?
    2. U-boot saveenv doesn’t work after Qemu rebooting.

    Next I tried jffs2 RFS prepared with aid of Buildroot (no cleanmakers, page 2k and 128k eraseblock)
    Like above, I preapared nand image
    bb_nandflash.sh x-load.bin.ift nand.bin x-loader
    bb_nandflash.sh u-boot.bin nand.bin u-boot
    bb_nandflash.sh uImage nand.bin kernel
    bb_nandflash.sh rootfs.jffs2 nand.bin rootfs
    bb_nandflash_ecc nand.bin 0×0 0×1000000

    And started Qemu
    sudo qemu-system-arm -M beagle -m 128M -nographic -mtdblock nand.bin

    Texas Instruments X-Loader 1.41
    Starting OS Bootloader…
    U-Boot 2011.09 (May 09 2012 – 14:38:11)
    OMAP35XX-GP ES3.1, CPU-OPP2, L3-165MHz, Max CPU Clock 600 mHz
    OMAP3 Beagle board + LPDDR/NAND
    I2C: ready
    DRAM: 128 MiB
    NAND: 256 MiB
    MMC: OMAP SD/MMC: 0
    *** Warning – bad CRC, using default environment
    ERROR : Unsupport USB mode
    Check that mini-B USB cable is attached to the device
    In: serial
    Out: serial
    Err: serial
    Beagle Rev C4
    No EEPROM on expansion board
    Die ID #51454d5551454d555400000051454d55
    Net: Net Initialization Skipped
    No ethernet found.
    Hit any key to stop autoboot: 0

    I stopped U-boot and started kernel boot from nand
    Uboot> run nandboot

    Card did not respond to voltage select!
    Booting from nand …

    NAND read: device 0 offset 0×280000, size 0×400000
    4194304 bytes read: OK

    ## Booting kernel from Legacy Image at 80200000 …
    Image Name: Linux-2.6.32.59
    Image Type: ARM Linux Kernel Image (uncompressed)
    Data Size: 1916960 Bytes = 1.8 MiB
    Load Address: 80008000
    Entry Point: 80008000
    Verifying Checksum … OK
    Loading Kernel Image … OK
    OK Starting kernel …

    Uncompressing Linux……………………………………………………………………………………………………….. done, booting the kernel.

    Linux version 2.6.32.59 (builder@NX5000) (gcc version 4.4.6 (crosstool-NG 1.13.4) ) #1 Tue May 22 00:02:44 CEST 2012
    CPU: ARMv7 Processor [412fc083] revision 3 (ARMv7), cr=10c53c7f
    CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
    Machine: OMAP3 Beagle Board
    Memory policy: ECC disabled, Data cache writeback
    OMAP3430 ES3.1
    SRAM: Mapped pa 0×40200000 to va 0xe3000000 size: 0×100000
    Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
    Kernel command line: console=ttyS2,115200n8 mpurate=auto buddy=none camera=none vram=12M omapfb.mode=dvi:640x480MR-16@60 omapdss.def_disp=dvi root=/dev/mtdblock4 rw rootfstype=jffs2
    PID hash table entries: 512 (order: -1, 2048 bytes)
    Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
    Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
    Memory: 128MB = 128MB total
    Memory: 125980KB available (3284K code, 296K data, 120K init, 0K highmem)
    Hierarchical RCU implementation.
    NR_IRQS:402
    Clocking rate (Crystal/Core/MPU): 13.0/332/500 MHz
    Reprogramming SDRC clock to 332000000 Hz
    GPMC revision 5.0
    IRQ: Found an INTC at 0xd8200000 (revision 4.0) with 96 interrupts
    Total of 96 interrupts on 1 active controller
    OMAP34xx GPIO hardware version 2.5
    OMAP clockevent source: GPTIMER12 at 32768 Hz
    Console: colour dummy device 80×30
    Calibrating delay loop… 173.81 BogoMIPS (lpj=677888)
    Mount-cache hash table entries: 512
    CPU: Testing write buffer coherency: ok
    regulator: core version 0.5
    NET: Registered protocol family 16
    Found NAND on CS0
    Registering NAND on CS0
    OMAP DMA hardware revision 4.0
    bio: create slab at 0
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    i2c_omap i2c_omap.1: bus 1 rev3.12 at 2600 kHz
    twl4030: PIH (irq 7) chaining IRQs 368..375
    twl4030: power (irq 373) chaining IRQs 376..383
    twl4030: gpio (irq 368) chaining IRQs 384..401
    regulator: VUSB1V5: 1500 mV normal standby
    regulator: VUSB1V8: 1800 mV normal standby
    regulator: VUSB3V1: 3100 mV normal standby
    twl4030_usb twl4030_usb: Initialized TWL4030 USB module
    regulator: VMMC1: 1850 3150 mV normal standby
    regulator: VDAC: 1800 mV normal standby
    regulator: VPLL2: 1800 mV normal standby
    regulator: VSIM: 1800 3000 mV normal standby
    i2c_omap i2c_omap.3: bus 3 rev3.12 at 100 kHz
    Switching to clocksource 32k_counter
    musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=0
    musb_hdrc: USB OTG mode controller at d80ab000 using DMA, IRQ 92
    NET: Registered protocol family 2
    IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
    TCP established hash table entries: 4096 (order: 3, 32768 bytes)
    TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
    TCP: Hash tables configured (established 4096 bind 4096)
    TCP reno registered
    NET: Registered protocol family 1
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    NetWinder Floating Point Emulator V0.97 (double precision)
    VFS: Disk quotas dquot_6.5.2
    Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
    msgmni has been set to 246
    alg: No test for stdrng (krng)
    io scheduler noop registered
    io scheduler anticipatory registered (default)
    io scheduler deadline registered
    io scheduler cfq registered
    omapfb: configured for panel omap3beagle
    omapfb: DISPC version 3.0 initialized
    Console: switching to colour frame buffer device 128×48
    omapfb: Framebuffer initialized. Total vram 1572864 planes 1
    omapfb: Pixclock 61714 kHz hfreq 57.5 kHz vfreq 74.2 Hz
    Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
    serial8250.0: ttyS0 at MMIO 0x4806a000 (irq = 72) is a ST16650V2
    serial8250.1: ttyS1 at MMIO 0x4806c000 (irq = 73) is a ST16650V2
    serial8250.2: ttyS2 at MMIO 0×49020000 (irq = 74) is a ST16650V2
    console [ttyS2] enabled
    brd: module loaded
    loop: module loaded
    omap2-nand driver initializing
    NAND device: Manufacturer ID: 0x2c, Chip ID: 0xba (Micron NAND 256MiB 1,8V 16-bit)
    Creating 5 MTD partitions on “omap2-nand”:
    0×000000000000-0×000000080000 : “X-Loader”
    0×000000080000-0×000000260000 : “U-Boot”
    0×000000260000-0×000000280000 : “U-Boot Env”
    0×000000280000-0×000000680000 : “Kernel”
    0×000000680000-0×000010000000 : “File System”
    usbmon: debugfs is not available
    i2c /dev entries driver
    TCP cubic registered
    NET: Registered protocol family 17
    NET: Registered protocol family 15
    Power Management for TI OMAP3.
    VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2
    regulator_init_complete: incomplete constraints, leaving VDVI on
    regulator_init_complete: incomplete constraints, leaving VDAC on
    drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
    uncorrectable error :
    uncorrectable error :
    mtd->read(0×400 bytes from 0×0) returned ECC error
    jffs2_scan_dirent_node(): Node CRC failed on node at 0×00000000: Read 0x40534ac3, calculated 0x4e401b7b
    jffs2_scan_eraseblock(): Node at 0×00000354 {0×1985, 0xe082, 0×00000044) has invalid CRC 0x98f7fb1d (calculated 0x8647efc5)
    jffs2_scan_eraseblock(): Magic bitmask 0×1985 not found at 0×00000358: 0×0044 instead
    jffs2_scan_eraseblock(): Magic bitmask 0×1985 not found at 0x0000035c: 0xfb1d instead
    jffs2_scan_eraseblock(): Magic bitmask 0×1985 not found at 0×00000360: 0×0009 instead
    jffs2_scan_eraseblock(): Magic bitmask 0×1985 not found at 0×00000364: 0×0001 instead
    jffs2_scan_eraseblock(): Magic bitmask 0×1985 not found at 0×00000368: 0x41fd instead
    jffs2_scan_eraseblock(): Magic bitmask 0×1985 not found at 0×00000374: 0xc176 instead
    jffs2_scan_eraseblock(): Magic bitmask 0×1985 not found at 0×00000378: 0xc176 instead
    jffs2_scan_eraseblock(): Magic bitmask 0×1985 not found at 0x0000037c: 0xc176 instead
    jffs2_scan_eraseblock(): Magic bitmask 0×1985 not found at 0×00000394: 0xbb49 instead
    Further such events for this erase block will not be printed
    jffs2_scan_inode_node(): CRC failed on node at 0x000003c4: Read 0xffffffff, calculated 0xf09e7845
    ofs 0x000003c4 has already been seen. Skipping
    Empty flash at 0x000003c8 ends at 0×00000800
    uncorrectable error :
    uncorrectable error :
    mtd->read(0×400 bytes from 0×20000) returned ECC error
    QEMU: Terminated

    nand.bin
    006B3FF0 ffffffff ffffffff ffffffff ffffffff
    006B4000 851901e0 2b000000 e66e267d 01000000
    006B4010 00000000 02000000 2109bd4f 03040000
    006B4020 c34a5340 ff836655 62696eff 851902e0
    006B4030 44000000 1dfbf798 02000000 01000000

    006B4340 76c1a64f 03040000 d3cf3805 7fab19ec
    006B4350 6d6e74ff 851902e0 44000000 1dfbf798
    006B4360 09000000 01000000 fd410000 00000000
    006B4370 00000000 76c1a64f 76c1a64f 76c1a64f

    64 bytes OOB’es containing ECC are placed after each 2k page and here

    mtd->read(0×400 bytes from 0×0) returned ECC error
    jffs2_scan_dirent_node(): Node CRC failed on node at 0×00000000: Read 0x40534ac3, calculated 0x4e401b7b

    driver expected ECC at address 0×20 (little-endian) of rootfs.jffs2 (mtdblock4) and calculated it not on 2k page (0×800) but on 1k (0×400) bytes ???

  9. Sheldon says:

    In the labs.pdf document it says to, “Download the tarball at
    http://free-electrons.com/labs/embedded_linux.tar.bz2,” however “embedded_linux.tar.bz2″ doesn’t appear in the file list in the “http://free-electrons.com/labs/” folder. I do see “labs.tar.bz2″ and “custom-labs.tar.bz2.” Should I use one of those instead?

    Thanks much,

    Sheldon

    • Hi Sheldon,

      Unfortunately, these labs are getting out of date, and we don’t maintain them any more. You can use the labs.tar.bz2 file, but it may no longer contain all the resources that are needed for this course.

      My best advise is probably to try to use the latest version of the labs, found on http://free-electrons.com/doc/training/embedded-linux/. The labs are for the IGEPv2 board, but this board is still pretty close to the Beagle board. So, there shouldn’t be any major issue adapting these new instructions to the Beagle board.

      I hope this helps,

      Cheers,

      Michael

  10. Raghu says:

    Hi Michael,
    I’m new to this site and was looking at some of the Embedded Linux training slides.

    The link below gives an error “The File is damaged and cannot be repaird” after download is successful:

    http://free-electrons.com/doc/training/embedded-linux/slides.pdf

    Can you provide the link that works fine or get doc in the link fixed and let me know?

    Thanks & Regards,
    Raghu

  11. Alvin says:

    Hello,

    I am wondering if the info from these training materials will also apply for BeagleBoard-xM? Beagleboard is so out of stock nowadays and all I can order is either a beaglebone or an xM, of which I have is xM.

  12. Sousie says:

    Hello,
    i dont find the embedded_linux.tar.bz2 in this url http://free-electrons.com/labs/embedded_linux.tar.bz2

    And in the navigator i get :
    Not Found

    The requested URL /labs/embedded_linux.tar.bz2 was not found on this server.
    Please can you send me this file or the or the new url of this file

  13. This resource is now getting out of date. Closing comments.

Comments are closed.