Difference between revisions of "Hawkboard/BeginnersGuide"
Alokprasad (talk | contribs) |
Alokprasad (talk | contribs) |
||
Line 31: | Line 31: | ||
3. USB Hub (Hub that provides external power supply is recommended) | 3. USB Hub (Hub that provides external power supply is recommended) | ||
− | + | A USB Hub is highly recommended As you might want to connect multiple peripherals like Keyboard,mouse ,USB Storage | |
− | devices | + | devices. |
4. Cross Cable DB-9 Female at both ends | 4. Cross Cable DB-9 Female at both ends | ||
Line 63: | Line 63: | ||
'''d)''' Further Also check whether you are receiving the Data from Hawkboard UART/Serial port to PC/Laptop Serial port. | '''d)''' Further Also check whether you are receiving the Data from Hawkboard UART/Serial port to PC/Laptop Serial port. | ||
− | Serial port will be used to | + | Serial port will be used to send parameters to bootloader(u-boot) from where to load the Kernel image & File-system. |
− | |||
− | + | Connect UART/serial port of Hawkboard on to PC by NULL cable which has DB-9 Female at both ends | |
− | & It must be crossed i.e and 2 & 3 . | + | & It must be crossed i.e and 2 & 3 Interchanged at both ends. |
Below is Wiring Diagram | Below is Wiring Diagram | ||
Line 73: | Line 72: | ||
[[File:NULL_CABLE_HB.jpg | 360px ]] | [[File:NULL_CABLE_HB.jpg | 360px ]] | ||
− | '''e)''' Once cable has been connected open | + | '''e)''' Once cable has been connected open use software depending |
on your system. | on your system. | ||
Line 92: | Line 91: | ||
Set comport | Set comport | ||
− | #If comport will be | + | #If you are directly using PC/Laptop that has comport then it will be probably /dev/ttyS0 -COM1 or /dev/ttyS1 if COM2 |
#If you are USB RS232 converter than comport will be something /dev/ttyUSB0 | #If you are USB RS232 converter than comport will be something /dev/ttyUSB0 | ||
Line 123: | Line 122: | ||
==Introduction to uImage ,uBoot & File-system == | ==Introduction to uImage ,uBoot & File-system == | ||
− | + | Same like a Desktop system needs kernel and various application for it to be useful , Similar way embedded devices too | |
− | Kernel that manages/allocates resources & Schedule task & Set of Applications to perform user task. | + | needs a Kernel that manages/allocates resources & Schedule task & Set of Applications to perform user task. |
The components here are: | The components here are: | ||
Line 135: | Line 134: | ||
/dev, /proc, /bin, /etc, /lib, /usr, /tmp & necessary scripts (rc, inittab, fstab etc) etc. | /dev, /proc, /bin, /etc, /lib, /usr, /tmp & necessary scripts (rc, inittab, fstab etc) etc. | ||
− | *'''U-boot ''' :- | + | *'''U-boot ''' :- The third component Known as Bootloader actually Loads Kernel in RAM. |
− | + | Preloaded Bootloader in Hawkboard is '''U-boot'''.Similar to Like GRUB for Linux and NTLDR for Windows | |
==Download Kernel & Root FS== | ==Download Kernel & Root FS== | ||
Line 144: | Line 143: | ||
Kernel will loaded through TFTP Server.Though u-boot can load this image from USB/SD Card but | Kernel will loaded through TFTP Server.Though u-boot can load this image from USB/SD Card but | ||
the Preloaded (Uboot) that comes with Hawkboard cant access USB/SD Card hence cant access & | the Preloaded (Uboot) that comes with Hawkboard cant access USB/SD Card hence cant access & | ||
− | load uImage.Once the uImage is loaded it can then Access SD/MMC to load Root Filesystem | + | load uImage.Once the uImage is loaded it can then Access SD/MMC to load Root Filesystem . |
− | |||
* '''RootFS''' :- Filesystem ''http://hawktool.googlecode.com/files/RootFS_v1.tar.bz2'' | * '''RootFS''' :- Filesystem ''http://hawktool.googlecode.com/files/RootFS_v1.tar.bz2'' | ||
− | Filesystem | + | Filesystem can be loaded through NFS or SD/USB Drive once uImage is loaded and executed. |
− | uImage is loaded. | ||
The Sample RootFS contains Ubuntu Jaunty Non-Graphical distribution ,which contains ''' gcc,ssh''' | The Sample RootFS contains Ubuntu Jaunty Non-Graphical distribution ,which contains ''' gcc,ssh''' | ||
Line 196: | Line 193: | ||
If you want to use SD Card or USB Pendrive for loading the RootFS ,you can skip this section | If you want to use SD Card or USB Pendrive for loading the RootFS ,you can skip this section | ||
and proceed to SD/USB Drive Booting section.Also in case you are facing difficulty setting up | and proceed to SD/USB Drive Booting section.Also in case you are facing difficulty setting up | ||
− | NFS Server ,Following SD | + | NFS Server ,Following [http://elinux.org/Hawkboard/BeginnersGuide#Using_SD_Card_or_USB_Card_Method Using SD Card or USB Card Method]is recommended. |
===Using NFS Server Method === | ===Using NFS Server Method === | ||
Line 261: | Line 258: | ||
− | + | == Booting Linux == | |
Once TFTP Server has been setup and uImage has been placed in /tftpboot folder | Once TFTP Server has been setup and uImage has been placed in /tftpboot folder | ||
& Also RootFS is has been put in either NFS Folder(/nfsroot) or on SD/USB Card. | & Also RootFS is has been put in either NFS Folder(/nfsroot) or on SD/USB Card. |
Revision as of 07:19, 25 April 2010
Contents
Introduction
Hawkboard is a open-hardware project which uses Texas Instrument's (TI) OMAP Processor(OMAPL-L138) (Which contains both DSP and ARM Processor)
- ARM-This Normally runs Operating System Such as Linux or Android etc.ARM in OMAPL-138 ,is ARMV5/ARM926
- DSP-This is normally used to perform Audio/Video encoding and Decoding as it is specifically designed to perform these operations faster.DSP in OMAPL-138 ,is C674x Floating Point DSP.
Mix of ARM & DSP (OMAP) gives high performance and low power computing platform,Which are normally used in embedded Devices Like Mobile etc.
A Similar kind and very popular Open-hardware platform is beagleboard that uses Faster OMAP from TI.
Command prompts in this guide
In this guide, commands are preceded by prompts that indicate the environment where the command is to be typed. For example:
- host$
- Indicates command to be typed into the shell window of the host Linux workstation.
- Hawkboard.org>
- Indicates commands to be typed into the U-Boot shell in a console window connected to the Hawkboard's serial port.
- target$
- Indicates commands to be typed into the Linux shell in the terminal window connected to the Hawkboard's serial port or TTY..
Getting Started
Things you will need
1. Hawkboard
2. 5V 1Ampere Power Supply (Higher than 1A recommended)
3. USB Hub (Hub that provides external power supply is recommended) A USB Hub is highly recommended As you might want to connect multiple peripherals like Keyboard,mouse ,USB Storage devices.
4. Cross Cable DB-9 Female at both ends See wiring diagram below how to make one.
5. SD Card or USB Pendrive (1GB Minimal)
6. Ethernet Cable
7. Ethernet HUB or Switch If you PC/laptop/Router has only one LAN Port which is already in use ,Then might consider purchasing it.
8.System Running Linux either on Real Machine or Vmware/VirtualBOX
<templatestyles src="Note/styles.css" />
Preparing Hawkboard
Before all first thing is to check that the board is properly working or not.
a) Connect a 5V and 1A Power supply (Inner Pin +Ve and Outer GND)
<templatestyles src="Note/styles.css" />
b) Connect VGA monitor cable to Hawkboard VGA Port
c) Power on the Device ,you will see Hawkboard Logo on the monitor as below ,this is due to Bootloader (U-boot) present in the Hawkboard.
d) Further Also check whether you are receiving the Data from Hawkboard UART/Serial port to PC/Laptop Serial port. Serial port will be used to send parameters to bootloader(u-boot) from where to load the Kernel image & File-system.
Connect UART/serial port of Hawkboard on to PC by NULL cable which has DB-9 Female at both ends & It must be crossed i.e and 2 & 3 Interchanged at both ends.
Below is Wiring Diagram
e) Once cable has been connected open use software depending on your system.
- Hyperterminal or Teraterm -if you are using windows.
- Cutecom or minicom -if you are using Linux
& Set following parameters to see uboot messages
- Bits per Second: 115200
- Data Bits: 8
- Parity: None
- Stop Bits: 1
- Flow Control: None
- Transmit delay: 0 msec/char, 10 msec/line (Optional)
- Using Cutecom (Linux)
host$ apt-get install cutecom host$ cutecom &
Set comport
- If you are directly using PC/Laptop that has comport then it will be probably /dev/ttyS0 -COM1 or /dev/ttyS1 if COM2
- If you are USB RS232 converter than comport will be something /dev/ttyUSB0
Cutecom ScreenShot below
- Using Hypertermincal (Windows)
Start->Run->hypertrm or Start-All program-Accessories-Communication-Hyper terminal select appropriate Comport
As shown below screenshot of Hyperterminal settings
Now power on the Device you should see some text message on Serial Console (Hyperterminal or minicom etc)
Pressing enter will again give a new Hawkboard.org> Prompt .
This shows that serial port is working to send and receive messages to/from hawkboard
<templatestyles src="Note/styles.css" />
serial port (one for RS232 transmit & one for RS232 receive). One of them blinks while the board boots. Showing that is transmitting data to the serial ports.
If that Led is blinking then either your cross cable should have a problem or it should be loose connection.Introduction to uImage ,uBoot & File-system
Same like a Desktop system needs kernel and various application for it to be useful , Similar way embedded devices too needs a Kernel that manages/allocates resources & Schedule task & Set of Applications to perform user task.
The components here are:
- uImage :- uImage is a Linux Kernel (2.6.x) that Bootloader(Uboot) Loads which then finally mounts the Filesytem present
can be either on SD Card / USB Drive or on Another Network PC through NFS(Network File System) Protocol.
- RootFS :-Kernel itself is manager of resource and dose nothing ,you need a filesystem for Kernel to manage and you to work upon.
Filesystem is also known as Root Filesystem ,It basically contains all the application (ls,cat,vi etc ),directory structure /dev, /proc, /bin, /etc, /lib, /usr, /tmp & necessary scripts (rc, inittab, fstab etc) etc.
- U-boot :- The third component Known as Bootloader actually Loads Kernel in RAM.
Preloaded Bootloader in Hawkboard is U-boot.Similar to Like GRUB for Linux and NTLDR for Windows
Download Kernel & Root FS
Download the Sample uImage & Root Filesystem(RootFS) from The Link
- uImage :- Kernel Image http://hawktool.googlecode.com/files/uImage_v1
Kernel will loaded through TFTP Server.Though u-boot can load this image from USB/SD Card but the Preloaded (Uboot) that comes with Hawkboard cant access USB/SD Card hence cant access & load uImage.Once the uImage is loaded it can then Access SD/MMC to load Root Filesystem .
- RootFS :- Filesystem http://hawktool.googlecode.com/files/RootFS_v1.tar.bz2
Filesystem can be loaded through NFS or SD/USB Drive once uImage is loaded and executed.
The Sample RootFS contains Ubuntu Jaunty Non-Graphical distribution ,which contains gcc,ssh vi editor and lot more . With gcc you can do native development on Hawkboard itself & No cross compiler needed.
For installing new packages you can also use "apt-get install <package_name>"
Installing and setting TFTPD on PC(Needed for uImage Transfer to Board)
Since TFTP Server is required on Host System to Transfer uImage to Hawkboard ,Install TFTP Server by following steps below:
1. Install tftpd and related packages.
host$ sudo apt-get install xinetd tftpd
2. Create /etc/xinetd.d/tftp and put this entry:
service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody server = /usr/sbin/in.tftpd server_args = /tftpboot disable = no }
3. Make /tftpboot directory
host$ sudo mkdir /tftpboot host$ sudo chmod -R 777 /tftpboot host$ sudo chown -R nobody /tftpboot
4. Start tftpd through xinetd
host$ sudo /etc/init.d/xinetd restart
5.Place uImage_v1 in /tftpboot dir
Preparation for transferring Root Filesystem
RootFilesytem can be loaded to Hawkboard either using SD/MMC or NFS.
If you want to use SD Card or USB Pendrive for loading the RootFS ,you can skip this section and proceed to SD/USB Drive Booting section.Also in case you are facing difficulty setting up NFS Server ,Following Using SD Card or USB Card Methodis recommended.
Using NFS Server Method
In NFS Boot method Root Filesystem remains on host PC & is shared using NFS Server This is then mounted as root-file system by Hawkboard kernel (uImage) So files can be accessed from Hawkboard else-well as Host Machine,any changes is reflected on both.This method do not require you to Copy RootFS on SD Card/USB Drive. Development is faster since u can directly copy files from Host machine to NFS Folder and it will reflected back on Hawkboard.
Follow these steps to configure NFS Server 1. Install NFS Server
host$ sudo apt-get install portmap nfs-kernel-server
2. Share the Folder containing extracted RootFS (e.g /nfsroot contains RootFS)
Edit /etc/exports and add the shares:
/nfsroot <NETWROK_IP><SUBNET_MASK>(rw,sync,no_subtree_check,no_root_squash)
e.g, /nfsroot 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check,no_root_squash)
Assuming your network is is 192.168.0.0
NB:- no_root_squash might be necessary if you are getting sudo erros in Ubuntu Rootfs
3.After setting up /etc/exports, export the shares:
host$ sudo exportfs -ra
restart the nfs-server if required
host$ sudo /etc/init.d/nfs-kernel-server restart
4.cp RootFS_v1.tar.bz2 to /nfsroot and extract files using
host$ sudo tar xvf RootFS_v1.tar.bz2
Using SD Card or USB Card Method
Follow these steps only if you are not using NFS Method. or Skip to Next Section
This requires you to transfer Root Filesystem to SD Card or USB Pendrive, Drive should have a ext2/ext3 partition and file should be copied on that system. To create ext2/ext3 partition you can use gparted.
1.Install Gparted using
apt-get install gparted
2.Now create ext2 partition using
gparted /dev/sdb& Note:Here /dev/sdb is USB PenDrive
create aroud 2GB or more Ext2 partition
3.Copy RootFS_v1.tar.bz2 to this partition Extract using
tar xvf RootFS_v1.tar.bz2 rm -f RootFS_v1.tar.bz2 sync
and remove the SD Card or USB Drive
Booting Linux
Once TFTP Server has been setup and uImage has been placed in /tftpboot folder & Also RootFS is has been put in either NFS Folder(/nfsroot) or on SD/USB Card.
Follow this steps to load kernel and RootFS.
1.Open Cutecom or HyperTerminal
2. Enter following command to Load uimage through tftp ( as usual)
hawkboard.org> setenv serverip <PC IP> hawkboard.org> setenv ipaddr <BOARD IP> hawkboard.org> tftp c0700000 uImage_v1
#Here PC_IP is IP address of your Host Linux #BOARD IP is IP address if your board you want to setup(make sure its on same network) #tftp c0700000 uImage_v1 Tells Bootloader to Load uImage from PC_IP to Hawkboard's RAM at location c0700000
Below Screen Shot how to enter commands in cutecom
2.Sent environment variable to uImage for the Location of RootFS Bootargs is the parameter/Variable that is send to uImage telling the Location of RootFS ,for it to mount. Once the uImage is executed ,it then read bootargs and load the RootFS defined in that.
Set one of the Following Bootargs depending where your RootFS is located.
a)If USB Drive
hawkboard.org> setenv bootargs console=ttyS2,115200n8 noinitrd root=/dev/sda1 rootwait rw init=/sbin/init
Here
- root=/dev/sda1 Tells that RootFS is locaed on USB Drive with first ext2 partition
- console=ttyS2,115200n8 tells where to put booting Message,Its basically UART3 of Hawkboard.
- init=/sbin/init tells which program to run first after mounting rootFS
E.g. in u-boot say something like:
setenv bootargs console=ttyS2,115200n8 console=tty1 noinitrd root=/dev/mmcblk0p1 rootwait rw
b)if SD Card
hawkboard.org> 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.
c) If NFS Boot
c.1)If Board uses Static IP
hawkboard.org> setenv bootargs 'console=ttyS2,115200n8 noinitrd rw ip=<HawkboardIP>:<server-ip>:<gateway-ip>:<netmask>::eth0: root=/dev/nfs nfsroot=<NFS Server ipaddress>:/nfsroot'
e.g
hawkboard.org> setenv bootargs 'console=ttyS2,115200n8 noinitrd rw ip=192.168.0.125:192.168.0.1:192.168.0.1:255.255.255.0::eth0: root=/dev/nfs nfsroot=<NFS Server ipaddress>:/nfsroot'
where 192.168.0.125 is board IP & 192.168.0.1 is gateway IP& Router IP.
c.2)if Board uses DHCP
hawkboard.org> setenv bootargs "mem=128M console=ttyS2,115200n8 root=/dev/nfs nfsroot=<Server ipaddress>:/nfsroot ip=dhcp"
3.Run the Kernel & Mouting of Filesystem
hawkboard.org> bootm c0700000
Tells Uboot to run image located at location c0700000 ,in this case its uImage.
Explaining Booting Process
After enter bootm command kernel start executing ,it reads the read the bootargs that was passed as environment variable earlier.Bootargs contains information where the root filesytem is present .Reading this information uImage mounts the RootFS and subsecult runs /sbin/init (which typically shows you a login prompt).
Sample rootFS is configured for following user and password user:hawk password:password