Jump to content

A10-OLinuxino-Lime support


Yuri

Recommended Posts

I have tested Armbian with mainline kernel on A10-OLinuxino-Lime-4G board. The only one change is :

diff --git a/configuration.sh b/configuration.sh
index 7f439a7..be27778 100644
--- a/configuration.sh
+++ b/configuration.sh
@@ -130,7 +130,7 @@ lime)
 # Olimex Lime
 #--------------------------------------------------------------------------------------------------------------------------------
 REVISION="1.9"
-BOOTCONFIG="A20-OLinuXino-Lime_defconfig"
+BOOTCONFIG="A10-OLinuXino-Lime_defconfig"
 MODULES="hci_uart gpio_sunxi rfcomm hidp bonding spi_sun7i 8021q a20_tp"
 MODULES_NEXT=""
 ;;

After this patch correct version of U-boot (.config file) is build and correct dtb-file is used at boot.

 

It can't be committed "as is" because this patch removes support of A20-OLinuXino-Lime. So some refactoring of $BOARDS in main.sh is needed to support A10-OLinuXino-Lime, A20-OLinuXino-Lime and A20-OLinuXino-Lime2 boards. Dear Igor! Please, add support of this boards to Armbian!

 

Best regards,

    Yuri

 

Link to comment
Share on other sites

1) Lime A10 image with kernel 4.1.2


Boots OK. Serial and HDMI consoles work.

Only one error during first boot: "/etc/init.d/armhwinfo: line 51: echo: write error: Input/output error". I think it is due to only one core in A10.

