[HowTo] Kernel boot using tftp server.

Moderators: mdrjr, odroid, meveric

[HowTo] Kernel boot using tftp server.

Unread postby moon.linux » Sun Dec 04, 2016 9:52 pm

Loading Linux Images via Ethernet and TFTP

Below process explains how to load images to the target via Ethernet. With an Ethernet connection available, U-Boot can load images from a TFTP host quickly and easily. This is the development and software manufacturing option one wants to have available with U-Boot and Linux. This proceed help developer test the kernel image on development boards.

The download procedure is based on the tftpboot command provided by the U-Boot command interface. tftboot implements a download capability over Ethernet using the TFTP protocol and has the following synopsis:
Code: Select all
tftpboot <file> [<load_addr>]


Configure tftp server on linux development machine.

Install following packages.
Code: Select all
sudo apt-get install xinetd tftpd tftp

Create /etc/xinetd.d/tftp and put this entry
Code: Select all
service tftp
{
        protocol        = udp
        port            = 69
        socket_type     = dgram
        wait            = yes
        user            = nobody
        server          = /usr/sbin/in.tftpd
        server_args     = /tftpboot
        disable         = no
}


Create a folder /tftpboot this should match whatever you gave in server_args. mostly it will be tftpboot
Code: Select all
sudo mkdir /tftpboot
sudo chmod -R 777 /tftpboot
sudo chown -R nobody /tftpboot


Restart the xinetd service.
Code: Select all
sudo /etc/init.d/xinetd stop
sudo /etc/init.d/xinetd start


Configure Odroid C2 for boot kernel via tftp.
Note: u-boot support of Ethernet is needed to support the booting process.

Step 1: Boot the using the latest update.
Code: Select all
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Note : this will update the kernel and relevant pakages.

Step 2: Copy the latest kernel image (Image), fdt (meson64_odroidc2.dtb), and ramdisk image (uInitrd) to tftp server.
Code: Select all
odroid@odroid64:~$ cd /media/boot/
odroid@odroid64:/media/boot$ scp Image meson64_odroidc2.dtb uInitrd amoon@10.0.0.102:/tftpboot/
amoon@10.0.0.102's password:
Image                                                                                                                       100%   13MB  12.8MB/s   00:00
meson64_odroidc2.dtb                                                                                                        100%   28KB  28.5KB/s   00:00
uInitrd                                                                                                                     100% 9374KB   9.2MB/s   00:00
odroid@odroid64:/media/boot$


Step 3: Modify the boot.ini to update the files via tftp server.
Note: back up the boot.ini file in-case it fails to boot

Modified boot.ini file
odroid@odroid64:/media/boot$ cat boot.ini
Code: Select all
ODROIDC2-UBOOT-CONFIG

########################################################################
# Changes made to this are overwritten every time there's a new upgrade
# To make your changes permanent change it on
# boot.ini.default
# After changing it on boot.ini.default run the bootini command to
# rewrite this file with your personal permanent settings.
# Documentation: http://odroid.com/dokuwiki/doku.php?id=en:c2_persistent_bootini
########################################################################

# Possible screen resolutions
# Uncomment only a single Line! The line with setenv written.
# At least one mode must be selected.

# Custom modeline!
# To use custom modeline you need to disable all the below resolutions
# and setup your own!
# For more information check our wiki:
# http://odroid.com/dokuwiki/doku.php?id=en:c2_hdmi_autosetting
# Example below:
# setenv m "custombuilt"
# setenv modeline "1920,1200,154000,74040,60,1920,1968,2000,2080,1200,1202,1208,1235,1,0,1"

# 480 Lines (720x480)
# setenv m "480i60hz" # Interlaced 60Hz
# setenv m "480i_rpt" # Interlaced for Rear Projection Televisions 60Hz
# setenv m "480p60hz" # 480 Progressive 60Hz
# setenv m "480p_rpt" # 480 Progressive for Rear Projection Televisions 60Hz

# 576 Lines (720x576)
# setenv m "576i50hz" # Interlaced 50Hz
# setenv m "576i_rpt" # Interlaced for Rear Projection Televisions 50Hz
# setenv m "576p50hz" # Progressive 50Hz
# setenv m "576p_rpt" # Progressive for Rear Projection Televisions 50Hz

# 720 Lines (1280x720)
# setenv m "720p50hz" # 50Hz
# setenv m "720p60hz" # 60Hz

# 1080 Lines (1920x1080)
# setenv m "1080i60hz" # Interlaced 60Hz
setenv m "1080p60hz" # Progressive 60Hz
# setenv m "1080i50hz" # Interlaced 50Hz
# setenv m "1080p50hz" # Progressive 50Hz
# setenv m "1080p24hz" # Progressive 24Hz

# 4K (3840x2160)
# setenv m "2160p30hz"    # Progressive 30Hz
# setenv m "2160p25hz"    # Progressive 25Hz
# setenv m "2160p24hz"    # Progressive 24Hz
# setenv m "smpte24hz"    # Progressive 24Hz SMPTE
# setenv m "2160p50hz"    # Progressive 50Hz
# setenv m "2160p60hz"    # Progressive 60Hz
# setenv m "2160p50hz420" # Progressive 50Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it)
# setenv m "2160p60hz420" # Progressive 60Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it)

### VESA modes ###
# setenv m "640x480p60hz"
# setenv m "800x480p60hz"
# setenv m "800x600p60hz"
# setenv m "1024x600p60hz"
# setenv m "1024x768p60hz"
# setenv m "1280x800p60hz"
# setenv m "1280x1024p60hz"
# setenv m "1360x768p60hz"
# setenv m "1440x900p60hz"
# setenv m "1600x900p60hz"
# setenv m "1680x1050p60hz"
# setenv m "1600x1200p60hz"
# setenv m "1920x1200p60hz"
# setenv m "2560x1080p60hz"
# setenv m "2560x1440p60hz"
# setenv m "2560x1600p60hz"
# setenv m "3440x1440p60hz"

# HDMI BPP Mode
setenv m_bpp "32"
# setenv m_bpp "24"
# setenv m_bpp "16"

