Tuesday, November 17, 2015

Neo for quad-copter flight controller

Neo board from udoo.org

The goal is to use neo board for a flight controller.  The neo is running Debian on the ARM Cortex A9 and mqx (RTOS) on the ARM Cortex M4.  Debian has a lot of bloat and goal is to use some image processing on the A9.  So, the first step is to get a minimal Linux build, i.e buildroot.

Minimal Linux;

 more ./meminfo
MemTotal:         499344 kB
MemFree:          352780 kB
MemAvailable:     350884 kB
Buffers:             752 kB
Cached:             1048 kB

Debian Linux:

MemTotal:         499376 kB
MemFree:          123968 kB
MemAvailable:     230188 kB



Created a basic configuration script and board info for buildroot.  Success!  buildroot compiles, u-boot, Linux and creates a file system.  Here is the output:

U-Boot 2014.04-gedd0741 (Nov 15 2015 - 23:17:26)

CPU:   Freescale i.MX6SX rev1.2 at 792 MHz
CPU:   Temperature 36 C, calibration data: 0x5924f869
Reset cause: POR
Board: MX6SX UDOO NEO
I2C:   ready
DRAM:  512 MiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Found PFUZE300! deviceid 0x30, revid 0x11
Net:   CPU Net Initialization Failed
No ethernet found.
Normal Boot
Hit any key to stop autoboot:  0
mmc0 is current device
reading uEnv.txt
426 bytes read in 9 ms (45.9 KiB/s)
Running bootscript from mmc ...
** File not found /var/opt/m4/m4last.fw **
reading /m4startup.fw
** Unable to read file /m4startup.fw **
## Starting auxiliary core at 0x84000000 ...
reading /zImage
4398312 bytes read in 211 ms (19.9 MiB/s)
Booting from mmc ...
reading dts/imx6sx-udoo-neo-basicks-hdmi-m4.dtb
39446 bytes read in 23 ms (1.6 MiB/s)
Kernel image @ 0x80800000 [ 0x000000 - 0x431ce8 ]
## Flattened Device Tree blob at 83000000
   Booting using the fdt blob at 0x83000000
   Using Device Tree in place at 83000000, end 8300ca15
sono entrato in ldo_mode_set
setto i valori
valore di vddarm 19
switch to ldo_bypass mode!

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 3.14.28-g9e7d486-dirty (tcmichals@tcmichals-Studio-540) (gcc version 4.9.3 (Buildroot 2015.11-git-00713-g4c55bc1-dirty) ) 5
[    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 Basic Kickstarter (based on iMX.6 SoloX)
[    0.000000] Reserved memory: reserved region for node 'm4@0x84000000': base 0x84000000, size 8 MiB
[    0.000000] cma: CMA: reserved 320 MiB at 8c000000
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] PERCPU: Embedded 8 pages/cpu @8bb3d000 s9152 r8192 d15424 u32768
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 128000
[    0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rootfstype=ext4 rw mem=512M uart_from_osc clk_ignore_unused cpu0
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 171404K/516096K available (5054K kernel code, 332K rwdata, 5656K rodata, 260K init, 384K bss, 344692K reserved, 0K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xa0800000 - 0xff000000   (1512 MB)
[    0.000000]     lowmem  : 0x80000000 - 0xa0000000   ( 512 MB)
[    0.000000]     pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
[    0.000000]     modules : 0x7f000000 - 0x7fe00000   (  14 MB)
[    0.000000]       .text : 0x80008000 - 0x80a7dbcc   (10711 kB)
[    0.000000]       .init : 0x80a7e000 - 0x80abf3c0   ( 261 kB)
[    0.000000]       .data : 0x80ac0000 - 0x80b13330   ( 333 kB)
[    0.000000]        .bss : 0x80b1333c - 0x80b73664   ( 385 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    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] L310 cache controller enabled
[    0.000000] l2x0: 16 ways, CACHE_ID 0x410000c8, AUX_CTRL 0x32030000, Cache size: 256 kB
[    0.000000] Switching to timer-based delay loop
[    0.000007] sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655765682ns
[    0.000631] clocksource_of_init: no matching clocksources found
[    0.000776] Console: colour dummy device 80x30
[    0.000797] Calibrating delay loop (skipped), value calculated using timer frequency.. 6.00 BogoMIPS (lpj=30000)
[    0.000811] pid_max: default: 32768 minimum: 301
[    0.000932] Security Framework initialized
[    0.000999] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.001012] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.006390] device-tree: Duplicate name in /soc/aips-bus@02200000/spba-bus@02200000/lcdif@02220000, renamed to "display#1"
[    0.007636] Initializing cgroup subsys devices
[    0.007652] Initializing cgroup subsys freezer
[    0.007694] CPU: Testing write buffer coherency: ok
[    0.007970] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.008007] Setting up static identity map for 0x804d0070 - 0x804d00c8
[    0.041970] Brought up 1 CPUs
[    0.041983] SMP: Total of 1 processors activated.
[    0.041993] CPU: All CPU(s) started in SVC mode.
[    0.042571] devtmpfs: initialized
[    0.045927] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[    0.046258] pinctrl core: initialized pinctrl subsystem
[    0.046597] regulator-dummy: no parameters
[    0.062446] NET: Registered protocol family 16
[    0.069988] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.070695] Use WDOG1 as reset source
[    0.078897] syscon 20c8000.anatop: regmap [mem 0x020c8000-0x020c8fff] registered
[    0.079204] vdd1p1: 800 <--> 1375 mV at 1100 mV
[    0.079557] vdd3p0: 2800 <--> 3150 mV at 3000 mV
[    0.079889] vdd2p5: 2100 <--> 2875 mV at 2500 mV
[    0.080235] cpu: 725 <--> 1450 mV
[    0.080649] vddpcie-phy: 725 <--> 1450 mV
[    0.081002] vddsoc: 725 <--> 1450 mV
[    0.082867] syscon 20e4000.iomuxc-gpr: regmap [mem 0x020e4000-0x020e7fff] registered
[    0.085247] syscon 21bc000.ocotp-ctrl: regmap [mem 0x021bc000-0x021bffff] registered
[    0.085670] syscon 21ac000.romcp: regmap [mem 0x021ac000-0x021affff] registered
[    0.090652] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[    0.090664] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.091656] imx6sx-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver
[    0.092519] 20dc000.gpc supply pu not found, using dummy regulator
[    0.093265] MU is ready for cross core communication!
[    0.099438] bio: create slab <bio-0> at 0
[    0.100514] vref-3v3: 3300 mV
[    0.100779] PSU-5V0: 5000 mV
[    0.101035] usb_otg1_vbus: 5000 mV
[    0.101299] usb_otg2_vbus: 5000 mV
[    0.101558] wlan-en-regulator: 1800 mV
[    0.102386] SCSI subsystem initialized
[    0.102686] usbphy_nop1.12 supply vcc not found, using dummy regulator
[    0.103972] i2c i2c-0: IMX I2C adapter registered
[    0.104681] i2c i2c-1: IMX I2C adapter registered
[    0.105398] i2c i2c-2: IMX I2C adapter registered
[    0.105826] i2c i2c-3: IMX I2C adapter registered
[    0.105933] Linux video capture interface: v2.00
[    0.105997] pps_core: LinuxPPS API ver. 1 registered
[    0.106007] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.106030] PTP clock support registered
[    0.106547] Advanced Linux Sound Architecture Driver Initialized.
[    0.107548] Loading modules backported from Linux version v4.1.7-0-g0c5c1f1
[    0.107559] Backport integrated by backports.git v4.1.1-1-0-g8286954
[    0.107750] Switched to clocksource mxc_timer1
[    0.118052] NET: Registered protocol family 2
[    0.118855] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[    0.118907] TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
[    0.118974] TCP: Hash tables configured (established 4096 bind 4096)
[    0.119033] TCP: reno registered
[    0.119049] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.119074] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.119312] NET: Registered protocol family 1
[    0.119656] hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
[    0.121220] Bus freq driver module loaded
[    0.121956] futex hash table entries: 256 (order: 2, 16384 bytes)
[    0.131305] VFS: Disk quotas dquot_6.5.2
[    0.131574] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.133382] msgmni has been set to 974
[    0.137146] io scheduler noop registered
[    0.137159] io scheduler deadline registered
[    0.137202] io scheduler cfq registered (default)
[    0.137672] imx-weim 21b8000.weim: Driver registered.
[    0.139341] MIPI DSI driver module loaded
[    0.268597] tda19988 2-0034: Sucessfully initialised chip revision 301
[    0.279469] mxsfb 2220000.lcdif: failed to find mxc display driver
[    0.279989] DISPLAY: Power-on latency exceeded, new value 482000 ns
[    0.281428] DISPLAY: Power-off latency exceeded, new value 23666 ns
[    0.297377] Console: switching to colour frame buffer device 160x45
[    0.341529] tda19988 2-0034: Matching CEA mode is 4 for fb mode 1280x720-60
[    0.393404] DISPLAY: Power-off latency exceeded, new value 24333 ns
[    0.395104] mxsfb 2220000.lcdif: initialized
[    0.397994] imx-sdma 20ec000.sdma: no iram assigned, using external mem
[    0.398294] imx-sdma 20ec000.sdma: no event needs to be remapped
[    0.398525] imx-sdma 20ec000.sdma: loaded firmware 3.1
[    0.401396] imx-sdma 20ec000.sdma: initialized
[    0.403057] pfuze100-regulator 0-0008: Full layer: 1, Metal layer: 1
[    0.403631] pfuze100-regulator 0-0008: FAB: 0, FIN: 0
[    0.403645] pfuze100-regulator 0-0008: pfuze3000 found.
[    0.405074] SW1A: 700 <--> 1475 mV at 1175 mV
[    0.406428] SW1B: 700 <--> 1475 mV at 1175 mV
[    0.407200] SW2: 1500 <--> 1850 mV at 1800 mV
[    0.407970] SW3: 900 <--> 1650 mV at 1350 mV
[    0.408763] SWBST: 5000 <--> 5150 mV at 5000 mV
[    0.409529] VSNVS: 1000 <--> 3000 mV at 3000 mV
[    0.409709] VREFDDR: 750 mV
[    0.410459] VLDO1: 1800 <--> 3300 mV at 1800 mV
[    0.411225] VLDO2: 800 <--> 1550 mV at 1500 mV
[    0.411984] VCCSD: 2850 <--> 3300 mV at 3150 mV
[    0.412750] V33: 2850 <--> 3300 mV at 3150 mV
[    0.413511] VLDO3: 1800 <--> 3300 mV at 1800 mV
[    0.414721] VLDO4: 1800 <--> 3300 mV at 1800 mV
[    0.415043] Serial: IMX driver
[    0.415366] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 58, base_baud = 1500000) is a IMX
[    1.222008] console [ttymxc0] enabled
[    1.226515] 21ec000.serial: ttymxc2 at MMIO 0x21ec000 (irq = 60, base_baud = 1500000) is a IMX
[    1.235586] serial: Freescale lpuart driver
[    1.241166] imx sema4 driver is registered.
[    1.245754] Install mcc tty driver!
[    1.249353]
[    1.249353] A9 mcc prepares run, MCC version is 002.000
[    1.256127] IMX MCC TTY driver module loaded
[    1.260506] [drm] Initialized drm 1.1.0 20060810
[    1.265548] [drm] Initialized vivante 1.0.0 20120216 on minor 0
[    1.275730] loop: module loaded
[    1.281772] mousedev: PS/2 mouse device common for all mice
[    1.288297] input: 20cc000.snvs-pwrkey as /devices/soc0/soc.0/2000000.aips-bus/20cc000.snvs-pwrkey/input/input0
[    1.298724] snvs_pwrkey 20cc000.snvs-pwrkey: i.MX snvs powerkey probed
[    1.306046] i2c /dev entries driver
[    1.310405] IR NEC protocol handler initialized
[    1.314949] IR RC5(x) protocol handler initialized
[    1.319784] IR RC6 protocol handler initialized
[    1.324322] IR JVC protocol handler initialized
[    1.328874] IR Sony protocol handler initialized
[    1.333497] IR RC5 (streamzap) protocol handler initialized
[    1.339089] IR SANYO protocol handler initialized
[    1.343799] IR MCE Keyboard/mouse protocol handler initialized
[    1.350996] imx2-wdt 20bc000.wdog: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=0)
[    1.359524] sdhci: Secure Digital Host Controller Interface driver
[    1.365714] sdhci: Copyright(c) Pierre Ossman
[    1.370108] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.376775] mmc0: no vqmmc regulator found
[    1.380940] mmc0: no vmmc regulator found
[    1.427779] mmc0: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA
[    1.437528] sdhci-esdhc-imx 2198000.usdhc: could not get ultra high speed state, work on normal mode
[    1.451215] mmc2: no vqmmc regulator found
[    1.496107] mmc0: host does not support reading read-only switch. assuming write-enable.
[    1.513945] mmc0: new high speed SDHC card at address aaaa
[    1.519930] mmcblk0: mmc0:aaaa SL32G 29.7 GiB
[    1.529986]  mmcblk0: p1 p2
[    1.577809] mmc2: SDHCI controller on 2198000.usdhc [2198000.usdhc] using ADMA
[    1.585466] galcore: clk_get 2d core clock failed, disable 2d/vg!
[    1.594703] Galcore version 5.0.11.25762
[    1.618174] sdhci-esdhc-imx 2198000.usdhc: card claims to support voltages below defined range
[    1.660120] mmc2: queuing unknown CIS tuple 0x91 (3 bytes)
[    1.679048] mmc2: new high speed SDIO card at address 0001
[    1.842102] fsl-asrc 2034000.asrc: driver registered
[    1.852824] imx-tda19988 sound.24: tda19988-codec <-> 202c000.ssi mapping ok
[    1.860853] nf_conntrack version 0.5.0 (7798 buckets, 31192 max)
[    1.867586] ip_tables: (C) 2000-2006 Netfilter Core Team
[    1.873017] TCP: cubic registered
[    1.876347] NET: Registered protocol family 17
[    1.880932] Key type dns_resolver registered
[    1.885942] cpu cpu0: dev_pm_opp_get_opp_count: device OPP not found (-19)
[    1.907799] failed to register cpuidle driver
[    1.912198] A9-M4 sema4 num 6, A9-M4 magic number 0x12345678 - 0xfeb1b14b.
[    1.919693] VLDO2: disabling
[    1.923036] SWBST: disabling
[    1.925939] usb_otg2_vbus: disabling
[    1.929718] usb_otg1_vbus: disabling
[    1.933340] PSU-5V0: disabling
[    1.936430] vref-3v3: disabling
[    1.939947] regulator-dummy: disabling
[    1.944301] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    1.959938] clk: Not disabling unused clocks
[    1.964242] ALSA device list:
[    1.967224]   #0: imx-audio-tda19988
[    2.132758] EXT4-fs (mmcblk0p2): recovery complete
[    2.142938] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    2.151190] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    2.161421] devtmpfs: mounted
[    2.164930] Freeing unused kernel memory: 260K (80a7e000 - 80abf000)
[    2.262641] EXT4-fs (mmcblk0p2): re-mounted. Opts: errors=remount-ro,data=ordered
Starting logging: OK
Initializing random number generator... [    2.384638] random: dd urandom read with 38 bits of entropy available
done.
Waiting for network interfaces to appear ok
Starting network...

Welcome to Buildroot
buildroot login: [   35.314378] random: nonblocking pool is initialized









No comments:

Post a Comment