Difference between revisions of "CL-SOM-AM57x: Linux: Getting started"

From Compulab Mediawiki
Jump to: navigation, search
(Display options)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
== Introduction ==
+
#REDIRECT [[CL-SOM-AM57x: Linux: Manual Installation]]
This article provides an introduction on how to install the example root filesystem image on the CompuLab CL-SOM-AM57x System-on-Module / Computer-on-Module eMMC internal storage device.
 
 
 
== Preparation steps ==
 
* Obtain a PC workstation with a serial communication port or a free USB 2.0 Host port.
 
* For networked installation you need to install a TFTP server on the host PC. For Windows machines we recommend [http://tftpd32.jounin.net/ TFTPD32] included in the Linux package for CL-SOM-AM57x (link below).
 
* Download the Linux package for CL-SOM-AM57x from [http://compulab.co.il/products/computer-on-modules/CL-SOM-AM57x/#devres CompuLab website]. Unzip the package to a directory on your host workstation.
 
* All image files mentioned below can be found in the {{filename|images}} subdirectory
 
* Connect the host PC to the SB-SOM-AM57x base-board (connector P8) via the serial cable supplied with the evaluation kit.
 
** SB-SOM-AM57x base-board features Serial-to-USB adapter available through connector P7. It can be used as an alternative debug port to connect the Host PC via the micro-USB cable supplied with the evaluation kit.
 
* Start terminal emulation software on your PC. Set baud rate to 115200 bps, 8 bit per frame, 1 stop bit, no parity, no flow control.
 
* Turn on the CL-SOM-AM57x evaluation system. The U-Boot boot-loader will start and you will get a command prompt.
 
*: {{Note|If the boot settings of your CL-SOM-AM57x are different than default, you may need to press and hold '''Ctrl-C''' while turning the CL-SOM-AM57x on, in order to get command prompt.}}
 
 
 
== Boot into the installation environment (ramdisk) ==
 
The first step in CL-SOM-AM57x Linux installation is starting the installation environment (Linux kernel and Ramdisk image).
 
This can be done using one of the following media:
 
* [[#Using installation environment on MMC/SD card|MMC/SD card]]
 
* [[#Using installation environment from USB storage device|USB storage device]]
 
* [[#Using installation environment from TFTP server|Network TFTP server]]
 
 
 
=== Using installation environment on MMC/SD card ===
 
* Copy {{filename|kernel.img}}, {{filename|am57xx-sbc-am57x.dtb}}, {{filename|ramdisk.img}} and {{filename|bootscr.img}} from {{filename|images}} sub-directory of [http://compulab.co.il/products/computer-on-modules/CL-SOM-AM57x/#devres Linux package for CL-SOM-AM57x] to the root directory on the first partition of the MMC/SD card.
 
* Insert the MMC/SD card into the MMC/SD socket (P9) on the SB-SOM-AM57x baseboard and reset the module.
 
* The installation environment boot will start automatically.
 
* To start installation environment boot manually, use the following U-Boot commands:
 
<pre>
 
CL-SOM-AM57x # mmc dev 0
 
CL-SOM-AM57x # mmc rescan
 
CL-SOM-AM57x # load mmc 0 0x82000000 bootscr.img
 
CL-SOM-AM57x # source 0x82000000
 
</pre>
 
* Continue to the [[#Install Kernel and Root File System Images  | Install Kernel and Root File System Images ]] section.
 
 
 
=== Using installation environment from USB storage device ===
 
* Copy {{filename|kernel.img}}, {{filename|am57xx-sbc-am57x.dtb}}, {{filename|ramdisk.img}} and {{filename|bootscr.img}} from {{filename|images}} sub-directory of [http://compulab.co.il/products/computer-on-modules/CL-SOM-AM57x/#devres Linux package for CL-SOM-AM57x] to the root directory on the first partition of the USB storage device.
 
 
 
* Insert USB storage device into SB-SOM-AM57x USB port P6.
 
* Remove MMC/SD card from the MMC/SD socket (P9) on the SB-SOM-AM57x baseboard.
 
* The installation environment boot will start automatically.
 
* To start installation environment boot manually, use the following U-Boot commands:
 
<pre>
 
CL-SOM-AM57x # usb start
 
CL-SOM-AM57x # load usb 0 0x82000000 bootscr.img
 
CL-SOM-AM57x # source 0x82000000
 
</pre>
 
 
 
* Continue to the [[#Install Kernel and Root File System Images  | Install Kernel and Root File System Images ]] section.
 
 
 
=== Using installation environment from TFTP server ===
 
* Connect the SB-SOM-AM57x Ethernet port to your local network.
 
* Put {{filename|kernel.img}}, {{filename|am57xx-sbc-am57x.dtb}}, and {{filename|ramdisk.img}} from {{filename|images}} sub-directory of [http://compulab.co.il/products/computer-on-modules/CL-SOM-AM57x/#devres Linux package for CL-SOM-AM57x] to a location accessible by the TFTP server:
 
*: - On Windows machine: copy {{filename|kernel.img}}, {{filename|am57xx-sbc-am57x.dtb}}, and {{filename|ramdisk.img}} to the same folder and point the TFTP server to that folder
 
*: - On Linux machine: copy {{filename|kernel.img}}, {{filename|am57xx-sbc-am57x.dtb}}, and {{filename|ramdisk.img}} to TFTP server root directory, usually {{filename|/tftpboot}} or {{filename|/tftproot}}.
 
 
 
Use U-Boot {{cmd|dhcp}} command to obtain IP address
 
<pre>
 
CL-SOM-AM57x # dhcp
 
</pre>
 
:or manually set {{parameter|ipaddr}} environment variable:
 
<pre>
 
CL-SOM-AM57x # setenv ipaddr <ip address>
 
</pre>
 
* Use the following U-Boot commands to start installation environment boot:
 
<pre>
 
CL-SOM-AM57x # setenv bootargs "root=/dev/ram0 rw ramdisk_size=16384 console=ttyO2,115200n8 vram=16M ip=dhcp"
 
CL-SOM-AM57x # tftpboot 0x88000000 am57xx-sbc-am57x.dtb
 
CL-SOM-AM57x # tftpboot 0x82000000 kernel.img
 
CL-SOM-AM57x # tftpboot 0x88080000 ramdisk.img
 
CL-SOM-AM57x # bootz 0x82000000 0x88080000 0x88000000
 
</pre>
 
 
 
* Continue to the [[#Install Kernel and Root File System Images  | Install Kernel and Root File System Images ]] section.
 
 
 
=== Install Kernel and Root File System  Images ===
 
After the ramdisk image is loaded the Linux login prompt will appear. Login as {{parameter|root}} into the system.
 
<pre>
 
compulab login: root
 
</pre>
 
 
 
==== Mount the installation source media ====
 
 
 
The next step is installing the kernel and Root File System images. The following media can be used as a source for installation:
 
* [[#Mount an MMC/SD Card|MMC/SD Card]]
 
* [[#Mount a USB Storage Device|USB storage device]]
 
* [[#Mount an NFS drive|NFS drive]]
 
 
 
===== Mount an MMC/SD Card =====
 
 
 
* Copy the {{filename|zImage-cl-som-am57x}}, {{filename|am57xx-sbc-am57x.dtb}} and the  {{filename|debian-armhf-image.tar.bz2}} to the root directory of any partition on the MMC/SD card. The partition can be formatted either ext2/3/4 or FAT file system.
 
* Insert the MMC/SD card into the SD socket (P9) on the SB-SOM-AM57x.
 
* The MMC/SD card is mounted automatically under /media/mmcblk0pX. Where X is the partition number.
 
* If for some reason the MMC/SD card hasn't been mounted automatically, use the following mount command:
 
<pre>
 
root@compulab:~# mkdir -p /media/mmcblk0pX && mount /dev/mmcblk0pX /media/mmcblk0pX
 
</pre>
 
* Continue to the [[#Install Linux kernel and filesystem images | Install Linux kernel and filesystem images]] section.
 
 
 
===== Mount a USB Storage Device =====
 
* Copy the {{filename|zImage-cl-som-am57x}}, {{filename|am57xx-sbc-am57x.dtb}} and the {{filename|debian-armhf-image.tar.bz2}} to the root directory of any partition on the USB storage device. The partition can be formatted either ext2/3/4 or FAT file system.
 
* Plug the USB storage device to any USB host port (P6) on the SB-SOM-AM57x.
 
* The USB device is mounted automatically under /media/sdXY. Where X is the device letter and Y is the partition number.
 
* If for some reason the USB storage device hasn't been mounted automatically, use the following mount command:
 
<pre>
 
root@compulab:~# mkdir -p /media/sdXY && mount /dev/sdXY /media/sdXY
 
</pre>
 
* Continue to the [[#Install Linux kernel and filesystem images | Install Linux kernel and filesystem images]] section.
 
 
 
===== Mount an NFS drive =====
 
* Connect the CL-SOM-AM57x Ethernet port (P21) to your local network.
 
* Copy the {{filename|zImage-cl-som-am57x}}, {{filename|am57xx-sbc-am57x.dtb}} and the {{filename|debian-armhf-image.tar.bz2}} to a directory exported through NFS.
 
* During Ramdisk image booting the CL-SOM-AM57x attempts to obtain an IP address using DHCP. If from some reason the IP address has not been obtained, use the following commands to obtain IP address for the CL-SOM-AM57x:
 
** Obtain IP using DHCP:<pre>root@compulab:~# ifup eth1</pre>
 
*: '''or'''
 
** If there is no DHCP server on the network, you can set a static IP address using {{cmd|ifconfig}}:<pre>root@compulab:~# ifconfig eth1 <ip address></pre>
 
* Mount the NFS share containing the {{filename|zImage-cl-som-am57x}}, {{filename|am57xx-sbc-am57x.dtb}} and the {{filename|debian-armhf-image.tar.bz2}} files:
 
<pre>
 
root@compulab:~#  mount -o nolock <host ip>:/path/to/nfs/share /mnt/net
 
</pre>
 
* Continue to the [[#Install Linux kernel and filesystem images | Install Linux kernel and filesystem images]] section.
 
 
 
==== Install Linux kernel and filesystem images ====
 
 
 
The Linux kernel and Root File System images can be installed on the following media:
 
* [[#Install Images on eMMC|eMMC drive]]
 
* [[#Install on SATA drive|SATA drive]]
 
 
 
===== Install Images on eMMC =====
 
{{Note|The below procedure will work only on empty eMMC chip. If you have already used the eMMC, please delete all the partitions before proceeding.}}
 
* In this subsection the term {{filename|/mount/point}} can be:
 
** {{filename|/mnt/net}} if NFS is used.
 
** {{filename|/media/mmcblk1pX}} if an MMC/SD card is used, where X is the partition number.
 
** {{filename|/media/sdXY}} if USB storage is used, where X is the USB drive letter and Y is the partition number.
 
{{Note|In the below procedure the first (boot) partition can be either FAT32 or EXT2/3/4. The example below is only for FAT32 filesystem.}}
 
* Create two partitions for the Linux kernel (FAT32 100M) and root file system (EXT4 the rest of the disk) on the eMMC:
 
<pre>
 
root@compulab:~# echo -e "n\np\n1\n2048\n204800\na\n1\nt\nc\nn\np\n2\n204801\n\nw\neof\n" | fdisk -u /dev/mmcblk0
 
</pre>
 
* Refresh the device nodes:
 
<pre>
 
root@compulab:~# mdev -s && umount /dev/mmcblk0p1 && umount /dev/mmcblk0p2
 
</pre>
 
* Format the first partition with FAT32 file system:
 
<pre>
 
root@compulab:~# mkfs.vfat -n boot /dev/mmcblk0p1
 
</pre>
 
* Format the second partition with EXT4 file system:
 
<pre>
 
root@compulab:~# mkfs.ext4 /dev/mmcblk0p2
 
</pre>
 
* Mount both partitions:
 
<pre>
 
root@compulab:~# mkdir -p /media/mmcblk0p1 && mount /dev/mmcblk0p1 /media/mmcblk0p1
 
root@compulab:~# mkdir -p /media/mmcblk0p2 && mount /dev/mmcblk0p2 /media/mmcblk0p2
 
</pre>
 
* Copy the {{filename|zImage-cl-som-am57x}} and the {{filename|am57xx-sbc-am57x.dtb}} to the first (FAT) partition:
 
<pre>
 
root@compulab:~# cp /mount/point/zImage-cl-som-am57x /mount/point/am57xx-sbc-am57x.dtb /media/mmcblk0p1 && sync
 
</pre>
 
* Extract the content of the {{filename|debian-armhf-image.tar.bz2}} onto the second partition:
 
<pre>root@compulab:~# tar --numeric-owner -xvpjf /mount/point/debian-armhf-image.tar.bz2 -C /media/mmcblk0p2 && sync</pre>
 
 
 
* Remove MMC/SD card from SB-SOM-AM57x MMC/SD card socket (if used for installation) and reboot the module:
 
<pre>
 
root@compulab:~# reboot
 
</pre>
 
 
 
===== Install on SATA drive =====
 
{{Note|The below procedure will work only on empty SATA drive. If you have already used the drive, please delete all the partitions before proceeding.}}
 
* In this subsection the term {{filename|/mount/point}} can be:
 
** {{filename|/mnt/net}} if NFS is used
 
** {{filename|/media/mmcblk1pX}} if an MMC/SD card is used, where X is the partition number.
 
** {{filename|/media/sdXY}} if USB storage is used, where X is the USB drive letter and Y is the partition number.
 
{{Note|In the below procedure the first (boot) partition can be either FAT32 or EXT2/3/4. The example below is only for FAT32 filesystem.}}
 
* Identify SATA drive special device file
 
<pre>
 
export SATA_DRIVE=/dev/`basename /sys/devices/platform/44000000.ocp/4a140000.sata/ata1/host0/target0\:0\:0/0\:0\:0\:0/block/sd?`
 
</pre>
 
* Create two partitions for the Linux kernel (FAT32 100M) and root file system (EXT4 the rest of the disk) on SATA drive:
 
<pre>
 
root@compulab:~# echo -e "n\np\n1\n2048\n204800\na\n1\nt\nc\nn\np\n2\n204801\n\nw\neof\n" | fdisk -u ${SATA_DRIVE}
 
</pre>
 
* Format the first partition with FAT32 file system:
 
<pre>
 
root@compulab:~# mkfs.vfat -n boot ${SATA_DRIVE}1
 
</pre>
 
* Format the second partition with EXT4 file system:
 
<pre>
 
root@compulab:~# mkfs.ext4 ${SATA_DRIVE}2
 
</pre>
 
* Mount both partitions:
 
<pre>
 
root@compulab:~# mkdir -p /media/boot && mount ${SATA_DRIVE}1 /media/boot
 
root@compulab:~# mkdir -p /media/rootfs && mount ${SATA_DRIVE}2 /media/rootfs
 
</pre>
 
* Copy the {{filename|zImage-cl-som-am57x}} and the {{filename|am57xx-sbc-am57x.dtb}} to the first (FAT) partition:
 
<pre>
 
root@compulab:~# cp /mount/point/zImage-cl-som-am57x /mount/point/am57xx-sbc-am57x.dtb /media/boot && sync
 
</pre>
 
* Extract the content of {{filename|debian-armhf-image.tar.bz2}} onto the second partition:
 
<pre>
 
root@compulab:~# tar --numeric-owner -xvpjf /mount/point/debian-armhf-image.tar.bz2 -C /media/rootfs && sync
 
</pre>
 
* Reboot the module:
 
<pre>
 
root@compulab:~# reboot
 
</pre>
 
* Continue to the [[#After Installation | After Installation]] section.
 
 
 
===== Install on the NAND flash =====
 
* In this subsection the term {{filename|/mount/point}} can be:
 
** {{filename|/mnt/net}} if NFS is used
 
** {{filename|/media/mmcblk0pX}} if an MMC/SD card is used, where X is the partition number.
 
** {{filename|/media/sdXY}} if a USB storage is used, where X is the USB drive letter and Y is the partition number.
 
 
 
* Format the NAND flash kernel partition and write the kernel image onto it:
 
<pre>
 
root@compulab:~# flash_erase /dev/mtd3 0 0
 
root@compulab:~# nandwrite -p /dev/mtd3 /mount/point/zImage-cl-som-am57x
 
</pre>
 
* Format the NAND flash Device Tree partition and write the DT blob onto it:
 
<pre>
 
root@compulab:~# flash_erase /dev/mtd4 0 0
 
root@compulab:~# nandwrite -p /dev/mtd4 /mount/point/am57xx-sbc-am57x.dtb
 
</pre>
 
* Format the NAND flash root filesystem partition:
 
<pre>
 
root@compulab:~# ubiformat /dev/mtd5
 
</pre>
 
* Attach the NAND flash root filesystem partition:
 
<pre>
 
root@compulab:~# ubiattach -m 5 -d 0
 
</pre>
 
* Create a ubi volume and name it "rootfs":
 
<pre>
 
root@compulab:~# ubimkvol /dev/ubi0 -m -N rootfs
 
</pre>
 
* Mount the ubi volume:
 
<pre>
 
root@compulab:~# mkdir -p /media/rootfs && mount -t ubifs ubi0:rootfs /media/rootfs
 
</pre>
 
* Extract the content of {{filename|debian-armhf-image.tar.bz2}} onto the /media/rootfs:
 
<pre>
 
root@compulab:~# tar --numeric-owner -xvpjf /mount/point/debian-armhf-image.tar.bz2 -C /media/rootfs && sync
 
</pre>
 
* Reboot the module:
 
<pre>
 
root@compulab:~# reboot
 
</pre>
 
* Continue to the [[#After Installation | After Installation]] section.
 
 
 
== After Installation ==
 
 
 
 
 
 
 
=== Boot from eMMC ===
 
Default boot settings of CL-SOM-AM57x allows auto eMMC boot. If the boot settings are different than default, the following manual setup may be required.
 
 
 
* Set the {{parameter|bootargs}} environment variable:
 
<pre>
 
CL-SOM-AM57x # setenv bootargs "root=/dev/mmcblk0p2 rw rootwait console=ttyO2,115200n8"
 
</pre>
 
* To boot Linux, type:
 
<pre>
 
CL-SOM-AM57x # setenv bootdelay 3
 
CL-SOM-AM57x # setenv bootcmd 'mmc dev 1 && mmc rescan && load mmc 1 ${loadaddr} zImage-cl-som-am57x && load mmc 1 ${fdtaddr}  am57xx-sbc-am57x.dtb && bootz ${loadaddr} - ${fdtaddr}''
 
CL-SOM-AM57x # saveenv
 
CL-SOM-AM57x # boot
 
</pre>
 
 
 
=== Boot from NAND flash ===
 
* Set the {{parameter|bootargs}} environment variable:
 
<pre>
 
CL-SOM-AM57x # setenv bootargs "root=ubi0:rootfs rw rootfstype=ubifs ubi.mtd=rootfs console=ttyO2"
 
</pre>
 
* To boot Linux, type:
 
<pre>
 
CL-SOM-AM57x # setenv bootdelay 3
 
CL-SOM-AM57x # setenv bootcmd 'nand read ${loadaddr} 0 980000 &&  nand read ${fdtaddr} 980000 80000 && bootz ${loadaddr} - ${fdtaddr}'
 
CL-SOM-AM57x # saveenv
 
CL-SOM-AM57x # boot
 
</pre>
 
 
 
=== Boot from SATA drive ===
 
* Set the {{parameter|bootargs}} environment variable:
 
<pre>
 
CL-SOM-AM57x # setenv bootargs "root=/dev/sda2 rootfstype=ext4 rw rootwait console=ttyO2"
 
</pre>
 
* To boot Linux, type:
 
<pre>
 
CL-SOM-AM57x # setenv bootdelay 3
 
CL-SOM-AM57x # setenv bootcmd 'load scsi 0 ${loadaddr} zImage-cl-som-am57x && load scsi 0 ${fdtaddr} am57xx-sbc-am57x.dtb && bootz ${loadaddr} - ${fdtaddr}'
 
CL-SOM-AM57x # saveenv
 
CL-SOM-AM57x # boot
 
</pre>
 
 
 
=== Display options ===
 
CL-SOM-AM57x (SBC-AM57x) evaluation platform has four video output interfaces: LCD, DVI, LVDS and HDMI.
 
LCD and HDMI are enabled in the current Linux package release.
 
Current version of Xorg driver of CL-SOM-AM57x example root file system supports mirror video output mode only.
 
It causes last registered video output device (LCD) resolution to be propagated to other devices.
 
 
 
In order to force a specific video output device to be selected as a primary device the U-Boot environment variables should be adjusted.
 
 
 
* HDMI enabled (LCD disabled)
 
<pre>
 
CL-SOM-AM57x # setenv emmcloadfdt 'load mmc ${mmcdev} ${fdtaddr} ${fdtfile} && fdt addr ${fdtaddr} && setenv fdtaddr 0x88000000 && fdt rm /display'
 
CL-SOM-AM57x # saveenv
 
</pre>
 
 
 
* Default settings
 
 
 
<pre>
 
CL-SOM-AM57x # setenv mmcloadfdt 'load mmc ${mmcdev} ${fdtaddr} ${fdtfile};'
 
CL-SOM-AM57x # saveenv
 
</pre>
 
 
 
== See also ==
 
 
 
* [[CL-SOM-AM57x: Linux: Debian]]
 
* [[CL-SOM-AM57x: Linux: Kernel]]
 
* [[Linux Development for ARM modules]]
 
 
 
[[Category:Linux|Getting started]]
 
[[Category:CL-SOM-AM57x|Linux: Getting started]]
 

Latest revision as of 11:45, 25 May 2016