Difference between revisions of "IoTGateway/BSP/Linux/AM335x/AM335x LBV6 User Guide"

From ESS-WIKI
Jump to: navigation, search
(Add a Driver to Kernel by menuconfig)
(Add a Driver to Kernel by menuconfig)
Line 224: Line 224:
 
how to add a RTC driver (Seiko Instruments S-35390A) to Linux kernel. we still  
 
how to add a RTC driver (Seiko Instruments S-35390A) to Linux kernel. we still  
 
use the RSB-4220 as demo.  Please refer to the following steps:
 
use the RSB-4220 as demo.  Please refer to the following steps:
* Open "Terminal" on Ubuntu.
+
* Open "Terminal" on Ubuntu host PC.
 
* $ sudo su (Change to “root” authority)
 
* $ sudo su (Change to “root” authority)
 
* Input user password.
 
* Input user password.

Revision as of 03:37, 28 September 2016

Start Guide

Generally,to do Linux development, you’ll need a host PC running Linux. In the development with the advantech SDK, it would be strongly recommend to use Ubuntu 12.04 LTS 64 bit/ Ubuntu 14.04 LTS 64 bit as developing environment. Because we have successfully tested our BSP on these OS version. Please install the Ubuntu 12.04 LTS 64 bit / Ubuntu 14.04 LTS 64 bit at your PC/NB in advance.

Configure your Linux Host

After installed this OS, you must install some essential libraries or tools on your host PC for building these source code. We will describe how to install them as follow:

  • 1. build-essential

If you have a new Ubuntu system where you have not installed anything for building. The build-essential library is necessary. The command as follow:

 # sudo apt-get install build-essential
  • 2. 32-bit compatibility libraries

As we known, the host PC is 64-bit Ubuntu, but some tools are a 32-bit tool. To make them work, you must install this 32-bit compatibility libraries. The command is follow on 64 bit Ubuntu14.04:

 # dpkg --add-architecture i386
 # cd /etc/apt/sources.list.d
 # echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-old-release.list
 # sudo apt-get update
 # sudo apt-get install ia32-libs 
 # sudo rm ia32-libs-old-release.list
 # sudo apt-get update 

On the 64-bit Ubuntu12.04, you need to type the following command:

 #sudo apt-get install ia32-libs
  • 3. Some essential tools for BSP building

After step1 and step2, you can build some application based linux. But if you want to build BSP source code, you need to install these following tools on ubuntu14.04.

 # sudo apt-get update libncurses5-dev autoconf automake dos2unix u-boot-tools

And On ubuntu14.04, you can type following command to install these software:

 # sudo apt-get update libncurses5-dev autoconf automake dos2unix uboot-mkimage

Because starting with Ubuntu 14.04 the package name for uboot-mkimage has changed to u-boot-tools.
After these steps, you can buid what you want, best wishes!

Install Advantech SDK

When you obtain the advantech Linux source code package, please refer to following instructions to install it to you host PC.

 1. Copy "AM335X_LBBxxxx_yyyy-mm-dd.bin" package to /root/.
 2. Start your "Terminal" on Ubuntu 14.04 LTS.
 3. $sudo su (Change to “root” authority)
 4. Input user password
 5. # cd /root/
 6. # chmod 777 AM335X_LBBxxxx_yyyy-mm-dd.bin    
 7. # ./AM335X_LBBxxxx_yyyy-mm-dd.bin 
 8. Input “yes”
 9. Then you can see folder "AM335X_LBBxxxx_yyyy-mm-dd" on /root/. 

AM335x board source code package (BSP) contains cross compiler, Linux source code, Uboot source code, root file system and some scripts used in development. Some of above components are developed by Advantech and the others are developed by open source community. AM335x source code package is composed of six main folders: “cross_compiler”, “document”,“image”, “package”, “scripts”, and “source”.
Note! AM335x source code package (BSP) is Advantech’s Intellectual Property. If you need to access this package, please contact your Advantech support window.
Bsp.png
The description of AM335x BSP package contents:

cross_compiler Cross compiler tool
document Some important documents, such as usermanual.
image uImage, u-boot.img
image/rootfs Linux root file system
package source code provided by TI or open source community without any modification, for example: kernel source, uboot source, libmodbus source
scripts scripts for configure system and compile images automatically.
source source code owned by Advantech, the uboot, kernel and libmodbus source code and demo source for AM335x