# HDMI DVI/VGA modes
# Uncomment only a single Line! The line with setenv written.
# At least one mode must be selected.
# setenv vout "dvi"
# setenv vout "vga"

# HDMI HotPlug Detection control
# Allows you to force HDMI thinking that the cable is connected.
# true = HDMI will believe that cable is always connected
# false = will let board/monitor negotiate the connection status
setenv hpd "true"
# setenv hpd "false"

# Default Console Device Setting
setenv condev "console=ttyS0,115200n8 console=tty0"   # on both

# Meson Timer
# 1 - Meson Timer
# 0 - Arch Timer
# Using meson_timer improves the video playback however it breaks KVM (virtualization).
# Using arch timer allows KVM/Virtualization to work however you'll experience poor video
setenv mesontimer "1"

# Server Mode (aka. No Graphics)
# Setting nographics to 1 will disable all video subsystem
# This mode is ideal of server type usage. (Saves ~300Mb of RAM)
setenv nographics "0"

# Monitor output
# Controls if HDMI PHY should output anything to the monitor
setenv monitor_onoff "false" # true or false

# CPU Frequency / Cores control
###########################################
### WARNING!!! WARNING!!! WARNING!!!
# Before changing anything here please read the wiki entry:
# http://odroid.com/dokuwiki/doku.php?id=en:c2_set_cpu_freq
#
# MAX CPU's
# setenv maxcpus "1"
# setenv maxcpus "2"
# setenv maxcpus "3"
setenv maxcpus "4"

# MAX Frequency
# setenv max_freq "2016"  # 2.016GHz
# setenv max_freq "1944"  # 1.944GHz
# setenv max_freq "1944"  # 1.944GHz
# setenv max_freq "1920"  # 1.920GHz
# setenv max_freq "1896"  # 1.896GHz
# setenv max_freq "1752"  # 1.752GHz
# setenv max_freq "1680"  # 1.680GHz
# setenv max_freq "1656"  # 1.656GHz
setenv max_freq "1536"  # 1.536GHz



###########################################

# Boot Arguments
if test "${m}" = "custombuilt"; then setenv cmode "modeline=${modeline}"; fi

setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend hdmimode=${m} ${comde} m_bpp=${m_bpp} vout=${vout} fsck.repair=yes net.ifnames=0 elevator=noop disablehpd=${hpd} max_freq=${max_freq} maxcpus=${maxcpus} monitor_onoff=${monitor_onoff}"

# Booting
setenv loadaddr "0x11000000"
setenv dtb_loadaddr "0x1000000"
setenv initrd_loadaddr "0x13000000"

# Booting via tftp server configration
setenv tftpImage Image
setenv tftpFdtfile meson64_odroidc2.dtb
setenv tftpuInit uInitrd
setenv ipaddr 10.0.0.113         # client ip address
setenv serverip 10.0.0.102       # server ip address
setenv gatewayip 10.0.0.101      # gateway ip address
# Download image via tftp
setenv net_tftp 'tftp ${loadaddr} ${tftpImage};tftp ${dtb_loadaddr} ${tftpFdtfile};tftp ${initrd_loadaddr} ${tftpuInit};'
run net_tftp

# Load the image via first boot partition
# fatload mmc 0:1 ${initrd_loadaddr} uInitrd
# fatload mmc 0:1 ${loadaddr} Image
fdt addr ${dtb_loadaddr}


if test "${mesontimer}" = "0"; then fdt rm /meson_timer; fdt rm /cpus/cpu@0/timer; fdt rm /cpus/cpu@1/timer; fdt rm /cpus/cpu@2/timer; fdt rm /cpus/cpu@3/timer; fi
if test "${mesontimer}" = "1"; then fdt rm /timer; fi

if test "${nographics}" = "1"; then fdt rm /reserved-memory; fdt rm /aocec; fi
if test "${nographics}" = "1"; then fdt rm /meson-fb; fdt rm /amhdmitx; fdt rm /picdec; fdt rm /ppmgr; fi
if test "${nographics}" = "1"; then fdt rm /meson-vout; fdt rm /mesonstream; fdt rm /meson-fb; fi
if test "${nographics}" = "1"; then fdt rm /deinterlace; fdt rm /codec_mm; fi

booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr}


Note: We have disable the boot of image via first partition.
Code: Select all
# fatload mmc 0:1 ${initrd_loadaddr} uInitrd
# fatload mmc 0:1 ${image_loadaddr} Image
# fatload mmc 0:1 ${dtb_loadaddr} meson64_odroidc2.dtb
# fdt addr ${dtb_loadaddr}


And added the following configuration in boot.ini
Note: You need to update the ipaddr, serverip, gatewayip as per your setting in your network.
Code: Select all
# Booting via tftp server configration
setenv tftpImage Image
setenv tftpFdtfile meson64_odroidc2.dtb
setenv tftpuInit uInitrd
setenv ipaddr 10.0.0.113         # client ip address
setenv serverip 10.0.0.102       # server ip address
setenv gatewayip 10.0.0.101      # gateway ip address
# Download image via tftp
setenv net_tftp 'tftp ${image_loadaddr} ${tftpImage};tftp ${dtb_loadaddr} ${tftpFdtfile};tftp ${initrd_loadaddr} ${tftpuInit};'
run net_tftp


Kernel is loaded via tftp and the rootfs is present in on the microSD card or eMMC.

Here is the process booting of image via tftp.
Code: Select all
U-Boot 2015.01-gbafc655 (Oct 17 2016 - 16:33:54)

DRAM:  2 GiB
Relocation Offset is: 76f3d000
-------------------------------------------------
* Welcome to Hardkernel's ODROID-C2
-------------------------------------------------
CPU : AMLogic S905
S/N : HKC213254DFCEAFA
MAC : 00:1e:06:33:37:7a
BID : HKC2211604
-------------------------------------------------
register usb cfg[1][0] = 0000000077f96b48
register usb cfg[0][1] = 0000000077f96b68
vpu detect type: 5
vpu clk_level = 7
set vpu clk: 666667000Hz, readback: 666660000Hz(0x300)
MMC:   aml_priv->desc_buf = 0x0000000073f35d30
aml_priv->desc_buf = 0x0000000073f37ec0
SDIO Port B: 0, SDIO Port C: 1
ret = 1 .[mmc_init] mmc init success
In:    serial
Out:   serial
Err:   serial
----------------------------------
MMC Size : 32 GB
----------------------------------
reading boot-logo.bmp.gz
** Unable to read file boot-logo.bmp.gz **
reading boot-logo.bmp
** Unable to read file boot-logo.bmp **
movi: the partiton 'logo' is reading...

