Вы находитесь на странице: 1из 31

Zoom OMAP-L138 eXperimenter Kit Lab Manual

Sezer GREN UURDA;Abdullah YILDIZ;Onur DEMR

RESys Lab - YEDITEPE UNIVERSITY

Copyright 2011 [Type text] [Type text] [Type text]

TABLE of CONTENTS
1. 2. 3. 4. 5. 6. 7. 8. 9. SERIAL CONNECTION ................................................................................................................................ 3 TOUCHSCREEN CALIBRATION ................................................................................................................... 5 CROSS-COMPILATION ............................................................................................................................... 6 BOOTLOADER: Das U-BOOT...................................................................................................................... 7 BOOTING WITH NETWORK FILE SYSTEM (NFS) & TRIVIAL FILE TRANSFER PROTOCOL (TFTP) ................ 10 BOOT FROM SD-CARD ............................................................................................................................ 15 TIMESYS LINUXLINK ................................................................................................................................ 20 TIMESTORM IDE ..................................................................................................................................... 21 QT-EMBEDDED ....................................................................................................................................... 22

10. MPLAYER ................................................................................................................................................ 25 11. SETTING UP VT6656 WI-FI MODULE ....................................................................................................... 26

1.

SERIAL CONNECTION

Zoom OMAP-L138 board uses RS-232 port on the board for standard input (stdin) and standard output (stdout) operations with default settings. Hence, a serial crosslinked (null modem) cable can be used in order to monitor and control the system. At the host machine side, a terminal emulator1 could be used to create a session between the board and the host machine. PuTTY is a free and open source terminal emulator application which can act as a client for the SSH, Telnet, rlogin, and raw TCP computing protocols and as a serial console client. It can be installed2 on the host machine by typing in the command line:
$apt-get install putty

To invoke PuTTY type:


$putty

Set the parameters required to start a session between host machine and the board as follows: Serial line: e.g. /dev/ttyUSB0 or /dev/ttyS0 (it depends on cable type and port configurations on host machine) Speed (baud): 115200 Data bits: 8 Stop bits: 1 Parity: None Flow control: None

1 2

PuTTY is used as default terminal emulator. Some command-line operations need to have user root privileges.

Figure 1. PuTTY serial connection settings

Zoom OMAP-L138 development kit comes with 2 plug&start SD-Cards. One of them comes with Win CE OS, and the other one includes a Linux kernel and root file system which can handle touchscreen. In order to start the system with Linux kernel and root file system, insert SD-Card -which includes a base Linux system- into SD/MMC-Card slot on the board; open a session with PuTTY, and power up the board.

2.

TOUCHSCREEN CALIBRATION

Base Linux system which comes with SD-Card has an application named ts_calibrate which allows calibrating the touchscreen. To calibrate the touchscreen, it is needed to stop the running GUI application which handles touchscreen. In PuTTY, type ps to list running processes and find the related application.
$ps

Figure 2. Running processes on base Linux system which comes with SD-Card

As shown in Figure 2, we can see the application named "/usr/bin/matrix_guiE. Stop this process:
$kill -9 1016

After deactivating touchscreen, then it can be calibrated. ts_calibrate is under /usr/bin .


$cd /usr/bin

Here it can be seen that there is a bunch of applications to test components on the board.
$ts_calibrate

Run ts_test application and test it with either draw mode or drag mode on screen.
$ts_test

3.

CROSS-COMPILATION

Zoom OMAP-L138 development kit has an ARM-based processor (ARM926T). In order to develop and execute applications on the system, a cross -compiler is needed. A cross-compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is run (that is, host machine). There are many ways to access a cross-compiler and required toolchain. During this manual, all necessary workflow is based on LinuxLink. LinuxLink is provided by a company named Timesys3 which makes easier to develop embedded Linux systems. LinuxLink provides a way to setup and install all necessary components to build an embedded linux system (SDK Installer, contains kernel, RFS, and toolchain) to host machine by executing a single shell script4. This will extract all necessary packages into host system:
$chmod +x omapl138_exp-development-environment.sh $./omapl138_exp-development-environment.sh

Now it can be developed a basic C/C++ application using toolchain.


$cat>hello.c #include <stdio.h> void main() { printf("Hello World!"); }

On the host machine, write the C program above which simply prints a line to the standard output. Afterwards, cross-compile it by typing:
$path/to/bin/armv5l-timesys-linux-uclibcgnueabi-gcc-4.4.5 -o hello hello.c

Then copy the executable hello in a proper location (e.g. /home) in the root file system. Mount your SD-Card which includes the base Linux system and copy your executable:
$cp /path/to/hello media/rootfs/

After starting the system and executing the application which is cross-compiled, you should see the line Hello World! on terminal.

3 4

http://www.timesys.com/ It is assumed that user has at least LinuxLink Free Web Edition and downloaded the necessary packages.

4.

BOOTLOADER: Das U-BOOT

U-Boot is a boot loader, i.e. its primary purpose in the shipping system is to load some operating system. That means that U-Boot is necessary to perform a certain task, but it's nothing you want to throw any significant resources at. Typically U-Boot is stored in relatively small NOR flash memory, which is expensive compared to the much larger NAND devices often used to store the operating system and the application. A usable and useful configuration of U-Boot, including a basic interactive command interpreter, support for download over Ethernet and the capability to program the flash shall fit in no more than 128 KB. U-boot is the primary bootloader that is commonly used in embedded systems. It loads the main operating system for the computer. It also enables us to control boot sequence and re-configure booting options. The U-Boot Universal Bootloader project provides firmware for many CPU architectures and boards with full source code under GPL. See http://www.denx.de/wiki/U-Boot for more information and http://www.denx.de/wiki/U-Boot/SourceCode for current source code The end user is not interested in running U-Boot. In most embedded systems he is not even aware that U-Boot exists. The user wants to run some application code, and that as soon as possible after switching on his device. It is therefore essential that U-Boot is as fast as possible, especially that it loads and boots the operating system as fast as possible. To achieve this, the following design principles shall be followed:

Enable caches as soon and whenever possible Initialize devices only when they are needed within U-Boot, i.e. don't initialize the Ethernet interface(s) unless U-Boot performs a download over Ethernet; don't initialize any IDE or USB devices unless U-Boot actually tries to load files from these, etc. (and don't forget to shut down these devices after using them - otherwise nasty things may happen when you try to boot your OS).

Also, building of U-Boot shall be as fast as possible. This makes it easier to run a build for all supported configurations or at least for all configurations of a specific architecture, which is essential for quality insurance. If building is cumbersome and slow most people will omit this important step. The binary image for U-Boot for the board can be downloaded from the Timesys Download BSP/SDK menu. U-Boot is a boot loader, but it is also a tool used for board bring-up, for production testing, and for other activities that are very closely related to hardware development. So far, it has been ported to several hundreds of different boards on about 30 different processor families - please make sure that any code you add can be used on as many different platforms as possible. U-Boot has a command-line interface. You can use the help command to print a list of all available commands for your configuration. To get the U-Boot command line interface, connect the board, power it on, and open PuTTY terminal. When "Press any key to stop booting:" countdown text comes, press a key to stop it (shown as in Figure 3). Then U-Boot will get ready to take commands just like a terminal.

Figure 3. Booting with U-Boot

Find out how U-Boot environment variables by typing:


u-boot>printenv

Figure 4. U-Boot Environment Variables

At the first line (shown as in Figure 4), boot arguments can be seen as in bootargs and its parameters such as mem, root etc. For the time being, all boot arguments are set for booting from SD-Card where the kernel image and root file system reside in. In the second line, we can see boot command bootcmd which stores command sequences for a

boot session. Memory load address where the kernel will be loaded is 0x0700000. bootfile is used for setting kernel image that will be loaded. Typically environment variables are set as follows:
u-boot>setenv env_variable argument

This will set env_variable to argument. To delete an environment variable, run setenv with corresponding variable by leaving its argument blank:
u-boot>setenv variable_name

5. BOOTING WITH NETWORK FILE SYSTEM (NFS) & TRIVIAL FILE TRANSFER PROTOCOL (TFTP)
This section explains how to boot your system remotely using Network File System (NFS) and Trivial File Transfer Protocol (TFTP) 5. Preliminary Step I: *If you have an NFS kernel server and TFTP server on your machine, you can continue through Step 1. 1. Install NFS kernel server and TFTP server using Debian package management utility, APT or Synaptic Package Manager. For APT, type in terminal the following lines to install NFS and TFTP servers respectively:
$apt-get install nfs-kernel-server nfs-common portmap $apt-get install tftpd-hpa

Alternatively, you can use Synaptic Package Manager (Figure 5 and 6) to install the packages:

Figure 5. Install tftpd-hpa using Synaptic Package Manager

TFTP will be used to access the kernel and NFS will be used to access the root file system.

10

Figure 6. Install nfs-kernel-server and other packages using Synaptic Package Manager

Preliminary Step II: *This section describes how to connect a (guest) operating system running on a virtual machine to the network. If you don't use a guest operating system or virtual machine, you can skip this section and continue through Step 1. *The operations are explained for VirtualBox VMs. Network Address Translation (NAT) is the default networking mode for VirtualBox shown as in Figure 7. The disadvantage of NAT mode is that, the virtual machine is invisible and unreachable from the outside internet; you cannot run a server this way unless you set up port forwarding. Hence, we need to change the networking mode for NFS and TFTP operations.

11

Figure 7. Default networking mode NAT settings in VirtualBox

In bridged networking mode, VirtualBox uses a device driver on your host system that filters data from your physical network adapter. This allows the guest operating system to interact with the host and the rest of the network using a separate IP address. Change VirtualBox Networking Mode to Bridged Adapter shown as in Figure 8.

12

Figure 8. Change VirtualBox Networking Mode to Bridged Adapter

Step 1: Create directories on your host machine to make your target device access the kernel and the root file system:
$mkdir /export/rfs $mkdir /var/lib/tftpboot

*/var/lib/tftpboot should be created during the installation of TFTP server. Step 2: Open "/etc/exports" with an editor and add the following line by editing the necessary parts:
/export/rfs *(rw,no_root_squash) #set the path of root filesystem

Step 3: Open "/etc/default/tftpd-hpa" with an editor and add the following lines by editing the necessary parts: TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/lib/tftpboot" #set TFTP server directory TFTP_ADDRESS="10.2.10.183:69" #set IP address of TFTP server TFTP_OPTIONS="--secure" Step 4: Copy kernel image (uImage) and root filesystem into /var/lib/tftpboot and /export/rfs respectively. Step 5: Type /etc/init.d/nfs-kernel-server restart in console to restart nfs server in your host machine.

13

Step 6: -> Open a PuTTY session with a baudrate of 115200. -> Power-on your board. -> Observe the PuTTY screen while the system is booting. -> Press any key to stop autoboot operation while U-Boot is running. If skipped and autoboot runs, U-Boot tries to run with existing U-Boot settings. -> Type in PuTTY terminal the server IP address:
u-boot>setenv serverip 10.2.10.183

->If the board takes its IP address from a DHCP server, run the U-Boot command dhcp:
u-boot>dhcp

->When dhcp is invoked, it gets an IP address from DHCP server and also downloads the kernel (if any) to the system memory using Trivial File Transfer Protocol (TFTP). -> If your system uses a fixed IP, then you should set the board IP address manually and use U-Boot command tftp to download the kernel to the system memory:
u-boot>setenv ipaddr 10.2.10.184 u-boot>tftp

-> Change U-Boot environment variables by typing in PuTTY terminal:


u-boot>setenv bootargs mem=64M console=ttyS2,115200n8 ip=<IP address set manually or taken from DHCP server> nfsroot=10.2.10.183: /export/rfs root=/dev/nfs rw u-boot>saveenv #Save your changes for upcoming sessions u-boot>bootm c0700000

14

6.

BOOT FROM SD-CARD

Zoom OMAP-L138 board has an SD/MMC-Card slot which allows users to create a bootable system on an SD-Card or MMC-Card. Step 1: -Create a blank Secure Digital Card (sd-card) with using a partition editor (e.g. gparted shown as in Figure 9). -> If you don't have "gparted6" installed on your machine, download and install it by typing in shell:

$apt-get install gparted

Figure 9. gparted

- Unmount and delete existing partitions shown as in Figure 10. ->Right-Click and select unmount to exclude the partition from the system and then right-click and select delete to format the partition.

Figure 10. Unmount and delete existing partitions of the SD-Card

-> Click "Apply All Operations" button to perform the modifications you made on the device. -> After finished, eject the device and insert again. Step 2: -> You should have installed DaVinci-PSP-SDK in your host machine to build uflash utility. - Write U-Boot image into SD-Card using uflash utility shown as in Figure 11.

You need to have root privileges to run gparted.

15

$./uflash -d /dev/sdb -b u-boot.bin -p OMAPL138 vv

which says copy the file named "u-boot.bin" into sd-card under /dev/sdb directory for a device (processor) named "OMAPL138".

Figure 11. Write U-Boot image with uflash utility

Step 3: - Run gparted again. - Right-Click on the gray area and select "New" to create a new partition. - Since we use the first parts of the device for storing U-Boot, we start to create a new partition by leaving a blank area between U-Boot image and the new partition. - As an example, use the following parameters in the image below.

Figure 12. Creating a partition for kernel on SD-Card

16

- This partition will be used to store kernel image. For convenience, use the name "kernel" for label of partition shown as in Figure 12. - After checking the configuration, click "Add" button. Step 4: - Create a new partition similarly made in the previous step. - Leave the default parameters as is except the "File system" (set it to ext3). - Set the name of the label to "rootfs" shown as in Figure 13. - After checking the configuration, click "Add" button.

Figure 13. Creating a partition for root file system

- Click "Apply All Operations" button to perform the modifications you made on the device. -> After finished, unmount the device and mount again. Step 5: - Open your shell and change current directory to "/media/kernel" by typing:
$cd /media/kernel

- Copy the kernel image (usually named uImage) into this partition.
$cp /home/user/system_images/uImage

- Copy your U-Boot script (named boot.scr) into this partition (if any).

17

Step 6: - Change your current directory to "/media/rootfs".


$cd /media/rootfs

- Delete all files/directories


$rm -r *

- Copy the root file system archive into this partition and extract it.
$cp /home/user/system_images/rootfs.tar.gz $tar zxvf rootfs.tar.gz

- Remove the archive file. - Close your shell session. Step 7: - To apply you made for sd-card, type in turn:
$umount /media/kernel $umount /media/rootfs

- After finished, eject the device. Step 8: - Setup your development system. -> Insert your sd-card into the board. -> Connect the serial cable between the board and the host system. -> Open a PuTTY session with a baudrate of 115200. -> Power-on your board. -> Observe the PuTTY screen while the system is booting. -> Press any key to stop autoboot operation while U-Boot starts running. If skipped and autoboot runs, U-Boot tries to run with existing U-Boot settings. Overwrite the settings with saveenv command to make your changes permanent for environment variables after setting them with setenv. Boot the system.
u-boot>mmc rescan 0

18

u-boot>setenv bootargs 'console=ttyS2,115200n8 root=/dev/mmcblk0p2 uboot>rootfstype=ext3 rootdelay=2 rw ip=off mem=32M@0xc0000000 mem=64M@0xc4000000 rootwait' u-boot>fatload mmc 0 c0700000 uImage u-boot>bootm c0700000

Figure 14. After succesfully booting from SD-Card

-> Figure 14 shows Experimenter Kit console after a succesful boot from SD-Card.

19

7.

TIMESYS LINUXLINK

Timesys offers two solutions to develop embedded Linux build solutions (shown as in Figure 15): i. LinuxLink Web Edition, ii. LinuxLink Desktop Edition. LinuxLink Web Edition is a free online/hosted version for quickly building a custom BSP/SDK on a reference kit. LinuxLink Web Edition helps developers: Quickly prototype and benchmark common applications on the development kit. Have a bootable Linux image in a couple of hours. Easily perform cross-compilation of complex packages. Take advantage of Timesyss web interface which simplifies booting Linux to a few clicks. Eliminate complexity and errors by automatically managing package dependencies. Easily configure embedded Linux on multiple architectures, boards, processors.

LinuxLink Desktop Edition is a subscription-based, desktop version that includes unmetered, expert support for building a fully featured, fully customized, embedded Linux development platform. LinuxLink Desktop Edition offers more i. control, ii. flexibility, and iii. recency to the subscribers: i. Control: ii. iii. Reconfigure, patch and modify the Linux kernel Use your own Linux kernel tree Build a root filesystem (RFS) from source / the ground up start small and add features that your product requires Add, remove, modify and update packages in the RFS design

Flexibility: Integrate third-party software (even binaries) Integrate your value-adding application Optimize Linux images for deployment on various media Recency Up-to-date Regular, short release cycles Immediate updates and fixes Pick and choose updates/upgrades

20

Figure 15. Timesys Embedded Linux Framework

For Section 10, use the LinuxLink Web Edition to generate the kernel and root filesystem. Make sure to include qt-embedded, tslib, mplayer, dropbear, busybox, dhcpd, and other packages that you like.

8.

TIMESTORM IDE

To develop rich multimedia user interface applications using the Qt framework, install TimeStorm with Qt Eclipse from Timesys. This version is based on Eclipse Indigo (Eclipse 3.7, CDT 8.0) and is bundled with Qt plugins.

21

9.

QT-EMBEDDED
1. Install the Qt development libraries for your host. On Ubuntu this would look like:
$apt-get install qt4-dev-tools qt4-designer qt4-qmake

2. Make sure that you run omapl138_exp-development-environment.sh. This script will install the toolchain.
$./omapl138_exp-development-environment.sh

3. Save below as run_storm_native.sh. Change the permission (+x). Invoke TimeStorm with run_storm_native.sh.
$export QMAKESPEC=/usr/share/qt4/mkspecs/linux-g++ $/home/zoom/Desktop/timestorm-4.0/timestorm &

4. Add the toolchain (should be recognized by TimeStorm) by selecting Window>Preferences from the main menu. From the Preferences panel, select TimeStorm > Toolchains shown as in Figure 16. The next page will show the list of the tools that have been detected in the specified directory. 5. Set Qt versions for native and target development by selecting Window>Preferences from he main menu. From the Preferences panel, select Qt shown as in Figure 17. Add Qt versions and give appropriate labels e.g. Cross, Qt.4.6.2, etc. 6. Create a new Project and develop a Qt application shown as in Figure 18. 7. To build with host compiler (native toolchain), right click on the project, select Properties. In the Properties panel, select C/C++ General > Qt Properties. To use the native toolchain on host machine, select the Native Toolchain option shown as in Figure 19. 8. To generate the makefiles, select Project > Run qmake. Then build the Project and run it on the host. Then exit from TimeStorm. 9. Save below as run_storm.sh. Change the permission (+x). Invoke TimeStorm with run_storm.sh.
$export QMAKESPEC=<installed_toolchain_path>/usr/share/mkspecs/qws/linux-timesys-g++ $/home/zoom/Desktop/timestorm-4.0/timestorm &

10. To build with target compiler, right click on the project, select Properties. In the Properties panel, select C/C++ General > Qt Properties. To use the target toolchain, select the Cross option shown as in Figure 20. 11. To re-generate the makefiles, select Project > Run qmake. Then clean and build the Project. 12. Copy the executable on the root filesystem. 13. By following the instructions given in Section 6 (if you are booting with NFS & TFTP) or Section 7 (if you are booting with sd-card), copy the kernel image (uImage) and the root filesystem (rfs) including your Qt executable and boot the target. 22

14. On the target console, specify the driver and its specifics for pointer handling.
$export QWS_MOUSE_PROTO="Tslib:/dev/event0"

15. Then execute the Qt application you have just created.

Figure 16. Toolchain setup

Figure 17. Qt setup

23

Figure 18. Sample Qt C++ Project with Timestorm IDE

Figure 19. Set Qt Properties for Native Build

24

Figure 20. Set Qt Properties for Target Build

10.

MPLAYER

MPlayer is a movie player and it plays most of common video formats like MPEG, AVI, and so on. It is possible to run mplayer in framebuffer. In general, a video file is played with the following parameters:
$mplayer vo fbdev vf scale=<screen resolution dim x:screen resolution dim y <FILENAME>

-vo defines the video output driver for your current file -vf sets the dimension of file to be played. Use fs with no parameter instead to scale screen size automatically.

25

11.

SETTING UP VT6656 WI-FI MODULE

The VIA VT6656 WLAN Controller, commonly known as VT6656, is a wireless LAN controller with USB interface. To enable a fully functional network access using VT6656 module requires to integrate its driver to the linux kernel and add some useful networking tools to the root filesystem. This section explains the process of integrating VT6656 module driver to the static linux kernel and adding some networking tools to the root filesystem. Note: Its assumed that you have access to Timesys Factory Build System and network access on your host machine. Note: It can take up to 60 minutes or more to create a default workorder if you dont have any resource in your system. Step 1: Change current directory to where factory build system resides in.
$cd /path/to/factory

Step 2: Open kernel configuration interface.


$sudo make kernel-menuconfig

Step 3: Go to Device Drivers -> Staging Drivers and select VIA Technologies VT6656 support (If you cannot see the driver list under Staging Drivers, then enable Staging Drivers in Device

26

Drivers menu and then disable Exclude Staging Drivers from being built line under Staging Drivers, then the list should appear).

Save your new kernel configuration upon Exit. Step 4: Open Timesys Workorder Configuration.
$sudo make menuconfig

27

Go to Target Software -> Software Packages -> Networking -> Wireless and select wireless_tools and wpa_supplicant.

Go to Target Software -> Software Packages -> Networking -> Browsers and select elinks 28

(a text-based browser, i.e., no graphics).

Save your workorder configuration upon Exit. Step 5: Build bootloader, kernel and rootfilesystem.
$sudo make

Step 6: After finishing and building the system, copy kernel and root filesystem to SD-Card as explained in previous sections. Step 7: Setup your development system and power on the board. After making u-boot settings as in previous sections, start your system and wait until startup process finishes. Step 8: Plug in your VT6656 module to the USB port of your development board. A message appears on the screen.

Step 9: Type iwconfig to initialize wireless interface. Find your wireless connection interface for your system.

29

#iwconfig

Step 10: Activate eth1 interface.


#ifconfig eth1 up

Step 11: Scan and list available networks.


#iwlist eth1 scanning

Step 12: Set the security key if you connect to an encrypted wireless network.
#iwconfig eth1 key *********

30

Step 13: Set the network name which appears on available networks.
#iwconfig eth1 essid <NETWORK_NAME>

Step 14: Make the IP, netmask and gateway address settings similary:
#ifconfig eth1 XXX.XXX.XXX.XXX netmask YYY.YYY.YYY.YYY #route add default gw ZZZ.ZZZ.ZZZ.ZZZ

Step 15: Add your DNS addresses to /etc/resolv.conf:


#echo nameserver XXX.XXX.XXX.XXX >> /etc/resolv.conf

Step 16: Open elinks browser and write an url to examine whether Wi-Fi module works.
#elinks

31

Вам также может понравиться