error in cross compiling linux for imx6 board

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

error in cross compiling linux for imx6 board

2,797 Views
srinivasaporam
Contributor II

Hi,

We have got imx6 board(Wandboard). Now, we would like to compile linux source and put uImage to SD card(/boot/uImage). We are compiling linux source by:

export CC=`pwd`/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-

make ARCH=arm CROSS_COMPILE=${CC} distclean

make ARCH=arm CROSS_COMPILE=${CC} wandboard_defconfig

make ARCH=arm CROSS_COMPILE=${CC} uImage

then it is giving error for last command make ARCH=arm CROSS_COMPILE=${CC} uImage

SHIPPED arch/arm/boot/compressed/hyp-stub.S

  AS      arch/arm/boot/compressed/hyp-stub.o

  SHIPPED arch/arm/boot/compressed/lib1funcs.S

  AS      arch/arm/boot/compressed/lib1funcs.o

  SHIPPED arch/arm/boot/compressed/ashldi3.S

  AS      arch/arm/boot/compressed/ashldi3.o

  LD      arch/arm/boot/compressed/vmlinux

  OBJCOPY arch/arm/boot/zImage

  Kernel: arch/arm/boot/zImage is ready

multiple (or no) load addresses:

This is incompatible with uImages

Specify LOADADDR on the commandline to build an uImage

make[1]: *** [arch/arm/boot/uImage] Error 1

make: *** [uImage] Error 2

as it suggests "Specify LOADADDR on the commandline to build an uImage"

after searching in web , came to know that command can be run as:

make ARCH=arm CROSS_COMPILE=${CC} uImage -j4 LOADADDR=0x10008000

this is creating uImage in /arch/arm/boot/. Now we are copying this uImage to SD card (/media/rootfs/boot/).

and also we have copied Ubuntu-Core rootfile system, dtbs(/media/rootfs/boot/dtbs/)

But it is not booting to Ubuntu.

We doubt we are not setting parameters in uEnv.txt (/media/rootfs/boot/uEnv.txt)

uEnv.txt file contents are:

uname_r=3.10.53

dtb=xyz.dtb

whether this 3.10.53 for uname_r is correct or not????? how to set uname_r and how to get this uname_r???

Labels (3)
0 Kudos
15 Replies

1,392 Views
srinivasaporam
Contributor II

Hi,

any suggestions please. We stuck up at the same problem since 15 days....

0 Kudos

1,392 Views
srinivasaporam
Contributor II

Hi,

These are the following changes from reference board to custom board:

1. Reference board has 2GB DDR3 memory where as custom board has 512MB LPDDR2 memory.

2. Reference board has IMX6Q processor where as custom board has IMX6D processor

for memory and processor type only UBoot changes or Kernel files also need to be changed.

0 Kudos

1,392 Views
srinivasaporam
Contributor II

Hi,

bdinfo in u-boot has resulted as below:

=> bdinfo                                                                 
arch_number = 0x0000113C                                                  
boot_params = 0x10000100                                                  
DRAM bank   = 0x00000000                                                  
-> start= 0x10000000                                                  
-> size = 0x20000000                                                  
eth0name= FEC                                                         
ethaddr = (not set)                                                   
current eth = FEC                                                         
ip_addr = <NULL>                                                      
baudrate= 115200 bps                                                  
TLB addr= 0x2FFF0000                                                  
relocaddr   = 0x2FF66000                                                  
reloc off   = 0x18766000                                                  
irq_sp  = 0x2F565EA0                                                  
sp start= 0x2F565E90                                                  
FB base = 0x2F56B9A0
0 Kudos

1,392 Views
srinivasaporam
Contributor II

Hi,

Iam trying very hard to find out where we are doing mistake. with 3.10.53, the reference board is booting fine but custom board is not booting and stucking at "starting kernel..." .

I have enable Kernel Lowlevel debugging and Earlyprintk with which I could able to get some messages as below:

Starting kernel ...                                                       
                                                                          
Uncompressing Linux... done, booting the kernel.                          
Booting Linux on physical CPU 0x0                                         