MMC read: dev # 0, block # 58976, count 4096 ... 4096 blocks read: OK
hpd_state=1
[CANVAS]addr=0x3f800000 width=3840, height=1440

set hdmitx VIC = 16
hdmitx phy setting done
set hdmitx VIC = 16
hdmitx phy setting done
Error: Bad gzipped data
There is no valid bmp file at the given address
Net:   Meson_Ethernet
Hit [Enter] key twice to stop autoboot:  0
reading boot.ini
6484 bytes read in 4 ms (1.5 MiB/s)
cfgload: applying boot.ini...
cfgload: setenv m "1080p60hz" # Progressive 60Hz
cfgload: setenv m_bpp "32"
cfgload: setenv hpd "true"
cfgload: setenv condev "console=ttyS0,115200n8 console=tty0"   # on both
cfgload: setenv mesontimer "1"
cfgload: setenv nographics "0"
cfgload: setenv monitor_onoff "false" # true or false
cfgload: setenv maxcpus "4"
cfgload: setenv max_freq "1536"  # 1.536GHz
cfgload: if test "${m}" = "custombuilt"; then setenv cmode "modeline=${modeline}"; fi
cfgload: setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend hdmimode=${m} ${comde} m_bpp=${m_bpp} vout=${vout} fsck.repair=yes net.ifnames=0 elevator=noop disablehpd=${hpd} max_freq=${max_freq} maxcpus=${maxcpus} monitor_onoff=${monitor_onoff}"
cfgload: setenv image_loadaddr "0x11000000"
cfgload: setenv dtb_loadaddr "0x1000000"
cfgload: setenv initrd_loadaddr "0x13000000"
cfgload: if test "${mesontimer}" = "0"; then fdt rm /meson_timer; fdt rm /cpus/cpu@0/timer; fdt rm /cpus/cpu@1/timer; fdt rm /cpus/cpu@2/timer; fdt rm /cpus/cpu@3/timer; fi
cfgload: if test "${mesontimer}" = "1"; then fdt rm /timer; fi
No FDT memory address configured. Please configure
the FDT address via "fdt addr <address>" command.
Aborting!
cfgload: if test "${nographics}" = "1"; then fdt rm /reserved-memory; fdt rm /aocec; fi
cfgload: if test "${nographics}" = "1"; then fdt rm /meson-fb; fdt rm /amhdmitx; fdt rm /picdec; fdt rm /ppmgr; fi
cfgload: if test "${nographics}" = "1"; then fdt rm /meson-vout; fdt rm /mesonstream; fdt rm /meson-fb; fi
cfgload: if test "${nographics}" = "1"; then fdt rm /deinterlace; fdt rm /codec_mm; fi
cfgload: setenv tftpImage Image
cfgload: setenv tftpFdtfile meson64_odroidc2.dtb
cfgload: setenv tftpuInit uInitrd
cfgload: setenv ipaddr 10.0.0.113         # client ip address
cfgload: setenv serverip 10.0.0.102      # server ip address
cfgload: setenv gatewayip 10.0.0.101      # gateway ip address
cfgload: setenv net_tftp 'tftp ${image_loadaddr} ${tftpImage};tftp ${dtb_loadaddr} ${tftpFdtfile};tftp ${initrd_loadaddr} ${tftpuInit};'
cfgload: run net_tftp
Amlogic Ethernet Init
Success: reset mac OK!(0)
ETH PHY hardware reset OK
find net phy id=0x1cc916, phyad=0
set_mac_mode(2)
final_addr[rx-tx]: 0000000073f65c00-0000000073f66200
Ethernet reset OK
MAC address is 00:1e:06:33:37:7a
duplex
1000m
Using Meson_Ethernet device
TFTP from server 10.0.0.102; our IP address is 10.0.0.113
Filename 'Image'.
Load address: 0x11000000
Loading: duplex
1000m
#################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ###############################
         3.7 MiB/s
done
Bytes transferred = 13468032 (cd8180 hex)
Using Meson_Ethernet device
TFTP from server 10.0.0.102; our IP address is 10.0.0.113
Filename 'meson64_odroidc2.dtb'.
Load address: 0x1000000
Loading: ######
         3.1 MiB/s
done
Bytes transferred = 29164 (71ec hex)
Using Meson_Ethernet device
TFTP from server 10.0.0.102; our IP address is 10.0.0.113
Filename 'uInitrd'.
Load address: 0x13000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #######################################################
         3.7 MiB/s
done
Bytes transferred = 9598978 (927802 hex)
cfgload: booti ${image_loadaddr} ${initrd_loadaddr} ${dtb_loadaddr}
## Loading init Ramdisk from Legacy Image at 13000000 ...
   Image Name:   uInitrd
   Image Type:   AArch64 Linux RAMDisk Image (uncompressed)
   Data Size:    9598914 Bytes = 9.2 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
load dtb from 0x1000000 ......
## Flattened Device Tree blob at 01000000
   Booting using the fdt blob at 0x1000000
   Loading Ramdisk to 7360b000, end 73f327c2 ... OK
   Loading Device Tree to 000000001fff5000, end 000000001ffff1eb ... OK

Starting kernel ...

