Armbian for Odroid C1 and C2


spacewalker
 Share

5 5

Recommended Posts

Donate and support the project!

Great!  :P

 

Now we only need one with some logical and few bash coding skills to bring it to our tools:

https://github.com/igorpecovnik/lib

 

Most of definitions are in this file:

https://github.com/igorpecovnik/lib/blob/master/configuration.sh

 

This task is not yet properly documented, so documenting this procedure, not from my perspective, reveals complexity of the task. For me it's simple :rolleyes:

 

I'll be happy to help with tips if necessary.

Link to post
Share on other sites

please forgive my ignorance 

 

can I simply modify an existing board in your configuration.sh to point to the kernel & uboot source for the c1?  

 

or is this to much of headache 

 

configuration.sh

Yes, copy paste from (best from Odroid XU4) but not just board but also family sections and rename appropriate. Family name is when several boards share the same kernel source, if not they form new family. In this case we got a new one since xu4 and C1 are very different.

 

Chosen names matter but we are here to fix / assist. 

Link to post
Share on other sites

If there are no better options let's start gather information from official sources:

 

C1

 

Uboot

source: https://github.com/hardkernel/u-boot.git

branch: odroidc-v2011.03

config: odroidc_config

Kernel

source: https://github.com/hardkernel/linux.git

branch: odroidc-3.10.y

config: odroidc_defconfig (this will go into -> lib/config/linux-odroidc1-default.config)

 

Added to build script:
https://github.com/igorpecovnik/lib/commit/8f651897094a423fb62ba2740e20b363a90129d9

 

(Not booting) first build - Debian Jessie with 3.10.101

http://mirror.igorpecovnik.com/test/Armbian_5.06_Odroidc1_Debian_jessie_3.10.101.zip