1. cross_compiler tools
You can use the cross compiler tool chain to compile the uboot, uImage, modbus library and related applications. (gcc version is 4.7.3 20130226).

2. Scripts
The scripts provided by Advantech will help you configure system or build the images more quickly. Please check them as follows:

setenv.sh A script to setup the developing environment quickly.
cfg_uboot.sh A script to configure the u-boot building setup quickly.
mk_uboot.sh A script to build the u-boot and copy the “u-boot” to “image” folder after building.
cfg_kernel.sh A script to build the “uImage” and copy the “uImage” to “image” folder after building.
mk_kernel.sh A script to build the “uImage” and copy the “uImage” to“image” folder after building.
mksd-linux.sh A script to setup up a bootable SD card if users build their images.
mkinand-linux.sh A script to go to SD card Linux O.S. then burn O.S to eMMC flash

3. source This folder contains sub-directories "linux-3.2.0-psp04.06.00.11" and "u-boot-2013.01.01-psp06.00.00.00" and demo. They are the source codes of the Linux kernel, U-boot and demo.

BSP Building Guide

In the following building demo, we always assume building is for RSB4220 platform. others(such as ROM3310,RSB4221) are same。 $(BSP) is your BSP root directory. In order to simplify the description, we use "$(BSP)" to represent actual BSP root path. you need to replace the string to actual path。
1. Setup uboot and kernel build environment

2) $ sudo su (Change to “root” authority)
3) Input user password
4) # cd  $(BSP)/scripts/
5) # source setenv.sh (To configure the developing environment automatically)

Then you can start to code the source code, build uboot and kernel images.

The setenv.sh script is used to configure the developing environment quickly. It will configure the folder paths for system.

Note! You have to run “#source setenv.sh” every time once you open a new "Terminal" utility. It is suggested to change to “root” authority to use the source code. And the “$(BSP)” is the root directory of BSP source code.
2. Build u-boot Image
Advantech has a script to build the u-boot quickly. You can build u-boot image by follow below steps:

 1) Open "Terminal" on Ubuntu 14.04 LTS..
 2) $sudo su (Change to “root” authority)
 3) Input user password.
 4) #cd $(BSP)/scripts/
 5) #source setenv.sh (To configure the developing environment automatically)
 6) #./cfg_uboot.sh  am335x_rsb4220  (To set the u-boot configuration automatically)
 7) #./mk_uboot.sh (Start to build the u-boot)

Then you can see u-boot.img is being built and located in ../image.

3. Build Linux Kernel Image
Advantech offer you a script to build the “uImage” quickly. You can build uImage by follow below steps:

1) Open "Terminal" on Ubuntu 12.04 LTS.
2) $sudo su (Change to “root” authority)
3) Input user password.
4) # cd  $(BSP)/scripts/
5) # source setenv.sh (To configure the developing environment automatically)
6) #./cfg_kernel.sh am335x_rsb4220_defconfig (To set the uImage configuration automatically)
7) #./mk_kernel.sh (Start to build the uImage)

Then you can see uImage is being built and located in ../image.


Update Linux OS

All advantech products based on AM335x platform support boot from SD card or onboard flash. This section will guide you how to build an image for Linux system boot media.

Debug Message

All advantech risc products can connect to a host PC (Linux or Windows) by using console cable and debug port adapter. In order to communicate with host PC, serial communication program such as HyperTerminal, Tera Term or PuTTY is must required. Suggest use PuTTY in Ubuntu 14.04. Below is the detail instruction of how to setup PuTTY on ubuntu 14.04 hosts:
Install putty on ubuntu 14.04
Putty1.png
1) Connect target board to your ubuntu PC by using console cable
2) Open putty on your ubuntu PC
3) power up the target board
4) Setting putty as follows
Putty5.png
Select correct serial line, then click open. Then you will see the console information: Putty7.png
Type root to login in system.

Storage Information (eMMC/SD card)

The storages devices name as following:

Device Node Name
SD caed /dev/mmcblk0
eMMC /dev/mmcblk1

If Linux os exists in both SD card and eMMC flash, the linux in SD is default boot option. If no SD card inserted, the eMMC node is "/dev/mmcblk0".