Linux version 3.10.53-1.1.0_ga-wandboard-06048-g286b4ef (srinivas@srinivas-Lati5

CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d          
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache  

Machine: Freescale i.MX6 Quad/DualLite (Device Tree), model: Wandboard Quad basd

bootconsole [earlycon0] enabled                                           
cma: CMA: reserved 32 MiB at 2e000000                                     
Memory policy: ECC disabled, Data cache writealloc                        
PERCPU: Embedded 8 pages/cpu @811e6000 s8960 r8192 d15616 u32768          
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048

Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk2p1 rw rootfstype=et

PID hash table entries: 2048 (order: 1, 8192 bytes)                       
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)           
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)            
Memory: 512MB = 512MB total                                               
Memory: 472620k/472620k available, 51668k reserved, 0K highmem            
Virtual kernel memory layout:                                             
vector  : 0xffff0000 - 0xffff1000   (   4 kB)                         
fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)                         
vmalloc : 0xa0800000 - 0xff000000   (1512 MB)                         
lowmem  : 0x80000000 - 0xa0000000   ( 512 MB)                         
pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)                         
modules : 0x7f000000 - 0x7fe00000   (  14 MB)                         
  .text : 0x80008000 - 0x80ca1eac   (12904 kB)                        
  .init : 0x80ca2000 - 0x80cef300   ( 309 kB)                         
  .data : 0x80cf0000 - 0x80d5dcd0   ( 440 kB)                         
   .bss : 0x80d5dcd0 - 0x80dd76c4   ( 487 kB)                         
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1                
Preemptible hierarchical RCU implementation.                              
NR_IRQS:16 nr_irqs:16 16                                                  
L310 cache controller enabled                                             

l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x32470000, Cache size: 1048576 B

It is neither progressing further nor giving me some error messages. What is the problem. what is the mistake that we are doing????

0 Kudos

1,392 Views
srinivasaporam
Contributor II

Hi,

this error is rectified when i made 2 cores in DTS (since kernel is compiled with MAX_CPU-COREs=2). After that we are getting the following error in GPC:

L310 cache controller enabled                                             

l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x32470000, Cache size: 1048576 B 

------------[ cut here ]------------                                      
WARNING: at arch/arm/mach-imx/gpc.c:530 imx_gpc_init+0x4c/0x210()         
Modules linked in:                                                        

CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.10.53-1.1.0_ga-wandboard-06048-g2861

[<800149ac>] (unwind_backtrace+0x0/0x12c) from [<80012218>] (show_stack+0x10/0x)

[<80012218>] (show_stack+0x10/0x14) from [<8002dce8>] (warn_slowpath_common+0x5)

[<8002dce8>] (warn_slowpath_common+0x54/0x6c) from [<8002dd9c>] (warn_slowpath_)

[<8002dd9c>] (warn_slowpath_null+0x1c/0x24) from [<80cd5730>] (imx_gpc_init+0x4)

[<80cd5730>] (imx_gpc_init+0x4c/0x210) from [<80cd9e88>] (imx6q_init_irq+0x14/0)

[<80cd9e88>] (imx6q_init_irq+0x14/0x1c) from [<80cc9974>] (start_kernel+0x1e8/0)

[<80cc9974>] (start_kernel+0x1e8/0x328) from [<10008074>] (0x10008074)    
---[ end trace 1b75b31a2719ed1c ]---                                      

Unable to handle kernel NULL pointer dereference at virtual address 00000008   