Not booting. The person who did first test don't have a serial cable to see what's the problem :(

Link to post
Share on other sites

I'll try the build in the morning on my C1+, btw the I just read on the git page for this build that you cant use serial because of the "special" socket, I just use a standard PL2303 with  the 4 wires and jam them on the pins (minus red) lol, works fine, the pin outs are listed on the hardkernel site.

 

BTW I too also have a C2 board.

Link to post
Share on other sites

I'll try the build in the morning on my C1+, btw the I just read on the git page for this build that you cant use serial because of the "special" socket, I just use a standard PL2303 with  the 4 wires and jam them on the pins (minus red) lol, works fine, the pin outs are listed on the hardkernel site.

 

BTW I too also have a C2 board.

 

The problem is 1.8V logic so - you need to shift those levels or end up with fried board :( Board to PL2303 is safe, back is the problem ...

 

BTW: C2 added (tnx max) but we need to adjust more stuff since we don't support 64bit building yet and my C2 is somewhere at customs.

Link to post
Share on other sites

iozone -e -I -a -s 100M -r 4k -r 512k -r 16M -i 0 -i 1 -i 2
        Iozone: Performance Test of File I/O
                Version $Revision: 3.429 $
                Compiled for 64 bit mode.
                Build: linux 


        Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
                     Al Slater, Scott Rhine, Mike Wisner, Ken Goss
                     Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
                     Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
                     Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
                     Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
                     Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
                     Vangel Bojaxhi, Ben England, Vikentsi Lapa.


        Run began: Wed Mar 23 12:47:25 2016


        Include fsync in write timing
        O_DIRECT feature enabled
        Auto Mode
        File size set to 102400 kB
        Record Size 4 kB
        Record Size 512 kB
        Record Size 16384 kB
        Command line used: iozone -e -I -a -s 100M -r 4k -r 512k -r 16M -i 0 -i 1 -i 2
        Output is in kBytes/sec
        Time Resolution = 0.000001 seconds.
        Processor cache size set to 1024 kBytes.
        Processor cache line size set to 32 bytes.
        File stride size set to 17 * record size.
                                                              random    random      
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4    21526    21546     9848     9788     9547    21010             
          102400     512    43325    43320   108983   109771   109912    42450
          102400   16384    42912    42980   107567   107679   107656    42876

iozone test complete.
root@odroid64:/home/odroid# dd if=/dev/zero of=test.tmp oflag=direct bs=1M count=1024 
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 24.2155 s, 44.3 MB/s
root@odroid64:/home/odroid# dd if=test.tmp of=/dev/null iflag=direct bs=1M
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 9.60708 s, 112 MB/s

I just compiled uboot and kernel with stock ubuntu 4.8.4 arm64 compiler ... BTW, it's cheapest eMMC, 8G.

Link to post
Share on other sites

              kB  reclen    write  rewrite    read    reread    read     write
          102400       4    21526    21546     9848     9788     9547    21010
          102400     512    43325    43320   108983   109771   109912    42450
          102400   16384    42912    42980   107567   107679   107656    42876

 

Thx. That's the main reason why a desktop image doesn't feel sluggish. This eMMC is five times faster than the best performing SD cards when it's about 4K random writes.

 

BTW: that's one of the reasons why I don't like this commit. People use an old spare SD card they found somewhere lying around, burn Armbian on it to try it out and come to the conclusion that Armbian sucks. Prior to this commit they gave up since their crappy ultra slow SD card prevented booting fortunately. Now we get annoying 'reports' that Armbian is garbage.

Link to post
Share on other sites

i used the 32gb emmc running debain

➜ root@c2  ~  dd if=/dev/zero of=test1.tmp oflag=direct bs=1M count=1024
1024+0 Datensätze ein
1024+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 8,87295 s, 121 MB/s
➜ root@c2  ~  dd if=test1.tmp of=/dev/null iflag=direct bs=1M
1024+0 Datensätze ein
1024+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 8,57696 s, 125 MB/s
➜ root@c2  ~  lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0 29,1G  0 disk 
├─mmcblk0p1 179:1    0  128M  0 part /media/boot
└─mmcblk0p2 179:2    0 28,9G  0 part /
➜ root@c2  ~  iozone -e -I -a -s 100M -r 4k -r 512k -r 16M -i 0 -i 1 -i 2
	Iozone: Performance Test of File I/O
	        Version $Revision: 3.429 $
		Compiled for 64 bit mode.
		Build: linux 

	Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
	             Al Slater, Scott Rhine, Mike Wisner, Ken Goss
	             Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
	             Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
	             Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
	             Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
	             Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
	             Vangel Bojaxhi, Ben England, Vikentsi Lapa.

	Run began: Wed Mar 23 18:19:20 2016

	Include fsync in write timing
	O_DIRECT feature enabled
	Auto Mode
	File size set to 102400 kB
	Record Size 4 kB
	Record Size 512 kB
	Record Size 16384 kB
	Command line used: iozone -e -I -a -s 100M -r 4k -r 512k -r 16M -i 0 -i 1 -i 2
	Output is in kBytes/sec
	Time Resolution = 0.000001 seconds.
	Processor cache size set to 1024 kBytes.
	Processor cache line size set to 32 bytes.
	File stride size set to 17 * record size.
                                                              random    random     bkwd    record    stride                                    
              kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
          102400       4    21506    21871    10587    10589    10285    21568                                                          
          102400     512   119884   119129   120658   120204   120285   117944                                                          
          102400   16384   123984   124286   118559   118461   118260   121185                                                          

iozone test complete.
Link to post
Share on other sites

          102400       4    21506    21871    10587    10589    10285    21568
          102400     512   119884   119129   120658   120204   120285   117944
          102400   16384   123984   124286   118559   118461   118260   121185

 

Thx for the addition, the usual 'more capacity --> more performance' effect when we're talking about flash based storage :)

 

Good to know that 32GB are already enough to max out at 120MB/s. Based on these numbers we can assume that their 16GB eMMC module shows 85 MB/s sequential writes and also already 120 MB/s read speed when block sizes aren't too small. Good to know.

 

@Igor: Going to dinner know, hope you finished Armbian porting to C2 when I'm back ;)

Link to post
Share on other sites

Wow terrific progress. I have been playing with the c2 also, exciting to see how fast things are moving for the c2.

 

possibly off topic now-

 

here is uart output from non booting c1 image

QA5:A;SVN:B72;POC:17F;STS:0;BOOT:0;INIT:10;BOOT:1;INIT:0;READ:41;USB:3;SERIAL:4;STS:0;BOOT:0;INIT:10;BOOT:1;INIT:0;READ:41;USB:3;SERIAL:4;

unable to fetch bootloader? quite possibly my sd card is bad...

Link to post
Share on other sites

Last two days I was working only on C2 and I am also satisfied.  :rolleyes: We expanded build tools to arm64 and C2 got upgraded kernel.

 

C1. Thank you for trying. I'll take a look step by step, to see what is wrong ... I think it must be something, Thomas also tried but without serial console ...

Link to post
Share on other sites

I tried to compile a Jessie desktop image for the C2 on my Xubuntu 14.04 laptop. The compile script fails at the u-boot image.

The only changes I made to compile.sh were setting both KERNEL_CONFIGURE and KERNEL_KEEP_CONFIG to "yes" because I wanted to add some modules to the default config. But of course the point where it fails is before it even gets to that part.

Displaying message: Preparing host info
Config: linux-odroidc2-default
Kernel source: https://github.com/hardkernel/linux
Branch: odroidc2-3.14.y
linuxsource: linux-odroidc2
Offset: 1
bootsize: 32
bootloader: https://github.com/hardkernel/u-boot.git
bootsource: u-boot-odroidc2
bootbranch: odroidc2-v2015.01
CPU 500000 / 2016000 with conservative
27.03.2016 02:58:24 Armbian 5.06 Odroidc2 Debian jessie default
Displaying message: Starting Armbian build script @host info
Displaying message: Building Armbian 5.06 Odroidc2 Debian jessie default info
Displaying message: Syncing clock host info
Displaying message: source downloading @host info
Displaying message: ... updating u-boot-odroidc2 info
Displaying message: ... updating linux-odroidc2 info
Displaying message: ... updating sunxi-tools info
Displaying message: ... updating rt8192cu info
Displaying message: ... updating sunxi-display-changer info
Displaying message: ... updating mt7601 info
Displaying message: Cleaning /home/silviu/armbian/odroidc2/sources/u-boot-odroidc2/odroidc2-v2015.01 info
Displaying message: Cleaning /home/silviu/armbian/odroidc2/sources/linux-odroidc2/odroidc2-3.14.y info
Displaying message: Cleaning /home/silviu/armbian/odroidc2/output/debs for odroidc2 default info
Displaying message: Started patching process for kernel odroidc2-default 3.14.29 info
Displaying message: Looking for user patches in userpatches/kernel/odroidc2-default info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/02-packagin-odroidc2.patch odroidc2-default 3.14.29
Displaying message: ... 02-packagin-odroidc2.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/fbtft_drivers.patch odroidc2-default 3.14.29
Displaying message: ... fbtft_drivers.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.29-30.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.29-30.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.30-31.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.30-31.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.31-32.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.31-32.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.32-33.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.32-33.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.33-34.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.33-34.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.34-35.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.34-35.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.35-36.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.35-36.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.36-37.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.36-37.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.37-38.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.37-38.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.38-39.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.38-39.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.39-40.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.39-40.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.40-41.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.40-41.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.41-42.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.41-42.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.42-43.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.42-43.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.43-44.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.43-44.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.44-45.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.44-45.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.45-46.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.45-46.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.46-47.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.46-47.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.47-48.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.47-48.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.48-49.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.48-49.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.49-50.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.49-50.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.50-51.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.50-51.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.51-52.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.51-52.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.52-53.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.52-53.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.53-54.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.53-54.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.54-55.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.54-55.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.55-56.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.55-56.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.56-57.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.56-57.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.57-58.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.57-58.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.58-59.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.58-59.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.59-60.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.59-60.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.60-61.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.60-61.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.61-62.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.61-62.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.62-63.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.62-63.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.63-64.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.63-64.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/patch-3.14.64-65.patch odroidc2-default 3.14.29
Displaying message: ... patch-3.14.64-65.patch succeeded info
/home/silviu/armbian/odroidc2/lib/patch/kernel/odroidc2-default/unlock_atheros_regulatory_restrictions.patch odroidc2-default 3.14.29
Displaying message: ... unlock_atheros_regulatory_restrictions.patch succeeded info
Displaying message: Started patching process for u-boot u-boot-odroidc2-default 2015.01 info
Displaying message: Looking for user patches in userpatches/u-boot/u-boot-odroidc2-default info
Displaying message: Compiling uboot. Please wait. 2015.01 info
27.03.2016 02:58:40 /home/silviu/armbian/odroidc2/sources/u-boot-odroidc2/odroidc2-v2015.01/odroidc2_config
Displaying message: Target directory /home/silviu/armbian/odroidc2/output/debs/ info
Displaying message: Building deb linux-u-boot-odroidc2_5.06_arm64.deb info
Displaying message: ERROR in function compile_uboot common.sh:161 err
Displaying message: Building u-boot failed, check configuration  err
Displaying message: Process terminated  info
Link to post
Share on other sites

I had cloned your repository in an empty directory about 10 minutes prior to posting. Here's gcc (it's the latest available in Xubuntu 14.04)

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
Link to post
Share on other sites

@Igor

 

I just tested this, u-boot compilation fails for me too (in Trusty container) unless I remove $CTHREADS from u-boot compilation (common.sh:53), so probably some makefile is broken and multithreaded compilation results in access to file that wasn't built yet.

 

Works without $CTHREADS

 

 

  LDS     u-boot.lds
  LD      u-boot
  OBJCOPY u-boot.srec
  OBJCOPY u-boot.bin
  OBJCOPY u-boot.hex
Updating "../fip/gxb/fip.bin"
Firmware Image Package ToC:
---------------------------
- SCP Firmware BL3-0: offset=0x4000, size=0x9E88
- SCP Firmware BL3-0-1: offset=0x10000, size=0x1628
- EL3 Runtime Firmware BL3-1: offset=0x14000, size=0x110D0
- Non-Trusted Firmware BL3-3: offset=0x28000, size=0x65EE8
---------------------------
1152+0 records in
1152+0 records out
589824 bytes (590 kB) copied, 0.0124058 s, 47.5 MB/s
../fip/gxb/u-boot.bin build done!

 

 

 

Fails without changes:

cp: cannot stat 'u-boot.bin': No such file or directory
make[1]: *** [fip.bin] Error 1
make[1]: *** Waiting for unfinished jobs....
Link to post
Share on other sites

Guest
This topic is now closed to further replies.
 Share

5 5