AnsweredAssumed Answered

Kontron SMARC-sAMX6i meta-layer for Yocto

Question asked by Bjørnar Syverstad on Jan 17, 2014
Latest reply on Jan 17, 2014 by OtavioSalvador

Hello,

I am trying to make a layer for Kontron SMARC-sAMX6i module in Yocto:

http://us.kontron.com/products/computeronmodules/smarc/smarcsamx6i.html

 

Does there exist any meta-layer for Kontron SMARC-sAMX6i for Yocto?

 

The linux kernel is based on 3.0.35 + freescale patches + kontron patches.

This linux kernel is now in my own git repo.

Kontron delivers a precompiled u-boot.

 

I have created my own meta-samx6 layer:

meta-samx6

     conf

          machine

               samx6-quad.conf

          layer.conf

     recipes-kernel

          linux

               linux-samx6

                    defconfig

               linux-samx6-3.0.35.bb

 

Also changed sources/base/conf/bblayers.conf  /  build/conf/bblayers.conf

LCONF_VERSION = "6"

BBPATH = "${TOPDIR}"
BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}"

BBFILES ?= ""
BBLAYERS = " \
  ${BSPDIR}/sources/poky/meta \
  ${BSPDIR}/sources/poky/meta-yocto \
  \
  ${BSPDIR}/sources/meta-openembedded/meta-oe \
  \
  ${BSPDIR}/sources/meta-fsl-arm \
  ${BSPDIR}/sources/meta-fsl-arm-extra \
  ${BSPDIR}/sources/meta-fsl-demos \
  ${BSPDIR}/sources/meta-samx6 \
"
LCONF_VERSION = "6"


 

conf/layer.conf

# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"