Do you need dmesg or /var/log/* files?

Link to comment
Share on other sites

2) Lime A10 image with kernel 3.4.108 and HW accelerated MATE desktop

It starts boot, but it hangs. Output from serial console is below:

U-Boot SPL 2015.04-dirty (Jul 14 2015 - 19:32:48)
DRAM: 512 MiB
CPU: 912000000Hz, AXI/AHB/APB: 3/2/2


U-Boot 2015.04-dirty (Jul 14 2015 - 19:32:48) Allwinner Technology

CPU:   Allwinner A10 (SUN4I)
I2C:   ready
DRAM:  512 MiB
MMC:   SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment

HDMI connected: EDID: invalid EDID data
Setting up a 1024x768 dvi console
Error: no valid bmp image at 66000000
In:    serial
Out:   vga
Err:   vga
SCSI:  SUNXI SCSI INIT
SATA link 0 timeout.
AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
flags: ncq stag pm led clo only pmp pio slum part ccc apst
Net:   emac
starting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... cannot reset port 1!?
1 USB Device(s) found
USB1:   USB EHCI 1.00
scanning bus 1 for devices... cannot reset port 1!?
1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  0
6944 bytes read in 192 ms (35.2 KiB/s)
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
1548 bytes read in 181 ms (7.8 KiB/s)
## Executing script at 43100000
** File not found /boot/.next **
43508 bytes read in 458 ms (91.8 KiB/s)
5605360 bytes read in 657 ms (8.1 MiB/s)
Kernel image @ 0x48000000 [ 0x000000 - 0x5587f0 ]

Starting kernel ...

<6>Booting Linux on physical CPU 0
<6>Initializing cgroup subsys cpuset
<6>Initializing cgroup subsys cpu
<5>Linux version 3.4.108-lime (root@kitchen) (gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-16ubuntu4) ) #14 SMP PREEMPT Sun Jul 12 16:43:47 CEST 2015
CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: sun4i
<6>Memory Reserved:
<6>     SYS  : 0x43000000 - 0x4300ffff  (  64 kB)
<6>     LCD  : 0x44000000 - 0x44ffffff  (  16 MB)
Memory policy: ECC disabled, Data cache writeback
<6>sunxi: Allwinner A10 revision C (AW1623/sun4i) detected.
<7>On node 0 totalpages: 131072
<7>free_area_init_node: node 0, pgdat c0a7bb40, node_mem_map d0000000
<7>  DMA zone: 512 pages used for memmap
<7>  DMA zone: 0 pages reserved
<7>  DMA zone: 65024 pages, LIFO batch:15
<7>  Normal zone: 512 pages used for memmap
<7>  Normal zone: 65024 pages, LIFO batch:15
<6>PERCPU: Embedded 8 pages/cpu @d0405000 s8256 r8192 d16320 u32768
<7>pcpu-alloc: s8256 r8192 d16320 u32768 alloc=8*4096<c>
<7>pcpu-alloc: <c>[0] <c>0 <c>
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
<5>Kernel command line: console=tty1 root=/dev/mmcblk0p1 rootwait rootfstype=ext4 sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_no_mali_mem_reserve sunxi_fb_mem_reserve=16 hdmi.audio=EDID:0 disp.screen0_output_mode=1920x1080p60 panic=10 consoleblank=0 enforcing=0 loglevel=1
<6>PID hash table entries: 2048 (order: 1, 8192 bytes)
<6>Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
<6>Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
<6>allocated 1048576 bytes of page_cgroup
<6>please try 'cgroup_disable=memory' option if you don't want memory cgroups
<6>Memory: 512MB = 512MB total
<5>Memory: 489616k/489616k available, 34672k reserved, 0K highmem
<5>Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
    lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .text : 0xc0008000 - 0xc09d1b00   (10023 kB)
      .init : 0xc09d2000 - 0xc0a0b040   ( 229 kB)
      .data : 0xc0a0c000 - 0xc0a842b8   ( 481 kB)
       .bss : 0xc0a842dc - 0xc0c596b8   (1877 kB)
<6>SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
<6>Preemptible hierarchical RCU implementation.
<6>     RCU dyntick-idle grace-period acceleration is enabled.
<6>     Additional per-CPU info printed with stalls.
<6>NR_IRQS:192
<6>sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
<6>Console: colour dummy device 80x30
<6>console [tty1] enabled
<6>Calibrating delay loop...

And A10 CPU was very hot.

 

And to you previous question: no, I don't check kernel 3.4.x before.

Link to comment
Share on other sites

Thanks.

 

1. I don't need logs. You are right ... I'll fix asap.

2. No ideas at this point. I guess it's not a proper FEX script. I use the one from here.

Access to hardware would be nice to conduct more tests. It would be glad to have this working ... some day ;)

Link to comment
Share on other sites

2. No ideas at this point. I guess it's not a proper FEX script. I use the one from here.

 

This one initialises DRAM with 480 MHz which according to Olimex (when they released the A20 Lime2 they talked about "much better routing of DDR3 memory" and what's said regarding A20-Lime should apply to the A10-Lime as well) might not work reliable.

 

@Yuri: Can you try to have a look what Olimex sets in the script.bin they use with their own images? Might be 384 MHz instead.

 

BTW: Using A10 together with HW accelerated desktop (or desktop at all) is no good idea: http://linux-sunxi.org/Optimizing_system_performance#Using_a_lower_resolution_graphics_mode

Link to comment
Share on other sites

I looked through kernel config files and found than in config for Lime A10 image with kernel 3.4.108 and HW accelerated MATE desktop there are:

# CONFIG_ARCH_SUN4I is not set
# CONFIG_ARCH_SUN5I is not set
CONFIG_ARCH_SUN7I=y

It is not good... Config file is here.

Link to comment
Share on other sites

Result is the same.

It seems that in 3.4 kernel it is impossible to have both CONFIG_ARCH_SUN4I=y and CONFIG_ARCH_SUN7I=y. In last image only CONFIG_ARCH_SUN7I is set.

Now I am compiling 3.4 kernel with only CONFIG_ARCH_SUN4I=y.

Link to comment
Share on other sites

Hm. Only now I have found than I can't build linux-sunxi-3.4 kernel (with Lime-A20 and Lime2-A20 config file). Something wrong with return_address function, but right now I can't correct it.

init/do_mounts_rd.o: In function `return_address':
do_mounts_rd.c:(.text+0x0): multiple definition of `return_address'
init/do_mounts.o:do_mounts.c:(.text+0x34): first defined here
init/do_mounts_initrd.o: In function `return_address':
do_mounts_initrd.c:(.text+0x0): multiple definition of `return_address'
init/do_mounts.o:do_mounts.c:(.text+0x34): first defined here
scripts/Makefile.build:429: recipe for target 'init/mounts.o' failed

...

arch/arm/kernel/return_address.c:62:2: warning: #warning "TODO: return_address should use unwind tables" [-Wcpp]
 #warning "TODO: return_address should use unwind tables"
  ^
arch/arm/kernel/return_address.c:65:7: error: redefinition of ‘return_address’
 void *return_address(unsigned int level)
       ^
In file included from include/linux/ftrace.h:19:0,
                 from arch/arm/kernel/return_address.c:12:
/home/yura/work/chudom/lime1-3.4/output/linux-sunxi/arch/arm/include/asm/ftrace.h:48:21: note: previous definition of ‘return_address’ was here
 extern inline void *return_address(unsigned int level)
                     ^
Link to comment
Share on other sites

I am working on Ubuntu 14.04 with it's defaults.

 

Hmm... I thought installing Linaro's standalone cross-compiler toolchain is recommended? I use

 

http://releases.linaro.org/14.11/components/toolchain/binaries/arm-linux-gnueabihf/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz

 

and unpacked it in /usr/local and define 

export PATH="/usr/local/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/:$PATH"

@Yuri: Since you're using an A10 I would love to get feedback regarding reading out thermal values from its TP's thermal sensor inside. Please have a look at this thread. Would be great if you could unpack the sunxi-monitor.tar.gz archive and provide the output of

/usr/share/rpimonitor/scripts/sunxi_tp_temp 1447

to get a clue whether this approachs works on A10/A13 as well. Thx (and sorry for thread hijacking)

Link to comment
Share on other sites

tkaiser! 

root@lime-a10:~/sunxi-monitor/usr/share/rpimonitor/scripts# ./sunxi_tp_temp 1447
78.8
root@lime-a10:~/sunxi-monitor/usr/share/rpimonitor/scripts# ./sunxi_tp_temp 1447
79.0

P.S. I use mainline (4.1.1) kernel.

Link to comment
Share on other sites

Hello

 

I bought Olimex A10Lime two weeks ago. Since I have no prior UNIX/Linux experience I have just booted it with official Olimex's Debian image* with wheezy on it. It has EGLIBC with 2.13 and GCC with 4.6.

 
 
The main reason why I bought this card was to learn embedded Linux while developing some applications over it with Qt Framework.
 
But I am struggling to cross compile Qt for it. Firstly, I have noticed that if I use cross toolchain with different version of C libraries than those on my target OS, it fails linking and stops compilation.
 
But because GCC-4.6 has no C++11 support I wouldn't  like to actually use a crosstoolchain with it. So I have tried to upgrade my EGLIBC and GCC on my target OS. But I found some comments on the internet saying that upgrading EGLIBC wouldn't be the safe way. So I tried to transit from wheezy to jessie using the same image. But it has failed because of a package(which is udev) that is not compatible with the kernel on my target OS. 
 
After those tries I tried to use Debian installer like explained on this link,
 
But because of the u-boot that Debian provides, the system was headless which can not be the case for my purpose. 
 
I researched Ubuntu trusty or Debian jessie is the completely perfect environment for me. those have GCC with 4.8 and EGLIBC with 2.19. And those are also stable as well..
 
My question is; do you have any advice for me to accomplish my purpose on Olimex A10 Lime? I don't mind if there aren't any X desktops on my target OS but I know that I would need OpenGL ES 2 support on it to use EGL on Qt.
 
Thank you,
Sina
Link to comment
Share on other sites

Ah!!

 

Finally I have an environment with gcc 4.9!

 

Thanks for your efforts. I have used that image http://mirror.igorpecovnik.com/Lime-a10_Debian_1.0_wheezy_4.1.2.zip and followed Igor's FAQ* about upgrading from wheezy to jessie.. Thats it :)

 

* http://www.igorpecovnik.com/2014/11/18/olimex-lime-debian-sd-image/

 

How to upgrade from Debian Wheezy to Debian Jessie?

dpkg -r ramlog 
cp /etc/apt/sources.list{,.bak}
sed -i -e 's/ \(stable\|wheezy\)/ jessie/ig' /etc/apt/sources.list
apt-get update
apt-get --download-only dist-upgrade

apt-get dist-upgrade

 

After I just checked my release info, lsb_release -a it is jessie :)

 

But now I have another problem with it. I guess that kernel-4.1.2 is linux-kernel, which is not sunxi-kernel. So it does not have the Mali Binary Libraries. So is it possible to install this driver on that kernel? I need Mali for Opengl ES 2 support. Also is it possible to have LCD support on that system?

 

Btw is there any recomendations for cross compiler?

 

Thank you,

Sina

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines