Difference between revisions of "Hawkboard"
Alokprasad (talk | contribs) (→Getting Started) |
Alokprasad (talk | contribs) (→Building verification images from source) |
||
Line 70: | Line 70: | ||
== Building verification images from source == | == Building verification images from source == | ||
+ | |||
+ | HawkBoard comes with pre-installed U-boot and normally you don't want to Compile and Load U-boot | ||
+ | unless you have Bricked the Bootloader or want to change something.So You can Skip this Section | ||
+ | and can go Directly to "Compiling Linux Kernel" or "Booting Section". | ||
+ | |||
=== Compiling u-boot (bootloader) === | === Compiling u-boot (bootloader) === | ||
# Issue compile commands with make: | # Issue compile commands with make: | ||
Line 302: | Line 307: | ||
setenv bootargs mem=128M console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p1 rootwait ip=off init=/init androidboot.console=ttyS2 | setenv bootargs mem=128M console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p1 rootwait ip=off init=/init androidboot.console=ttyS2 | ||
− | |||
− | |||
==Live Links== | ==Live Links== |
Revision as of 07:33, 14 April 2010
Contents
- 1 Hardware Details
- 2 Software Details
- 3 Getting Started
- 4 Building verification images from source
- 4.1 Compiling u-boot (bootloader)
- 4.2 Signing u-boot for UART boot
- 4.3 Signing u-boot for NAND boot
- 4.4 Compiling Linux Kernel
- 4.5 Booting
- 4.5.1 Booting u-boot over UART
- 4.5.2 Procedure to flash u-boot on NAND
- 4.5.3 Booting u-boot over NAND
- 4.5.4 Booting Linux Kernel and Mounting RAMDISK
- 4.5.5 Booting Linux Kernel and Mounting NFS (Network File System)
- 4.5.6 Booting Linux Kernel from USB
- 4.5.7 Booting Linux Kernel from SATA
- 4.5.8 Booting Linux Kernel from SD OR MMC
- 4.5.9 MISC
- 5 Live Links
- 6 Guide Links
Hardware Details
Software Details
Tools & Softwares Downloads
Note:
1.This is for RTOS systems or "bare metal" systems where no operating system is present. These toolchains should not be used to build Linux kernels or applications.
2.New Releases : http://www.codesourcery.com/sgpp/lite/arm/portal/release1033
Note:
1.Systems running "full" Linux, i.e., Linux on CPUs with an MMU. Use this to build both the Linux kernel and applications.
2.New Releases : http://www.codesourcery.com/sgpp/lite/arm/portal/release1039
- DSP Cross Compiler c674x via option -mv6740
Tools From Other Vendors
Misc Tools
Sources
Getting Started
1.Powering the Device:Hawkboard can be powered through USB OTG port(mini USB) or Separate 5V Source.Since USB Port of PC/Laptop sometimes do not provide proper voltage/Current ,it Advisable to Use Separate power supply of 5V and At least 1A with Center Pin +ve and Outer GND.
2.Connecting VGA Monitor:Once power supply has been Attached ,Hawkboard boots to Uboot Bootloader and will show Hawkboard Logo on Screen.
3.Connecting UART: To Transfer Images to Hawkboard and Setting other parameters,UART/Serial Cable needs to be Attached to Hawkboard and PC .A NULL(Crossed Cable i.e 2 and 3 Crossed) is Needed for That.Hyperterminal or Teraterm could be used to Monitor Send/Recived Serial Data with Following Settings 115200 N 8 1.
Building verification images from source
HawkBoard comes with pre-installed U-boot and normally you don't want to Compile and Load U-boot unless you have Bricked the Bootloader or want to change something.So You can Skip this Section and can go Directly to "Compiling Linux Kernel" or "Booting Section".
Compiling u-boot (bootloader)
- Issue compile commands with make:
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omapl_hawkboard_config make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
Signing u-boot for UART boot
Signing u-boot for NAND boot
- Copy u-boot (elf) file to the host machine where AIS Generator is installed. Follow the below steps
- Configure PLL0, PLL1, DDR tabs as shown above. The File name to generate remains as in the step above.
Compiling Linux Kernel
- Issue compile commands with make:
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omapl138_hawkboard_defconfig make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
Booting
Booting u-boot over UART
- Power OFF the board
- Close any previously running terminal programs
- Connect the UART cable(Null/Cross Cable) to the Host machine.
Following process used on Windows family of Operating System:
- User can use mono utility with dvflasher.ext program to load u-boot on Linux system.
- Details To be updated
Following process used on Windows family of Operating System:
- Configure the Boot Switches as 1-OFF 2-ON 3-OFF 4-ON
- Start the UART Host Utility, should have been installed with AIS Generator / UART Host Tool
- Select the AIS FILE Generated for UART
- Click on the Start button
- Power UP the Device
- If you see errors click on stop and press start again and give a board reset.
- Wait till you all the below messages and COM is closed:
(File IO): Read 414964 bytes from file D:\hawk_release\u-boot_uart_ais.bin. (Serial Port): Opening COM1 at 115200 baud... (AIS Parse): Read magic word 0x41504954. (AIS Parse): Waiting for BOOTME... (AIS Parse): Performing Start-Word Sync... (AIS Parse): Performing Ping Opcode Sync... (AIS Parse): Processing command 0: 0x5853590D. (AIS Parse): Performing Opcode Sync... (AIS Parse): Executing function... (AIS Parse): Processing command 1: 0x5853590D. (AIS Parse): Loaded 1512-byte section to address 0xC10E4BEC. ... ... ... (AIS Parse): Processing command 15: 0x58535906. (AIS Parse): Performing Opcode Sync... (AIS Parse): Performing jump and close... (AIS Parse): AIS complete. Jump to address 0xC1080000. (AIS Parse): Waiting for DONE... (AIS Parse): Boot completed successfully. (Serial Port): Closing COM1.
- Now Start any standard UART Terminal and hit enter key, should see the u-boot prompt
Procedure to flash u-boot on NAND
After booting the u-boot over UART as mentioned above,
- On the u-boot prompt in the terminal window
- Configure the Ethernet server and Client IP addresses, For e.g.
hawkboard.org > setenv serverip 172.24.156.199 hawkboard.org > setenv ipaddr 172.24.190.58
- Download the u-boot generated for NAND
hawkboard.org > tftpboot 0xc0700000 u-boot_nand_ais.bin TFTP from server 172.24.156.199; our IP address is 172.24.190.58 Filename 'u-boot_nand_ais.bin'. Load address: 0xc0700000 Loading: ################################################################# ################# done Bytes transferred = 414988 (6550c hex)
- Erase NAND Flash
hawkboard.org > nand erase NAND erase: device 0 whole chip OK
- Flash the NAND with u-boot
hawkboard.org > nand write.e 0xc0700000 0x20000 0x70000
NAND write: device 0 offset 0x20000, size 0x70000 458752 bytes written: OK hawkboard.org >
- Switch off the board
- Change the DIP Switches for NAND boot 1-ON 2-OFF 3-OFF 4-OFF
Booting u-boot over NAND
Flash u-boot into NAND as mentioned above
- Switch off the board
- Change the DIP Switches for NAND boot 1-ON 2-OFF 3-OFF 4-OFF
- Switch on the board
Booting Linux Kernel and Mounting RAMDISK
You should find a kernel and a ramdisk image if you haven't found already. You can download samples from [1]. Then copy these files to your "/tftpboot" directory assuming you will use tftp for transferring files to your board. In order to do so you need to run a tftp server on your system. Under linux a good choice is atfptd, but you can also use others. Typically a linux tftp server exports the directory /tftpboot. Make sure before you continue that your ftp server is running.
At the u-boot prompt:
Set ethernet connection:
$setenv serverip <PC ipaddress> $setenv ipaddr <board ipaddress>
<PC ipaddress> should be the address of the PC running the tftp server.
<board ipaaddress> should be an address that is not in use on the same subnet as the tftp server.
Transfer files to the board:
$tftp c0700000 uImage_v1 $tftp c1180000 ramdisk_v1.gz
If you broke your bootargs previously then:
$setenv bootargs "mem=128M console=ttyS2,115200n8 root=/dev/ram0 rw initrd=0xc1180000,4M"
And finally boot the images:
$bootm c0700000
Booting Linux Kernel and Mounting NFS (Network File System)
You should find a kernel and a root file system image if you haven't found already. Then copy the kernel to your "/tftpboot" directory assuming you will use tftp for transferring files to your board. In order to do so you need to run a tftp server on your system. Under linux a good choice is atfptd, but you can also use others. Typically a linux tftp server exports the directory /tftpboot. Make sure before you continue that your ftp server is running.
Next as root create a directory /nfsroot and populate it with your root filesystem. Under linux make sure you have a file /etc/exports that contains:
/nfsroot 192.168.1.0/255.255.255.0(rw)
Assuming your subnet is 192.168.1.0. Make sure you install and start an nfs server.
Then, at the u-boot prompt:
Set ethernet connection:
setenv serverip <PC ipaddress> setenv ipaddr <board ipaddress>
<PC ipaddress> should be the address of the PC running the tftp server.
<board ipaaddress> should be an address that is not in use on the same subnet as the tftp server.
Transfer the to the board:
tftp c0700000 uImage_v1
Set boot arguments:
setenv bootargs "mem=128M console=ttyS2,115200n8 root=/dev/nfs nfsroot=<PC ipaddress>:/nfsroot ip=dhcp"
Of course again with filling in the PC ip address.
And finally boot the image:
bootm c0700000
Note: you probably want to avoid that you have to retype these commands every time you want to boot. This can be achieved easily by issuing the following commands on the u-boot prompt:
setenv serverip <PC ipaddress> setenv ipaddr <board ipaddress> setenv bootargs_nfs mem=128M console=ttyS2,115200n8 root=/dev/nfs nfsroot=<PC ipaddress>:/nfsroot ip=dhcp setenv bootcmd 'setenv bootargs $bootargs_nfs;tftp c0700000 uImage.v1; bootm c0700000' saveenv
Make sure to use single quotes in the last setenv command. Of course you can replace uImage.v1 with whatever name your file has in your /tftpboot directory.
After issueing these five commands the board will automatically boot (after a timeout) whenever you power the board or press the reset button (of course assuming the right files are in your /tftpboot and /nfsroot directories and the nfsserver and tftp server are running).
Booting Linux Kernel from USB
This steps work for USB Pendrive connected to Hub or Directly to USB Standard Port and rootfs is Ubuntu jaunty made through rootstock.Should work for other distribution too.
1. Load uimage through tftp ( as usual)
setenv serverip <PC IP> setenv ipaddr <BOARD IP> tftp c0700000 uImage_v1
2.Sent environment variable
setenv bootargs console=ttyS2,115200n8 noinitrd root=/dev/sda1 rootwait rw init=/sbin/init
3.bootm
bootm c0700000
Here /dev/sda1 is USB Drive with only one ext2 partition and rootfs lying init.
NB:-Ensure that keyboard is connected otherwise it will get stuck in "Setting preliminary keymap"..
Booting Linux Kernel from SATA
Currently the provided u-boot does not allow booting from either SATA.
However, it is possible to boot from nand and have the root filesystem loaded from SATA.
If you want to do so, you have to figure out the right partition for the root filesystem and add that to your bootargs.
E.g. in u-boot say something like:
setenv bootargs mem=128M console=ttyS2,115200n8 root=/dev/sda1 rootwait
Where you replace /dev/sda1 with the name of the device that contains your root filesystem. /dev/sda1 is a good name for sata partition 1 if no usb or sd devices are present. Note that the rootwait argument is needed. It tells the kernel to wait until the disk has settled.
Booting Linux Kernel from SD OR MMC
Currently the provided u-boot does not allow direct booting from either SD or MMC
However, it is possible to boot from nand and have the root filesystem loaded from SD
If you want to do so, you have to figure out the right partition for the root filesystem and add that to your bootargs.
E.g. in u-boot say something like:
setenv bootargs console=ttyS2,115200n8 console=tty1 noinitrd root=/dev/mmcblk0p1 rootwait rw
or
setenv bootargs console=ttyS2,115200n8 console=tty1 noinitrd root=/dev/mmcblk0p1 rootdelay = 2 rootfstype = ext2 rw
Here p1 in mmcblk0p1 says that Rootfs is present in first partition of SD Card.
MISC
If you find screen broken, do this before bootm in u-boot, ideally this should go into kernel code
mw.l 0x01c14110 0x44442222 1;mw.l 0x01c14114 0x44400000 1;mw.l 0x01c14118 0x04604404 1;
For booting over MMC the bootargs should be
setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p1 rootwait ip=off
For booting android over MMC the bootargs should be
setenv bootargs mem=128M console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p1 rootwait ip=off init=/init androidboot.console=ttyS2
Live Links
- Blog : http://hawkboard.wordpress.com/
- Portal : http://hawkboard.org
- Join us : hawkboard on google groups
- IRC : “#hawkboard” on Freenode
- IRC logs : http://ibot.rikers.org/%23hawkboard/
- Twitter : http://twitter.com/hawkboard
- Wikipedia : http://en.wikipedia.org/wiki/Hawk_Board
- Photos(Flickr): http://www.flickr.com/photos/hawkboard
- Mails : hawkboard@googlegroups.com
- Software : code.google.com/p/hawkboard
- OMAP L 138 : http://focus.ti.com/docs/prod/folders/print/omap-l138.html
- Applications : http://wiki.davincidsp.com/index.php/C674x/OMAPL1x_Introductory_Information
- More Details : http://wiki.davincidsp.com/index.php/Category:OMAPL1
Guide Links
- Ubunty Jaunty on the hawkboard : http://blog.binaerwelt.com/2010/02/ubuntu-on-the-hawkboard/
- Android on the hawkboard : http://labs.embinux.org/index.php/Android_Porting_Guide_to_OMAP-L_138_HawkBoard