Release Notes for the AMCC PPC460EX BSP#

System requirements#

Target system#

Host development system#


Getting Started#



Starting Neutrino#

Step 1: Build the BSP
You can build a BSP OS image from the source code or the binary components contained in a BSP package. For instructions about building a BSP OS image, please refer to the chapter Working with a BSP in the Building Embedded Systems manual.

Step 2: Connect your hardware

On your host machine, start your favorite terminal program with these settings:

Apply power to the target board. You should see output similar to the following:

U-Boot 1.3.3-00249-ga524e11 (Jun 30 2008 - 16:05:51)

CPU:   AMCC PowerPC 460EX Rev. A at 800 MHz (PLB=200, OPB=100, EBC=100 MHz)
       Security/Kasumi support
       Bootstrap Option H - Boot ROM Location I2C (Addr 0x52)
       Internal PCI arbiter disabled
       32 kB I-Cache 32 kB D-Cache
Board: Canyonlands - AMCC PPC460EX Evaluation Board, 2*PCIe, Rev. 16
I2C:   ready
DTT:   1 is 25 C
DRAM:  512 MB (ECC not enabled, 400 MHz, CL3)
FLASH: 64 MB
NAND:  128 MiB
PCI:   Bus Dev VenId DevId Class Int
PCIE0: link is not up.
PCIE0: initialization as root-complex failed
PCIE1: link is not up.
PCIE1: initialization as root-complex failed
Net:   ppc_4xx_eth0, ppc_4xx_eth1

Type run flash_nfs to mount root filesystem over NFS

Hit any key to stop autoboot:  0
=>

Step 3: Setup the environment

Use the printenv command to show the current settings for ipaddr, ethaddr, serverip etc. On your target, type the following, filling in the appropriate IP addresses and ifs file:

=> setenv ipaddr 192.168.1.62
=> setenv serverip 192.168.1.253
=> setenv bootfile /tftpboot/ifs-ep460c.raw
=> setenv loadaddr 0x200000
=> setenv bootcmd 'tftpboot $loadaddr $bootfile; go $loadaddr'

Once these parameters are configured, you can use the saveenv command to store your changes. Refer to the U-Boot documentation for more information.

Step 4: Boot the IFS image

You can use TFTP download (the default) or serial download to transfer the image from your host to the target.

This method requires a raw image, which is simply a binary image, with a header on the beginning, that allows the bootloader to jump to the very beginning of the image (the raw header), where it executes another jump to the first instruction of the image.

After U-boot is configured, boot the ifs-ep460c.raw image as follows (we'll assume it's in a directory called /tftpboot/) from the U-boot prompt:

=> tftpboot 200000 /tftpboot/ifs-ep460c.raw

At this point you should see the ROM monitor download the boot image, indicated by a series of number signs. You'll also see output similar to this when it completes downloading:

Waiting for PHY auto negotiation to complete.. done
ENET Speed is 100 Mbps - FULL duplex connection (EMAC0)
Using ppc_4xx_eth0 device
TFTP from server 192.168.1.253; our IP address is 192.168.1.62
Filename '/tftpboot/ifs-ep460c.raw'.
Load address: 0x200000
Loading: #################################################################
         #################################################################
         ##################
done
Bytes transferred = 757600 (b8f60 hex)
=> 

Now, to run the image, enter:

=> go 200000

You should see output similar to the following, with the QNX Neutrino welcome message on your terminal screen:

## Starting application at 0x00200000 ...

System page at phys:0000b000 user:0000b000 kern:0000b000
Starting next program at v00245ea4
Welcome to QNX Neutrino 6.4 on the AMCC PPC460EX Reference Board
#

You can now test the OS simply by executing any shell builtin command or any command residing within the OS image (e.g. ls).

Step 5: Replace the U-Boot bootloader with a native QNX IPL and OS image in flash

At some point, you may wish to replace the U-Boot bootloader with the native QNX IPL code. This may be desirable once you've tweaked the OS image exactly the way you want it, and you want the board to boot the image automatically, immediately on power up.

To replace the U-Boot bootloader:

1.Modify your buildfile to generate a binary image.

2.Boot the board as described above, using U-Boot to TFTP-download the raw OS boot image.

3.Ensure that you can "see" the IPL image file ipl-ep460c and the binary OS image file ifs-ep460c.bin from the image. You can get them on the target using QCONN if you are using the Momentics IDE, or access them remotely over a NFS mount that you have configured on your network.

4.Start the flash filesystem driver and erase the last 128KB of NOR flash as follows:

devf-generic -s0x4CC000000,64M
flashctl -p /dev/fs0 -o 65408K -l 128K -ve

5.Copy ipl-ep460c to the flash, as follows:

dd if=ipl-ep460c of=/dev/fs0 bs=131072 seek=511

6.To flash the OS image, erase the blocks of NOR flash starting from last 16 MB region (the following commands assume a maximum OS image size of 3 MB):

flashctl -p /dev/fs0 -o 48M -l 3M -ve
dd if=ifs-ep460c.bin of=/dev/fs0 bs=131072 seek=384

When the copy is complete, you can reboot; it should now boot from the native QNX IPL. You should see output as follows:

QNX/Neutrino IPL for AMCC 460EX based Canyonlands Board: 
Commands:
  d: download image to RAM
  f: scan flash for image
IPL> 

7.Enter f or F, and the board should boot from the OS image in flash. You'll see Neutrino boot:

System page at phys:0000b000 user:0000b000 kern:0000b000
Starting next program at v00245ea4
Welcome to QNX Neutrino 6.4 on the AMCC PPC460EX Reference Board
# 

If desired, the IPL code can be modified to eliminate the prompt and automatically boot from the flash without user intervention. To do this, modify the <main.c> file of the IPL source, located under:

$BSP_PATH/src/hardware/ipl/boards/ep460c/


Creating a flash partition#

NOR flash

1. Start the NOR flash filesystem driver by issuing the following command:

devf-generic -s0x4cc000000,64M

2. Prepare the area for the partition. Because the Linux images are in the first 22 MB of flash and U-Boot is in the last 640KB of flash, you may not want to erase them. Use the -l (length) and -o (offset) options to avoid these areas. Assuming that we want to create a 20 MB partition:

flashctl -p/dev/fs0 -o30M -l20M -ve

3. Format the partition:

flashctl -p/dev/fs0p0 -o30M -l20M -vf

4. Slay, then restart the driver:

slay devf-generic
devf-generic -s0x4cc000000,64M

In this example, you have a 20 MB flash partition starting at an offset of 30 MB from the start of flash. You should now have a /fs0p1 mount on the target to which you can copy files.


NAND flash

1. Enter the following command to start the ETFS driver:

fs-etfs-ep460c_2048 -m/fs/etfs

2. Stop the filesystem on the device, format and continue:

etfsctl -d /dev/etfs2 -s -f -c

You should now have a /fs/etfs mount on the target to which you can copy files.


Summary of driver commands#



The following table summarizes the commands to launch the various drivers.

ComponentBuildfile CommandRequired BinariesRequired LibrariesSource Location
Startupstartup-ep460c ..src/hardware/startup/boards/ep460c
Serialdevc-ser8250 -e -F -c11059200 -b115200 0x4EF600300,33 0x4EF600400,1devc-ser8250.src/hardware/devc/ser8250
Flash (NOR)devf-generic -s0x4cc000000,64M devf-generic
flashctl
.src/hardware/flash/boards/generic
Flash (NAND)fs-etfs-ep460c_2048 -m /fs/etfs fs-etfs-ep460c_2048
etfsctl
.src/hardware/etfs/nand2048/ep460c_2048
PCI and PCI Expresspci-ppc460ex pci-ppc460ex
pci
.src/hardware/pci/ppc460ex
Networkio-pkt-v4-hc -dppc405-ep460c mac=001122334455,rmii -ptcpip io-pkt-v4-hc
ifconfig
ping
devn-ppc405-ep460c.so
libsocket.so
devnp-shim.so
src/hardware/devn/ppc405
I2Ci2c-ppc405 -p0x4EF600700 -i2 i2c-ppc405.src/hardware/i2c/ppc405
SPIspi-master -dppc405 spi-masterspi-ppc405.sosrc/hardware/spi/ppc405
USBio-usb -d ehci ioport=0x4bffd0400,irq=93
io-usb -d ohci ioport=0x4bffd0000,irq=94
io-usb
usb
devu-ohci.so
devu-ehci.so
libusbdi.so
prebuilt only
prebuilt/ppcbe/lib/dll/
RTCrtc hw rtc
date
.src/utils/r/rtc

Some of the drivers are commented out in the default buildfile. To use the drivers in the target hardware, you'll need to uncomment them in your buildfile, rebuild the image, and load the image into the board.

RTC#

The on-board M41T62 RTC communicates over I2C, so the rtc utility requires the I2C driver to be running.


Known issues for this BSP#