uboot time: 13376625 us
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.14.79-94 (root@a53_b1) (gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.1) ) #1 SMP PREEMPT Mon Nov 21 17:13:27 BRST 2016
[    0.000000] CPU: AArch64 Processor [410fd034] revision 4
[    0.000000] secmon: share mem setup
[    0.000000] Reserved memory: initialized node linux,secmon, compatible id aml_secmon_memory
[    0.000000] __reserved_mem_alloc_size: linux,meson-fb
[    0.000000] fb: Reserved memory: created fb at 0x0000000078000000, size 128 MiB
[    0.000000] Reserved memory: initialized node linux,meson-fb, compatible id amlogic, fb-memory
[    0.000000] __reserved_mem_alloc_size: linux,di
[    0.000000] DI reserved memory: created CMA memory pool at 0x0000000076200000, size 30 MiB
[    0.000000] Reserved memory: initialized node linux,di, compatible id amlogic, di-mem
[    0.000000] __reserved_mem_alloc_size: linux,ion-dev
[    0.000000] linux,ion-dev add multi user:ffffffc001d1f4d0
[    0.000000] ion_dev mem setup
[    0.000000] Reserved memory: initialized node linux,ion-dev, compatible id amlogic, idev-mem
[    0.000000] ppmgr share mem setup
[    0.000000] linux,ion-dev add multi user:ffffffc001d28010
[    0.000000] Reserved memory: initialized node linux,ion-dev, compatible id amlogic, idev-mem
[    0.000000] __reserved_mem_alloc_size: linux,codec_mm_cma
[    0.000000] Reserved memory: created CMA memory pool at 0x0000000067800000, size 188 MiB
[    0.000000] Reserved memory: initialized node linux,codec_mm_cma, compatible id shared-dma-pool
[    0.000000] __reserved_mem_alloc_size: linux,picdec
[    0.000000] Reserved memory: created CMA memory pool at 0x0000000064800000, size 48 MiB
[    0.000000] Reserved memory: initialized node linux,picdec, compatible id shared-dma-pool
[    0.000000] __reserved_mem_alloc_size: linux,codec_mm_reserved
[    0.000000] codec_mm:vdec: reserved mem setup
[    0.000000] Reserved memory: initialized node linux,codec_mm_reserved, compatible id amlogic, codec-mm-reserved
[    0.000000] cma: Reserved 8 MiB at 5fc00000
[    0.000000] psci: probing function IDs from device-tree
[    0.000000] PERCPU: Embedded 12 pages/cpu @ffffffc074195000 s19584 r8192 d21376 u49152
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 478344
[    0.000000] Kernel command line: root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro console=ttyS0,115200n8 console=tty0 no_console_suspend hdmimode=1080p60hz  m_bpp=32 vout= fsck.repair=yes net.ifnames=0 elevator=noop disablehpd=true max_freq=1536 maxcpus=4 monitor_onoff=false
[    0.000000] logo: get hdmimode: 1080p60hz
[    0.000000] dvfs [get_max_freq] - max_freq : 1536000000
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.000000] Memory: 1498484K/1947648K available (8300K kernel code, 900K rwdata, 3036K rodata, 907K init, 4228K bss, 449164K reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vmalloc : 0xffffff8000000000 - 0xffffff8040000000   (  1024 MB)
[    0.000000]     vmemmap : 0xffffff8040010000 - 0xffffff80421d0000   (    33 MB)
[    0.000000]     modules : 0xffffffbffc000000 - 0xffffffc000000000   (    64 MB)
[    0.000000]     memory  : 0xffffffc000000000 - 0xffffffc078000000   (  1920 MB)
[    0.000000]       .init : 0xffffffc001b94000 - 0xffffffc001c76c80   (   908 kB)
[    0.000000]       .text : 0xffffffc001080000 - 0xffffffc001b93204   ( 11341 kB)
[    0.000000]       .data : 0xffffffc001c77000 - 0xffffffc001d58180   (   901 kB)
[    0.000000] SLUB: HWalign=64, Order=0-1, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] NR_IRQS:64 nr_irqs:64 0
[    0.000005] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 2147483648000ns
[    0.000023] mclk->mux_reg =ffffff8000002990,mclk->reg =ffffff800000a994
[    0.000070] local timer MESON TIMER-G mclk->mux_reg =ffffff8000002990,mclk->reg =ffffff800000c998
[    0.000092] local timer MESON TIMER-H mclk->mux_reg =ffffff8000002990,mclk->reg =ffffff800000e99c
[    0.000112] local timer MESON TIMER-I mclk->mux_reg =ffffff8000002990,mclk->reg =ffffff80000109a0
[    0.000123] Switching to timer-based delay loop
[    0.000249] Architected cp15 timer(s) running at 24.00MHz (phys).
[    0.000254] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 2863311519744ns
[    0.000262] Console: colour dummy device 80x25
[    0.000283] console [tty0] enabled
[    0.000382] allocated 8388608 bytes of page_cgroup
[    0.000382] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000383] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
[    0.000384] pid_max: default: 32768 minimum: 301
[    0.000387] Security Framework initialized
[    0.000389] AppArmor: AppArmor initialized
[    0.000390] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000391] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000408] Initializing cgroup subsys debug
[    0.000409] Initializing cgroup subsys memory
[    0.000410] Initializing cgroup subsys devices
[    0.000410] Initializing cgroup subsys freezer
[    0.000411] Initializing cgroup subsys net_cls
[    0.000411] Initializing cgroup subsys blkio
[    0.000412] Initializing cgroup subsys perf_event
[    0.000412] Initializing cgroup subsys net_prio
[    0.000413] Initializing cgroup subsys hugetlb
[    0.000414] ftrace: allocating 29773 entries in 117 pages
[    0.001518] /cpus/cpu@0: Missing clock-frequency property
[    0.001519] /cpus/cpu@1: Missing clock-frequency property
[    0.001519] /cpus/cpu@2: Missing clock-frequency property
[    0.001520] /cpus/cpu@3: Missing clock-frequency property
[    0.001520] hw perfevents: enabled with arm/armv8-pmuv3 PMU driver, 7 counters available
[    0.003251] Meson chip version = RevB (1F:B - 0:0)
[    0.004041] CPU1: Booted secondary processor
[    0.004873] CPU2: Booted secondary processor
[    0.005707] CPU3: Booted secondary processor
[    0.005709] Brought up 4 CPUs
[    0.005710] SMP: Total of 4 processors activated.
[    0.005731] devtmpfs: initialized
[    0.006234] pinctrl core: initialized pinctrl subsystem
[    0.006245] regulator-dummy: no parameters
[    0.006319] device-tree: Duplicate name in efusekey, renamed to "key0#1"
[    0.006320] device-tree: Duplicate name in efusekey, renamed to "key1#1"
[    0.006321] device-tree: Duplicate name in efusekey, renamed to "key2#1"
[    0.006322] device-tree: Duplicate name in efusekey, renamed to "key3#1"
[    0.006399] NET: Registered protocol family 16
[    0.006430] register canvas platform driver
[    0.006431] codec:ignore bus ops for cpu=25
[    0.006431] codec:ignore bus ops for cpu=29
[    0.006431] codec:register amports ops for bus[0]
[    0.006432] codec:register amports ops for bus[4]
[    0.006432] codec:register amports ops for bus[3]
[    0.006432] codec:register amports ops for bus[2]
[    0.006433] codec:register amports ops for bus[1]
[    0.006433] codec:register amports ops for bus[13]
[    0.006433] codec:register amports ops for bus[2]
[    0.006434] codec:register amports ops for bus[14]
[    0.006435] register rdma platform driver
[    0.006452] vdso: 2 pages (1 code, 1 data) at base ffffffc001c7e000
[    0.006453] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.006475] DMA: preallocated 256 KiB pool for atomic allocations
[    0.006528] software IO TLB [mem 0x5c400000-0x5c800000] (4MB) mapped at [ffffffc05c400000-ffffffc05c7fffff]
[    0.006529] Serial: AMBA PL011 UART driver
[    0.006533] hdmitx: system: amhdmitx_init
[    0.006533] hdmitx: system: Ver: 2014May6
[    0.006534] tv_vout: tv_init_module
[    0.006535] tv_vout: major number 254 for disp
[    0.006535] vout_notify: vout_register_server
[    0.006535] tv_vout: register tv module server ok
[    0.006536] codec_mm:codec_mm_module_init
[    0.006542] gxbb clk HIU base is 0xffffff800005a000
[    0.006542] gxbb clk ao base is 0xffffff800005c000
[    0.006544] register mpll_clk_out0 success done
[    0.006544] register mpll_clk_out1 success done
[    0.006545] register mpll_clk_out2 success done
[    0.006552] register sys pll success done
[    0.006554] clkrate [ xtal   ] : 24000000Hz
[    0.006554] clkrate [ 32Khz  ] : 32000Hz
[    0.006554] clkrate [ clk81  ] : 166666666Hz
[    0.006555] clkrate [ fixed_pll      ] : 2000000000Hz
[    0.006555] clkrate [ fclk_div2      ] : 1000000000Hz
[    0.006555] clkrate [ fclk_div3      ] : 666666000Hz
[    0.006556] clkrate [ fclk_div4      ] : 500000000Hz
[    0.006556] clkrate [ fclk_div5      ] : 400000000Hz
[    0.006556] clkrate [ fclk_div7      ] : 285714000Hz
[    0.006557] gxbb clock initialization complete
[    0.006562] msr_clk_reg0=ffffff800005e75c,msr_clk_reg2=ffffff800006a764
[    0.006600] amlogic iomap probe done
[    0.006611] Init pinux probe!
[    0.006641] pinmux-gxbb c1109880.pinmux: Probed amlogic pinctrl driver
[    0.006652] genirq: Setting trigger mode 8 for irq 241 failed (gic_set_type+0x0/0xb8)
[    0.006653] genirq: Setting trigger mode 8 for irq 242 failed (gic_set_type+0x0/0xb8)
[    0.006655] genirq: Setting trigger mode 8 for irq 241 failed (gic_set_type+0x0/0xb8)
[    0.006656] genirq: Setting trigger mode 8 for irq 242 failed (gic_set_type+0x0/0xb8)
[    0.006664] dvfs [scpi_dvfs_get_opps] - new count 6, max_freq 1536000000
[    0.006680] codec:codec map io source 0x00000000c1100000,size=1048576 to 0xffffff8000680000
[    0.006681] codec:codec map io source 0x00000000c8820000,size=65536 to 0xffffff80000a0000
[    0.006682] codec:codec map io source 0x00000000c883c000,size=8192 to 0xffffff8000094000
[    0.006683] codec:codec map io source 0x00000000c8100000,size=1048576 to 0xffffff8000800000
[    0.006684] codec:codec map io source 0x00000000d0100000,size=262144 to 0xffffff8000980000
[    0.006685] codec:codec map io source 0x00000000c8838000,size=1024 to 0xffffff8000092000
[    0.006687] codec_mm has 2 memory regions
[    0.006688] codec_mm codec_mm: assigned reserved memory node linux,codec_mm_cma ok
[    0.006689] codec_mm:codec_mm_reserved_init 0000000060700000->0000000064800000
[    0.006689] codec_mm codec_mm: assigned reserved memory node linux,codec_mm_reserved ok
[    0.006690] codec_mm:codec_mm_probe mem init done
[    0.006690] codec_mm:add reserve memory 0000000060700000(aligned 0000000060700000) size=4100000(aligned 4100000)
[    0.006691] codec_mm has 2 memory regions
[    0.006692] codec_mm codec_mm: assigned reserved memory node linux,codec_mm_cma ok
[    0.006692] codec_mm:codec_mm_reserved_init 0000000060700000->0000000064800000
[    0.006693] codec_mm codec_mm: assigned reserved memory node linux,codec_mm_reserved ok
[    0.006693] codec_mm:codec_mm reserved memory probed done
[    0.006694] codec_mm:codec_mm_probe ok
[    0.006718] VPU driver version: v01
[    0.006718] vpu driver detect cpu type: gxbaby
[    0.006719] load vpu_clk in dts: 666667000Hz(7)
[    0.006720] vpu_probe OK