Create a Linux SD Card System

1. Create system from Pre-built System Image
You are able to find the pre-built image from Advantech website. Please follow below steps to create a SD card for boot up. we still use the RSB-4220 as demo:

1) Copy “4420LIVxxxx_yyyy-mm-dd.tar.gz” package to your /root/.
2) Open "Terminal" on Ubuntu 14.04 LTS..
3) $sudo su (Change to “root” authority)
4) Input your password.
5) # cd /root/
6) # tar xzvf 4220LIVxxxx_yyyy-mm-dd.tar.gz (Unzip files)
7) Insert one SD card to your developing computer
8) Check the SD card location, like /dev/sdb
9) #cd ./4220LIVxxxx_yyyy-mm-dd/scripts
10) #./mksd-linux.sh /dev/sdb
11) Type “y” (Start to copy files, wait until it shows [Done] )

Then insert the Linux system SD card to target board (like RSB-4220), it will boot up with Linux environment.

2.Create system from Source Code Package
When you receive the advantech Linux source code package, you can refer following steps to create a Linux system SD card for booting up from it.we still use the RSB-4220 as demo:

1) Open "Terminal" on Ubuntu 14.04 LTS.
2) $sudo su (Change to “root” authority)
3) Input your password.
4) Insert one SD card to your developing computer
5) Check the SD card location, like: /dev/sdb
6) Ensure that you have built the uboot and kernel
7) #cd $(BSP)/scripts
8) #./mksd-linux.sh /dev/sdb
9) Type “y” (Start to copy files, wait until it shows [Done] )

Then insert the Linux system SD card to target board's (such as RSB-4220) SD card slot, it will boot up with Linux environment.

Boot from Onboard Flash

If you’ve already had a Linux system SD card, you can refer following steps to copy the content to onboard flash and then boot from onboard flash. Advantech also provide you a script “mkinand-linux.sh” to speed up the process of installing system image to onboard flash.

1) Ensure you have created a linux system on SD card
2) Insert this Linux system SD card to target board and connect serial console.
3) On your target system, type #root (Login)
4) On your target system, type #cd /mk_inand
5) On your target system, type #./mkinand-linux.sh /dev/mmcblk1
6) Type “y” (Start to copy files, wait until it shows [Done] )
7) After done, Power off and remove this SD card.

Then you can boot from onboard flash without SD card.

Developement Guide

HW module Configuration & driver

Add a Driver to Kernel by menuconfig

You can add a driver to kernel by menuconfig. Here is an example to guide you how to add a RTC driver (Seiko Instruments S-35390A) to Linux kernel. we still use the RSB-4220 as demo. Please refer to the following steps:

  • Open "Terminal" on Ubuntu host PC.
  • $ sudo su (Change to “root” authority)
  • Input user password.
  • # cd $(BSP)/scripts/
  • # source setenv.sh (To configure the developing environment automatically)
  • # ./cfg_kernel.sh am335x_rsb4220_defconfig
  • # ./cfg_kernel.sh menuconfig

Then you will see a GUI screen (Linux Kernel Configuration) as below: Menuconfig.png

  • Select “Device Drivers”->”Real Time Clock”, you will see an option “Seiko Instruments S-35390A” on the list. Choose this option then exit and save your configuration.

Menu2.png

  • Change directory to “source/linux-3.2.0-psp04.06.00.11/arch/arm/mach-omap2”, edit the “board-rsb4220.h” and “board-advantech.c”. Please add below codes to source/linux-3.2.0-psp04.06.00.11/arch/arm/mach-omap2/board-rsb4220.h :
/* I2C */
static struct i2c_board_info mxc_i2c0_board_info[] __initdata = {
{
I2C_BOARD_INFO("s35390a", 0x30),
},
}
  • Please add below codes to source/linux-3.2.0-psp04.06.00.11/arch/arm/mach-omap2/board-advantech.c:
omap_register_i2c_bus(1, 100, am335x_i2c0_boardinfo,
ARRAY_SIZE(am335x_i2c0_boardinfo));
  • Please refer to Building Guide to rebuild the kernel with RTC driver (Seiko Instruments S-35390A) after completing above steps

Hardware module

C/C++ & Qt Development

System Service & Usage