Hawkboard
Contents
Hardware Details
Software Details
Tools
- ARM Cross Compiler
- DSP Cross Compiler c674x via option -mv6740
- AIS Generator / UART Host Tool (Needs .NET Framework)
Sources
- Linux Kernel
- u-boot
Building verification images from source
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 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
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
Android for hawkboard is here http://labs.embinux.org/index.php/Android_Porting_Guide_to_OMAP-L_138_HawkBoard
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).
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 : 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