Note: These steps are very much necessary to boot for kernel development process.
This process helps developers time so that build and loading time is reduce.
Once you cross compile the kernel and upate the image into /tftpboot folder it will load the latest image.



Configure Odroid C1 for boot kernel via tftp.
Note: u-boot support of Ethernet is needed to support the booting process.

Step 1: Boot the using the latest update.
Code: Select all
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Note : this will update the kernel and relevant pakages.

Step 2: Copy the latest kernel image (uImage), fdt (meson8b_odroidc.dtb), and ramdisk image (uInitrd) to tftp server.

Code: Select all
root@odroid:~# cd /media/boot/
root@odroid:/media/boot# scp uImage meson8b_odroidc.dtb uInitrd amoon@10.0.0.102:/tftpboot
The authenticity of host '10.0.0.102 (10.0.0.102)' can't be established.
ECDSA key fingerprint is SHA256:BFRs1c2l6X1dQgTmUAkAgtbb0qXa18vFDKPyls+fF6s.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.102' (ECDSA) to the list of known hosts.
amoon@10.0.0.102's password:
uImage                                                                                                                      100% 5425KB   5.3MB/s   00:00
meson8b_odroidc.dtb                                                                                                         100%   19KB  19.5KB/s   00:00
uInitrd                                                                                                                     100% 8999KB   8.8MB/s   00:01
root@odroid:/media/boot#


Step 3: Modify the boot.ini to update the files via tftp server.
Note: back up the boot.ini file in-case it fails to boot

Modified boot.ini file

odroid@odroid:~$ cat /media/boot/boot.ini
Code: Select all
ODROIDC-UBOOT-CONFIG

# Possible screen resolutions
# Uncomment only a single Line! The line with setenv written.
# At least one mode must be selected.

# setenv m "vga"             # 640x480
# setenv m "480p"            # 720x480
# setenv m "576p"            # 720x576
# setenv m "800x480p60hz"    # 800x480
# setenv m "800x600p60hz"    # 800x600
# setenv m "1024x600p60hz"   # 1024x600
# setenv m "1024x768p60hz"   # 1024x768
# setenv m "1360x768p60hz"    # 1360x768
# setenv m "1440x900p60hz"   # 1440x900
# setenv m "1600x900p60hz"   # 1600x900
# setenv m "1680x1050p60hz"   # 1680x1050
# setenv m "720p"            # 720p 1280x720
# setenv m "800p"            # 1280x800
# setenv m "sxga"            # 1280x1024
# setenv m "1080i50hz"          # 1080I@50Hz
# setenv m "1080p24hz"          # 1080P@24Hz
# setenv m "1080p50hz"          # 1080P@50Hz
setenv m "1080p"                # 1080P@60Hz
# setenv m "1920x1200"       # 1920x1200

# HDMI DVI Mode Configuration
setenv vout_mode "hdmi"
# setenv vout_mode "dvi"
# setenv vout_mode "vga"

# HDMI BPP Mode
setenv m_bpp "32"
# setenv m_bpp "24"
# setenv m_bpp "16"

# Monitor output
# Controls if HDMI PHY should output anything to the monitor
setenv monitor_onoff "false" # true or false

# HDMI Hotplug Force (HPD)
# 1 = Enables HOTPlug Detection
# 0 = Disables HOTPlug Detection and force the connected status
setenv hpd "0"

# CEC Enable/Disable (Requires Hardware Modification)
# 1 = Enables HDMI CEC
# 0 = Disables HDMI CEC
setenv cec "0"

# PCM5102 I2S Audio DAC
# PCM5102 is an I2S Audio Dac Addon board for ODROID-C1+
# Uncomment the line below to __ENABLE__ support for this Addon board.
# setenv enabledac "enabledac"

# UHS Card Configuration
# Uncomment the line below to __DISABLE__ UHS-1 MicroSD support
# This might break boot for some brand models of cards.
setenv disableuhs "disableuhs"


# Disable VPU (Video decoding engine, Saves RAM!!!)
# 0 = disabled
# 1 = enabled
setenv vpu "1"

# Disable HDMI Output (Again, saves ram!)
# 0 = disabled
# 1 = enabled
setenv hdmioutput "1"

# Default Console Device Setting
# setenv condev "console=ttyS0,115200n8"        # on serial port
# setenv condev "console=tty0"                    # on display (HDMI)
setenv condev "console=tty0 console=ttyS0,115200n8"   # on both

# CPU Max Frequency
# Possible Values: 96 192 312 408 504 600 720 816
# 1008 1200 1320 1488 1536 1632 1728 and 1824
setenv max_freq "1536"
# setenv max_freq "1632"
# setenv max_freq "1728"
# setenv max_freq "1824"

###########################################

if test "${hpd}" = "0"; then setenv hdmi_hpd "disablehpd=true"; fi
if test "${cec}" = "1"; then setenv hdmi_cec "hdmitx=cecf"; fi

# Boot Arguments
setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac} monitor_onoff=${monitor_onoff} max_freq=${max_freq}"

# Boot using tftp server
# setting up the tftp pramanters
setenv kernel_addr 0x21000000
setenv fdt_addr 0x21800000
setenv uinit_addr 0x22000000
setenv tftpbootfile uImage
setenv tftpfdtfile meson8b_odroidc.dtb
setenv tftpuInit uInitrd
setenv ipaddr 10.0.0.107
setenv serverip 10.0.0.102
setenv gatewayip 10.0.0.101

setenv net_tftp 'tftp ${kernel_addr} ${tftpbootfile};tftp ${fdt_addr} ${tftpfdtfile};tftp ${uinit_addr} ${tftpuInit};'
run net_tftp

# Booting
# fatload mmc 0:1 0x21000000 uImage
# fatload mmc 0:1 0x22000000 uInitrd
# fatload mmc 0:1 0x21800000 meson8b_odroidc.dtb
fdt addr 21800000

if test "${vpu}" = "0"; then fdt rm /mesonstream; fdt rm /vdec; fdt rm /ppmgr; fi

if test "${hdmioutput}" = "0"; then fdt rm /mesonfb; fi

bootm 0x21000000 0x22000000 0x21800000



Note: We have disable the boot of image via first partition.
Code: Select all
# Booting
# fatload mmc 0:1 0x21000000 uImage
# fatload mmc 0:1 0x22000000 uInitrd
# fatload mmc 0:1 0x21800000 meson8b_odroidc.dtb
fdt addr 21800000


And added the following configuration in boot.ini
Note: You need to update the ipaddr, serverip, gatewayip as per your setting in your network.
Code: Select all
setenv kernel_addr 0x21000000
setenv fdt_addr 0x21800000
setenv uinit_addr 0x22000000
setenv tftpbootfile uImage
setenv tftpfdtfile meson8b_odroidc.dtb
setenv tftpuInit uInitrd
setenv ipaddr 10.0.0.107
setenv serverip 10.0.0.102
setenv gatewayip 10.0.0.101

