Content
- Linux: Upload the original YOCTO source code to github
- Linux: How to add support for OpenRex (Or your custom board)
- Linux: Compile
- Linux: Useful stuff
- Linux: Try the compiled Kernel
- Linux: Upload changes to github
See also
Important: Before you start, be sure you go through the previous chapter: YOCTO uBoot: How to add support for a custom board (or OpenRex)
Linux: Upload the original YOCTO source code to github
Be sure you start with empty meta-openrex (no patches inside). Run this to get clean starting source code. Run this:cd ~/fsl-community-bsp/ //run this command in case bitbake is not found, otherwise you don't have to run it source setup-environment build //run this command in case bitbake is not found, otherwise you don't have to run it cd ~/fsl-community-bsp/build/ bitbake -c clean linux-fslc-imx bitbake -c compile -f linux-fslc-imx bitbake core-image-minimalWe need to do a small correction for github. Delete the old .git:
cd ~/fsl-community-bsp/build/tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-fslc-imx/3.14-1.1.x+gitAUTOINC+327d5c9063-r0/git/ rm -rf .gitand edit .gitignore
nano .gitignoreGo on the end of the file and add following line (a folder .pc/ is added during applying patches and we dont want to have it in github):
/.pc/*We need to upload the original YOCTO Kernel source code to github. Create a new repository and put it there.
cd ~/fsl-community-bsp/build/tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-fslc-imx/3.14-1.1.x+gitAUTOINC+327d5c9063-r0/git/ git init git add . git commit -m 'Initial version' git remote add origin https://github.com/FEDEVEL/openrex-linux-3.14.git git push -u origin masterI normally also create a branch:
git branch jethro git push origin jethroChange to the branch 'jethro':
git checkout jethro
Linux: How to add support for OpenRex (Or your custom board)
Very often, there are differences between software versions. Therefore, there are no general instruction how to add custom support into the software. You may need to figure out by yourself what everything has to be changed and added to support a new board. One of the ways how to do it, is to search for files with your reference board name. For example, in our case we look for "sabresd".cd ~/fsl-community-bsp/build/tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-fslc-imx/3.14-1.1.x+gitAUTOINC+327d5c9063-r0/git/ grep -r "sabresd"Here are the results:
fedevel@ubuntu:~/fsl-community-bsp/build/tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-fslc-imx/3.14-1.1.x+gitAUTOINC+327d5c9063-r0/git$ grep -r "sabresd" drivers/power/sabresd_battery.c: * sabresd_battery.c - Maxim 8903 USB/Adapter Charger Driver drivers/power/sabresd_battery.c:#include <linux/power/sabresd_battery.h> drivers/power/sabresd_battery.c:MODULE_ALIAS("sabresd_battery"); drivers/power/Kconfig: sabresd board.The driver supports controlling charger and battery drivers/power/Makefile:obj-$(CONFIG_SABRESD_MAX8903) += sabresd_battery.o Binary file .git/index matches Documentation/devicetree/bindings/sound/imx-audio-wm8962.txt: compatible = "fsl,imx6q-sabresd-wm8962", Documentation/devicetree/bindings/sound/imx-audio-cs42888.txt: compatible = "fsl,imx6q-sabresd-wm8962", Documentation/devicetree/bindings/arm/fsl.txt: - compatible = "fsl,imx6q-sabresd", "fsl,imx6q"; include/linux/power/sabresd_battery.h: * sabresd_battery.h - Maxim 8903 USB/Adapter Charger Driver arch/arm/boot/dts/imx6dl-sabresd.dts:#include "imx6qdl-sabresd.dtsi" arch/arm/boot/dts/imx6dl-sabresd.dts: compatible = "fsl,imx6dl-sabresd", "fsl,imx6dl"; arch/arm/boot/dts/imx6q-sabresd-hdcp.dts:#include "imx6q-sabresd.dts" arch/arm/boot/dts/imx6dl-sabresd-btwifi.dts:#include "imx6dl-sabresd.dts" arch/arm/boot/dts/imx6dl-sabresd-btwifi.dts:#include "imx6qdl-sabresd-btwifi.dtsi" arch/arm/boot/dts/imx6qp-sabresd-hdcp.dts:#include "imx6qp-sabresd.dts" arch/arm/boot/dts/imx6qp-sabresd-btwifi.dts:#include "imx6qp-sabresd.dts" arch/arm/boot/dts/imx6qp-sabresd-btwifi.dts:#include "imx6qdl-sabresd-btwifi.dtsi" arch/arm/boot/dts/imx6dl-sabresd-hdcp.dts:#include "imx6dl-sabresd.dts" arch/arm/boot/dts/Makefile: imx6dl-sabresd.dtb \ arch/arm/boot/dts/Makefile: imx6dl-sabresd-btwifi.dtb \ arch/arm/boot/dts/Makefile: imx6dl-sabresd-enetirq.dtb \ arch/arm/boot/dts/Makefile: imx6dl-sabresd-ldo.dtb \ arch/arm/boot/dts/Makefile: imx6dl-sabresd-pf200.dtb \ arch/arm/boot/dts/Makefile: imx6dl-sabresd-hdcp.dtb \ arch/arm/boot/dts/Makefile: imx6qp-sabresd.dtb \ arch/arm/boot/dts/Makefile: imx6qp-sabresd-btwifi.dtb \ arch/arm/boot/dts/Makefile: imx6qp-sabresd-ldo.dtb \ arch/arm/boot/dts/Makefile: imx6qp-sabresd-hdcp.dtb \ arch/arm/boot/dts/Makefile: imx6q-sabresd.dtb \ arch/arm/boot/dts/Makefile: imx6q-sabresd-btwifi.dtb \ arch/arm/boot/dts/Makefile: imx6q-sabresd-enetirq.dtb \ arch/arm/boot/dts/Makefile: imx6q-sabresd-ldo.dtb \ arch/arm/boot/dts/Makefile: imx6q-sabresd-hdcp.dtb \ arch/arm/boot/dts/imx6qp-sabresd-ldo.dts:#include "imx6qp-sabresd.dts" arch/arm/boot/dts/imx6dl-sabresd-ldo.dts:#include "imx6dl-sabresd.dts" arch/arm/boot/dts/imx6dl-sabresd-enetirq.dts:#include "imx6dl-sabresd.dts" arch/arm/boot/dts/imx6q-sabresd-ldo.dts:#include "imx6q-sabresd.dts" arch/arm/boot/dts/imx6sx-sdb.dts: compatible = "fsl,imx6q-sabresd-wm8962", arch/arm/boot/dts/imx6dl-sabresd-pf200.dts:#include "imx6dl-sabresd-ldo.dts" arch/arm/boot/dts/imx6qp-sabresd.dts:#include "imx6q-sabresd.dts" arch/arm/boot/dts/imx6qp-sabresd.dts: imx6qdl-sabresd { arch/arm/boot/dts/imx6q-sabresd-btwifi.dts:#include "imx6q-sabresd.dts" arch/arm/boot/dts/imx6q-sabresd-btwifi.dts:#include "imx6qdl-sabresd-btwifi.dtsi" arch/arm/boot/dts/imx6q-sabresd-enetirq.dts:#include "imx6q-sabresd.dts" arch/arm/boot/dts/imx6q-sabresd.dts:#include "imx6qdl-sabresd.dtsi" arch/arm/boot/dts/imx6q-sabresd.dts: compatible = "fsl,imx6q-sabresd", "fsl,imx6q"; arch/arm/boot/dts/imx6sl-evk.dts: compatible = "fsl,imx6q-sabresd-wm8962", arch/arm/boot/dts/imx6qdl-sabresd-btwifi.dtsi: imx6qdl-sabresd-murata-v2 { arch/arm/boot/dts/imx6qdl-sabresd.dtsi: compatible = "fsl,imx6q-sabresd-wm8962", arch/arm/boot/dts/imx6qdl-sabresd.dtsi: imx6qdl-sabresd { arch/arm/mach-imx/mach-imx6q.c: if (of_machine_is_compatible("fsl,imx6q-sabresd") || arch/arm/mach-imx/mach-imx6q.c: else if (of_machine_is_compatible("fsl,imx6dl-sabresd") || fedevel@ubuntu:~/fsl-community-bsp/build/tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-fslc-imx/3.14-1.1.x+gitAUTOINC+327d5c9063-r0/git$Set the compiler:
export CROSS_COMPILE=arm-linux-gnueabihf- export ARCH=armTry if you can compile linux without any changes:
make clean make imx_v7_defconfig make -j4 zImage imx6q-sabresd.dtb
Adding support for a new custom board
Edit: "arch/arm/boot/dts/Makefile" Find "imx6q-sabresd" and add:imx6q-openrex.dtb \This is how it will look
imx6q-sabresd-hdcp.dtb \ imx6q-openrex.dtb \ imx6q-sbc6x.dtb \Edit: "arch/arm/boot/dts/imx6q-openrex.dts"
cp arch/arm/boot/dts/imx6q-sabresd.dts arch/arm/boot/dts/imx6q-openrex.dts gedit arch/arm/boot/dts/imx6q-openrex.dtsReplace
#include "imx6qdl-sabresd.dtsi"with
#include "imx6qdl-openrex.dtsi"Edit: "arch/arm/boot/dts/imx6qdl-openrex.dtsi" You may noticed that imx6q-openrex.dts calls imx6qdl-sabresd.dtsi. Let's create it for openrex:
cp arch/arm/boot/dts/imx6qdl-sabresd.dtsi arch/arm/boot/dts/imx6qdl-openrex.dtsi gedit arch/arm/boot/dts/imx6qdl-openrex.dtsiYou may need to have a look also inside "arch/arm/mach-imx/mach-imx6q.c". There is something about sabresd, but we don't need to edit it, at least not now.
Linux: Compile
That's it. Try to compile our new custom board:make clean make imx_v7_defconfig make -j4 zImage imx6q-openrex.dtb*Note: If you get error "piggy.lzo Error" just install lzop. Run "sudo apt-get install lzop".
The output files are located at:
arch/arm/boot/zImage arch/arm/boot/dts/imx6q-openrex.dtbNow the hard part. You will need to go through "arch/arm/boot/dts/imx6q-openrex.dts" and "arch/arm/boot/dts/imx6qdl-openrex.dtsi" files and correct them. Advice: After some changes always try to recompile, and check if you have not changed/removed something critical.
How to edit dts / dtsi files?
Go through the files, remove the peripherals you don't need and correct pin assigment. For example: Originalpinctrl_ecspi1: ecspi1grp { fsl,pins = < MX6QDL_PAD_KEY_COL1__ECSPI1_MISO 0x100b1 MX6QDL_PAD_KEY_ROW0__ECSPI1_MOSI 0x100b1 MX6QDL_PAD_KEY_COL0__ECSPI1_SCLK 0x100b1 >; };Go to our schematic and have a look where CSPI1_MISO is connected. You can see it's GPIO3_IO17. Go to arch/arm/boot/dts/imx6q-pinfunc.h and search for "GPIO3_IO17". You will find "MX6QDL_PAD_EIM_D17__GPIO3_IO17" ... we would like to work this pin in MISO mode, so select "MX6QDL_PAD_EIM_D17__ECSPI1_MISO" and paste it into dtsi file. It will look then:
pinctrl_ecspi1: ecspi1grp { fsl,pins = < MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1 MX6QDL_PAD_KEY_ROW0__ECSPI1_MOSI 0x100b1 MX6QDL_PAD_KEY_COL0__ECSPI1_SCLK 0x100b1 >; };Do it for all the pins. If you are not sure where the pin from reference board is connected, search through reference schematic.
Linux: Useful stuff
Board releated filesgedit arch/arm/boot/dts/imx6q-openrex.dts gedit arch/arm/boot/dts/imx6qdl-openrex.dtsiFile where you can find default configuration:
gedit arch/arm/configs/imx_v7_defconfigFile where you can find pin names:
gedit arch/arm/boot/dts/imx6q-pinfunc.h
Linux: Try the compiled Kernel
Copy the files to /tftp directorycp arch/arm/boot/zImage /tftp/zImage-imx6q-openrex cp arch/arm/boot/dts/imx6q-openrex.dtb /tftp/imx6q-openrex-dtbNow, be careful. It is important, that your uBoot environment variables are set correctly. If an important parameter is missing, something may not work (for example ethernet may not work or Linux will freeze at Starting Linux .....).
Here is example of uBoot parameters from working uBoot 2014. You may find them useful (they work also with uBoot 2015):
setenv baudrate '115200' setenv boot_fdt 'try' setenv bootcmd 'mmc dev ${mmcdev};if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then run mmcboot; else run netboot; fi; fi; else run netboot; fi' setenv bootdelay '3' setenv bootscript 'echo Running bootscript from mmc ...; source' setenv console 'ttymxc0' setenv ethact 'FEC' setenv ethaddr '00:0d:15:00:d4:20' setenv ethprime 'FEC' setenv fdt_addr '0x18000000' setenv fdt_file 'imx6q-openrex-dtb' setenv fdt_high '0xffffffff' setenv image 'zImage' setenv initrd_high '0xffffffff' setenv loadaddr '0x10800000' setenv loadbootscript 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};' setenv loadfdt 'fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}' setenv loadimage 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}' setenv mmcargs 'setenv bootargs console=${console},${baudrate} root=${mmcroot}' setenv 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;' setenv mmcdev '0' setenv mmcpart '1' setenv mmcroot '/dev/mmcblk2p2 rootwait rw' setenv netargs 'setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp' setenv netboot 'echo Booting from net ...; run set_ethernet; run netargs; tftp ${tftp_dir}/${image}; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if tftp ${fdt_addr} ${tftp_dir}/${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;' setenv script 'boot-imx6q-tinyrex.scr' setenv set_ethernet 'if test ${ethaddr}; then; else setenv ethaddr 00:0D:15:00:D1:75; fi; if test ${ipaddr}; then; else setenv ipaddr 192.168.0.150; fi; if test ${serverip}; then; else setenv serverip 192.168.0.1; fi; if test ${netmask}; then; else setenv netmask 255.255.255.0; fi' setenv spics 'CONFIG_ENV_SPI_CS' setenv spidev 'CONFIG_ENV_SPI_BUS' setenv stderr 'serial' setenv stdin 'serial' setenv stdout 'serial' setenv tftp_dir 'imx6' setenv uboot 'u-boot-imx6q-tinyrex.imx' setenv update_fdt 'run set_ethernet; run update_set_filename; if mmc dev ${mmcdev}; then if tftp ${tftp_dir}/${upd_fdt}; then fatwrite mmc ${mmcdev}:${mmcpart} ${loadaddr} ${fdt_file} ${filesize}; fi; fi' setenv update_kernel 'run set_ethernet; run update_set_filename; if mmc dev ${mmcdev}; then if tftp ${tftp_dir}/${upd_kernel}; then fatwrite mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} ${filesize}; fi; fi' setenv update_script 'run set_ethernet; run update_set_filename; if mmc dev ${mmcdev}; then if tftp ${tftp_dir}/${upd_script}; then fatwrite mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script} ${filesize}; fi; fi' setenv update_set_filename 'if test ${upd_uboot}; then; else setenv upd_uboot u-boot-imx6q-tinyrex.imx; fi; if test ${upd_kernel}; then; else setenv upd_kernel zImage-imx6q-tinyrex; fi; if test ${upd_fdt}; then; else setenv upd_fdt imx6q-tinyrex.dtb; fi; if test ${upd_script}; then; else setenv upd_script boot-imx6q-tinyrex.scr; fi' setenv update_uboot 'run set_ethernet; run update_set_filename; if mmc dev ${mmcdev}; then if tftp ${tftp_dir}/${upd_uboot}; then setexpr fw_sz ${filesize} / 0x200; setexpr fw_sz ${fw_sz} + 1; mmc write ${loadaddr} 0x2 ${fw_sz}; fi; fi'In our case, I had to add following parameters to be able to boot Linux:
setenv fdt_addr '0x18000000' setenv fdt_high '0xffffffff' saveenvTo test our Linux (it will not fully boot up, we do not have file system yet), run:
tftp 0x10800000 zImage-imx6q-openrex tftp 0x18000000 imx6q-openrex-dtb bootz 0x10800000 - 0x18000000It may look like this:
U-Boot 2015.10+fslc+g1b6aee7 (Mar 03 2016 - 23:55:53 -0800) CPU: Freescale i.MX6Q rev1.2 996 MHz (running at 792 MHz) CPU: Automotive temperature grade (-40C to 125C) at 46C Reset cause: POR Board: iMX6-OpenRex I2C: ready DRAM: 2 GiB MMC: FSL_SDHC: 0 SF: Detected SST26VF032B with page size 256 Bytes, erase size 4 KiB, total 4 MiB In: serial Out: serial Err: serial Net: FEC Hit any key to stop autoboot: 0 OpenRex U-Boot> printenv baudrate=115200 board_name=OPENREX board_rev=MX6Q bootargs=console=ttymxc0,115200 bootargs_base=setenv bootargs console=ttymxc0,115200 bootargs_mmc=setenv bootargs ${bootargs} ip=dhcp root=/dev/mmcblk0p1 rootwait video=mxcfb0:dev=hdmi,1280x720M@60,if=RGB666 vmalloc=400M fbmem=28M fbcon=28M bootargs_nfs=setenv bootargs ${bootargs} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp bootargs_sata=setenv bootargs ${bootargs} ip=dhcp root=/dev/sda1 rootwait video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB666 vmalloc=400M fbmem=28M fbcon=28M bootcmd=run bootcmd_sata bootcmd_mmc=run bootargs_mmc; mmc dev 0; ext2load mmc 0 0x10800000 uImage 3850000; bootm 0x10800000 bootcmd_net=run bootargs_base bootargs_nfs; tftpboot ${loadaddr} ${kernel}; bootm bootcmd_sata=run bootargs_sata; mmc dev 0; ext2load mmc 0 0x10800000 uImage 3850000; bootm 0x10800000 bootdelay=3 ethact=FEC ethaddr=00:0d:15:00:dc:ed ethprime=FEC0 fdt_addr=0x18000000 fdt_high=0xffffffff ipaddr=192.168.0.150 kernel=uImage loadaddr=0x10800000 netdev=eth0 netmask=255.255.255.0 nfsroot=/opt/eldk/arm rd_loadaddr=(0x1300000) serverip=192.168.0.37 stderr=serial stdin=serial stdout=serial uboot=u-boot.bin Environment size: 1233/8188 bytes OpenRex U-Boot> tftp 0x10800000 zImage-imx6q-openrex Using FEC device TFTP from server 192.168.0.37; our IP address is 192.168.0.150 Filename 'zImage-imx6q-openrex'. Load address: 0x10800000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# #### 1.1 MiB/s done Bytes transferred = 6005944 (5ba4b8 hex) OpenRex U-Boot> tftp 0x18000000 imx6q-openrex-dtb Using FEC device TFTP from server 192.168.0.37; our IP address is 192.168.0.150 Filename 'imx6q-openrex-dtb'. Load address: 0x18000000 Loading: ######## 990.2 KiB/s done Bytes transferred = 36507 (8e9b hex) OpenRex U-Boot> bootz 0x10800000 - 0x18000000 Kernel image @ 0x10800000 [ 0x000000 - 0x5ba4b8 ] ## Flattened Device Tree blob at 18000000 Booting using the fdt blob at 0x18000000 Using Device Tree in place at 18000000, end 1800be9a Starting kernel ... Booting Linux on physical CPU 0x0 Linux version 3.14.61+g327d5c9 (fedevel@ubuntu) (gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-16ubuntu4) ) #7 SMP PREEMPT Sun Mar 6 23:36:33 PST 2016 CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache Machine model: FEDEVEL i.MX6 Quad OpenRex Board cma: CMA: reserved 320 MiB at 6a000000 Memory policy: Data cache writealloc PERCPU: Embedded 8 pages/cpu @ee720000 s8320 r8192 d16256 u32768 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 520720 Kernel command line: console=ttymxc0,115200 PID hash table entries: 4096 (order: 2, 16384 bytes) Dentry cache hash table entries: 262144 (order: 8, 1048576 bytes) Inode-cache hash table entries: 131072 (order: 7, 524288 bytes) Memory: 1739220K/2097152K available (7472K kernel code, 460K rwdata, 2596K rodata, 396K init, 441K bss, 357932K reserved, 270336K highmem) Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) vmalloc : 0xf0000000 - 0xff000000 ( 240 MB) lowmem : 0x80000000 - 0xef800000 (1784 MB) pkmap : 0x7fe00000 - 0x80000000 ( 2 MB) modules : 0x7f000000 - 0x7fe00000 ( 14 MB) .text : 0x80008000 - 0x809dd3c4 (10069 kB) .init : 0x809de000 - 0x80a41080 ( 397 kB) .data : 0x80a42000 - 0x80ab5380 ( 461 kB) .bss : 0x80ab538c - 0x80b23a2c ( 442 kB) SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, 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: 1024 kB Switching to timer-based delay loop sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655765682ns Console: colour dummy device 80x30 Calibrating delay loop (skipped), value calculated using timer frequency.. 6.00 BogoMIPS (lpj=30000) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 4096 (order: 2, 16384 bytes) Mountpoint-cache hash table entries: 4096 (order: 2, 16384 bytes) CPU: Testing write buffer coherency: ok CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 Setting up static identity map for 0x1071cda0 - 0x1071cdf8 CPU1: Booted secondary processor CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 CPU2: Booted secondary processor CPU2: thread -1, cpu 2, socket 0, mpidr 80000002 CPU3: Booted secondary processor CPU3: thread -1, cpu 3, socket 0, mpidr 80000003 Brought up 4 CPUs SMP: Total of 4 processors activated (24.00 BogoMIPS). CPU: All CPU(s) started in SVC mode. devtmpfs: initialized VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 pinctrl core: initialized pinctrl subsystem regulator-dummy: no parameters NET: Registered protocol family 16 DMA: preallocated 256 KiB pool for atomic coherent allocations cpuidle: using governor ladder cpuidle: using governor menu CPU identified as i.MX6Q, silicon rev 1.2 Use WDOG2 as reset source syscon 20c8000.anatop: regmap [mem 0x020c8000-0x020c8fff] registered vdd1p1: 800 <--> 1375 mV at 1100 mV vdd3p0: 2625 <--> 3400 mV at 3000 mV vdd2p5: 2000 <--> 2750 mV at 2400 mV vddarm: 725 <--> 1450 mV at 1150 mV vddpu: 725 <--> 1450 mV at 1150 mV vddsoc: 725 <--> 1450 mV at 1175 mV syscon 20e0000.iomuxc-gpr: regmap [mem 0x020e0000-0x020e0037] registered syscon 21bc000.ocotp-ctrl: regmap [mem 0x021bc000-0x021bffff] registered No ATAGs? hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers. hw-breakpoint: maximum watchpoint size is 4 bytes. imx6q-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver bio: create slab <bio-0> at 0 mxs-dma 110000.dma-apbh: initialized usb_otg_vbus: 5000 mV usb_h1_vbus: 5000 mV wm8962-supply: no parameters mipi_dsi_pwr_on: no parameters sensor-supply: 3300 mV i2c-core: driver [max17135] using legacy suspend method i2c-core: driver [max17135] using legacy resume method SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb usbphy_nop1.12 supply vcc not found, using dummy regulator usbphy_nop2.13 supply vcc not found, using dummy regulator i2c i2c-0: IMX I2C adapter registered i2c i2c-1: IMX I2C adapter registered i2c i2c-2: IMX I2C adapter registered Linux video capture interface: v2.00 pps_core: LinuxPPS API ver. 1 registered pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> PTP clock support registered imx-ipuv3 2400000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7) imx-ipuv3 2800000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7) mxc_mipi_csi2 21dc000.mipi_csi: i.MX MIPI CSI2 driver probed mxc_mipi_csi2 21dc000.mipi_csi: i.MX MIPI CSI2 dphy version is 0x3130302a MIPI CSI2 driver module loaded Advanced Linux Sound Architecture Driver Initialized. Bluetooth: Core ver 2.18 NET: Registered protocol family 31 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: L2CAP socket layer initialized Bluetooth: SCO socket layer initialized cfg80211: Calling CRDA to update world regulatory domain Switched to clocksource mxc_timer1 NET: Registered protocol family 2 TCP established hash table entries: 16384 (order: 4, 65536 bytes) TCP bind hash table entries: 16384 (order: 5, 131072 bytes) TCP: Hash tables configured (established 16384 bind 16384) TCP: reno registered UDP hash table entries: 1024 (order: 3, 32768 bytes) UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available imx rpmsg driver is registered. imx_busfreq busfreq.16: DDR medium rate not supported. Bus freq driver module loaded futex hash table entries: 1024 (order: 4, 65536 bytes) bounce pool size: 64 pages VFS: Disk quotas dquot_6.5.2 Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) NFS: Registering the id_resolver key type Key type id_resolver registered Key type id_legacy registered jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc. fuse init (API version 7.22) msgmni has been set to 3508 io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) imx-weim 21b8000.weim: Driver registered. backlight.26 supply power not found, using dummy regulator ldb ldb.15: crtc not specified or invalid ldb: probe of ldb.15 failed with error -22 mxc_mipi_dsi 21e0000.mipi: i.MX MIPI DSI driver probed MIPI DSI driver module loaded MIPI DSI driver module loaded mxc_sdc_fb fb.22: NO mxc display driver found for ldb! mxc_hdmi 20e0000.hdmi_video: Detected HDMI controller 0x13:0xa:0xa0:0xc1 fbcvt: 1920x1080@60: CVT Name - 2.073M9 mxc_sdc_fb fb.23: registered mxc display driver hdmi IPU1_DISP0 mxc_sdc_fb fb.23: registered mxc display driver hdmi Console: switching to colour frame buffer device 240x67 mxc_sdc_fb fb.24: NO mxc display driver found for lcd! mxc_sdc_fb fb.25: NO mxc display driver found for ldb! imx-sdma 20ec000.sdma: no iram assigned, using external mem imx-sdma 20ec000.sdma: no event needs to be remapped imx-sdma 20ec000.sdma: loaded firmware 3.2 imx-sdma 20ec000.sdma: initialized pfuze100-regulator 1-0008: unrecognized pfuze chip ID! pfuze100-regulator: probe of 1-0008 failed with error -5 Serial: IMX driver 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 58, base_baud = 5000000) is a IMX console [ttymxc0] enabled serial: Freescale lpuart driver imx sema4 driver is registered. [drm] Initialized drm 1.1.0 20060810 [drm] Initialized vivante 1.0.0 20120216 on minor 0 brd: module loaded loop: module loaded ahci-imx 2200000.sata: fsl,transmit-level-mV not specified, using 00000024 ahci-imx 2200000.sata: fsl,transmit-boost-mdB not specified, using 00000480 ahci-imx 2200000.sata: fsl,transmit-atten-16ths not specified, using 00002000 ahci-imx 2200000.sata: fsl,receive-eq-mdB not specified, using 05000000 ahci-imx 2200000.sata: SSS flag set, parallel bus scan disabled ahci-imx 2200000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode ahci-imx 2200000.sata: flags: ncq sntf stag pm led clo only pmp pio slum part ccc apst scsi0 : ahci_platform ata1: SATA max UDMA/133 mmio [mem 0x02200000-0x02203fff] port 0x100 irq 71 spi_imx 2008000.ecspi: probed CAN device driver interface 2188000.ethernet supply phy not found, using dummy regulator pps pps0: new PPS source ptp0 libphy: fec_enet_mii_bus: probed fec 2188000.ethernet eth0: registered PHC device 0 ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ehci-mxc: Freescale On-Chip EHCI Host driver usbcore: registered new interface driver usb-storage usbcore: registered new interface driver usb_ehset_test 2184800.usbmisc supply vbus-wakeup not found, using dummy regulator ci_hdrc ci_hdrc.1: doesn't support gadget ci_hdrc ci_hdrc.1: EHCI Host Controller ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1 ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00 hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected mousedev: PS/2 mouse device common for all mice i2c-core: driver [isl29023] using legacy suspend method i2c-core: driver [isl29023] using legacy resume method snvs_rtc 20cc034.snvs-rtc-lp: can't get snvs-rtc clock snvs_rtc 20cc034.snvs-rtc-lp: rtc core: registered 20cc034.snvs-rtc-lp as rtc0 i2c /dev entries driver IR NEC protocol handler initialized IR RC5(x) protocol handler initialized IR RC6 protocol handler initialized IR JVC protocol handler initialized IR Sony protocol handler initialized IR RC5 (streamzap) protocol handler initialized IR SANYO protocol handler initialized IR MCE Keyboard/mouse protocol handler initialized mxc_v4l2_output v4l2_out.29: V4L2 device registered as video16 mxc_v4l2_output v4l2_out.29: V4L2 device registered as video17 i2c-core: driver [mag3110] using legacy suspend method i2c-core: driver [mag3110] using legacy resume method imx2-wdt 20c0000.wdog: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=0) Bluetooth: HCI UART driver ver 2.2 Bluetooth: HCI H4 protocol initialized Bluetooth: HCI BCSP protocol initialized Bluetooth: HCIATH3K protocol initialized usbcore: registered new interface driver bcm203x usbcore: registered new interface driver btusb usbcore: registered new interface driver ath3k sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman sdhci-pltfm: SDHCI platform and OF driver helper mmc1: no vqmmc regulator found mmc1: no vmmc regulator found mmc1: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA Galcore version 5.0.11.33433 ata1: SATA link down (SStatus 0 SControl 300) ahci-imx 2200000.sata: no device found, disabling link. ahci-imx 2200000.sata: pass ahci_imx..hotplug=1 to enable hotplug mxc_vdoa 21e4000.vdoa: i.MX Video Data Order Adapter(VDOA) driver probed mxc_vpu 2040000.vpu: VPU initialized caam 2100000.caam: Instantiated RNG4 SH0 caam 2100000.caam: Instantiated RNG4 SH1 caam 2100000.caam: device ID = 0x0a160100 (Era 4) caam 2100000.caam: job rings = 2, qi = 0 caam algorithms registered in /proc/crypto hmac-sha1-caam alg registration failed sha1-caam alg registration failed hmac-sha224-caam alg registration failed sha224-caam alg registration failed hmac-sha256-caam alg registration failed sha256-caam alg registration failed hmac-md5-caam alg registration failed md5-caam alg registration failed xcbc-aes-caam alg registration failed xcbc-aes-caam alg registration failed caam_jr 2101000.jr0: registering rng-caam platform caam_sm: blkkey_ex: 4 keystore units available platform caam_sm: 64-bit clear key: platform caam_sm: [0000] 00 01 02 03 04 0f 06 07 platform caam_sm: 64-bit black key: platform caam_sm: [0000] 17 bf 6d a3 ac 21 48 23 platform caam_sm: [0008] cf c6 32 d0 bb 98 95 f6 platform caam_sm: 128-bit clear key: platform caam_sm: [0000] 00 01 02 03 04 0f 06 07 platform caam_sm: [0008] 08 09 0a 0b 0c 0d 0e 0f platform caam_sm: 128-bit black key: platform caam_sm: [0000] 01 73 75 be 03 f4 7c 43 platform caam_sm: [0008] a6 15 e9 d0 19 58 87 cd platform caam_sm: 192-bit clear key: platform caam_sm: [0000] 00 01 02 03 04 0f 06 07 platform caam_sm: [0008] 08 09 0a 0b 0c 0d 0e 0f platform caam_sm: [0016] 10 11 12 13 14 15 16 17 platform caam_sm: 192-bit black key: platform caam_sm: [0000] ee f3 c5 7c eb 35 c5 64 platform caam_sm: [0008] ca bc 73 90 94 28 19 69 platform caam_sm: [0016] ee 7c 74 20 84 c3 13 32 platform caam_sm: [0024] 97 bb 04 ee 86 78 22 35 platform caam_sm: 256-bit clear key: platform caam_sm: [0000] 00 01 02 03 04 0f 06 07 platform caam_sm: [0008] 08 09 0a 0b 0c 0d 0e 0f platform caam_sm: [0016] 10 11 12 13 14 15 16 17 platform caam_sm: [0024] 18 19 1a 1b 1c 1d 1e 1f platform caam_sm: 256-bit black key: platform caam_sm: [0000] fd 8e 9b 33 96 23 a3 82 platform caam_sm: [0008] a7 be f4 b4 52 e9 cd a1 platform caam_sm: [0016] ff 06 6d 97 f7 19 82 18 platform caam_sm: [0024] 3f 3a 27 39 cb 6f 47 7e platform caam_sm: 64-bit unwritten blob: platform caam_sm: [0000] 00 00 00 00 00 00 00 00 platform caam_sm: [0008] 00 00 00 00 00 00 00 00 platform caam_sm: [0016] 00 00 00 00 00 00 00 00 platform caam_sm: [0024] 00 00 00 00 00 00 00 00 platform caam_sm: [0032] 00 00 00 00 00 00 00 00 platform caam_sm: [0040] 00 00 00 00 00 00 00 00 platform caam_sm: [0048] 00 00 00 00 00 00 00 00 platform caam_sm: [0056] 00 00 00 00 00 00 00 00 platform caam_sm: [0064] 00 00 00 00 00 00 00 00 platform caam_sm: [0072] 00 00 00 00 00 00 00 00 platform caam_sm: [0080] 00 00 00 00 00 00 00 00 platform caam_sm: [0088] 00 00 00 00 00 00 00 00 platform caam_sm: 128-bit unwritten blob: platform caam_sm: [0000] 00 00 00 00 00 00 00 00 platform caam_sm: [0008] 00 00 00 00 00 00 00 00 platform caam_sm: [0016] 00 00 00 00 00 00 00 00 platform caam_sm: [0024] 00 00 00 00 00 00 00 00 platform caam_sm: [0032] 00 00 00 00 00 00 00 00 platform caam_sm: [0040] 00 00 00 00 00 00 00 00 platform caam_sm: [0048] 00 00 00 00 00 00 00 00 platform caam_sm: [0056] 00 00 00 00 00 00 00 00 platform caam_sm: [0064] 00 00 00 00 00 00 00 00 platform caam_sm: [0072] 00 00 00 00 00 00 00 00 platform caam_sm: [0080] 00 00 00 00 00 00 00 00 platform caam_sm: [0088] 00 00 00 00 00 00 00 00 platform caam_sm: 196-bit unwritten blob: platform caam_sm: [0000] 00 00 00 00 00 00 00 00 platform caam_sm: [0008] 00 00 00 00 00 00 00 00 platform caam_sm: [0016] 00 00 00 00 00 00 00 00 platform caam_sm: [0024] 00 00 00 00 00 00 00 00 platform caam_sm: [0032] 00 00 00 00 00 00 00 00 platform caam_sm: [0040] 00 00 00 00 00 00 00 00 platform caam_sm: [0048] 00 00 00 00 00 00 00 00 platform caam_sm: [0056] 00 00 00 00 00 00 00 00 platform caam_sm: [0064] 00 00 00 00 00 00 00 00 platform caam_sm: [0072] 00 00 00 00 00 00 00 00 platform caam_sm: [0080] 00 00 00 00 00 00 00 00 platform caam_sm: [0088] 00 00 00 00 00 00 00 00 platform caam_sm: 256-bit unwritten blob: platform caam_sm: [0000] 00 00 00 00 00 00 00 00 platform caam_sm: [0008] 00 00 00 00 00 00 00 00 platform caam_sm: [0016] 00 00 00 00 00 00 00 00 platform caam_sm: [0024] 00 00 00 00 00 00 00 00 platform caam_sm: [0032] 00 00 00 00 00 00 00 00 platform caam_sm: [0040] 00 00 00 00 00 00 00 00 platform caam_sm: [0048] 00 00 00 00 00 00 00 00 platform caam_sm: [0056] 00 00 00 00 00 00 00 00 platform caam_sm: [0064] 00 00 00 00 00 00 00 00 platform caam_sm: [0072] 00 00 00 00 00 00 00 00 platform caam_sm: [0080] 00 00 00 00 00 00 00 00 platform caam_sm: [0088] 00 00 00 00 00 00 00 00 platform caam_sm: 64-bit black key in blob: platform caam_sm: [0000] dc fe b1 90 8d 2e 14 89 platform caam_sm: [0008] 55 85 ce b5 fd 60 98 7c platform caam_sm: [0016] c4 1b ae 1f ef 9a 4f a1 platform caam_sm: [0024] bf fe 20 7b d6 7e 47 0d platform caam_sm: [0032] cf bd 93 9f 25 f2 b6 b4 platform caam_sm: [0040] 45 44 e7 f4 16 a4 9d 76 platform caam_sm: [0048] 24 d9 44 40 6c d7 55 fb platform caam_sm: [0056] 00 00 00 00 00 00 00 00 platform caam_sm: [0064] 00 00 00 00 00 00 00 00 platform caam_sm: [0072] 00 00 00 00 00 00 00 00 platform caam_sm: [0080] 00 00 00 00 00 00 00 00 platform caam_sm: [0088] 00 00 00 00 00 00 00 00 platform caam_sm: 128-bit black key in blob: platform caam_sm: [0000] fc 42 ac f9 3a fd 98 8b platform caam_sm: [0008] 66 1d 60 74 ec 11 83 2c platform caam_sm: [0016] 8a d0 71 22 f9 24 51 07 platform caam_sm: [0024] c8 9d ff e9 c8 e3 a8 20 platform caam_sm: [0032] 3f 6a ab f9 70 d6 25 04 platform caam_sm: [0040] b7 4e e1 17 d0 54 99 fa platform caam_sm: [0048] ae 87 9f d9 43 4e 13 b5 platform caam_sm: [0056] 1a ff f6 18 1a 68 65 bb platform caam_sm: [0064] 00 00 00 00 00 00 00 00 platform caam_sm: [0072] 00 00 00 00 00 00 00 00 platform caam_sm: [0080] 00 00 00 00 00 00 00 00 platform caam_sm: [0088] 00 00 00 00 00 00 00 00 platform caam_sm: 192-bit black key in blob: platform caam_sm: [0000] 09 39 75 f6 d6 c6 cc 4c platform caam_sm: [0008] 17 3c 76 be 80 f2 86 ff platform caam_sm: [0016] 52 74 4c 9c 13 a3 32 c4 platform caam_sm: [0024] 30 58 8b 4d 42 d4 cf 57 platform caam_sm: [0032] 1d f2 da 40 61 e7 40 e1 platform caam_sm: [0040] 9d e4 92 ac b8 b2 e7 81 platform caam_sm: [0048] 6d 2b 31 9c b3 0d 2d 2b platform caam_sm: [0056] 55 65 3a e2 0d 97 07 84 platform caam_sm: [0064] 0f f3 d1 da f2 3f d6 67 platform caam_sm: [0072] 00 00 00 00 00 00 00 00 platform caam_sm: [0080] 00 00 00 00 00 00 00 00 platform caam_sm: [0088] 00 00 00 00 00 00 00 00 platform caam_sm: 256-bit black key in blob: platform caam_sm: [0000] f7 e1 f9 52 86 a5 ae b9 platform caam_sm: [0008] 31 5a 45 d2 23 7d 9b 69 platform caam_sm: [0016] f7 ea 1c 38 50 bd d2 80 platform caam_sm: [0024] cc 64 af 34 4a 23 c5 ba platform caam_sm: [0032] f4 b3 a8 f0 cf 8d 73 a8 platform caam_sm: [0040] 27 ec b5 d7 96 17 3e 61 platform caam_sm: [0048] 69 1d 42 11 c1 86 11 94 platform caam_sm: [0056] 32 75 03 e1 1c 7f c2 55 platform caam_sm: [0064] 49 b2 86 14 a6 be 9f c1 platform caam_sm: [0072] b2 a1 e7 7d 05 57 cf cf platform caam_sm: [0080] 00 00 00 00 00 00 00 00 platform caam_sm: [0088] 00 00 00 00 00 00 00 00 platform caam_sm: restored 64-bit black key: platform caam_sm: [0000] 00 af 5b 61 39 60 ee 30 platform caam_sm: [0008] c1 25 5f 84 55 8d 3b af platform caam_sm: restored 128-bit black key: platform caam_sm: [0000] 01 73 75 be 03 f4 7c 43 platform caam_sm: [0008] a6 15 e9 d0 19 58 87 cd platform caam_sm: restored 192-bit black key: platform caam_sm: [0000] ee f3 c5 7c eb 35 c5 64 platform caam_sm: [0008] ca bc 73 90 94 28 19 69 platform caam_sm: [0016] 28 1a 15 ac 26 d4 e2 9e platform caam_sm: [0024] 7c 1d 11 cc 94 85 7d c3 platform caam_sm: restored 256-bit black key: platform caam_sm: [0000] fd 8e 9b 33 96 23 a3 82 platform caam_sm: [0008] a7 be f4 b4 52 e9 cd a1 platform caam_sm: [0016] ff 06 6d 97 f7 19 82 18 platform caam_sm: [0024] 3f 3a 27 39 cb 6f 47 7e snvs-secvio 20cc000.caam-snvs: can't get snvs clock snvs-secvio 20cc000.caam-snvs: violation handlers armed - non-secure state usbcore: registered new interface driver usbhid usbhid: USB HID core driver fsl-asrc 2034000.asrc: driver registered imx-audio-hdmi sound-hdmi.21: hdmi-hifi <-> hdmi_audio.3 mapping ok NET: Registered protocol family 26 TCP: cubic registered NET: Registered protocol family 10 sit: IPv6 over IPv4 tunneling driver NET: Registered protocol family 17 can: controller area network core (rev 20120528 abi 9) NET: Registered protocol family 29 can: raw protocol (rev 20120528) can: broadcast manager protocol (rev 20120528 t) can: netlink gateway (rev 20130117) max_hops=1 Bluetooth: RFCOMM TTY layer initialized Bluetooth: RFCOMM socket layer initialized Bluetooth: RFCOMM ver 1.11 Bluetooth: BNEP (Ethernet Emulation) ver 1.3 Bluetooth: BNEP filters: protocol multicast Bluetooth: BNEP socket layer initialized Bluetooth: HIDP (Human Interface Emulation) ver 1.2 Bluetooth: HIDP socket layer initialized 8021q: 802.1Q VLAN Support v1.8 Key type dns_resolver registered cpu cpu0: failed to get regulators imx6q-cpufreq: probe of imx6q-cpufreq.0 failed with error -2 sensor-supply: disabling wm8962-supply: disabling usb_otg_vbus: disabling regulator-dummy: disabling imx mcc test is registered. input: gpio-keys.20 as /devices/soc0/gpio-keys.20/input/input0 snvs_rtc 20cc034.snvs-rtc-lp: setting system clock to 1970-01-01 00:29:31 UTC (1771) ALSA device list: #0: imx-hdmi-soc ...Perfect! Linux booted up, we can upload the changes to github.
Linux: Upload changes to github
When you are happy with changes, you can upload the source code to github:git branch #check branch, should be jethro git status git add . git diff origin/jethro git commit -m 'Initial updates to support OpenRex' #use your own comment, describe what you have done git push origin jethro