# We have a packages directory, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
            ${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "samx6"
BBFILE_PATTERN_samx6 := "^${LAYERDIR}/"
BBFILE_PRIORITY_samx6 = "10"



 

conf/machine/samx6-quad.conf

#@TYPE: Machine
#@NAME: samx6i
#@SOC: i.MX6Q
#@DESCRIPTION: Machine configuration for i.MX6 samx6i

include conf/machine/include/imx-base.inc
include conf/machine/include/tune-cortexa9.inc

SOC_FAMILY = "mx6:mx6q:samx6"

PREFERRED_PROVIDER_virtual/kernel ?= "linux-samx6"

SERIAL_CONSOLE = "115200 ttymxc0"

UBOOT_MACHINE = "wandboard_quad_config"
KERNEL_DEVICETREE = "imx6q-wandboard.dtb"



 

recipes-kernel/linux/linux-samx6-3.0.35.bb

# Adapted from linux-imx.inc, copyright (C) 2012, 2013 O.S. Systems Software LTDA
# Released under the MIT license (see COPYING.MIT for the terms)

DESCRIPTION = "Linux kernel for Wandboard"
LICENSE = "GPLv2"

require recipes-kernel/linux/linux-imx.inc

# Put a local version until we have a true SRCREV to point to
LOCALVERSION ?= "+yocto"
SCMVERSION ?= "y"

# SRC_URI for samx6i kernel
SRC_URI = "git://git@fr.nxtech.no:linux-samx6-3.0.35 \
           file://defconfig \
"

# Wandboard branch - based on 4.0.0 from Freescale git
SRCREV = "48edb85b2f6686de832603b4568f7310f100894a"
LOCALVERSION = "-4.0.0-samx6"

COMPATIBLE_MACHINE = "(samx6)"



 

Setup of everything:

#!/bin/bash
repo init -u https://github.com/Freescale/fsl-community-bsp-platform -b dora
repo sync
git clone git@fr.nxtech.no:meta-samx6 sources/meta-samx6
cp yocto-samx6/bblayers.conf sources/base/conf/bblayers.conf
export MACHINE=samx6-quad
. ./setup-environment build
bitbake core-image-minimal

 

I want to disable building for u-boot, since Kontron delivers precompiled u-boot.

How does I do this? When not set UBOOT_MACHINE and KERNEL_DEVICETREE,

building of core-image-minimal fails!

 

The linux kernel is booting okey when build with ltib.

The linux kernel stop booting when building with Yocto.

Any see any error bellow?

 

Output for booting linux kernel with Yocto:

Booting from net ...
Using FEC device
TFTP from server 10.10.1.112; our IP address is 10.10.1.240
Filename 'uImage'.
Load address: 0x10800000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ##################################
done
Bytes transferred = 4165872 (3f90f0 hex)
## Booting kernel from Legacy Image at 10800000 ...
   Image Name:   Linux-3.0.68-smx6_03-4.0.0-samx6
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4165808 Bytes = 4 MiB
   Load Address: 10008000
   Entry Point:  10008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK
Using machid 0x10e9 from environment

Starting kernel ...

Linux version 3.0.68-smx6_03-4.0.0-samx6+g48edb85 (bjornar@pluto) (gcc version 4.8.1 (GCC) ) #1 SMP Fri Jan 17 09:17:26 CET 2014
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: Kontron ULP-COM-sAMX6 Board
Memory policy: ECC disabled, Data cache writealloc
CPU identified as i.MX6Q, silicon rev 1.2
PERCPU: Embedded 7 pages/cpu @8c006000 s5632 r8192 d14848 u32768
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 227328
Kernel command line: console=ttymxc0,115200 root=/dev/nfs ip=dhcp nfsroot=10.10.1.112:/home/bjornar/source/fsl-community-bsp/build/tmp/deploy/images/samx6-quad/rootfs,v3,tcp
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 640MB 256MB = 896MB total
Memory: 899900k/899900k available, 148676k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xf4600000 - 0xffe00000   ( 184 MB)
    vmalloc : 0xc0800000 - 0xf2000000   ( 792 MB)
    lowmem  : 0x80000000 - 0xc0000000   (1024 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .init : 0x80008000 - 0x80042000   ( 232 kB)
      .text : 0x80042000 - 0x807aca6c   (7595 kB)
      .data : 0x807ae000 - 0x8080da78   ( 383 kB)
       .bss : 0x8080da9c - 0x80845dbc   ( 225 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Hierarchical RCU implementation.
NR_IRQS:624
MXC GPIO hardware
sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms
arm_max_freq=1
MXC_Early serial console at MMIO 0x2020000 (options '115200')
bootconsole [ttymxc0] enabled
Console: colour dummy device 80x30
Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
CPU1: Booted secondary processor
CPU2: Booted secondary processor
CPU3: Booted secondary processor
Brought up 4 CPUs
SMP: Total of 4 processors activated (6324.22 BogoMIPS).
print_constraints: dummy:
NET: Registered protocol family 16
print_constraints: vddpu: 725 <--> 1300 mV at 1150 mV fast normal
print_constraints: vddcore: 725 <--> 1300 mV at 1150 mV fast normal
print_constraints: vddsoc: 725 <--> 1300 mV at 1200 mV fast normal
print_constraints: vdd2p5: 2000 <--> 2775 mV at 2400 mV fast normal
print_constraints: vdd1p1: 800 <--> 1400 mV at 1100 mV fast normal
print_constraints: vdd3p0: 2625 <--> 3400 mV at 3000 mV fast normal
Detected PCB layout version 1
Using configuration for iMX6q
hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
hw-breakpoint: 1 breakpoint(s) reserved for watchpoint single-step.
hw-breakpoint: maximum watchpoint size is 4 bytes.
L310 cache controller enabled
l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x02070000, Cache size: 1048576 B
bio: create slab <bio-0> at 0
print_constraints: vmmc_perm: 3300 mV
print_constraints: vmmc_sd3: 3300 mV
vgaarb: loaded
SCSI subsystem initialized
spi_imx imx6q-ecspi.1: probed
spi_imx imx6q-ecspi.3: probed
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Freescale USB OTG Driver loaded, $Revision: 1.55 $
mc_pfuze 5-0008: ID: 0,Full lay: 1 ,Metal lay: 1
mc_pfuze 5-0008: FAB: 0 ,FIN: 0
print_constraints: PFUZE100_SW1A: 300 <--> 1875 mV at 1300 mV
print_constraints: PFUZE100_SW1B: 300 <--> 1875 mV at 300 mV
print_constraints: PFUZE100_SW1C: 300 <--> 1875 mV at 1300 mV
i2c-gpio i2c-gpio.5: using pins 28 (SDA) and 30 (SCL)
i2c-gpio i2c-gpio.2: using pins 106 (SDA) and 6 (SCL)
i2c-gpio i2c-gpio.4: using pins 21 (SDA) and 19 (SCL)
imx-ipuv3 imx-ipuv3.0: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
imx-ipuv3 imx-ipuv3.1: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
Advanced Linux Sound Architecture Driver Version 1.0.24.
Switching to clocksource mxc_timer1
cfg80211: Calling CRDA to update world regulatory domain
Unable to handle kernel NULL pointer dereference at virtual address 00000001
pgd = 80004000
[00000001] *pgd=00000000
Internal error: Oops: 5 [#1] SMP
Modules linked in:
CPU: 3    Not tainted  (3.0.68-smx6_03-4.0.0-samx6+g48edb85 #1)
PC is at kmem_cache_alloc+0xa8/0x100
LR is at con_insert_unipair+0xb8/0x104
pc : [<800f9b48>]    lr : [<802ae1c4>]    psr: 60000093
sp : bc049ed8  ip : 807c3d58  fp : 00000000
r10: 00000001  r9 : 807c3d58  r8 : 00000060
r7 : 000000d0  r6 : bc048000  r5 : bc002300  r4 : 00000001
r3 : 80043660  r2 : 802ae1c4  r1 : 0bfde000  r0 : 20000013
Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c53c7d  Table: 1000404a  DAC: 00000015
Process swapper (pid: 1, stack limit = 0xbc0482f0)
Stack: (0xbc049ed8 to 0xbc04a000)
9ec0:                                                       80826fec 00002665
9ee0: bc39b0c0 00000003 bc2012e4 807e2c78 807e2c76 00000003 00000001 802ae1c4
9f00: 807e2ed0 00000000 00000001 bc39b0c0 00000003 802aedf4 80834640 807e2ed0
9f20: 80834818 bc004000 00000000 00000001 00000014 80834a3c 00000002 00000004
9f40: 00000000 80020c2c 00000000 80020154 00000000 80834918 00000001 80020644
9f60: 80707240 8014e784 80834438 00000000 80049308 00000013 8080daa0 8001fa98
9f80: 806cd550 00000013 80035c48 80035c48 800360b8 800425d0 800b6f64 80821b00
9fa0: 807bf080 bc048018 000001df 00000013 00000000 3734702c 00000039 00000000
9fc0: 00000270 80035c48 800360b8 80049308 00000013 00000000 00000000 00000000
9fe0: 00000000 80008a30 00000000 00000000 8000896c 80049308 40000010 00000000
[<800f9b48>] (kmem_cache_alloc+0xa8/0x100) from [<802ae1c4>] (con_insert_unipair+0xb8/0x104)
[<802ae1c4>] (con_insert_unipair+0xb8/0x104) from [<802aedf4>] (con_set_default_unimap+0xe4/0x16c)
[<802aedf4>] (con_set_default_unimap+0xe4/0x16c) from [<80020154>] (console_map_init+0x44/0x50)
[<80020154>] (console_map_init+0x44/0x50) from [<80020644>] (vty_init+0x188/0x19c)
[<80020644>] (vty_init+0x188/0x19c) from [<8001fa98>] (tty_init+0x12c/0x144)
[<8001fa98>] (tty_init+0x12c/0x144) from [<800425d0>] (do_one_initcall+0x11c/0x174)
[<800425d0>] (do_one_initcall+0x11c/0x174) from [<80008a30>] (kernel_init+0xc4/0x148)
[<80008a30>] (kernel_init+0xc4/0x148) from [<80049308>] (kernel_thread_exit+0x0/0x8)
Code: 1afffff3 e595b014 e2888001 e3a0a001 (e794b00b)
---[ end trace d81ada5ff3691890 ]---
Kernel panic - not syncing: Attempted to kill init!
[<8004fa18>] (unwind_backtrace+0x0/0x134) from [<805b2f90>] (panic+0x6c/0x188)
[<805b2f90>] (panic+0x6c/0x188) from [<8007fe9c>] (complete_and_exit+0x0/0x1c)
[<8007fe9c>] (complete_and_exit+0x0/0x1c) from [<bc049cb8>] (0xbc049cb8)
CPU0: stopping
[<8004fa18>] (unwind_backtrace+0x0/0x134) from [<80042338>] (do_IPI+0x144/0x164)
[<80042338>] (do_IPI+0x144/0x164) from [<800482f8>] (__irq_svc+0x38/0xc0)
Exception stack(0x807aff68 to 0x807affb0)
ff60:                   80820d80 20000093 00000005 00000000 807ae000 8080db44
ff80: 807c788c 805bcd0c 807ae000 807ae000 00000000 00000000 00000000 807affb0
ffa0: 80057c58 800493e8 80000013 ffffffff
[<800482f8>] (__irq_svc+0x38/0xc0) from [<800493e8>] (default_idle+0x24/0x28)
[<800493e8>] (default_idle+0x24/0x28) from [<80049544>] (cpu_idle+0xa0/0xe4)
[<80049544>] (cpu_idle+0xa0/0xe4) from [<80008960>] (start_kernel+0x2ec/0x2f8)
[<80008960>] (start_kernel+0x2ec/0x2f8) from [<10008040>] (0x10008040)
CPU2: stopping
[<8004fa18>] (unwind_backtrace+0x0/0x134) from [<80042338>] (do_IPI+0x144/0x164)
[<80042338>] (do_IPI+0x144/0x164) from [<800482f8>] (__irq_svc+0x38/0xc0)
Exception stack(0xbc071f88 to 0xbc071fd0)
1f80:                   80820d80 20000093 00000005 00000000 bc070000 8080db44
1fa0: 807c788c 805bcd0c bc070000 bc070000 00000000 00000000 00000000 bc071fd0
1fc0: 80057c58 800493e8 80000013 ffffffff
[<800482f8>] (__irq_svc+0x38/0xc0) from [<800493e8>] (default_idle+0x24/0x28)
[<800493e8>] (default_idle+0x24/0x28) from [<80049544>] (cpu_idle+0xa0/0xe4)
[<80049544>] (cpu_idle+0xa0/0xe4) from [<105af534>] (0x105af534)
CPU1: stopping
[<8004fa18>] (unwind_backtrace+0x0/0x134) from [<80042338>] (do_IPI+0x144/0x164)
[<80042338>] (do_IPI+0x144/0x164) from [<800482f8>] (__irq_svc+0x38/0xc0)
Exception stack(0xbc067f88 to 0xbc067fd0)
7f80:                   80820d80 20000093 00000005 00000000 bc066000 8080db44
7fa0: 807c788c 805bcd0c bc066000 bc066000 00000000 00000000 00000000 bc067fd0
7fc0: 80057c58 800493e8 80000013 ffffffff
[<800482f8>] (__irq_svc+0x38/0xc0) from [<800493e8>] (default_idle+0x24/0x28)
[<800493e8>] (default_idle+0x24/0x28) from [<80049544>] (cpu_idle+0xa0/0xe4)
[<80049544>] (cpu_idle+0xa0/0xe4) from [<105af534>] (0x105af534)



Outcomes