setenv net_tftp 'tftp ${kernel_addr} ${tftpbootfile};tftp ${fdt_addr} ${tftpfdtfile};tftp ${uinit_addr} ${tftpuInit};'
run net_tftp


Kernel is loaded via tftp and the rootfs is present in on the microSD card or eMMC.

Here is the process booting of image via tftp.
Code: Select all
U-boot-00000-g87cafd6(odroidc@87cafd6a) (Jul 12 2016 - 17:04:30)

I2C:   clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[25]=0
clear pinmux reg8[12]=0
clear pinmux reg1[3]=0
clear pinmux reg1[2]=0
set output en 0xc1108054[20]=1
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[25]=0
clear pinmux reg8[12]=0
clear pinmux reg1[3]=0
clear pinmux reg1[2]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[20]=0
set output val 0xc1108058[20]=0
clear pinmux reg1[25]=0
clear pinmux reg8[12]=0
clear pinmux reg1[3]=0
clear pinmux reg1[2]=0
set output en 0xc1108054[20]=1
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=ffdcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=ffdcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=ffdcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=ffdcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=ffdcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=ffdcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=ffdcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=ffdcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=ffdcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=fffcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=ffdcfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[25]=0
clear pinmux reg8[12]=0
clear pinmux reg1[3]=0
clear pinmux reg1[2]=0
out reg=c1108058,value=ffccfa00
set output en 0xc1108054[20]=0
set output val 0xc1108058[20]=0
clear pinmux reg1[24]=0
clear pinmux reg1[1]=0
out reg=c1108058,value=ffecfa00
set output en 0xc1108054[21]=0
set output val 0xc1108058[21]=0
clear pinmux reg1[25]=0
clear pinmux reg8[12]=0
clear pinmux reg1[3]=0
clear pinmux reg1[2]=0
set output en 0xc1108054[20]=1
clear pinmux reg1[25]=0
clear pinmux reg8[12]=0
clear pinmux reg1[3]=0
clear pinmux reg1[2]=0
set output en 0xc1108054[20]=1
clear pinmux reg1[25]=0
clear pinmux reg8[12]=0
clear pinmux reg1[3]=0
clear pinmux reg1[2]=0
set output en 0xc1108054[20]=1
ready
DRAM:  1 GiB
relocation Offset is: 2ff18000
MMC:   SDCARD: 0, eMMC: 1
IR init is done!
vpu clk_level = 3
set vpu clk: 182150000Hz, readback: 182150000Hz(0x701)
mode = 6  vic = 4
set HDMI vic: 4
mode is: 6
viu chan = 1
config HPLL
config HPLL done
reconfig packet setting done
MMC read: dev # 0, block # 33984, count 12288 ... 12288 blocks read: OK
There is no valid bmp file at the given address
============================================================
Vendor: Man 1b534d Snr c98d14ce Rev: 1.0 Prod: 00000
            Type: Removable Hard Disk
            Capacity: 30528.0 MB = 29.8 GB (62521344 x 512)
------------------------------------------------------------
Partition     Start Sector     Num Sectors     Type
    1                 2048          262144       c
    2               264192        62256129      83
============================================================
Net:   Meson_Ethernet
init suspend firmware done. (ret:0)
Hit Enter key to stop autoboot -- :  0
exit abortboot: 0
reading boot.ini

3719 bytes read
Loading boot.ini from mmc0:1 (vfat)
Executing the script...
setenv m "1080p"                # 1080P@60Hz
setenv vout_mode "hdmi"
setenv m_bpp "32"
setenv monitor_onoff "false" # true or false
setenv hpd "0"
setenv cec "0"
setenv disableuhs "disableuhs"
setenv vpu "1"
setenv hdmioutput "1"
setenv condev "console=tty0 console=ttyS0,115200n8"   # on both
setenv max_freq "1536"
if test "${hpd}" = "0"; then setenv hdmi_hpd "disablehpd=true"; fi
if test "${cec}" = "1"; then setenv hdmi_cec "hdmitx=cecf"; fi
setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac} monitor_onoff=${monitor_onoff} max_freq=${max_freq}"
if test "${vpu}" = "0"; then fdt rm /mesonstream; fdt rm /vdec; fdt rm /ppmgr; fi
if test "${hdmioutput}" = "0"; then fdt rm /mesonfb; fi
setenv kernel_addr 0x21000000
setenv fdt_addr 0x21800000
setenv uinit_addr 0x22000000
setenv tftpbootfile uImage
setenv tftpfdtfile meson8b_odroidc.dtb
setenv tftpuInit uInitrd
setenv ipaddr 10.0.0.107
setenv serverip 10.0.0.102
setenv gatewayip 10.0.0.101
setenv net_tftp 'tftp ${kernel_addr} ${tftpbootfile};tftp ${fdt_addr} ${tftpfdtfile};tftp ${uinit_addr} ${tftpuInit};'
run net_tftp
Amlogic Ethernet Init
Success: reset mac OK!(0)
ETH PHY hardware reset OK
find net phy id=0x1cc916, phyad=0
set_mac_mode(0)
final_addr[rx-tx]: 0x3ffec000-0x3ffec600
Ethernet reset OK
MAC address is 00:1e:06:20:0a:16
duplex
1000m
Using Meson_Ethernet device
TFTP from server 10.0.0.102; our IP address is 10.0.0.107
Filename 'uImage'.
Load address: 0x21000000
Loading: duplex
1000m
#################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #############################################
done
Bytes transferred = 5554975 (54c31f hex)
Using Meson_Ethernet device
TFTP from server 10.0.0.102; our IP address is 10.0.0.107
Filename 'meson8b_odroidc.dtb'.
Load address: 0x21800000
Loading: ####
done
Bytes transferred = 19940 (4de4 hex)
Using Meson_Ethernet device
TFTP from server 10.0.0.102; our IP address is 10.0.0.107
Filename 'uInitrd'.
Load address: 0x22000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #############################################
done
Bytes transferred = 9215135 (8c9c9f hex)
bootm 0x21000000 0x22000000 0x21800000
## Booting kernel from Legacy Image at 21000000 ...
   Image Name:   Linux-3.10.104-177
   Image Type:   ARM Linux Kernel Image (lzo compressed)
   Data Size:    5554911 Bytes = 5.3 MiB
   Load Address: 00208000
   Entry Point:  00208000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 22000000 ...
   Image Name:   uInitrd
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    9215071 Bytes = 8.8 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 21800000
   Booting using the fdt blob at 0x21800000
   Uncompressing Kernel Image ... OK
uboot time: 12927787 us.
Using machid 0xf81 from environment
From device tree /memory/ node aml_reserved_end property, for relocate ramdisk and fdt, relocate_addr: 0x58d2001
   Loading Ramdisk to 05008000, end 058d1c5f ... OK
   Loading Device Tree to 05000000, end 05007de3 ... OK

Starting kernel ...

[    0.000000@0] Booting Linux on physical CPU 0x200
[    0.000000@0] Initializing cgroup subsys cpuset
[    0.000000@0] Initializing cgroup subsys cpu
[    0.000000@0] Initializing cgroup subsys cpuacct
[    0.000000@0] Linux version 3.10.104-177 (root@1604_builder_armhf) (gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) ) #1 SMP PREEMPT Fri Nov 25 03:55:51 UTC 2016
[    0.000000@0] Kernel was built at commit id '6ac660c'
[    0.000000@0] CPU: ARMv7 Processor [410fc051] revision 1 (ARMv7), cr=10c5387d
[    0.000000@0] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000@0] Machine: ODROIDC, model: AMLOGIC
[    0.000000@0] physical memory start address is 0x200000
[    0.000000@0] reserved_end is e3fffff
[    0.000000@0]
[    0.000000@0] Total memory is 1022 MiB
[    0.000000@0] Reserved low memory from 0x06000000 to 0x0e3fffff, size: 132 MiB
[    0.000000@0]        mesonfb0(low)           : 0x06100000 - 0x07900000 ( 24 MiB)
[    0.000000@0]        mesonfb1(low)           : 0x07900000 - 0x07a00000 (  1 MiB)
[    0.000000@0]        mesonstream0(low)       : 0x07a00000 - 0x09a00000 ( 32 MiB)
[    0.000000@0]        vdec0(low)      : 0x09a00000 - 0x0da00000 ( 64 MiB)
[    0.000000@0]        ppmgr0(high)    : 0x3f000000 - 0x40000000 ( 16 MiB)
[    0.000000@0]        deinterlace0(high)      : 0x3cf00000 - 0x3f000000 ( 33 MiB)
[    0.000000@0]        amvideocap0(low)        : 0x0da00000 - 0x0e400000 ( 10 MiB)
[    0.000000@0] cma: CMA: reserved 8 MiB at 3c400000
[    0.000000@0] cma: Found region@0, memory base 0, size 42 MiB
[    0.000000@0] cma: CMA: reserved 44 MiB at 2cc00000
[    0.000000@0] Memory policy: ECC disabled, Data cache writealloc
[    0.000000@0] Meson chip version = RevA (1B:A - 0:B72)
[    0.000000@0] PERCPU: Embedded 8 pages/cpu @c143a000 s8448 r8192 d16128 u32768
[    0.000000@0] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 210192
[    0.000000@0] Kernel command line: root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro console=tty0 console=ttyS0,115200n8 no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=1080p m_bpp=32 vout=hdmi disableuhs disablehpd=true monitor_onoff=false max_freq=1536
[    0.000000@0] cvbs trimming line = 0xa000
[    0.000000@0] cvbs trimming.1.v5: 0xa0, 0x0
[    0.000000@0] osd1:1
[    0.000000@0] loaded:268435459
[    0.000000@0] logo has been loaded
[    0.000000@0] 720p:11
[    0.000000@0] full:2
[    0.000000@0] kernel get cvbsmode form uboot is 576cvbs
[    0.000000@0] kernel get hdmimode form uboot is 1080p
[    0.000000@0] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000@0] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000@0] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000@0] allocated 1992704 bytes of page_cgroup
[    0.000000@0] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000@0] Memory: 64MB 16MB 747MB = 827MB total
[    0.000000@0] Memory: 760876k/760876k available, 85972k reserved, 209920K highmem
[    0.000000@0] Virtual kernel memory layout:
[    0.000000@0]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000@0]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000@0]     vmalloc : 0xf0000000 - 0xff000000   ( 240 MB)
[    0.000000@0]     lowmem  : 0xc0000000 - 0xef800000   ( 760 MB)
[    0.000000@0]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000@0]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000@0]       .text : 0xc0008000 - 0xc09450e0   (9461 kB)
[    0.000000@0]       .init : 0xc0946000 - 0xc097e100   ( 225 kB)
[    0.000000@0]       .data : 0xc0980000 - 0xc09f8980   ( 483 kB)
[    0.000000@0]        .bss : 0xc09f8980 - 0xc0c8c43c   (2639 kB)
[    0.000000@0] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000@0] Preemptible hierarchical RCU implementation.
[    0.000000@0] NR_IRQS:256
[    0.000000@0] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 4294967ms
[    0.000000@0] Global timer: MESON TIMER-F (c099b440) initialized
[    0.000000@0] Switching to timer-based delay loop
[    0.000000@0] Console: colour dummy device 80x30


Note: These steps are very much necessary to boot for kernel development process.
This process helps developers time so that build and loading time is reduce.
Once you cross compile the kernel and upate the image into /tftpboot folder it will load the latest image.


Attached is the modified boot.ini

I will soon update the process for booting of tftp for mainline kennel for Odroid platforms .
Attachments
boot_c1.ini
boot.ini odroidc1
(3.69 KiB) Downloaded 46 times
boot_c2.ini
boot.init odroidc2
(6.27 KiB) Downloaded 46 times
moon.linux
 
Posts: 1107
Joined: Thu Oct 02, 2014 11:42 pm
languages_spoken: english

Return to Ubuntu (All Linux'es)

Who is online

Users browsing this forum: No registered users and 2 guests