Hi,
Once you have built the SDK the next step is to install all the software built by the SDK into the Leopard Board.
RidgeRun SDK has a system called the Uboot installer which is a perl-expect based scripts that issues commands to the Uboot that is running on the Leopard Board in order to install all the software.
The following are basic steps for using the RidgeRun Uboot Installler properly:
1) Choose the communication method for sending the commands to the Leopard Board.
Typically the communication is over the serial port /dev/ttyS0, however the telnet is also supported:
$ make config
Installer Configuration --->
Communication method with the target board (Serial port) ---> (/dev/ttyS0) Serial port for target communication
2) Choose the method for sending the binaries to the Leopard Board.
There are 3 method available for the Leopard Board: TFTP, USB DFU and Serial Port.
a) TFTP
For using the TFTP method you should ensure that you have your TFTP setup properly as is described at http://designsomething.org/leopardboard/f/22/t/102.aspx
Method to download firmware to the target board (TFTP) ---> *** Network options for installation *** (eth0) Interface on your host machine connected to your target hardware U-boot IP address (Static IP address) ---> (192.168.0.101) Static IP (255.255.255.0) Static mask
b) USB DFU
Method to download firmware to the target board (USB DFU) --->
c) Serial Port
Method to download firmware to the target board (Serial) --->
3) Installing the UBL and the Uboot.
If you are installing for first time the software built by the SDK on the Leopard Board you MUST install the UBL and Uboot build by the SDK, because there are some features needed by the Uboot installer that the Uboot that comes preinstalled in the board doesn't support.
In order to install the UBL and Uboot built by the SDK you should perform the following command:
$ make installbootloader Ridgerun Linux SDK Board configuration: Leopard Board Installation system of uboot images over TFTP for host 192.168.0.100 Please be sure u-boot is running on port /dev/ttyUSB0 and none process (like minicom) is using it u-boot port /dev/ttyUSB0 Performing handshake with u-boot...done. Trying to identify NAND block size... detected 0x20000 Loading upgrade bootloader version... Disabling boot command... Uboot <= setenv bootcmd Disabling autostart option... Uboot <= setenv autostart no Uboot <= saveenv Loading bootloader... Configuring the network... Uboot <= setenv ipaddr 192.168.0.101 Uboot <= setenv serverip 192.168.0.100 Uboot <= mw.l 0x82000000 0xff 0x100000 Uboot <= tftp 0x82000000 upgrade_bootloader.bin.miguel.leopard Running upgrade bootloader... Uboot => go 0x82000000 Performing handshake with u-boot...done. Configuring the network... Uboot <= setenv ipaddr 192.168.0.101 Uboot <= setenv serverip 192.168.0.100 Uboot <= setenv autostart no Loading UBL Uboot <= mw.l 0x81600000 0xff 0x8000 Uboot <= tftp 0x81600000 ubl.nandbin.miguel.leopard Loading bootloader Uboot <= mw.l 0x81700000 0xff 0x100000 Uboot <= tftp 0x81700000 bootloader.nandbin.miguel.leopard Installing bootloader... Erasing memory... Uboot <= nand scrub Saving UBL... Uboot <= nand write.ubl 0x81600000 0x20000 0x20000 Saving bootloader... Uboot <= nand write 0x81700000 40000 0x400000
Now you should REBOOT the board and check the uboot prompt again:
$ minicom
Customized by RidgeRunTI UBL Version: 1.20, Flash type: NANDBooting Catalog Boot LoaderBootMode = NANDStarting NAND Copy...Valid MagicNum found. DONEU-Boot 1.2.0 (Nov 29 2009 - 16:40:54)DRAM: 128 MBNAND: NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit)Bad block table found at page 131008, version 0x01Bad block table found at page 130944, version 0x01256 MiB*** Warning - bad CRC or NAND, using default environmentDavinci musb: using high speedmtdparts variable not set, see 'help mtdparts'mtdparts variable not set, see 'help mtdparts'mtdparts variable not set, see 'help mtdparts'mtdparts variable not set, see 'help mtdparts'mtdparts variable not set, see 'help mtdparts'In: serialOut: serialErr: serialARM Clock :- 216MHzDDR Clock :- 216MHzHit any key to stop autoboot: 0 Leopard Board #
4) Installing the Kernel, File System and several environment variables:
Before installing the Kernel and the File System there must be a Uboot build the SDK running on the board.
$ make install Ridgerun Linux SDK Board configuration: Leopard Board Installation system of uboot images over TFTP for host 192.168.0.100 Please be sure u-boot is running on port /dev/ttyUSB0 and none process (like minicom) is using it u-boot port /dev/ttyUSB0 Performing handshake with u-boot...done. Trying to identify NAND block size... detected 0x20000 Verifying if mtd partitons need to be redefined... Uboot <= setenv mtdparts mtdparts=nand_davinci.0:4096k(UBOOT),128k(UBOOT_ENV),3200k(KERNEL),20480k(FS) Uboot <= mtdparts Uboot <= saveenv Verifying if kernel needs to be installed... Loading Kernel image... Configuring the network... Uboot <= setenv ipaddr 192.168.0.101 Uboot <= setenv serverip 192.168.0.100 Uboot <= setenv autostart Uboot <= mw.l 0x82000000 0xff 0xc8000 Uboot <= tftp 0x82000000 kernel.uImage.miguel.leopard Uboot <= setenv autostart yes Erasing NAND... Uboot <= nand erase KERNEL Saving kernel... Uboot <= nand write 0x82000000 KERNEL 320000 Saving new kernel load address... Uboot <= setenv kernelloadaddr 0x82000000 Saving new kernel save addresses and offset... Uboot <= setenv kernelsaveaddr 0x420000 Uboot <= setenv kerneloffset 0x420000 Saving new kernel size... Uboot <= setenv ksize 0x320000 Saving new kernel md5sum value... Uboot <= setenv kernelmd5sum 6c4b5809a1b8384f09ee965c0c92864b Uboot <= saveenv Verifying if file system needs to be installed... File system doesn't needs to be loaded Verifying if kernel command line needs to be installed... Uboot <= setenv bootargs console=ttyS0,115200n8 video=davincifb:osd1=0x0x8 mem=116M root=/dev/nfs nfsroot=192.168.0.100:/home/miguel/DM355SDK786811/fs/fs rw ip=192.168.0.101:::255.255.255.0::eth0 mtdparts=nand_davinci.0:4096k(UBOOT),128k(UBOOT_ENV),3200k(KERNEL),20480k(FS) Uboot <= saveenv Verifying if the boot command needs to be installed... Uboot <= setenv bootcmd nboot KERNEL Uboot <= setenv autostart yes Uboot <= saveenv
Then open minicom and boot the Leopard Board:
Leopard Board # bootLoading from NAND 256MiB 3,3V 8-bit, offset 0x420000 Image Name: "RR Linux Kernel" Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3250544 Bytes = 3.1 MB Load Address: 80008000 Entry Point: 80008000Automatic boot of image at addr 0x82000000 ...## Booting image at 82000000 ... Image Name: "RR Linux Kernel" Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3250544 Bytes = 3.1 MB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OKOKStarting kernel ...[ 0.000000] Linux version 2.6.29-ridgerun-davinci1 (miguel@miguel-desktop) (gcc version 4.2.4) #1 PREEMPT Fri Nov 27 15:52:34 CST 2009[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177[ 0.000000] CPU: VIVT data cache, VIVT instruction cache[ 0.000000] Machine: DaVinci DM355 leopard[ 0.000000] Memory policy: ECC disabled, Data cache writeback[ 0.000000] DaVinci DM0355 variant 0x0[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 29464[ 0.000000] Kernel command line: console=ttyS0,115200n8 video=davincifb:osd1=0x0x8 mem=116M root=/dev/nfs nfsroot=192.168.0.100:/home/miguel/DM355SDK786811/fs/fs)[ 0.000000] PID hash table entries: 512 (order: 9, 2048 bytes)[42949372.960000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)[42949372.960000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)[42949372.980000] Memory: 116MB = 116MB total[42949372.980000] Memory: 114204KB available (2936K code, 203K data, 116K init)[42949372.980000] Calibrating delay loop... 107.72 BogoMIPS (lpj=538624)[42949373.210000] Mount-cache hash table entries: 512[42949373.210000] CPU: Testing write buffer coherency: ok[42949373.220000] net_namespace: 520 bytes[42949373.220000] NET: Registered protocol family 16[42949373.220000] MUX: initialized INT_EDMA_CC[42949373.220000] MUX: initialized VIN_CINL_EN[42949373.260000] DaVinci: 104 gpio irqs[42949373.370000] bio: create slab <bio-0> at 0[42949373.370000] vpss vpss: dm355_vpss vpss probed[42949373.370000] vpss vpss: dm355_vpss vpss probe success[42949373.380000] ch0 default output "COMPOSITE", mode "NTSC"[42949373.380000] VPBE Encoder Initialized[42949373.390000] SCSI subsystem initialized[42949373.390000] usbcore: registered new interface driver usbfs[42949373.400000] usbcore: registered new interface driver hub[42949373.400000] usbcore: registered new device driver usb[42949373.410000] Avnetlcd encoder initialized[42949373.430000] musb_hdrc: version 6.0, pio, host, debug=0[42949373.450000] musb_hdrc: USB Host mode controller at fec64000 using PIO, IRQ 12[42949373.450000] musb_hdrc musb_hdrc: MUSB HDRC host driver[42949373.450000] musb_hdrc musb_hdrc: new USB bus registered, assigned bus number 1[42949373.450000] usb usb1: configuration #1 chosen from 1 choice[42949373.450000] hub 1-0:1.0: USB hub found[42949373.450000] hub 1-0:1.0: 1 port detected[42949373.460000] NET: Registered protocol family 2[42949373.460000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)[42949373.460000] TCP established hash table entries: 4096 (order: 3, 32768 bytes)[42949373.460000] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)[42949373.460000] TCP: Hash tables configured (established 4096 bind 4096)[42949373.460000] TCP reno registered[42949373.470000] NET: Registered protocol family 1[42949373.480000] msgmni has been set to 223[42949373.480000] io scheduler noop registered (default)[42949373.500000] davincifb davincifb.0: dm_osd0_fb: 720x480x16@0,0 with framebuffer size 1350KB[42949373.510000] davincifb davincifb.0: dm_vid0_fb: 0x0x16@0,0 with framebuffer size 675KB[42949373.530000] davincifb davincifb.0: dm_osd1_fb: 0x0x8@0,0 with framebuffer size 1350KB[42949373.540000] davincifb davincifb.0: dm_vid1_fb: 0x0x16@0,0 with framebuffer size 675KB[42949373.540000] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled[42949373.550000] serial8250.0: ttyS0 at MMIO 0x1c20000 (irq = 40) is a 16550A[42949373.550000] console [ttyS0] enabled[42949373.880000] brd: module loaded[42949373.910000] loop: module loaded[42949373.920000] dm9000 Ethernet Driver, V1.31[42949374.040000] eth0 (dm9000): not using net_device_ops yet[42949374.040000] eth0: dm9000e at c780c000,c7810016 IRQ 73 MAC: 00:0e:99:00:05:2e (chip)[42949374.050000] Linux video capture interface: v2.00[42949374.060000] vpfe-capture vpfe-capture: video device registered[42949374.070000] vpfe-capture vpfe-capture: v4l2 int master registered[42949374.080000] vpfe_capture: init successful[42949374.080000] Trying to register davinci display video device.[42949374.090000] layer=c66f7200,layer->video_dev=c66f7364[42949374.100000] Trying to register davinci display video device.[42949374.100000] layer=c66f7000,layer->video_dev=c66f7164[42949374.110000] davinci_init:DaVinci V4L2 Display Driver V1.0 loaded[42949374.120000] vpfe-capture vpfe-capture: register slave mt9v113 [42949374.120000] mt9v113 1-003c: mt9v113 found at 0x78 (DaVinci I2C adapter)[42949374.130000] mt9v113 1-003c: chip version 0x2280 detected[42949375.060000] vpfe-capture: Current decoder is set to mt9v113[42949375.060000] mt9v113 1-003c: Registered to v4l2 master vpfe-capture!![42949375.070000] Driver 'sd' needs updating - please use bus_type methods[42949375.080000] davinci_nand davinci_nand.0: 4-bit ECC nyet supported[42949375.090000] davinci_nand: probe of davinci_nand.0 failed with error -22[42949375.100000] Initializing USB Mass Storage driver...[42949375.110000] usbcore: registered new interface driver usb-storage[42949375.120000] USB Mass Storage support registered.[42949375.120000] i2c /dev entries driver[42949375.130000] watchdog watchdog: heartbeat 60 sec[42949375.140000] davinci_mmc davinci_mmc.0: Using DMA, 4-bit mode[42949375.160000] davinci_mmc davinci_mmc.1: Using DMA, 4-bit mode[42949375.180000] Advanced Linux Sound Architecture Driver Version 1.0.18a.[42949375.190000] No device for DAI tlv320aic3x[42949375.190000] No device for DAI davinci-i2s[42949375.200000] AIC3X Audio Codec 0.2[42949375.210000] asoc: tlv320aic3x <-> davinci-i2s mapping ok[42949375.240000] ALSA device list:[42949375.250000] #0: Leopard Board (tlv320aic3x)[42949375.250000] TCP cubic registered[42949375.260000] NET: Registered protocol family 17[42949375.260000] RPC: Registered udp transport module.[42949375.270000] RPC: Registered tcp transport module.[42949375.280000] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)[42949375.880000] eth0: link up, 100Mbps, full-duplex, lpa 0x45E1[42949376.890000] IP-Config: Complete:[42949376.890000] device=eth0, addr=192.168.0.101, mask=255.255.255.0, gw=255.255.255.255,[42949376.900000] host=192.168.0.101, domain=, nis-domain=(none),[42949376.900000] bootserver=255.255.255.255, rootserver=192.168.0.100, rootpath=[42949376.910000] Looking up port of RPC 100003/2 on 192.168.0.100[42949376.930000] Looking up port of RPC 100005/1 on 192.168.0.100[42949376.950000] VFS: Mounted root (nfs filesystem) on device 0:12.[42949376.960000] Freeing init memory: 116Kinit started: BusyBox v1.14.2 (2009-11-29 14:56:08 CST)starting pid 256, tty '': '/etc/rcS'Starting Systemdone.Welcome to__________ .__ .___ __________ \______ \|__| __| _/ ____ ____ \______ \ __ __ ____ | _/| | / __ | / ___\ _/ __ \ | _/| | \ / \ | | \| |/ /_/ | / /_/ >\ ___/ | | \| | /| | \ |____|_ /|__|\____ | \___ / \___ >|____|_ /|____/ |___| / \/ \//_____/ \/ \/ \/ Embedded Linux Solutions For further information see:http://www.ridgerun.comBuild host: miguel-desktopBuilt by: rootBuild date: Sun, 29 Nov 2009 16:40:53 -0600Build tag: leopardConfiguring network interfacesPlease press Enter to activate this console. starting pid 334, tty '/dev/ttyS0': '-/bin/sh'BusyBox v1.14.2 (2009-11-29 14:56:08 CST) built-in shell (ash)Enter 'help' for a list of built-in commands./ #
-- Miguel AguilarEmbedded Software EngineerRidgeRun Embedded Solutions