pgd = 80004000                                                            
[00000008] *pgd=00000000                                                  
Internal error: Oops: 805 [#1] PREEMPT SMP ARM                            
Modules linked in:                                                        
CPU: 0 PID: 0 Comm: swapper/0 Tainted: G    W3.10.53-1.1.0_ga-wandboard1
task: 80d23648 ti: 80d18000 task.ti: 80d18000                             
PC is at imx_gpc_init+0x5c/0x210                                          
LR is at warn_slowpath_null+0x1c/0x24                                     
pc : [<80cd5740>]lr : [<8002dd9c>]psr: 600001d3                   
sp : 80d19f90  ip : 00000000  fp : 00000000                               
r10: 00000000  r9 : 412fc09a  r8 : 1000406a                               
r7 : 80d85a34  r6 : 8120b6c0  r5 : 00000000  r4 : 80d85a34                
r3 : 00000000  r2 : ffffffff  r1 : 80d86bb0  r0 : 00000000                
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel     
Control: 10c53c7d  Table: 1000404a  DAC: 00000015                         
Process swapper/0 (pid: 0, stack limit = 0x80d18238)                      
Stack: (0x80d19f90 to 0x80d1a000)                                         
9f80:                                 020dbfff 81204ab8 80d3bc1c 802ebfdc  

9fa0: 00000000 80d85200 80d20480 8120b6c0 80d07a88 1000406a 412fc09a 80cd9e88  

9fc0: 80d85200 80cc9974 ffffffff ffffffff 80cc9558 00000000 00000000 80d07a88  

9fe0: 00000000 10c53c7d 80d204e0 80d07a84 80d24444 10008074 00000000 00000000  

[<80cd5740>] (imx_gpc_init+0x5c/0x210) from [<80cd9e88>] (imx6q_init_irq+0x14/0)

[<80cd9e88>] (imx6q_init_irq+0x14/0x1c) from [<80cc9974>] (start_kernel+0x1e8/0)

[<80cc9974>] (start_kernel+0x1e8/0x328) from [<10008074>] (0x10008074)    
Code: e3057a34 e5943000 e34870d8 e3e02000 (e5832008)                      
---[ end trace 1b75b31a2719ed1d ]---                                      

Kernel panic - not syncing: Attempted to kill the idle task! 

What could be the reason for above error. How to resolve this.

0 Kudos

1,392 Views
srinivasaporam
Contributor II

Hi,

I have enabled KERNEL_LOW_LEVEL_DEBUGGING and EARLY_PRINTK in the kernel (kernel hacking options).

Now the earlyprintk messages are as below:

debug: [console=ttymxc0,115200 root=/dev/mmcblk2p1 earlyprintk] ...       
debug: [bootz 0x12000000 - 0x18000000] ...                                
Kernel image @ 0x12000000 [ 0x000000 - 0x59eda8 ]                         
## Flattened Device Tree blob at 18000000                                 
   Booting using the fdt blob at 0x18000000                               
   Using Device Tree in place at 18000000, end 1800b546                   
                                                                          
Starting kernel ...                                                       
                                                                          
Uncompressing Linux... done, booting the kernel.                          
Booting Linux on physical CPU 0x0                                         

Linux version 3.10.53-1.1.0_ga-wandboard-06048-g286b4ef (srinivas@srinivas-Lati5

CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d          
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache  

Machine: Freescale i.MX6 Quad/DualLite (Device Tree), model: Wandboard Quad basd

bootconsole [earlycon0] enabled                                           
cma: CMA: reserved 320 MiB at 1c000000                                    
Memory policy: ECC disabled, Data cache writealloc                        
------------[ cut here ]------------                                      

WARNING: at arch/arm/kernel/devtree.c:147 arm_dt_init_cpu_maps+0x184/0x228()   

DT /cpu 3 nodes greater than max cores 2, capping them                    
Modules linked in:                                                        

CPU: 0 PID: 0 Comm: swapper Not tainted 3.10.53-1.1.0_ga-wandboard-06048-g286b41

[<800149ac>] (unwind_backtrace+0x0/0x12c) from [<80012218>] (show_stack+0x10/0x)

[<80012218>] (show_stack+0x10/0x14) from [<8002dcd4>] (warn_slowpath_common+0x5)

[<8002dcd4>] (warn_slowpath_common+0x54/0x6c) from [<8002dd1c>] (warn_slowpath_)

[<8002dd1c>] (warn_slowpath_fmt+0x30/0x40) from [<80d06bf0>] (arm_dt_init_cpu_m)

[<80d06bf0>] (arm_dt_init_cpu_maps+0x184/0x228) from [<80d05ea4>] (setup_arch+0)

[<80d05ea4>] (setup_arch+0x650/0x6e4) from [<80d02804>] (start_kernel+0x78/0x32)

[<80d02804>] (start_kernel+0x78/0x328) from [<10008074>] (0x10008074)     
---[ end trace 1b75b31a2719ed1c ]---                                      
PERCPU: Embedded 8 pages/cpu @81248000 s8960 r8192 d15616 u32768          
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk2p1 earlyprintk
PID hash table entries: 2048 (order: 1, 8192 bytes)                       
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)           
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)            
Memory: 512MB = 512MB total                                               
Memory: 176732k/176732k available, 347556k reserved, 0K highmem           
Virtual kernel memory layout:                                             
vector  : 0xffff0000 - 0xffff1000   (   4 kB)                         
fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)                         
vmalloc : 0xa0800000 - 0xff000000   (1512 MB)                         
lowmem  : 0x80000000 - 0xa0000000   ( 512 MB)                         
pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)                         
modules : 0x7f000000 - 0x7fe00000   (  14 MB)                         
  .text : 0x80008000 - 0x80d01a68   (13287 kB)                        
  .init : 0x80d02000 - 0x80d4f300   ( 309 kB)                         
  .data : 0x80d50000 - 0x80dbdb80   ( 439 kB)                         
   .bss : 0x80dbdb80 - 0x80e37744   ( 487 kB)                         
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1                
Preemptible hierarchical RCU implementation.                              
NR_IRQS:16 nr_irqs:16 16                                                  
L310 cache controller enabled                                             

