Re: [ARMini-support] SDcard image

  • From: Chris Hall <chris@xxxxxxxxxx>
  • To: armini-support@xxxxxxxxxxxxx
  • Date: Tue, 26 Jul 2011 09:57:17 GMT

In message <ca308cf851.rcomp@xxxxxxxxxxxxxxxxxxx>
          A Rawnsley <rcomp@xxxxxxxxxxx> wrote:

> In message <22e866f851.chris@xxxxxxxxxxxxxxxx>
>           Chris Hall <chris@xxxxxxxxxx> wrote:

>> There is a new SD card image on the beagleboard web site. I do not
>> think you should use it at present unless you are determined. The Sd
>> card image is rather different.

> I don't think ARMini users need to be altering the contents of the SD
> cards until such time as we issue a formal update - currently planned
> for August/Sept time, hopefully coinciding with clearing our backlog.

> AFAIK the updated image on the BB website is mainly to accommodate the
> latest revision of the older "original" BB, which is irrelevant to
> ARMini users anyway.

> Sorry to pour cold water on the thread, but it is quite important that
> the RISC OS portion of ARMinis is kept "in step" with what we're
> doing, so that we can properly support and manage things.  It's part
> of the service! :)

> Andrew
The new SD card image on the beagleboard.org web site has been 
prompted by a change to the original Beagleboard (i.e. non-XM) which 
now has a slightly different memory chip fitted. They have taken this 
opportunity to make a change to the 'bootstrap' loaders 'MLO' and 
'u-Boot.bin' on the SD card so that a 'foolproof' way of reflashing 
the NAND memory on the classic Beagleboard is provided to the user. 
This was the source of many complaints as it was possible to wrongly 
programme the NAND memory and cause the board to fail to boot up.

As a principle they have made the new SD card image forwards and 
backwards compatible so that a single card image will work on all 
types of Beagleboard.

When I saw that a new 'C5' revision of the Beagleboard was to be 
released I overlooked the fact that this was the 'classic (non-XM) 
Beagleboard and downloaded the new SD card image to play with it.

This is a somewhat tortuous process (as the SD card format is actually 
quite complex and is not WYSIWYG) as I have found only one reliable 
method (there may be others). To prepare the SD card I first create a 
Ubuntu start up CD (see detail [1] below). I then boot my Windows 
computer from that CD into Ubuntu (see detail [2] below) and use the 
Disk Utility to erase and format a 4G byte SD card (see detail [3] 
below and screenshot at http://www.svrsig.org/images/UBscr.gif ). This 
utility is the only one I have found that actually tells you what is 
on the SD card!

I then boot into Windows and use Win32DiskImager to write the
card image (all partitions) onto the card (see detail [4] below). The 
SD card should now contain the following files in the
root partition. This partition is all that Windows
will see:

MLO           -  24k - X-loader which loads u-boot.bin
u-boot.bin    - 279k - this issues commands to load the kernel
uEnv.txt      -   1k - parameters/commands affecting the kernel
UEnv.txt.orig -   1k - in case you alter it and change your mind
user.txt      -   1k - not sure - not present on XM

117 Mbytes free

The file 'UEnv.txt' contains the arguments:
  console=ttyS2,115200n8
  camera=none

This provides the information to the system that starts it up. Earlier 
card images had a different MLO and u-boot.bin which looked for files 
'boot.scr' and 'user.scr'. Versions of these that had the necessary 
commands to load RISC OS have been created for RISC OS users. In this 
newer SD card image, it is a plain text file 'uEnv.txt' that allows us 
to force RISC OS as the preferred operating system by including the 
following commands in that file:

uenvcmd=fatload mmc ${mmcdev} ${loadaddr} riscos;go ${loadaddr}

and copy the file 'riscos' (the RISCOS ROM image) onto the card.

The file 'user.txt' (on the non-XM SD card image) contains the boot 
instructions:
  writemlo=ext2load mmc 0:2 82000000 /boot/MLO;
    nandecc hw;
    nand erase.part x-loader;
    nand write 82000000 0 ${filesize}
  writeuboot=ext2load mmc 0:2 82000000 /boot/u-boot.bin;
    nandecc sw;
    nand erase 80000 160000;
    nand write 82000000 80000 160000
  writeuimage=ext2load mmc 0:2 82000000 /boot/uImage
    nandecc sw
    nand erase 280000 400000
    nand write 82000000 280000 400000
  writeenv=setenv nandrootfstype ubifs;
    setenv nandroot 'ubi0:beagleboard-rootfs ubi.mtd=4';
    setenv uenvcmd;
    setenv bootenv;
    saveenv
  uenvcmd=mtdparts default;
    run writemlo;
    run writeuboot;
    run writeuimage;
    run writeenv;
    echo writing root fs after booting
  console=ttyS2,115200n8
  camera=none

Detailed instructions:
1. The 'Ubuntu start-up CD' is an iso-image which can be downloaded
   from http://www.ubuntu.com

2. You may need to adjust your BIOS to boot from CD then Hard Disc if
   it is not already set to do this.

3. Under Ubuntu go to System/Admin/Disk Utility and select the 
SmartMedia drive, Erase the partitions and format the drive as a 
single FAT partition (named 'BEAGLE' for example).

4. You should see a blank drive 'BEAGLE' - note the drive letter and 
close it. Use Win32DiskImager to write the card image (downloaded from 
the beagleboard site and unzipped using 7-zip).

It provided a Linux GUI so it looks like machines are now shipping 
with a Linux GUI (rather than a command-line Linux). I also tried the 
'user' button - big mistake.

The Beagleboard XM in my ARMini has both DDR and NAND memory - early 
revision A and B boards had this memory chip because the planned chip 
was unavailable. The C5 image is arranged so that a boot from the SD 
card first erases and then reprogrammes the NAND memory (whether 
booting using the file 'user.txt' or 'uEnv.txt') for a normal boot 
into the Linux GUI, then drops into the Linux GUI.

Subsequent boots are from the NAND except that the boot order (try 
NAND first then SD card) is changed with the user button pressed to do 
as above. With the NAND erased, it is ignored.

So my machine was now ignoring the SD card when booting up and 
whatever I did I ended up in the Linux GUI. Fortunately I had been 
here before and so I connected a serial terminal to the serial port 
and interrupted the start up to give the command 'nand erase' after 
which things were back to normal.

So this is just a cautionary tale really. Leave the SD card well alone 
unless you really know what you are doing!

-- 
Chris Hall <chris@xxxxxxxxxx>
---
To alter your preferences or leave the group, 
visit //www.freelists.org/list/armini-support
List-related queries to support@xxxxxxxxxxxx

Other related posts: