graugans / meta-udoo

:heartpulse: openembedded meta layer for the UDOO boards
MIT License
31 stars 18 forks source link

Add a kernel recipe for kernel 4.1 #18

Open graugans opened 7 years ago

graugans commented 7 years ago

Thanks to @fmntf there is a kernel 4.1 port available for udoo boards the branch is located in his kernel repo

modjo756 commented 7 years ago

Hi garugans, just to know if you have made some progress on this ? I saw on udoo github that they make some progress

graugans commented 7 years ago

Not startend so no progress ;) for quad there are even mainline patches available. But in this case etnaviv will be needed for opengl. I do not know if this works with QT5

cyrilfr commented 7 years ago

I moved forward to morty and I added the u-boot-fscl and the linux-imx (kernel v4.1.15) recipes from meta-freescale to my project. The kernel from @fmntf doesn't compile (the do_compile_kernelmodules() task fails). The linux-imx sources do compile for the UDOO NEO (I dropped the Quad) but I stay blocked at boot:

U-Boot SPL 2016.11+fslc+gc44711d (Jan 31 2017 - 09:26:33)
Setting 1024MB RAM calibration data
Trying to boot from MMC1
port 1

U-Boot 2016.11+fslc+gc44711d (Jan 31 2017 - 09:26:33 +0100)

CPU:   Freescale i.MX6SX rev1.2 at 792 MHz
Reset cause: POR
Board: UDOO Neo Full
I2C:   ready
DRAM:  1 GiB
PMIC:  PFUZE3000 DEV_ID=0x30 REV_ID=0x11
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   using phy at 0
FEC0 [PRIME]
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc0 is current device
701 bytes read in 411 ms (1000 Bytes/s)
Running bootscript from mmc ...
M4: disabled via environment variables.
Device Tree: /boot/imx6sx-udoo-neo-full-lvds7.dtb
4325088 bytes read in 906 ms (4.6 MiB/s)
Booting from mmc ...
46795 bytes read in 624 ms (72.3 KiB/s)
## Flattened Device Tree blob at 83000000
   Booting using the fdt blob at 0x83000000
   Using Device Tree in place at 83000000, end 8300e6ca

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.1.15-2.0.0+gb63f3f5 (gcc version 6.2.0 (GCC) ) #1 SMP PREEMPT Tue Jan 31 10:57:24 CET 2017
[    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=50c53c7d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine model: UDOO Neo Full
[    0.000000] Reserved memory: created CMA memory pool at 0xac000000, size 320 MiB
[    0.000000] Reserved memory: initialized node linux,cma, compatible id shared-dma-pool
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] PERCPU: Embedded 11 pages/cpu @ab728000 s16332 r8192 d20532 u45056
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260096
[    0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p1 rootwait rw rootfstype=ext4 uart_from_osc clk_ignore_unused cpuidle.off=1 consoleblank=0
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Memory: 704024K/1048576K available (4063K kernel code, 260K rwdata, 2044K rodata, 204K init, 389K bss, 16872K reserved, 327680K cma-reserved, 0K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xc0800000 - 0xff000000   (1000 MB)
[    0.000000]     lowmem  : 0x80000000 - 0xc0000000   (1024 MB)
[    0.000000]     pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
[    0.000000]     modules : 0x7f800000 - 0x7fe00000   (   6 MB)
[    0.000000]       .text : 0x80008000 - 0x805fef20   (6108 kB)
[    0.000000]       .init : 0x805ff000 - 0x80632000   ( 204 kB)
[    0.000000]       .data : 0x80632000 - 0x806732a0   ( 261 kB)
[    0.000000]        .bss : 0x80676000 - 0x806d76dc   ( 390 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000]  Additional per-CPU info printed with stalls.
[    0.000000]  RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=1.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] L2C-310 erratum 769419 enabled
[    0.000000] L2C-310 enabling early BRESP for Cortex-A9
[    0.000000] L2C-310 full line of zeros enabled for Cortex-A9
[    0.000000] L2C-310 ID prefetch enabled, offset 16 lines
[    0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled
[    0.000000] L2C-310 cache controller enabled, 16 ways, 256 kB
[    0.000000] L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76430001
[    0.000000] mxc_clocksource_init 3000000
[    0.000000] Switching to timer-based delay loop, resolution 333ns
[    0.000006] sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 715827882841ns
[    0.000025] clocksource mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 637086815595 ns
[    0.001553] Console: colour dummy device 80x30
[    0.001569] Calibrating delay loop (skipped), value calculated using timer frequency.. 6.00 BogoMIPS (lpj=30000)
[    0.001584] pid_max: default: 32768 minimum: 301
[    0.001689] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.001701] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.002257] Initializing cgroup subsys devices
[    0.002277] Initializing cgroup subsys freezer
[    0.002305] CPU: Testing write buffer coherency: ok
[    0.002516] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.002572] Setting up static identity map for 0x80008240 - 0x8000828c
[    0.040447] Brought up 1 CPUs
[    0.040461] SMP: Total of 1 processors activated (6.00 BogoMIPS).
[    0.040470] CPU: All CPU(s) started in SVC mode.
[    0.040903] devtmpfs: initialized
[    0.050461] device-tree: Duplicate name in lcdif@02224000, renamed to "display#1"
[    0.054046] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[    0.054415] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.070169] pinctrl core: initialized pinctrl subsystem
[    0.071373] NET: Registered protocol family 16
[    0.080271] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.107251] imx6sx-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver
[    0.109209] MU is ready for cross core communication!
[    0.117374] mxs-dma 1804000.dma-apbh: initialized
[    0.121496] SCSI subsystem initialized
[    0.122057] 2000000.aips-bus:usbphy_nop1 supply vcc not found, using dummy regulator
[    0.123254] i2c i2c-0: IMX I2C adapter registered
[    0.123273] i2c i2c-0: can't use DMA
[    0.124084] i2c i2c-1: IMX I2C adapter registered
[    0.124101] i2c i2c-1: can't use DMA
[    0.124807] i2c i2c-3: IMX I2C adapter registered
[    0.124825] i2c i2c-3: can't use DMA
[    0.124974] Linux video capture interface: v2.00
[    0.125033] pps_core: LinuxPPS API ver. 1 registered
[    0.125043] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.125077] PTP clock support registered
[    0.126538] Advanced Linux Sound Architecture Driver Initialized.
[    0.128226] Switched to clocksource mxc_timer1
[    0.139393] NET: Registered protocol family 2
[    0.140075] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.140160] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.140284] TCP: Hash tables configured (established 8192 bind 8192)
[    0.140361] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.140398] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.140594] NET: Registered protocol family 1
[    0.141198] imx rpmsg driver is registered.
[    0.142672] Bus freq driver module loaded
[    0.143673] futex hash table entries: 256 (order: 2, 16384 bytes)
[    0.150791] VFS: Disk quotas dquot_6.6.0
[    0.151002] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.156816] io scheduler noop registered
[    0.156837] io scheduler deadline registered
[    0.157046] io scheduler cfq registered (default)
[    0.157561] imx-weim 21b8000.weim: Driver registered.
[    0.158912] MIPI DSI driver module loaded
[    0.159137] MIPI DSI driver module loaded
[    0.161777] 2224000.lcdif supply lcd not found, using dummy regulator
[    0.266281] mxsfb 2224000.lcdif: registered mxc display driver ldb
[    0.270941] Console: switching to colour frame buffer device 100x30
[    0.284120] mxsfb 2224000.lcdif: initialized
[    0.287256] imx-sdma 20ec000.sdma: no iram assigned, using external mem
[    0.289124] imx-sdma 20ec000.sdma: no event needs to be remapped
[    0.290099] imx-sdma 20ec000.sdma: loaded firmware 3.3
[    0.293236] imx-sdma 20ec000.sdma: initialized
[    0.294952] pfuze100-regulator 0-0008: Full layer: 1, Metal layer: 1
[    0.295526] pfuze100-regulator 0-0008: FAB: 0, FIN: 0
[    0.295539] pfuze100-regulator 0-0008: pfuze3000 found.
[    0.308747] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 22, base_baud = 1500000) is a IMX
[    0.958243] console [ttymxc0] enabled
[    0.962850] 21ec000.serial: ttymxc2 at MMIO 0x21ec000 (irq = 285, base_baud = 1500000) is a IMX
[    0.974204] imx sema4 driver is registered.
[    0.978520] [drm] Initialized drm 1.1.0 20060810
[    0.983651] [drm] Initialized vivante 1.0.0 20120216 on minor 0
[    0.995362] loop: module loaded
[    0.999801] input: fxos8700 as /devices/soc0/soc/2100000.aips-bus/21f8000.i2c/i2c-3/3-001e/input/input0
[    1.011369] fxos8700 device driver probe successfully
[    1.017347] input: fxas2100x as /devices/soc0/soc/2100000.aips-bus/21f8000.i2c/i2c-3/3-0020/input/input1
[    1.027508] fxas2100x 3-0020: fxas2100x device driver probe successfully
[    1.038376] 2188000.ethernet supply phy not found, using dummy regulator
[    1.058704] pps pps0: new PPS source ptp0
[    1.070645] libphy: fec_enet_mii_bus: probed
[    1.075730] fec 2188000.ethernet eth0: registered PHC device 0
[    1.082224] mousedev: PS/2 mouse device common for all mice
[    1.088933] input: 20cc000.snvs:snvs-powerkey as /devices/soc0/soc/2000000.aips-bus/20cc000.snvs/20cc000.snvs:snvs-powerkey/input/input2
[    1.102577] input: st1232-touchscreen as /devices/soc0/soc/2100000.aips-bus/21a0000.i2c/i2c-0/0-0055/input/input3
[    1.113789] read mpl3115 chip id 0xfffffffb
[    1.117992] mpl3115 1-0060: read chip ID 0x1 is not equal to 0xc4!
[    1.124219] mpl3115: probe of 1-0060 failed with error -22
[    1.130795] snvs_rtc 20cc000.snvs:snvs-rtc-lp: rtc core: registered 20cc000.snvs:snvs-r as rtc0
[    1.139724] i2c /dev entries driver
[    1.144890] pxp-v4l2 pxp_v4l2_out: initialized
[    1.151208] imx2-wdt 20bc000.wdog: timeout 60 sec (nowayout=0)
[    1.157612] sdhci: Secure Digital Host Controller Interface driver
[    1.163849] sdhci: Copyright(c) Pierre Ossman
[    1.168245] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.175161] /soc/aips-bus@02100000/usdhc@02194000: voltage-ranges unspecified
[    1.182378] sdhci-esdhc-imx 2194000.usdhc: Got CD GPIO
[    1.188727] sdhci-esdhc-imx 2194000.usdhc: No vqmmc regulator found
[    1.239445] mmc0: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA
[    1.254322] /soc/aips-bus@02100000/usdhc@02198000: voltage-ranges unspecified
[    1.264570] sdhci-esdhc-imx 2198000.usdhc: could not get ultra high speed state, work on normal mode
[    1.281372] sdhci-esdhc-imx 2198000.usdhc: No vqmmc regulator found
[    1.408251] mmc2: SDHCI controller on 2198000.usdhc [2198000.usdhc] using ADMA
[    1.422345] mmc0: error -110 whilst initialising SD card
[    1.431342] caam 2100000.caam: Entropy delay = 3200
[    1.557778] caam 2100000.caam: Entropy delay = 3600
[    1.701500] caam 2100000.caam: Entropy delay = 4000
[    1.763960] sdhci-esdhc-imx 2198000.usdhc: card claims to support voltages below defined range
[    1.784371] caam 2100000.caam: Instantiated RNG4 SH0
[    1.810543] mmc2: queuing unknown CIS tuple 0x91 (3 bytes)
[    1.829407] mmc2: new high speed SDIO card at address 0001
[    1.860289] caam 2100000.caam: Instantiated RNG4 SH1
[    1.865272] caam 2100000.caam: device ID = 0x0a16010000000200 (Era -524)
[    1.872004] caam 2100000.caam: job rings = 2, qi = 0
[    1.944474] caam algorithms registered in /proc/crypto
[    1.953768] caam_jr 2101000.jr0: registering rng-caam
[    1.959186] snvs-secvio 20cc000.caam-snvs: can't identify tamper alarm configuration
[    1.966954] snvs-secvio: probe of 20cc000.caam-snvs failed with error -22
[    1.977433] fsl-asrc 2034000.asrc: driver registered
[    1.985422] nf_conntrack version 0.5.0 (16120 buckets, 64480 max)
[    1.992289] NET: Registered protocol family 17
[    1.996801] Key type dns_resolver registered
[    2.002020] cpu cpu0: dev_pm_opp_get_opp_count: device OPP not found (-19)
[    2.028250] failed to register cpuidle driver
[    2.032627] ThumbEE CPU extension supported.
[    2.039750] snvs_rtc 20cc000.snvs:snvs-rtc-lp: setting system clock to 1970-01-01 00:00:00 UTC (0)
[    2.059864] VLDO2: disabling
[    2.063224] wlan-en-regulator: disabling
[    2.067155] vref-3v3: disabling
[    2.070333] PSU-5V0: disabling
[    2.073393] usb_otg2_vbus: disabling
[    2.076971] usb_otg1_vbus: disabling
[    2.080787] vddpcie-phy: disabling
[    2.084250] clk: Not disabling unused clocks
[    2.088747] ALSA device list:
[    2.091726]   No soundcards found.
[    2.095374] Waiting for root device /dev/mmcblk0p1...

I use the DTS and the defconfig file from the repository of @fmntf.

U-Boot printenv:

=> printenv
baudrate=115200
boot_fdt=try
bootcmd=mmc dev ${mmcdev}; if mmc rescan; then if run loadbootscript; then run bootscript; fi; udooinit; if run loadimage; then run mmcboot; else run netboot; fi; else run netboot; fi
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=3
bootscript=echo Running bootscript from mmc ...; env import -t ${loadaddr} ${filesize};
console=ttymxc0
ethact=FEC0
ethaddr=00:c0:08:8c:89:7c
ethprime=FEC0
fdt_addr=0x83000000
fdt_file=autodetect
fdt_high=0xffffffff
image=/boot/zImage
initrd_addr=0x83800000
initrd_high=0xffffffff
ip_dyn=yes
loadaddr=0x82000000
loadbootscript=ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};
loadfdt=ext2load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
loadimage=ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
m4mmcargs=uart_from_osc clk_ignore_unused cpuidle.off=1
mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" 
mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot} rootfstype=${mmcrootfstype} ${m4mmcargs} consoleblank=0
mmcautodetect=no
mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
mmcdev=0
mmcpart=1
mmcroot=/dev/mmcblk0p1 rootwait rw
mmcrootfstype=ext4
netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp
netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
script=/boot/uEnv.txt
stderr=serial
stdin=serial
stdout=serial

Any idea? Seems like the MMC sdcard isn't recognised :/

I directly wrote the image to my scdard using:

bzcat tmp/deploy/images/udooneo/udoo-image-qt5-udooneo.wic.bz2 | sudo dd of=/dev/sde bs=16M

I didn't have to use the wic tool (???).

fmntf commented 7 years ago

That issue if fixed on my kernel: https://github.com/fmntf/linux_kernel/commit/0dffbfaa5b5877ec32bd31c709eefe1e8c713358

cyrilfr commented 7 years ago

Thanks @fmntf but I already use your DTS and defonconfig files. Freescale kernel doesn't have a proper support for the UDOO NEO.

Maybe you could fix the issue with kernel modules in your kernel source ? https://github.com/UDOOboard/linux_kernel/issues/23#issuecomment-276307145

Here is my layer : https://github.com/cyrilfr/meta-udoo Files used to compile : https://github.com/cyrilfr/meta-udoo/tree/morty/recipes-kernel/linux/linux-imx/udooneo

graugans commented 7 years ago

@cyrilfr For the morty branch the manual call to the wic tool is not needed anymore. It looks like an issue with the initialization of the mmc. From your kernel log the mmc seems not be proper initialized:

[    1.408251] mmc2: SDHCI controller on 2198000.usdhc [2198000.usdhc] using ADMA
[    1.422345] mmc0: error -110 whilst initialising SD card

The Mapping is done imx6sx-udoo-neo.dtsi#L19

U-Boot sets the root path to

mmcroot=/dev/mmcblk0p1 rootwait rw
cyrilfr commented 7 years ago

@graugans Yes you're right and as you can see U-Boot loads the right DTB file so it should theoretically map the mmc0 as it includes the mentioned DTSI file. I've never been able to compile the sources from the fork https://github.com/fmntf/linux_kernel/tree/4.1.15_1.x-udoo . I wonder if this one is able to boot. If yes, with which version of U-Boot?

fmntf commented 7 years ago

Tomorrow I will try to rebuild it. I also have a newever kernel (4.1.15_2.0.0) on another computer, but I have forgotten to push it to GitHub. Probably newer compilers broke something. On Ubuntu 16.04 with the default cross-compiler it worked fine.

I used U-boot 2015 and 2016. They both worked fine.

cyrilfr commented 7 years ago

I tried with u-boot-fslc from this recipe of meta-freescale. I also compiled the kernel with linux-imx also from meta-freescale layer. There is u-boot-imx and u-boot-fslc, linux-imx and linux-fslc recipes actually. I'll have a look on what are the differences. This is probably more clever to use u-boot-imx with linux-imx or your fork if it comes from linux-imx.

graugans commented 7 years ago

@cyrilfr It should not really depend on the U-Boot. The kernel is orchestrated by the device-tree, the only influence U-Boot does have in this case is the bootargs the difference between linux-imx and linux-fslc is the c what stands for community. The linux-fslc is maintained by the community and hosted at github. The linux-imx is the official kernel source hosted at Freescale/NXP. I would go with the linux-fslc sources. Because there maybe the chance we can integrate the Neo stuff.

cyrilfr commented 7 years ago

Yes so I edited my recipe to use linux-fslc instead. The kernel compiles but I have an error while compiling the kernel-module-imx-gpu-viv_5.0.11 module.

kernel-module-imx-gpu-viv/5.0.11.p8.6+fslc+gitAUTOINC+1be63fb14e-r0/git/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c:81:31: fatal error: linux/busfreq-imx.h: No such file or directory
|  #include <linux/busfreq-imx.h>
|                                ^
| compilation terminated.
fmntf commented 7 years ago

Please try to build this branch: https://github.com/fmntf/linux_kernel/tree/4.1.15_2.x-udoo It contains fixes for GCC 6

make mrproper
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make udoo_neo_defconfig
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make imx6sx-udoo-neo-{basic,basicks,extended,full}{-hdmi,-lvds7,-lvds15,}{-m4,}.dtb zImage modules firmware -j8
cyrilfr commented 7 years ago

It doesn't compile that way as the default udoo_neo_defconfig file enable ttyMCC which is not supported anymore. Otherwise, it compiles. There is probably an issue with the recipe or the OpenEmbedded environment. I'll have a look on this.

fmntf commented 7 years ago

Sorry, in the directory where I have built 4.1.15-2.0.0 I had some uncommitted changes (an initial draft of ttyMCC on 4.1). Btw, if you disable ttyMCC from defconfig you should be able to build a fully working kernel. SD card should work too.

cyrilfr commented 7 years ago

Well, it does compile directly with make, compiling with BitBake (in OpenEmbedded) still doesn't work for me. Here is the most important part of the logs :

cat: drivers/net/wireless/ti/wlcore/release_version.h: No such file or directory
| /poky/build-neo-morty/tmp/work-shared/udooneo/kernel-source/drivers/net/wireless/ti/wlcore/Makefile:38: recipe for target 'drivers/net/wireless/ti/wlcore/version.h' failed
| make[7]: *** [drivers/net/wireless/ti/wlcore/version.h] Error 1
| /poky/build-neo-morty/tmp/work-shared/udooneo/kernel-source/scripts/Makefile.build:403: recipe for target 'drivers/net/wireless/ti/wlcore' failed
| make[6]: *** [drivers/net/wireless/ti/wlcore] Error 2
| make[6]: *** Waiting for unfinished jobs....

But surprisingly (or not), the file drivers/net/wireless/ti/wlcore/release_version.h DOES exist. I'll have to figure out why the cat command in the Makefile doesn't find it :/

graugans commented 7 years ago

@cyrilfr This maybe caused by an issue with out of source builds. You can try to set B=${S} in your bbappend file. This may break the building of the vivante driver afterwards.

I mostly debug stuff like this with

bitbake virtual/kernel -cdevshell
cyrilfr commented 7 years ago

@graugans That was the issue! Unfortunately, it still doesn't boot correctly. The symptom is still a wait on root device /dev/mmcblk0p1. Maybe an error in the WIC script?

graugans commented 7 years ago

No, wic is just for creating the image. I guess the issue is kernel related. I'll check on Friday or Saturday.

JochenLoeser commented 7 years ago

I have the same problem. I don't have a real solution but after verifing, that the sd card has power I looked through the kernel source code. Apparently the sd card driver does not work with my sd card. I've got a https://www.google.com/search?q=sandisk+ultra+32gb+sdhc+micro+sd (at least the picture is the same) I took the identical image with a 'normal' non SDHC card and it worked!

I tracked the -110 error to the function "mmc_sd_get_cid". Sidenote: The card works with 4.10 mainline and the 3.14 from udoo.

I hope this helps the smarter more experienced people to find a solution. If I can provide any further help or anything feel free to contact me.

modjo756 commented 7 years ago

Hi all, this week i had a formation on yocto and linux embedded with phytec in France. During the training we use there mira3 board (imx6 quad like udoo quad and seco sbc a62). Phytec are on linux mainline for linux-kernel (very interesting for maintaining and update !). Perhaps we could have a look on their repository to check if we can adapt something to our card ...) . Otherwise they use barebox for boot loader. Actually i'm trying to make a meta for the openZwave library, i let you know on udoo forum ...

JochenLoeser commented 7 years ago

I think I found a(the?) solution: no-1-8-v; is missing. See: https://github.com/UDOOboard/linux_kernel/blob/3.14-1.0.x-udoo/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi#L529 As far as I understand the Device Tree (and please correct me if I'm wrong - I want to learn something): The sdcard interface (usdhc2) is supplied by regulator vcc_sd2. This is a fixed regulator (the min/max values states this too). This means the kernel will never be able to apply 1.8V.

On the other hand shouldn't the kernel be able to figure this out?

graugans commented 7 years ago

@JochenLoeser Have you checked the schematics how the 1.8v is generated? I have so much i.mx6 boards floating arround not sure how this is done in UDOO at the moment. The frequency and voltages is still a mysterium in device tree for me as-well. I guess the handling of regulator have changed in 4.x kernels.

JochenLoeser commented 7 years ago

My first thought (before I even found this issue) was that the inversion of the chip-detect pin ( https://github.com/fmntf/linux_kernel/commit/0dffbfaa5b5877ec32bd31c709eefe1e8c713358#diff-c63642f2e8268f6942b422d66eeda0e0L356 ) was a mistake. So I measured the supply voltage at the sdcard connector: 3.3V

I have to double check with the real board but according to the schematics the sdcard VDD is the same net as the Arduino power supply on the pinheaders. This should be fixed at 3.3V. It would be weird, if the sdcard can say at which voltage the Arduino is running.

But as I said I will double check tomorrow.

fmntf commented 7 years ago

Hi guys. no-1-8-v; was removed by mistake. I will bring it back, thank you for noticing! (Pull requests are welcome) The SD card runs at 3.3V only. You can verify it on the Neo revD schematics on page 8. NVCC_3V0 and VCC_SW are fixed and cannot be changed.

The card detect pin logic was probably not checked on Linux 3.14, where it was wrongly declared as GPIO_ACTIVE_HIGH instead of GPIO_ACTIVE_LOW and everything worked. On 4.1, instead, the SD was not detected until that fix. That fix should be fixed on 3.14 too, but since everything works there...

modjo756 commented 7 years ago

Hi all, i saw they have some progress on kernel 4.1 ... good news ! Graugans, do you plan to integrate this kernel on morty branch ?

fmntf commented 7 years ago

Remember there is no M4 communication support on this kernel. I don't even know if M4 can boot at all, I did not verify the shared memory pools.

modjo756 commented 7 years ago

thanks for this precision @fmntf , could you explain (rapidly) why this works on 3.14 and not in 4.1 please ? where is your driver that enable this on 3.14 ?

cyrilfr commented 7 years ago

@fmntf for people like me who don't use the M4, moving forward to 4.1 and beyond worth it.

fmntf commented 7 years ago

Yeah, I know. But since it is not complete, we cannot move it on the official UDOO repo. If you are interested there is an Ubuntu 16.04 image with this kernel and most of the standard UDOO stuff (GPU acceleration on Xorg and QT, ...) here. Regarding the missing M4 stuff: NXP deprecated the MCC stuff just after 3.14, they use rpmsg now. We need to bind Arduino calls to rpmsg instead of mcc. However I have no skills on that, and the guys able to do that on our team are really busy. There is no eta. I have also tried to port MCC to 4.1 as a workarout, but I do not wanna go to the hell :D

modjo756 commented 7 years ago

@cyrilfr a question, to compile the kernel 4.1.15, do you apply the same patch that in kernel 3.14 (in yocto) ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch ...

cyrilfr commented 7 years ago

@modjo756 No, I used the linux-imx recipe from meta-freescale : https://github.com/cyrilfr/meta-udoo/tree/morty/recipes-kernel/linux

modjo756 commented 7 years ago

Ok thanks, if i understand, you didn't use Francesco implementation of kernel ?

cyrilfr commented 7 years ago

No I didn't.

modjo756 commented 7 years ago

Ok i just build a yocto image with @graugans layer (morty branch) and kernel 4.1.15 from @fmntf . It compile but it's needed to remove ttyMCC module and i needed to add this patch :

diff --git a/drivers/input/misc/fxas2100x.c b/drivers/input/misc/fxas2100x.c
index 3984dbb..bec0bd2 100644
--- a/drivers/input/misc/fxas2100x.c
+++ b/drivers/input/misc/fxas2100x.c
@@ -457,13 +457,13 @@ static ssize_t fxas2100x_data_show(struct device *dev,
 }

-static DEVICE_ATTR(enable, 0666, fxas2100x_enable_show, fxas2100x_enable_store);
+static DEVICE_ATTR(enable, 0660, fxas2100x_enable_show, fxas2100x_enable_store);

-static DEVICE_ATTR(poll_delay, 0666,fxas2100x_poll_delay_show, fxas2100x_poll_delay_store);
+static DEVICE_ATTR(poll_delay, 0660,fxas2100x_poll_delay_show, fxas2100x_poll_delay_store);

-static DEVICE_ATTR(position, 0666,fxas2100x_position_show, fxas2100x_position_store);
+static DEVICE_ATTR(position, 0660,fxas2100x_position_show, fxas2100x_position_store);

-static DEVICE_ATTR(data, 0666,fxas2100x_data_show, NULL);
+static DEVICE_ATTR(data, 0660,fxas2100x_data_show, NULL);

 static struct attribute *fxas2100x_attributes[] = {
diff --git a/drivers/input/misc/fxos8700.c b/drivers/input/misc/fxos8700.c
index 3394937..d63c440 100644
--- a/drivers/input/misc/fxos8700.c
+++ b/drivers/input/misc/fxos8700.c
@@ -592,13 +592,13 @@ static ssize_t fxos8700_data_show(struct device *dev,
    return sprintf(buf, "%d,%d,%d\n",data.x,data.y,data.z);
 }

-static DEVICE_ATTR(enable, 0666,fxos8700_enable_show, fxos8700_enable_store);
+static DEVICE_ATTR(enable, 0660,fxos8700_enable_show, fxos8700_enable_store);

-static DEVICE_ATTR(poll_delay,0666,fxos8700_poll_delay_show, fxos8700_poll_delay_store);
+static DEVICE_ATTR(poll_delay,0660,fxos8700_poll_delay_show, fxos8700_poll_delay_store);

-static DEVICE_ATTR(position, 0666,fxos8700_position_show, fxos8700_position_store);
+static DEVICE_ATTR(position, 0660,fxos8700_position_show, fxos8700_position_store);

-static DEVICE_ATTR(data, 0666,fxos8700_data_show, NULL);
+static DEVICE_ATTR(data, 0660,fxos8700_data_show, NULL);

 /*acc only sysfs interface*/
@@ -625,7 +625,7 @@ static ssize_t fxos8700_motion_detect_store(struct device *dev,
    return count;
 }

-static DEVICE_ATTR(motion_detect, 0666,fxos8700_motion_detect_show, fxos8700_motion_detect_store);
+static DEVICE_ATTR(motion_detect, 0660,fxos8700_motion_detect_show, fxos8700_motion_detect_store);

 static struct attribute *fxos8700_acc_attributes[] = {
    &dev_attr_enable.attr,`

to remove error during the build

include/linux/bug.h:33:45: error: negative width in bit-field ‘<anonymous>’
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))`

Now the card boot fine :

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.1.15_2.0.x-udoo+g7773e46 (mls@KDE-Z400) (gcc version 6.2.0 (GCC) ) #1 SMP PREEMPT Thu Apr 20 10:58:07 CEST 2017
[    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine model: UDOO Neo Full`

but have issues with CAN Bus (like kernel 3.14.56 ...)

cyrilfr commented 7 years ago

How did you manage to put the uEnv.txt file on the SD card?

modjo756 commented 7 years ago

I use @graugans layers (Morty) didn't make modifs for this point

cyrilfr commented 7 years ago

So this doesn't work with LVDS screen?

modjo756 commented 7 years ago

I didn't test lvds screen for the moment (i use HDMI) ...

graugans commented 7 years ago

@modjo756 thx for sharing the changes. I try to add this soon to the repo.

cyrilfr commented 7 years ago

@graugans, @modjo756 did you manage to use an LVDS screen with the meta-freescale u-boot recipe?

modjo756 commented 7 years ago

@cyrilfr , if you talk about the u-boot used in graugans layers, yes i use lvds screen with all the card fine (neo, quad and sa62) --> krogoth Branch and kernel 3.14.56 ....

cyrilfr commented 7 years ago

How does it load the uEnv.txt file in the "boot/" directory? In my case it doesn't.

modjo756 commented 7 years ago

Yes the uEnv file is in the boot/ folder

modjo756 commented 7 years ago

@cyrilfr you are right about the problem to load uEnv.txt (LVDS output) i have the same issue, this is due that at boot stage (u-boot) the file system is not recognise ! see under :

U-Boot SPL 2016.11+fslc+gc44711d (Apr 30 2017 - 22:36:41)
Trying to boot from MMC1

U-Boot 2016.11+fslc+gc44711d (Apr 30 2017 - 22:36:41 +0200)

CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Board: UDOO Quad
DRAM:  1 GiB
MMC:   FSL_SDHC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   using phy at 6
FEC [PRIME]
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc0 is current device
** Unrecognized filesystem type **
Device Tree: /boot/imx6q-udoo-lvds15.dtb
4534496 bytes read in 491 ms (8.8 MiB/s)
Booting from mmc ...
44202 bytes read in 216 ms (199.2 KiB/s)
## Flattened Device Tree blob at 18000000
   Booting using the fdt blob at 0x18000000
   Using Device Tree in place at 18000000, end 1800dca9

Starting kernel ...

we can see : Unrecognized filesystem type ...

Perhaps a problem with wic, @graugans if you can look at this (for information i have the lvds output selected because i modify the default selection in udooinit function)

Otherwise, @fmntf i can boot with kernel 4.1.15 on udoo quad, with eth working fine, arduino ... Qt 5.8 and morty branch !

root@udooqdl:~# uname -a
Linux udooqdl 4.1.15_2.0.x-udoo+g7773e46 #1 SMP PREEMPT Sun Apr 30 23:31:26 CEST 2017 armv7l armv7l armv7l GNU/Linux
cyrilfr commented 7 years ago

No there is no issue with the filesystem. If you copy the uEnvt.txt file in the boot/ directory manually, it will work. We just need to put this file at the right location inside the bbappend file. If you look at your u-boot-fsl.bbappend file, nothing put the uEnv.txt file in boot/.

modjo756 commented 7 years ago

yes but i have an uEnv.txt in /boot --> see uenv_0.1.bb in recipes-udoo/environment and there is the same file in /recipes-bsp/u-boot/u-boot-fslc/udooqdl(or udooneo) ?!

cyrilfr commented 7 years ago

OK but why using an external recipe instead of using the u-boot bbappend file ?

modjo756 commented 7 years ago

I don't know, only @graugans can answer on this point ! Otherwise, wifi also work on kernel 4.1.15 with udoo quad, all seems ok ! I will make a test on secoA62 this week and let you know.

graugans commented 7 years ago

@cyrilfr I tried this approach but as far as I remember this caused an issue because u-boot is not intended to be installed on the image. When I got rid of the /boot partition and read the uEnv.txt file directly from the rootfs either a major rewrite of the bbappend or a new recipe was needed. I decided to write a new recipe. Skipping the /boot partition makes things more reliable in my eyes because I do not trust the FAT filesystem.

graugans commented 7 years ago

@modjo756 and @cyrilfr It looks like both of you have recipes for kernel 4.1 at least on your local machine. It would be very nice to see some Patches or even Pull-Request. If needed I add an separate branch so we can try to fix things up. I am very short in time but would be fun to get 4.1 kernel up and running.