l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x32470000, Cache size: 1048576 B

After this it is not progressing... further . Please help how to proceed further. How to make my board to boot to 3.10.53

0 Kudos

1,392 Views
srinivasaporam
Contributor II

Yes,

After "Starting Kernel..." nothing is shown on the console (UART1/ttymxc0) and HDMI display also is not coming.

0 Kudos

1,392 Views
srinivasaporam
Contributor II

Hi,

Still this problem is there. Now also it is stcking at "starting Kernel". My doubt is aminly on dtb files iam using. Can anybody suggest some solution to this problem.

0 Kudos

1,392 Views
alejandrolozan1
NXP Employee
NXP Employee

Hi,

Just to double check, according to the  next comments:

"3. Now when we are trying for linux 3.10.53 reference board is booting fine and we could able  to use it. But when we are using 3.10.53 kernel, rootfs (ubuntu-core-14.04.02-armhf) and dtbs, then custom board booting is stucking at "Starting Kernel ...". "

you are not able to use 3.10.53 with ubuntu rootfs right? or is it just the uart console that is not shown?

/Alejandro

0 Kudos

1,392 Views
srinivasaporam
Contributor II

Hi,

Thanks for the reply. But this also not working.One more doubt is:

Console messages for the board which is booting are:

debug: [console=ttymxc0,115200 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait .

debug: [bootz 0x12000000 - 0x18000000] ...                                     

Kernel image @ 0x12000000 [ 0x000000 - 0x50f628 ]                              

## Flattened Device Tree blob at 18000000                                      

   Booting using the fdt blob at 0x18000000                                    

   Using Device Tree in place at 18000000, end 1800ec2b                        

                                                        

So, my query is as per your suggestion above

"make ARCH=arm CROSS_COMPILE=${CC} zImage  LOADADDR=0x10800000" ,

LOADADDR  will be 0x10800000 or 0x12000000. which one we should specify.

0 Kudos

1,392 Views
强王
Contributor IV

make ARCH=arm CROSS_COMPILE=${CC} zImage  LOADADDR=0x10800000

0 Kudos

1,392 Views
alejandrolozan1
NXP Employee
NXP Employee

Hi,

Feel free to share the dts.

/Alejandro

0 Kudos

1,392 Views
srinivasaporam
Contributor II

Hi alejandrolozano

Please find the attached dts files for your reference.

I would like demonstrate our problem more briefly:

1. We have got IMX6 Referenced board (Wandboard) and custom board designed based on reference board.

from reference board to custom board following are the the modifications:

- reference board (Wandboard) has quad processor (IMX6Q) where as custom board has imx6D (Dual)

- reference board has DDR3 2GB where as custom board has LPDDR2 512 MB. (We have modified u-boot. So custom board is also booting fine)

2. Now We have followed Robert Nelson's post to port Ubuntu to reference board and custom board. Both are working fine , booting and we could able to run some applications with out any problems in both the boards.

3. Now when we are trying for linux 3.10.53 reference board is booting fine and we could able  to use it. But when we are using 3.10.53 kernel, rootfs (ubuntu-core-14.04.02-armhf) and dtbs, then custom board booting is stucking at "Starting Kernel ...".

4. Please find the attached dts files and dtb file which we are using.

Please help us in resolving the issue

0 Kudos

1,392 Views
srinivasaporam
Contributor II

after deploying zImage and rootfs, dtbs andkernel modules, boarding stucking at loading the kernel. debug console messages are:

debug: [console=ttymxc0,115200 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait].

debug: [bootz 0x12000000 - 0x18000000] ...                                     

Kernel image @ 0x12000000 [ 0x000000 - 0x557728 ]                              

## Flattened Device Tree blob at 18000000                                      

   Booting using the fdt blob at 0x18000000                                    

   Using Device Tree in place at 18000000, end 1800ec8f                        

                                                                               

Starting kernel ...

after this it is not progressing any more. what could be the problem...

0 Kudos

1,392 Views
alejandrolozan1
NXP Employee
NXP Employee

Hi,

Please double check the dts contents and make sure that the correct UART module is configured.

/Alejandro

0 Kudos