i.MXプロセッサ ナレッジベース

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

i.MX Processors Knowledge Base

ディスカッション

ソート順:
Note: This guide is specifically for use with VS Code. For standalone with Segger software please refer to this guide. (How to Use Segger J-Link Plus with i.MX 8M Process... - NXP Community) In this guide we will describe the process to start using VS Code to debug an SDK application. The board used for this guide specifically is the i.MX 8M Nano EVK, but it also applies to all processors of the i.MX 8M Family. This guide covers the following topics: Hardware requirements Software requirements How to find, build, and download the i.MX SDK Debug Probe and i.MX 8M Nano EVK connection Create an SDK Application with MCUXpresso for VS Code Run and debug your SDK Application with MCUXpresso for VS Code Hardware requirements Evaluation Kit for the i.MX8M Nano Applications Processor (i.MX 8M Nano Evaluation Kit | NXP Semiconductors) Quick Start Guide for i.MX8M Nano (I.MX 8M Nano EVK Quick Start Guide (nxp.com)) J-Link Plus JTAG/SWD debug probe with USB interface (SEGGER J-Link PLUS) Features Download speed up to 1MB/s Unlimited breakpoints in flash memory Supports direct download into RAM and flash memory Supported NXP Devices Supported Devices - Search results "nxp" (segger.com) 9 Pin Cortex-M Adapter (9-Pin Cortex-M Adapter (segger.com)) Description Adapts from the 20-pin 0.1'' JTAG connector to a 9-pin 0.05'' Samtec FTSH connector as defined by Arm. Software requirements Windows 10 OS (host) J-Link Software and Documentation Pack for Windows (https://www.segger.com/products/debug-probes/j-link/models/j-link-plus/) i.MX 8M Nano SDK (Welcome | MCUXpresso SDK Builder (nxp.com)) VS Code for Windows (Installation Guide: Running Visual Studio Code on Windows) MCUXpresso Extension for VS Code (Installation Guide: Training: Walkthrough of MCUXpresso for VS Code - NXP Community)   How to find, build, and download the i.MX 8M Nano SDK Enter Welcome | MCUXpresso SDK Builder (nxp.com) Click on "Select Development Board"  Select EVK-MIMX8MN (MIMX8MN6xxxJZ) from Boards -> i.MX -> EVK-MIMX8MN Click on the Build MCUXpresso SDK button Click on Download SDK, you'll be redirected to the MCUXpresso SDK Dashboard Look for the i.MX 8M Nano SDK and click on Download SDK Click on Download SDK archive and documentation, accept the Software Terms and Conditions and the .zip file for the SDK will be downloaded. Debug Probe and i.MX 8M Nano EVK connection Connect the debug cable (USB-UART) to the board and the other end to your PC. Connect the power cable to the second USB-C port and to a wall socket. Don't turn on the board yet. Connect the JLink Plus to your PC with the USB cable. Connect the JLink Plus to the JTAG of the i.MX 8M Nano EVK board In this part we will need to identify pin number 1 from the 9 Pin Cortex-M adapter and from the i.MX 8M Nano EVK board. For the first one identifies pin 7 identifiable by a "non-connect pin". For the i.MX 8M Nano, you can identify easily with a number 1 in one corner of the connectors.    The whole setup should look similar to this:   Create an SDK Application with MCUXpresso for VS Code Before delving into the details of creating an SDK Application it is important to recognize the sections of VS Code User Interface. This will help us to describe accurately the buttons' position. Click on MCUXpresso for VS Code extension icon from the Activity Bar.  In the section “Quickstart Panel” located in the Side Bar click on “Import Repository.” On this window, go to “Local” and select your previously downloaded SDK folder location. Then, click on “Import.” Expand the section “Installed Repositories” from Side Bar and verify your selected SDK. Expand the section “Projects” from Side Bar and click on “Import Example from Repository” and complete the options: Choose a toolchain Choose a board Choose a template Name Location Finally, click on the "Create" button. Click on the gear icon located in the project folder to build the code. In “Projects” expand the “Settings” options and select “mcuxpresso-tools.json.” Here you will find a JSON file with different parameters. Defines the device that will be used to connect with the J-Link Plus. Code: “segger”: { “device”: “MIMX8MN6_M7” } Expand the section “Debug Probes” and verify that your J-Link Plus debug probe appears. Start SEGGER J-Link GDB Server. On section “Target Device” select MIMX8MN6_M7 and click “OK”. You will see the following window. Run and debug your SDK Application with MCUXpresso for VS Code Click on “Debug” located in the project folder, to start with the debugging session. In the Panel click on “Serial Monitor,” set it to the serial debug port with the lowest numbered port with the following settings: Baud rate: 115200 Line ending: None Click on "Start Monitoring" Use the debug controls to run the code. Verify your code output in the “Serial Monitor.”
記事全体を表示
For detailed view, please check out the attached file.
記事全体を表示
Hi all, I'm trying to port Android JB to a custom board based on imx6q. I'm not able to get the launcher. And even the display is shifting to right. The kernel i've tested with linux where the display is proper. Below is log. In the log Marked are the issues I'm facing. Any advice is helpful. I'm in very critical stage. Please help me to resolve this. I'm the source from android_jb4.2.2_1.0.0-ga_source bundle package. Uncompressing Linux... done, booting the kernel. Initializing cgroup subsys cpu Linux version 3.0.35-gcbaa4e0-dirty (rangam@PHYTECIndia) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #11 SMP PREEMPT Fri Jul 26 16:57:13 IST 2013 CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache Machine: Phytec Memory policy: ECC disabled, Data cache writealloc CPU identified as i.MX6Q, silicon rev 1.2 PERCPU: Embedded 7 pages/cpu @c13ec000 s6592 r8192 d13888 u32768 Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 215040 Kernel command line: console=ttymxc3,115200 androidboot.hardware=freescale androidboot.console=ttymxc3  init=/init vmalloc=256M video=mxcfb1:dev=ldb,Primeview-PM070WL4,bpp =16 fbmem=10M vt.global_cursor_default=0 consoleblank=0 board_mx6q_phyflex.csi0=none board_mx6q_phyflex.csi1=none video=mxcfb1:off video=mxcfb2:off ip=none root=/dev/mmcbl k0p2 rootfstype=ext4 noinitrd rootwait mtdparts=n25q128:512k(barebox)ro,128k(bareboxenv),2M(splash),-(kernel);gpmi-nand:512k(barebox)ro,128k(bareboxenv),2M(splash),8M(kern el),-(root) 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: 592MB 256MB = 848MB total Memory: 847036k/847036k available, 201540k reserved, 311296K highmem Virtual kernel memory layout:     vector  : 0xffff0000 - 0xffff1000   (   4 kB)     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)     DMA     : 0xfbe00000 - 0xffe00000   (  64 MB)     vmalloc : 0xe2800000 - 0xf2000000   ( 248 MB)     lowmem  : 0xc0000000 - 0xe2000000   ( 544 MB)     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)     modules : 0xbf000000 - 0xbfe00000   (  14 MB)       .init : 0xc0008000 - 0xc0047000   ( 252 kB)       .text : 0xc0047000 - 0xc09dbebc   (9812 kB)       .data : 0xc09dc000 - 0xc0a59f18   ( 504 kB)        .bss : 0xc0a59f3c - 0xc0be2d40   (1572 kB) Preemptible hierarchical RCU implementation. NR_IRQS:624 MXC GPIO hardware sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms arm_max_freq=1GHz MXC_Early serial console at MMIO 0x21f0000 (options '115200') bootconsole [ttymxc3] enabled Console: colour dummy device 80x30 Calibrating delay loop... 789.70 BogoMIPS (lpj=3948544) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 Initializing cgroup subsys debug Initializing cgroup subsys cpuacct Initializing cgroup subsys freezer 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 (3158.83 BogoMIPS). devtmpfs: initialized print_constraints: dummy: NET: Registered protocol family 16 print_constraints: vddpu: 725 <--> 1300 mV at 1100 mV fast normal print_constraints: vddcore: 725 <--> 1300 mV at 1100 mV fast normal print_constraints: vddsoc: 725 <--> 1300 mV at 1100 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 imx_add_mxc_pwm:pdata=  (null) imx_add_mxc_pwm:pdata=  (null) imx_add_mxc_pwm:pdata=  (null) imx_add_mxc_pwm:pdata=  (null) 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 mxs-dma mxs-dma-apbh: initialized print_constraints: vmmc: 3300 mV print_constraints: IOVDD: 3300 mV print_constraints: DVDD: 1800 mV print_constraints: AVDD: 3300 mV print_constraints: DRVDD: 3300 mV vgaarb: loaded i2c-core: driver [da9063] using legacy suspend method i2c-core: driver [da9063] using legacy resume method SCSI subsystem initialized spi_imx imx6q-ecspi.2: 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 $ i2c-gpio i2c-gpio.3: using pins 109 (SDA) and 108 (SCL) print_constraints: VDDCORE: 730 <--> 1280 mV at 1300 mV at 2000 mA normal print_constraints: VDDSOC: 730 <--> 1280 mV at 1300 mV at 500 mA normal print_constraints: VDD_DDR3: 1500 mV at 2000 mA print_constraints: VDD_3V3: 3300 mV at 1500 mA print_constraints: VDD_BUCKMEM: 3300 mV at 1500 mA print_constraints: VDD_ETH: 1200 mV at 3000 mA print_constraints: VDD_ETH_IO: 3300 mV print_constraints: VDD_MX6_SNVS: 3300 mV print_constraints: VDD_3V3_PMIC_IO: 3300 mV print_constraints: VDD_SD0: 3300 mV print_constraints: VDD_SD1: 3300 mV print_constraints: VDD_MX6_HIGH: 3000 mV da9063 0-0058: Device detected DA9063 max7300: probe of 0-0040 failed with error -5 stmpe 1-0041: stmpe811 detected, chip id: 0x811 stmpe 2-0041: failed to read regs 0x0: -5 stmpe: probe of 2-0041 failed with error -5 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. Bluetooth: Core ver 2.16 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 Switching to clocksource mxc_timer1 NET: Registered protocol family 2 IP route cache hash table entries: 32768 (order: 5, 131072 bytes) TCP established hash table entries: 131072 (order: 8, 1048576 bytes) TCP bind hash table entries: 65536 (order: 7, 786432 bytes) TCP: Hash tables configured (established 131072 bind 65536) TCP reno registered UDP hash table entries: 512 (order: 2, 16384 bytes) UDP-Lite hash table entries: 512 (order: 2, 16384 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. Static Power Management for Freescale i.MX6 wait mode is enabled for i.MX6 cpaddr = e2880000 suspend_iram_base=e291c000 PM driver module loaded link up failed, DB_R0:0x00913b00, DB_R1:0x08200000! IMX PCIe port: link down with power supply 0! IMX usb wakeup probe add wake up source irq 75 IMX usb wakeup probe cpu regulator mode:ldo_bypass _regulator_get: get() with no identifier mx6_cpu_regulator_init: failed to get pu regulator i.MXC CPU frequency driver highmem bounce pool size: 64 pages ashmem: initialized NTFS driver 2.1.30 [Flags: R/O]. JFFS2 version 2.2. (NAND) �© 2001-2006 Red Hat, Inc. fuse init (API version 7.16) msgmni has been set to 1046 NET: Registered protocol family 38 cryptodev: driver loaded. io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) mxc_sdc_fb mxc_sdc_fb.0: register mxc display driver ldb _regulator_get: get() with no identifier ldb_clk to di clk: ldb_di0_clk -> ipu1_di0_clk mxc_sdc_fb mxc_sdc_fb.1: mxcfb1 is turned off! imx-sdma imx-sdma: loaded firmware 1.1 imx-sdma imx-sdma: initialized Serial: IMX driver imx-uart.2: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX imx-uart.3: ttymxc3 at MMIO 0x21f0000 (irq = 61) is a IMX console [ttymxc3] enabled, bootconsole disabled console [ttymxc3] enabled, bootconsole disabled loop: module loaded at24 0-0050: 4096 byte 24c32 EEPROM, writable, 8 bytes/write at24 2-0052: 512 byte 24c04 EEPROM, writable, 16 bytes/write No sata disk. m25p80 spi2.0: unrecognized id n25q128 m25p80 spi2.0: unrecognized JEDEC id 20ba18 GPIO NAND driver, �© 2004 Simtec Electronics NAND device: Manufacturer ID: 0xec, Chip ID: 0xd3 (Samsung NAND 1GiB 3,3V 8-bit) 5 cmdlinepart partitions found on MTD device gpmi-nand Creating 5 MTD partitions on "gpmi-nand": 0x000000000000-0x000000080000 : "barebox" 0x000000080000-0x0000000a0000 : "bareboxenv" 0x0000000a0000-0x0000002a0000 : "splash" 0x0000002a0000-0x000000aa0000 : "kernel" 0x000000aa0000-0x000040000000 : "root" GPMI NAND driver registered. (IMX) vcan: Virtual CAN interface driver CAN device driver interface flexcan netdevice driver flexcan imx6q-flexcan.0: device registered (reg_base=e29b0000, irq=142) FEC Ethernet Driver fec_enet_mii_bus: probed PPP generic driver version 2.4.2 PPP Deflate Compression module registered PPP BSD Compression module registered PPP MPPE Compression module registered NET: Registered protocol family 24 PPTP driver version 0.8.5 tun: Universal TUN/TAP device driver, 1.6 tun: (C) 1999-2004 Max Krasnyansky <[email protected]> ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1 fsl-ehci fsl-ehci.0: irq 75, io base 0x02184000 fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00 usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: Freescale On-Chip EHCI Host Controller usb usb1: Manufacturer: Linux 3.0.35-gcbaa4e0-dirty ehci_hcd usb usb1: SerialNumber: fsl-ehci.0 hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected add wake up source irq 72 fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2 fsl-ehci fsl-ehci.1: irq 72, io base 0x02184200 fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00 usb usb2: New USB device found, idVendor=1d6b, idProduct=0002 usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb2: Product: Freescale On-Chip EHCI Host Controller usb usb2: Manufacturer: Linux 3.0.35-gcbaa4e0-dirty ehci_hcd usb usb2: SerialNumber: fsl-ehci.1 hub 2-0:1.0: USB hub found hub 2-0:1.0: 1 port detected usbcore: registered new interface driver cdc_acm cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. ARC USBOTG Device Controller driver (1 August 2005) android_usb gadget: Mass Storage Function, version: 2009/09/11 android_usb gadget: Number of LUNs=1 lun0: LUN: removable file: (no medium) Gadget Android: controller 'fsl-usb2-udc' not recognized android_usb gadget: android_usb ready Suspend udc for OTG auto detect fsl-usb2-udc: bind to driver android_usb mousedev: PS/2 mouse device common for all mice input: stmpe-ts as /devices/virtual/input/input0 i2c-core: driver [isl29023] using legacy suspend method i2c-core: driver [isl29023] using legacy resume method using rtc device, da9063-rtc, for alarms da9063-rtc da9063-rtc: rtc core: registered da9063-rtc as rtc0 da9063-rtc da9063-rtc: Failed to request ALARM IRQ. rtc-pcf8563 1-0051: chip found, driver version 0.4.3 rtc-pcf8563 1-0051: rtc core: registered rtc-pcf8563 as rtc1 snvs_rtc snvs_rtc.0: rtc core: registered snvs_rtc as rtc2 i2c /dev entries driver Linux video capture interface: v2.00 mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video16 mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video17 usbcore: registered new interface driver uvcvideo USB Video Class driver (v1.1.0) Driver for 1-wire Dallas network protocol. i2c-core: driver [mag3110] using legacy suspend method i2c-core: driver [mag3110] using legacy resume method imx2-wdt imx2-wdt.0: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=1) Bluetooth: HCI UART driver ver 2.2 Bluetooth: HCILL protocol initialized sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman mmc0: SDHCI controller on platform [sdhci-esdhc-imx.2] using DMA w1_master_driver w1 bus master: Family 43 for 43.000000436e56.c7 is not registered. mmc1: SDHCI controller on platform [sdhci-esdhc-imx.1] using DMA VPU initialized mxc_asrc registered revserved_memory_account:viv_gpu registerd Thermal calibration data is 0x5914c97d Thermal sensor with ratio = 185 w1_master_driver w1 bus master: Family 43 for 43.0000003be6e7.b6 is not registered. Anatop Thermal registered as thermal_zone0 anatop_thermal_probe: default cooling device is cpufreq! HDMI CEC initialized leds-pca953x 1-0062: setting platform data usbcore: registered new interface driver usbhid usbhid: USB HID core driver usb 2-1: new high speed USB device number 2 using fsl-ehci logger: created 256K log 'log_main' logger: created 256K log 'log_events' logger: created 256K log 'log_radio' logger: created 256K log 'log_system' usbcore: registered new interface driver snd-usb-audio mxc_hdmi_soc mxc_hdmi_soc.0: MXC HDMI Audio imx-hdmi-soc-dai imx-hdmi-soc-dai.0: Failed: Load HDMI-video first. tlv320aic3x-codec 1-0018: asoc: failed to add kcontrol Left Line1R Mux tlv320aic3x-codec 1-0018: asoc: failed to add kcontrol Left Line1L Mux asoc: tlv320aic3x-hifi <-> imx-ssi.1 mapping ok Initialize HDMI-audio failed. Load HDMI-video first! ALSA device list:   #0: imx_tlv320aic3007-audio oprofile: using arm/armv7-ca9 GACT probability NOT on Mirror/redirect action on u32 classifier     Actions configured Netfilter messages via NETLINK v0.30. nf_conntrack version 0.5.0 (13234 buckets, 52936 max) ctnetlink v0.93: registering with nfnetlink. NF_TPROXY: Transparent proxy support initialized, version 4.1.0 NF_TPROXY: Copyright (c) 2006-2007 BalaBit IT Ltd. xt_time: kernel timezone is -0000 IPv4 over IPv4 tunneling driver GRE over IPv4 demultiplexor driver ip_tables: (C) 2000-2006 Netfilter Core Team arp_tables: (C) 2002 David S. Miller TCP cubic registered NET: Registered protocol family 10 Mobile IPv6 ip6_tables: (C) 2000-2006 Netfilter Core Team IPv6 over IPv4 tunneling driver NET: Registered protocol family 17 mmc0: new SD card at address e624 NET: Registered protocol family 15 can: controller area network core (rev 20090105 abi 😎 NET: Registered protocol family 29 mmcblk0: mmc0:e624 SU02G 1.84 GiB mmcblk0: p1 p2 p3 can: raw protocol (rev 20090105) can: broadcast manager protocol (rev 20090105 t) 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: HIDP (Human Interface Emulation) ver 1.2 L2TP core driver, V2.0 PPPoL2TP kernel driver, V2.0 L2TP IP encapsulation support (L2TPv3) L2TP netlink interface L2TP ethernet pseudowire support (L2TPv3) lib80211: common routines for IEEE802.11 drivers VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 Bus freq driver module loaded Bus freq driver Enabled mxc_dvfs_core_probe usb 2-1: New USB device found, idVendor=0451, idProduct=8042 usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 hub 2-1:1.0: USB hub found hub 2-1:1.0: 4 ports detected DVFS driver module loaded regulator_init_complete: VDD_MX6_HIGH: incomplete constraints, leaving on regulator_init_complete: VDD_SD1: incomplete constraints, leaving on regulator_init_complete: VDD_SD0: incomplete constraints, leaving on regulator_init_complete: VDD_3V3_PMIC_IO: incomplete constraints, leaving on regulator_init_complete: VDD_MX6_SNVS: incomplete constraints, leaving on regulator_init_complete: VDD_ETH_IO: incomplete constraints, leaving on regulator_init_complete: VDD_ETH: incomplete constraints, leaving on regulator_init_complete: VDD_3V3: incomplete constraints, leaving on regulator_init_complete: VDD_DDR3: incomplete constraints, leaving on regulator_init_complete: VDDSOC: incomplete constraints, leaving on regulator_init_complete: VDDCORE: incomplete constraints, leaving on regulator_init_complete: DRVDD: incomplete constraints, leaving on regulator_init_complete: AVDD: incomplete constraints, leaving on regulator_init_complete: DVDD: incomplete constraints, leaving on regulator_init_complete: IOVDD: incomplete constraints, leaving on da9063-rtc da9063-rtc: setting system clock to 2000-01-01 00:01:34 UTC (946684894) EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) VFS: Mounted root (ext4 filesystem) on device 179:2. devtmpfs: mounted Freeing init memory: 252K init (1): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instead. init: cannot open '/initlogo.rle' EXT4-fs (mmcblk0p2): re-mounted. Opts: (null) init: Unable to open persistent property directory /data/property errno: 2 init: using deprecated syntax for specifying property 'ro.product.manufacturer', use ${name} instead init: using deprecated syntax for specifying property 'ro.product.model', use ${name} instead init: using deprecated syntax for specifying property 'ro.serialno', use ${name} instead init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery' android_usb: already disabled android_usb: already disabled mtp_bind_config root@android:/ # request_suspend_state: wakeup (3->0) at 8290682004 (2000-01-01 00:01:39.585311336 UTC) init: untracked pid 2494 exited request_suspend_state: wakeup (0->0) at 8890367671 (2000-01-01 00:01:40.184997336 UTC) init: untracked pid 2543 exited root@android:/ # root@android:/ # root@android:/ # root@android:/ # root@android:/ # root@android:/ # lrequest_suspend_state: wakeup (0->0) at 14500371003 (2000-01-01 00:01:45.795000669 UTC) init: untracked pid 2551 exited root@android:/ # logcat                                                       --------- beginning of /dev/log/main I/installd( 2495): installd firing up E/cutils  ( 2495): Failed to read /data/.layout_version: No such file or directory E/installd( 2495): Could not create directories; exiting. --------- beginning of /dev/log/system I/Vold    ( 2489): Vold 2.1 (the revenge) firing up D/Vold    ( 2489): Volume udisk state changing -1 (Initializing) -> 0 (No-Media) D/Vold    ( 2489): Volume extsd state changing -1 (Initializing) -> 0 (No-Media) D/Vold    ( 2489): Volume sdcard state changing -1 (Initializing) -> 0 (No-Media) D/Vold    ( 2489): Volume sdcard state changing 0 (No-Media) -> 2 (Pending) D/Vold    ( 2489): Volume sdcard state changing 2 (Pending) -> 1 (Idle-Unmounted) I/SurfaceFlinger( 2491): SurfaceFlinger is starting I/SurfaceFlinger( 2491): SurfaceFlinger's main thread ready to run. Initializing graphics H/W... D/libEGL  ( 2491): loaded /system/lib/egl/libEGL_VIVANTE.so D/libEGL  ( 2491): loaded /system/lib/egl/libGLESv1_CM_VIVANTE.so D/libEGL  ( 2491): loaded /system/lib/egl/libGLESv2_VIVANTE.so W/imx6.gralloc( 2491): using (fd=15) W/imx6.gralloc( 2491): id           = DISP3 BG W/imx6.gralloc( 2491): xres         = 800 px W/imx6.gralloc( 2491): yres         = 480 px W/imx6.gralloc( 2491): xres_virtual = 800 px W/imx6.gralloc( 2491): yres_virtual = 1536 px W/imx6.gralloc( 2491): bpp          = 16 W/imx6.gralloc( 2491): r            = 11:5 W/imx6.gralloc( 2491): g            =  5:6 W/imx6.gralloc( 2491): b            =  0:5 W/imx6.gralloc( 2491): width        = 127 mm (160.000000 dpi) W/imx6.gralloc( 2491): height       = 76 mm (160.421051 dpi) W/imx6.gralloc( 2491): refresh rate = 35.70 Hz I/FslHwcomposer( 2491): fb0 is ldb I/FslHwcomposer( 2491):  device I/FslHwcomposer( 2491): fb1 is overlay device W/FslHwcomposer( 2491): open /sys/class/graphics/fb2 failed W/FslHwcomposer( 2491): open /sys/class/graphics/fb3 failed W/FslHwcomposer( 2491): open /sys/class/graphics/fb4 failed W/FslHwcomposer( 2491): open /sys/class/graphics/fb5 failed I/FslHwcomposer( 2491): hwcomposer: open framebuffer fb0 I/v_hwc   ( 2491): Detected display /dev/graphics/fb0 I/v_hwc   ( 2491): xres         = 800 px I/v_hwc   ( 2491): yres         = 480 px I/v_hwc   ( 2491): xres_virtual = 800 px I/v_hwc   ( 2491): yres_virtual = 1536 px I/v_hwc   ( 2491): width        = -1 mm (0.0 dpi) I/v_hwc   ( 2491): height       = -1 mm (0.0 dpi) I/v_hwc   ( 2491): refresh rate = 35.0 Hz E/v_hwc   ( 2491): open /dev/graphics/fb0 failed I/v_hwc   ( 2491): Vivante HWComposer v2.4 I/v_hwc   ( 2491): Device:               0x40039008 I/v_hwc   ( 2491): Separated 2D:         YES I/v_hwc   ( 2491): 2D PE20:              YES I/v_hwc   ( 2491): Multi-source blit:    NO I/v_hwc   ( 2491): Multi-source blit Ex: NO I/v_hwc   ( 2491): OPF/YUV blit/Tiling : NO I/v_hwc   ( 2491): Filter stretch      : NO I/FslHwcomposer( 2491): hwc_device_open,367 I/SurfaceFlinger( 2491): Using composer version 1.1 W/SurfaceFlinger( 2491): no suitable EGLConfig found, trying without EGL_FRAMEBUFFER_TARGET_ANDROID E/Trace   ( 2491): error opening trace file: No such file or directory (2) E/SurfaceFlinger( 2491): HWComposer: framebufferTarget is null E/SurfaceFlinger( 2491): HWComposer: framebufferTarget is null E/SurfaceFlinger( 2491): HWComposer: framebufferTarget is null E/SurfaceFlinger( 2491): HWComposer: framebufferTarget is null I/SurfaceFlinger( 2491): EGL informations: I/SurfaceFlinger( 2491): vendor    : Android I/SurfaceFlinger( 2491): version   : 1.4 Android META-EGL I/SurfaceFlinger( 2491): extensions: EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL _ANDROID_image_native_buffer I/SurfaceFlinger( 2491): Client API: OpenGL_ES I/SurfaceFlinger( 2491): EGLSurface: 8-8-8-8, config=0x4b7d5138 I/SurfaceFlinger( 2491): OpenGL ES informations: I/SurfaceFlinger( 2491): vendor    : Vivante Corporation I/SurfaceFlinger( 2491): renderer  : GC2000 Graphics Engine I/SurfaceFlinger( 2491): version   : OpenGL ES-CM 1.1 I/SurfaceFlinger( 2491): extensions: GL_EXT_debug_marker GL_OES_blend_equation_separate GL_OES_blend_func_separate GL_OES_blend_subtract GL_OES_byte_coordinates GL_OES_com pressed_ETC1_RGB8_texture GL_OES_compressed_paletted_texture GL_OES_draw_texture GL_OES_extended_matrix_palette GL_OES_fixed_point GL_OES_framebuffer_object GL_OES_matrix_ get GL_OES_matrix_palette GL_OES_point_size_array GL_OES_point_sprite GL_OES_query_matrix GL_OES_read_format GL_OES_single_precision GL_OES_stencil_wrap GL_OES_texture_cub e_map GL_OES_texture_mirrored_repeat GL_OES_EGL_image GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_stencil1 GL_OES_stencil4 GL_OES_stencil8 GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_packed_depth_stencil GL_EXT_texture_format_BGRA8888 GL_IMG_read_format GL_IMG_user_clip _plane GL_APPLE_texture_2D_limited_npot GL_EXT_texture_lod_bias GL_EXT_blend_minmax GL_EXT_read_format_bgra GL_EXT_multi_draw_arrays GL_OES_EGL_sync GL_APPLE_texture_forma t_BGRA8888 GL_APPLE_te I/SurfaceFlinger( 2491): GL_MAX_TEXTURE_SIZE = 8192 I/SurfaceFlinger( 2491): GL_MAX_VIEWPORT_DIMS = 8192 x 8192 D/AndroidRuntime( 2492): D/AndroidRuntime( 2492): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2492): CheckJNI is OFF I/AndroidRuntime( 2492): JNI options: '-Xjniopts:warnonly' D/SurfaceFlinger( 2491): Screen acquired, type=0 flinger=0x404f0318 D/libEGL  ( 2531): loaded /system/lib/egl/libEGL_VIVANTE.so D/libEGL  ( 2531): loaded /system/lib/egl/libGLESv1_CM_VIVANTE.so D/libEGL  ( 2531): loaded /system/lib/egl/libGLESv2_VIVANTE.so E/Trace   ( 2531): error opening trace file: No such file or directory (2) E/BufferQueue( 2491): [BootAnimation] dequeueBuffer: can't dequeue multiple buffers without setting the buffer count I/mediaserver( 2494): ServiceManager: 0x40a56ef8 I/AudioFlinger( 2494): Using default 3000 mSec as standby time. I/CameraService( 2494): CameraService started (pid=2494) I/v_hwc   ( 2491): Display(0x4010c008) detected: format=306 800x480 I/v_hwc   ( 2491): Display buffer(0x40050de0) detected: physical=0x2f800000 I/v_hwc   ( 2491): Display buffer(0x40050e08) detected: physical=0x2f8bb800 I/FslCameraHAL( 2494): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2494): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2494): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/v_hwc   ( 2491): Display buffer(0x400d57a8) detected: physical=0x2f977000 I/AudioPolicyManagerBase( 2494): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2494): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2494): out rate 44100 W/audio_hw_primary( 2494): in rate 44100, channels 1 format 0 I/AudioFlinger( 2494): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2494): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2494): opened out stream...1086925552 I/AudioFlinger( 2494): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2494): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2494): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional D/dalvikvm( 2492): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2492): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2492): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2492): Added shared lib libnativehelper.so 0x0 I/SamplingProfilerIntegration( 2492): Profiling disabled. I/Zygote  ( 2492): Preloading classes... D/dalvikvm( 2492): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 1ms+0ms, total 3ms W/Environment( 2492): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2492): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2492): Shutting down VM W/dalvikvm( 2492): threadid=1: thread exiting with uncaught exception (group=0x4143c930) I/installd( 2542): installd firing up E/cutils  ( 2542): Failed to read /data/.layout_version: No such file or directory E/installd( 2542): Could not create directories; exiting. I/ServiceManager( 2488): service 'media.camera' died I/ServiceManager( 2488): service 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died D/AndroidRuntime( 2544): D/AndroidRuntime( 2544): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2544): CheckJNI is OFF I/AndroidRuntime( 2544): JNI options: '-Xjniopts:warnonly' D/dalvikvm( 2544): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2544): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2544): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2544): Added shared lib libnativehelper.so 0x0 I/mediaserver( 2543): ServiceManager: 0x40a68ef8 I/AudioFlinger( 2543): Using default 3000 mSec as standby time. I/CameraService( 2543): CameraService started (pid=2543) I/FslCameraHAL( 2543): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2543): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2543): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2543): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2543): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2543): out rate 44100 W/audio_hw_primary( 2543): in rate 44100, channels 1 format 0 I/AudioFlinger( 2543): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2543): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2543): opened out stream...1086774000 I/AudioFlinger( 2543): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2543): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2543): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional I/SamplingProfilerIntegration( 2544): Profiling disabled. I/Zygote  ( 2544): Preloading classes... D/dalvikvm( 2544): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 1ms+0ms, total 3ms W/Environment( 2544): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2544): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2544): Shutting down VM W/dalvikvm( 2544): threadid=1: thread exiting with uncaught exception (group=0x40b1a930) I/ServiceManager( 2488): service 'media.camera' died I/ServiceManager( 2488): service 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died I/mediaserver( 2551): ServiceManager: 0x41f7b000 I/AudioFlinger( 2551): Using default 3000 mSec as standby time. I/CameraService( 2551): CameraService started (pid=2551) I/FslCameraHAL( 2551): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2551): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2551): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2551): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2551): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2551): out rate 44100 W/audio_hw_primary( 2551): in rate 44100, channels 1 format 0 I/AudioFlinger( 2551): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2551): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2551): opened out stream...1106785632 I/AudioFlinger( 2551): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2551): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2551): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional I/installd( 2562): installd firing up E/cutils  ( 2562): Failed to read /data/.layout_version: No such file or directory E/installd( 2562): Could not create directories; exiting. D/AndroidRuntime( 2561): D/AndroidRuntime( 2561): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2561): CheckJNI is OFF I/AndroidRuntime( 2561): JNI options: '-Xjniopts:warnonly' D/dalvikvm( 2561): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2561): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2561): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2561): Added shared lib libnativehelper.so 0x0 I/SamplingProfilerIntegration( 2561): Profiling disabled. I/Zygote  ( 2561): Preloading classes... D/dalvikvm( 2561): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 0ms+1ms, total 3ms W/Environment( 2561): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2561): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2561): Shutting down VM W/dalvikvm( 2561): threadid=1: thread exiting with uncaught exception (group=0x4200b930) I/ServiceManager( 2488): service 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died I/ServiceManager( 2488): service 'media.camera' died I/mediaserver( 2566): ServiceManager: 0x417df000 I/AudioFlinger( 2566): Using default 3000 mSec as standby time. I/CameraService( 2566): CameraService started (pid=2566) I/FslCameraHAL( 2566): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2566): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2566): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2566): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2566): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2566): out rate 44100 W/audio_hw_primary( 2566): in rate 44100, channels 1 format 0 I/AudioFlinger( 2566): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2566): open output stream drequest_suspend_state: wakeup (0->0) at 19200353004 (2000-01-01 00:01:50.494982670 UTC) evices 2, format 1, channels 3, sinit: untracked pid 2566 exited ample_rate 48000, flag 2 W/audio_hw_primary( 2566): opened out stream...1098806624 I/AudioFlinger( 2566): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2566): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2566): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional I/v_hwc   ( 2491): vsync thread exit: callback procs not registered. I/installd( 2572): installd firing up E/cutils  ( 2572): Failed to read /data/.layout_version: No such file or directory E/installd( 2572): Could not create directories; exiting. D/AndroidRuntime( 2571): D/AndroidRuntime( 2571): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2571): CheckJNI is OFF I/AndroidRuntime( 2571): JNI options: '-Xjniopts:warnonly' D/dalvikvm( 2571): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2571): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2571): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2571): Added shared lib libnativehelper.so 0x0 I/SamplingProfilerIntegration( 2571): Profiling disabled. I/Zygote  ( 2571): Preloading classes... D/dalvikvm( 2571): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 0ms+0ms, total 2ms W/Environment( 2571): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2571): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2571): Shutting down VM W/dalvikvm( 2571): threadid=1: thread exiting with uncaught exception (group=0x412e5930) I/ServiceManager( 2488): service 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died I/ServiceManager( 2488): service 'media.camera' died I/mediaserver( 2576): ServiceManager: 0x41724000 I/AudioFlinger( 2576): Using default 3000 mSec as standby time. I/CameraService( 2576): CameraService started (pid=2576) I/FslCameraHAL( 2576): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2576): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2576): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2576): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2576): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2576): out rate 44100 W/audio_hw_primary( 2576): in rate 44100, channels 1 format 0 I/AudioFlinger( 2576): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2576): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2576): opened out stream...1098040672 I/AudioFlinger( 2576): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2576): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2576): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional I/installd( 2581): installd firing up E/cutils  ( 2581): Failed to read /data/.layout_version: No such file or directory E/installd( 2581): Could not create directories; exiting. D/AndroidRuntime( 2580): D/AndroidRuntime( 2580): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2580): CheckJNI is OFF I/AndroidRuntime( 2580): JNI options: '-Xjniopts:warnonly' D/dalvikvm( 2580): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2580): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2580): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2580): Added shared lib libnativehelper.so 0x0 I/SamplingProfilerIntegration( 2580): Profiling disabled. I/Zygote  ( 2580): Preloading classes... D/dalvikvm( 2580): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 0ms+0ms, total 3ms W/Environment( 2580): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2580): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2580): Shutting down VM W/dalvikvm( 2580): threadid=1: thread exiting with uncaught exception (group=0x40e62930) request_suspend_state: wakeup (0->0) at 23810412672 (2000-01-01 00:01:55.105042004 UTC) I/ServiceManager( 2488): service init: untracked pid 2576 exited 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died I/ServiceManager( 2488): service 'media.camera' died I/mediaserver( 2585): ServiceManager: 0x40bcdfb0 I/AudioFlinger( 2585): Using default 3000 mSec as standby time. I/CameraService( 2585): CameraService started (pid=2585) I/FslCameraHAL( 2585): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2585): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2585): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2585): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2585): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2585): out rate 44100 W/audio_hw_primary( 2585): in rate 44100, channels 1 format 0 I/AudioFlinger( 2585): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2585): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2585): opened out stream...1074431624 I/AudioFlinger( 2585): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2585): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2585): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional I/installd( 2590): installd firing up E/cutils  ( 2590): Failed to read /data/.layout_version: No such file or directory E/installd( 2590): Could not create directories; exiting. D/AndroidRuntime( 2589): D/AndroidRuntime( 2589): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2589): CheckJNI is OFF I/AndroidRuntime( 2589): JNI options: '-Xjniopts:warnonly' D/dalvikvm( 2589): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2589): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2589): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2589): Added shared lib libnativehelper.so 0x0 I/SamplingProfilerIntegration( 2589): Profiling disabled. I/Zygote  ( 2589): Preloading classes... D/dalvikvm( 2589): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 0ms+1ms, total 3ms W/Environment( 2589): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2589): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2589): Shutting down VM W/dalvikvm( 2589): threadid=1: thread exiting with uncaught exception (group=0x40ef1930) request_suspend_state: wakeup (0->0) at 29440367339 (2000-01-01 00:02:00.734997005 UTC) init: untracked pid 2585 exited I/ServiceManager( 2488): service 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died I/ServiceManager( 2488): service 'media.camera' died I/mediaserver( 2594): ServiceManager: 0x40b80fb0 I/AudioFlinger( 2594): Using default 3000 mSec as standby time. I/CameraService( 2594): CameraService started (pid=2594) I/FslCameraHAL( 2594): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2594): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2594): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2594): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2594): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2594): out rate 44100 W/audio_hw_primary( 2594): in rate 44100, channels 1 format 0 I/AudioFlinger( 2594): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2594): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2594): opened out stream...1074105088 I/AudioFlinger( 2594): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2594): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2594): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional The above issue is resolved now i'm able to get the home screen, but the display is divided in to 2, the actual left half shifted to right and actual right half shifted to left. and even the display color changed to dark yellow and the image latency is too low. I'll update with the images(screenshots) soon. This document was generated from the following discussion: help in porting Android Jb to imx6q custom board
記事全体を表示
Board : i.MX93 EVK BSP: imx L6.1.1-1.0.0 Gui guider: 1.6.1   We have a GUI software tool called GUI Guider. It is a user-friendly graphical user interface development tool from NXP that enables the rapid development of high quality displays with the open-source LVGL graphics library. The GUI demo can run on the i.MX93EVK board. (https://www.nxp.com/design/software/development-software/gui-guider:GUI-GUIDER)   This document will show you an example how the buttons(gpio) on the EVK to interacting with the GUI. Basically, customer could use the same method to use the gpio pins to control everything.   On the i.MX93 EVK board, there are two buttons BTN1 and BTN2. They are connected to GPIO IO23 and GPIO IO24. Below is the schematic.    Buttons on the board.      SW1005 on the board   In the EVK's device tree file, need to change the pinmux for the two buttons like this: pinctrl_spdif: spdifgrp { fsl,pins = < // MX93_PAD_GPIO_IO22__SPDIF_IN 0x31e // MX93_PAD_GPIO_IO23__SPDIF_OUT 0x31e MX93_PAD_GPIO_IO23__GPIO2_IO23 0x31e MX93_PAD_GPIO_IO24__GPIO2_IO24 0x31e >; note: all the pins are defined in imx93-pinfunc.h.   For getting the input value of the buttons in user's space, I use the sysfs gpio. Build the imx-image-multimedia image first and then select the GPIO_SYSFS in kernel's menuconfig.   $ DISTRO=fsl-imx-xwayland MACHINE=imx93evk source imx-setup-release.sh -b build-xwayland $ bitbake imx-image-multimedia   After the build completed, go to the kernel's menuconfig to select the GPIO sysfs. $ bitbake linux-imx -c menuconfig [*] General setup-> Configure standard kernel features (expert users) [*] Device Drivers->GPIO Support-> /sys/class/gpio/... (sysfs interface)   Build the whole image again by "$ bitbake imx-image-multimedia".   Using the UUU to program the image to the EMMC on the EVK board. uuu -b emmc_all imx-image-multimedia-imx93evk.rootfs.wic.zst   Connect the LVDS to the board. Use the corresponding dtb to boot the board. In u-boot, set the dtb file. => setenv fdtfile imx93-11x11-evk-boe-wxga-lvds-panel.dtb => saveenv   Then restart the board. After the board boot up, it will look like below.     You need to calibrate the LVDS touch screen before it can normally use. Please use this command: $ weston-touch-calibrator LVDS-1     Now, build the GUI guider example. I use the Air Conditioner example. Download the GUI guider from the gui-guider web page: https://www.nxp.com/design/software/development-software/gui-guider:GUI-GUIDER   Follow the steps from the below web page to build the i.MX BSP and the gui example code. https://docs.nxp.com/bundle/GUIGUIDERUG-1.6.1/page/topics/yocto.html   After the gui-guider build completed, use the 'scp' command to transfer the gui_guider executable file to the board. Execute the command on your host PC like this: $ scp bld-imx93evk/tmp/work/armv8a-poky-linux/gui-guider/1.6.0-r0/image/usr/bin/gui_guider root@<Your Board IP address>:/ Note: You could use a router to connect your board and your host PC. They are on the same network so could use the 'scp' command to transfer the file to your board.   On your board, type the following commands to execute the gui. $ chmod 755 gui_guider $ ./gui_guider &   Then the GUI is running like this:   Now, let me explain how to find out the gpio number. Type the following command to show the mapping addresses of gpio. root@imx93evk:/# cat /sys/kernel/debug/gpio gpiochip3: GPIOs 0-31, parent: platform/47400080.gpio, 47400080.gpio: gpiochip0: GPIOs 32-63, parent: platform/43810080.gpio, 43810080.gpio: gpiochip1: GPIOs 64-95, parent: platform/43820080.gpio, 43820080.gpio: gpio-64 ( |cd ) in hi IRQ ACTIVE LOW gpio-71 ( |regulator-usdhc2 ) out lo gpiochip2: GPIOs 96-127, parent: platform/43830080.gpio, 43830080.gpio: gpiochip6: GPIOs 472-477, parent: i2c/0-001a, wm8962, can sleep: gpiochip5: GPIOs 478-487, parent: platform/adp5585-gpio.1.auto, adp5585-gpio, can sleep: gpio-479 ( |regulator-audio-pwr ) out hi gpio-483 ( |regulator-can2-stby ) out hi ACTIVE LOW gpio-486 ( |enable ) out hi gpiochip4: GPIOs 488-511, parent: i2c/1-0022, 1-0022, can sleep: gpio-492 ( |Headphone detection ) in lo IRQ gpio-501 ( |? ) out hi gpio-502 ( |regulator-vdd-12v ) out hi gpio-505 ( |reset ) out lo gpio-507 ( |? ) out hi gpio-508 ( |reset ) out lo ACTIVE LOW   The gpio pins of two buttons are GPIO2_IO23 and GPIO2_IO24. They are belongs to gpio2. In the imx93.dtsi, the gpio2's address is "gpio2: gpio@43810080". So, base on the information output from "/sys/kernel/debug/gpio", the gpio2 is mapping to "gpiochip0: GPIOs 32-63". So, the GPIO2_IO23 is 32+23=55, and the GPIO2_IO24 is 32+24=56.   To verify the gpio number is correct or not. We could do the following test. root@imx93evk:/# echo 55 > /sys/class/gpio/export root@imx93evk:/# echo in > /sys/class/gpio/gpio55/direction root@imx93evk:/# echo 56 > /sys/class/gpio/export root@imx93evk:/# echo in > /sys/class/gpio/gpio56/direction   Then, run these two commands to check the values. root@imx93evk:/# cat /sys/class/gpio/gpio55/value root@imx93evk:/# cat /sys/class/gpio/gpio55/value   When the button is not pressed, the value is 1. When press the button, the value is 0.  We could add the same in the GUI's custom.c. Open the GUI Guider software and add the code in the custom.c. /********************* * INCLUDES *********************/ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <fcntl.h> #include "lvgl.h" #include "custom.h" #include "ui_Aircon.h" #include "guider_customer_fonts.h" /********************** * STATIC VARIABLES **********************/ int fdbtn1,fdbtn2,fdgpio; int btn1_pressed; int btn2_pressed; char btn1_value, btn2_value; void custom_func(void) { fdbtn1 = open("/sys/class/gpio/gpio55/value", O_RDWR); fdbtn2 = open("/sys/class/gpio/gpio56/value", O_RDWR); read(fdbtn1, &btn1_value, 1); read(fdbtn2, &btn2_value, 1); if(btn1_value=='0' && btn1_pressed) { btn1_pressed=0; ui_aircon_update_temp(0, kAIRCON_TempUp); } if(btn1_value=='1') btn1_pressed=1; if(btn2_value=='0' && btn2_pressed) { btn2_pressed=0; ui_aircon_update_temp(0, kAIRCON_TempDown); } if(btn2_value=='1') btn2_pressed=1; close(fdbtn1); close(fdbtn2); } void custom_init(lv_ui *ui) { fdbtn1 = open("/sys/class/gpio/gpio55/value", O_WRONLY); if (fdbtn1 == -1) { fdgpio = open("/sys/class/gpio/export", O_WRONLY); write(fdgpio,"55",3); write(fdgpio,"56",3); close(fdgpio); fdgpio = open("/sys/class/gpio/gpio55/direction", O_WRONLY); write(fdgpio,"in",3); close(fdgpio); fdgpio = open("/sys/class/gpio/gpio56/direction", O_WRONLY); write(fdgpio,"in",3); close(fdgpio); } else close(fdbtn1); ... ... ... ...   Add the custom_func() in the custom.h. #ifndef __CUSTOM_H_ #define __CUSTOM_H_ #ifdef __cplusplus extern "C" { #endif #include "gui_guider.h" void custom_init(lv_ui *ui); + void custom_func(void);   Also, need to add the custom function() into the dead loop in main.c.   To modify the code, bld-imx93evk$ vim tmp/work/armv8a-poky-linux/gui-guider/1.6.0-r0/gui-guider-1.6.0/ports/linux/main.c   while(1) { + custom_func(); // <--- Add the custom function here. /* Periodically call the lv_task handler. * It could be done in a timer interrupt or an OS task too.*/ time_till_next = lv_wayland_timer_handler(); #if LV_USE_VIDEO video_play(&guider_ui); #endif /* Run until the last window closes */ if (!lv_wayland_window_is_open(NULL)) { break; }   Re-build the code after modified. bld-imx93evk$ bitbake gui-guider -c compile -f   Build the whole image again. bld-imx93evk$ bitbake gui-guider Then use the 'scp' command to transfer the new gui-guider file to the board.   Finally, you can use the buttons on the EVK board to set the temperature up and down.                          
記事全体を表示
i.MX8 series contains internal HiFi4 DSP. It is targeted for Audio related signal processing. SOF (Sound Open Firmware) is open source audio DSP firmware, driver and SDK. This document introduces basic theory about IIR/FIR digital filters, how to design IIR/FIR digital filters and the Equalizer filters implementation by SOF. After that, the document also describes how HiFi4 DSP MAC engine accelerate the EQ filters calculation.
記事全体を表示
This is a copy of the currently posted i.MX25 reference manual to be used to enter community comments.  Please feel free to add inline comments in this reference manual. You can point out where more information is needed or where existing information is incorrect.  You can also enter information in your comment that expands on existing information in the document, based on your experience with the device.  If you are pointing out that more information is needed in a paragraph or a section, please be very specific, not “needs more information”.  Your comments in this manual may help other members and will drive improvements in this and future documentation. Note: The doc viewer does not support going directly to a specified page.  Instead of manually paging through one page at a time, you can do a search on a string on a page such as "types of resets", or you can go to chapter links listed in the inline comments.  To do this, page down to the comments below the doc view, select "Inline Comments", sort the comments by "page", and then select the chapter you want to view.
記事全体を表示
Not all of imx6 boards can support SDR104, refer to imx6sx Reference Manual, BOOT_CFG1[2:3] = 11 is SDR104 normally hardware support 3.3v, but SDR104 only supports 1.8v. refer to the AI board schematic, you can find as below: For current yocto driver, which already supports sd3.0 standard, but kernel should change something to support this, for customer, one can refer to the source code in the yocto, the path:root/arch/arm/boot/dts/imx6sx-sdb.dts or path:root/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi For supporting SDR104, should change the dts file, because of 1.8v only, should remove no-1-8-v in the source code, then add vmmc-supply according to the dts file above. for example, based on the schematic, you can find: &usdhc1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc1>; cd-gpios = <&gpio1 1 0>; no-1-8-v; keep-power-in-suspend; enable-sdio-wakeup; status = "okay"; }; &usdhc3 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc3>; pinctrl-1 = <&pinctrl_usdhc3_100mhz>; pinctrl-2 = <&pinctrl_usdhc3_200mhz>; cd-gpios = <&gpio6 15 0>; wp-gpios = <&gpio1 13 0>; /* * Due to board issue, we can not use external regulator for card slot * by default since the card power is shared with card detect pullup. * Disabling the vmmc regulator will cause unexpected card detect * interrupts. * HW rework is needed to fix this isssue. Remove R695 first, then you * can open below line to enable the using of external regulator. * Then you will be able to power off the card during suspend. This is * especially needed for a SD3.0 card re-enumeration working on UHS mode * Note: reg_sd3_vmmc is also need to be enabled */ /* vmmc-supply = <&reg_sd3_vmmc>; */ keep-power-in-suspend; enable-sdio-wakeup; status = "okay"; }; reg_sd3_vmmc: sd3_vmmc{ compatible = "regulator-fixed"; regulator-name = "P3V3_SDa_SWITCHED"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&gpio7 8 GPIO_ACTIVE_HIGH>; enable-active-high; /* remove below line to enable this regulator */ status="disabled"; };
記事全体を表示
In defaut Linux BSP, NXP implemented LVDS to HDMI(it6263) and MIPI-DSI to HDMI(adv7535) bridge chip drivers. And these drivers need read the EDID from display, then apply the timing parameters to DRM driver. But for the use case that bridge chip -> Serializer -> Deserializer -> LCD Panel use case, there is no EDID. The attached are reference patches for such use case, it combined the bridge chip to panel directly, and no EDID is needed. The patches are tested on iMX8QXP MEK with bridge chip + panel mode, both of them can see the fb0 device under /sys/class/graphics/ folder, also can see card under  /sys/class/drm/. Display works fine with DTS selected 720P panel mode. [2020-06-24]: Add patches for L4.14.98 kernel: Android_Auto_P9.0.0_GA2.1.0_Kernel_No_EDID_IT6263.patch L4.14.98-iMX8QXP-MEK-ADV7535-MIPI-DSI-to-HDMI-bridge-chip-com.patch
記事全体を表示
What is LGVL? LVGL is a graphics library to run on devices with limited resources. LVGL is fully open-source and has no external dependencies, works with any modern MCU or MPU, and can be used with any (RT)OS or bare metal setup. https://lvgl.io/   What is Framebuffer? The Linux framebuffer (fbdev) is a Linux subsystem used to show graphics on a display, typically manipulated on the system console   How to write on the frame buffer? The device is listed on de device list typically "fb0" on iMX.   1. Stop the window manager (Weston in our BSP) $ systemctl stop weston   2. Write random data on the frame buffer with the next command: $ cat /dev/urandom > /dev/fb0   You should see colored pixels on the screen   3. Restart the window manager. $ systemctl start weston     Cross-compiling the application   1. On the host computer we will clone the LGVL repo: $ git clone https://github.com/lvgl/lv_port_linux_frame_buffer.git -b release/v8.2 $ cd lv_port_linux_frame_buffer $ git submodule update --init --recursive 2. Configure the screen resolution, rotation, and the touch input.       2.1 The resolution is configured in lines 33 and 34 of the main.c disp_drv.hor_res = 1080; disp_drv.ver_res = 1920;           2.2 Rotation configured is on lines 32 and 57 of main.c. disp_drv.sw_rotate = 3; lv_disp_set_rotation(NULL, LV_DISP_ROT_270);     2.3 The touch input is configured on line 450 of lv_drv_conf.h # define EVDEV_NAME "/dev/input/event2"   Note: In my case is on /dev/input/event2 to check the inputs use the command "evtest"   3. Compile the application using the command "make"   Note: To compile the application on your host computer you have to set the environment.   4. Share the file called "demo" with your board and execute it on the board with the command $ ./demo   Note: You have to stop the weston service to run the application.     Notes: Tested on iMX8MN EVK with BSP 6.1.36 Works on Multimedia and Full image.
記事全体を表示
Recipes to include Amazon's Alexa Voice Services in your applications. Step 1 : Get iMX Yocto AVS setup environment Review the steps under Chapter 3 of the i.MX_Yocto_Project_User'sGuide.pdf on the L4.X LINUX_DOCS to prepare your host machine. Including at least the following essential Yocto packages $ sudo apt-get install gawk wget git-core diffstat unzip texinfo \ gcc-multilib build-essential chrpath socat libsdl1.2-dev u-boot-tools Install the i.MX NXP AVS repo Create/Move to a directory where you want to install the AVS yocto build enviroment. Let's call this as <yocto_dir> $ cd <yocto_dir> $ repo init -u https://source.codeaurora.org/external/imxsupport/meta-avs-demos -b master -m imx-alexa-sdk-4.9.51-8mq_ga.xml Download the AVS BSP build environment: $ repo sync Step 2: Setup yocto for Alexa_SDK image with AVS-SETUP-DEMO script: Run the avs-setup-demo script as follows to setup your environment for the imx8mqevk board: $ MACHINE=imx8mqevk DISTRO=fsl-imx-xwayland source avs-setup-demo.sh -b <build_sdk_8M> Where <build_sdk> is the name you will give to your build folder. After acepting the EULA the script will prompt if you want to enable: Sound Card selection The following Sound Cards are supported on the build: 2-Mic Synaptics/Conexant 2-Mic TechNexion Voice Hat (with DSPConcepts SW) The script will prompt to select the soundcard you will be using: Which Sound Card are you going to use? Synaptics/Conexant .................... 1 VoiceHat (for DSPConcepts SW) ......... 2 Type the number of your selection and press Enter... Install Alexa SDK Next option is to select if you want to pre-install the AVS SDK software on the image. Do you want to build/include the AVS_SDK package on this image(Y/N)? If you select YES, then your image will contain the AVS SDK ready to use (after authentication). Note this AVS_SDK will not have WakeWord detection support, but it can be added on runtime. If your selection was NO, then you can always manually fetch and build the AVS_SDK on runtime. All the packages dependencies will be already there, so only fetching the AVS_SDK source code and building it is required. Finish avs-image configuration At the end you will see a text according with the configuration you select for your image build. Next is an example for a Preinstalled AVS_SDK with Synaptics Sound Card support ============================================================ AVS configuration is now ready at conf/local.conf - Sound Card = Synaptics - Alexa SDK 1.7 pre-installed - Wifi supported You are ready to bitbake your AVS demo image now:   bitbake avs-image If you want to use QT5DisplayCards, use then:   bitbake avs-image-qt5 ============================================================ Step 3: Build the AVS image Go to your <build_sdk> directory and start the build of the avs-image There are 2 options Regular Build: $ cd  <yocto_dir>/<build_sdk>   $ bitbake avs-image With QT5 support included: $ cd  <yocto_dir>/<build_sdk>   $ bitbake avs-image-qt5 The image with QT5 is useful if you want to add some GUI for example to render DisplayCards. Step 4 : Deploying the built images to SD/MMC card to boot on target board. After a build has succesfully completed, the created image resides at <build_sdk>/tmp/deploy/images/imx8mqevk/ In this directory, you will find imx8mqevk-avs--.sdcard image or imx8mqevk-avs-qt5--.sdcard, depending on the build you chose on Step3. To Flash the .sdcard image into an SD Card follow the next steps: Extract and copy the .sdcard file to your SD Card $ cd <build_sdk>/tmp/deploy/images/imx8mqevk/ $ cp -v imx8mqevk-avs-synaptics-1.7.sdcard.bz2 <workdir> $ cd <workdir> $ sudo bzip2 -d imx8mqevk-avs-synaptics-1.7.sdcard.bz2 $ sudo dd if=imx8mqevk-avs-synaptics-1.7.sdcard.bz2 of=/dev/sd<part> bs=1M && sync $ sync Properly eject the SD Card: $ sudo eject /dev/sd<part> Insert the flashed SD Card on the 8M EVK and boot. Follow the instructions at startup to setup your AVS and run the SampleApp. NXP Documentation For a more comprehensive understanding of Yocto, its features and setup; more image build and deployment options and customization, please take a look at the i.MX_Yocto_Project_User's_Guide.pdf document from the Linux documents bundle mentioned at the beginning of this document. For a more detailed description of the Linux BSP, u-boot use and configuration, please take a look at the i.MX_Linux_User's_Guide.pdf document from the Linux documents bundle mentioned at the beginning of this document.
記事全体を表示
Legacy Interrupts in PCI have become a thing of the past in the PCI world, now that we have more efficient MSI interrupts in PCI Express, being used extensively across applications. However they are still used primarily for backward compatibility and boot-up support. Legacy Interrupts[INTx] used to be physical signals in PCI, however PCIe devices do not have physical INTx pins. So to support these legacy interrupts, PCIe emulates them logically. Almost like a virtual INTx mechanism. We shall see how these interrupts are realized in PCI Express, in such a way that developers/enthusiasts can get a hands-on following this guide. This blog has the following agendas:- 1. Why do we need to care about Legacy INTx style interrupts in PCIe? 2. System Overview 3. How are INTx legacy interrupts realized in PCIe? 4. Enabling and testing INTx emulation on iMX8MM
記事全体を表示
  Platform: i.MX8MP EVK , L6.1.22-2.0.0 LT9211 is a chip that can realize the conversion of MIPI DSI signals to LVDS signals. This patch is based on this mainline driver:https://github.com/nxp-imx/linux-imx/blob/lf-6.1.y/drivers/gpu/drm/bridge/lontium-lt9211.c Keypoint Move lt9211_host_attach function to lt9211_attach to skip bridge attach error.  
記事全体を表示
Tips collected from zhaoyang-b49593 and dandouglass-b41520 while enabling redundant boot: Using i.MX 8MQ, same method can be applied for other i.MX devices that support redundant boot, see SoC Reference Manual. As described on the RM, if primary image authentication fails the ROM can reset and try booting a secondary image. This feature is only available on closed mode with properly signed binaries, otherwise the ROM boots the primary image despite the auth failure. For the i.MX 8MQ, the secondary image must start with spl, not HDMI firmware. Note, there is no ROM redundancy for the hdmi fw, if it is corrupt user can store a 2nd copy on a different memory address and update at run time. Steps to generate a dual spl image: 1. Build and Sign bootable binary (spl, u-boot, atf, fw, etc) Use the Yocto BSP or follow this post to build outside the Yocto environment. To sign the binary, follow the documentation on u-boot source: <u-boot>/doc/imx/habv4/guides/mx8m_secure_boot.txt Program image to the SD card: dd if=signed_flash.bin of=<sd path> bs=1024 seek=33 After boot you can use "hab_status" to verify that no events were generated: u-boot=> hab_status Secure boot disabled HAB Configuration: 0xf0, HAB State: 0x66 2. Corrupt spl on your boot image You can corrupt anywhere on the spl signed area. For easier visualization at boot time we can corrupt the SPL banner. First create a copy: cp signed_flash.bin signed_flash_corrupt.bin Find the banner: hexdump -C signed_flash.bin | grep 2019 00020190 26 1c 40 92 04 00 80 d2 05 01 80 52 c4 20 04 aa |&[email protected]. ..| 0002eac0 32 30 31 39 2e 30 34 2d 30 30 30 32 39 2d 67 34 |2019.04-00029-g4| 000dde10 3a 20 20 00 55 2d 42 6f 6f 74 20 32 30 31 39 2e |: .U-Boot 2019.| 0002eac3 is on spl area, where "9" for 2019 is, replace by "X" printf "X" > X dd if=X of=signed_flash_corrupt.bin seek=$((0x2eac3)) bs=1 conv=notrunc Verify corrupt binary hexdump -C -s 0x2eac0 -n 64 signed_flash_corrupt.bin 0002eac0 32 30 31 58 2e 30 34 2d 30 30 30 32 39 2d 67 34 |201X.04-00029-g4| 0002ead0 37 63 31 39 32 32 20 28 41 70 72 20 32 37 20 32 |7c1922 (Apr 27 2| Transfer image to SD Card dd if=signed_flash_corrupt.bin of=<sd path> bs=1024 seek=33 Now, you should see hab events after running "hab_status" on u-boot 3. Create a secondary boot image This can be the same content as your primary image without the HDMI fw or it can be a different spl image. For easier visualization, we can change the SPL banner, on the code this time. Modify banner at ./common/spl/spl.c as: - puts("\nU-Boot " SPL_TPL_NAME " " PLAIN_VERSION " (" U_BOOT_DATE " - " + puts("\nSecondary U-Boot " SPL_TPL_NAME " " PLAIN_VERSION " (" U_BOOT_DATE " - " As mentioned above, we want our boot image without the HDMI fw, when running imx-mkimage use the flash_evk_no_hdmi target: make SOC=iMX8MQ flash_evk_no_hdmi Sign the image as in step 1. If you program the new image to the SD you should see the new banner. Make sure to run hab_status to confirm that no HAB events are generated. 4. Program SRK Hash and Close SoC Follow the documentation on u-boot source for SRK programming and closing the device: <u-boot>/doc/imx/habv4/guides/mx8m_secure_boot.txt Before closing the SoC, but after the SRK is programmed, try your images to confirm no HAB events are generated. Be careful with this step, errors could brick your board. This step is irreversible. After closing the SoC it will only boot signed images. 5. Create dual bootloader image We can concatenate our binaries to create a single file, let's use 2MB distance between primary and secondary images: For the working primary image: objcopy -I binary -O binary --pad-to 0x200000 --gap-fill=0x00 signed_flash.bin 1st-spl_pad.bin cat 1st-spl_pad.bin secondary2_nohdmifw_signed_flash.bin > 1st-spl_pad_2nd-spl.bin Or for the corrupt primary image experiment: objcopy -I binary -O binary --pad-to 0x200000 --gap-fill=0x00 signed_flash_corrupt.bin 1st-spl_pad.bin cat 1st-spl_pad.bin secondary2_nohdmifw_signed_flash.bin > 1st-spl_pad_2nd-spl.bin Program it to the SD card on 0x8400 offset (33k) dd if=1st-spl_pad_2nd-spl.bin of=<sd path> bs=1024 seek=33 && sync 6. Add Secondary image table Follow the format on the RM, this is only 20 bytes long. For a 2MB distance between the table and the secondary image we can use "0x1000" on the firstSectorNumber field. 2MB/512 = 4096 (0x1000) The perl script attached, genSecTable.pl, can be used to generate it. perl genSecTable.pl 0x1000 Program it to the SD card on 0x8200 offset dd if=secTable.bin of=<sd path> bs=1 seek=$((0x8200)) && sync 7. Verify secondary image is booting If using the corrupt primary image, you should see the spl with the "Secondary U-Boot SPL..." banner. You can also read the persist secondary boot bit. u-boot=> md.l 0x30390098 1 30390098: 40000000 ...@ The work can be extended patching spl for in case of u-boot authentication failure, spl can try to authenticate and jump to the secondary u-boot.
記事全体を表示
(   converted from discussion created by Alfred Latypov   IMX6 PCI with external cloks  )    Hello, I had a problem, to launch a board with an imx6 solo processor with a pci-express, and with external clock. I'll tell you my decision. On my motherboard there is a pci-switch PI7C9X2G606 from Pericom with 4 endpoints of Intel type 82574 ethernet controller. I used the Linux kernel version 4.9.16 In the device-tree file, I used the following options to enable external clocks for CLK1 input gate (100MHz). Sorry, I had to change the root imx6 device tree file. See attached (imx6*.dtsi) files. From ..kernel/arch/arm/boot/dts/.. Add anatop external clock source for clocks section, and change clk source for pcie-phy. ... anaclk1 {             compatible = "fixed-clock";             reg = <0>;             #clock-cells = <0>;             clock-frequency = <100000000>;  /* 100MHz */         }; ... Change pcie section ...         pcie: pcie@0x01000000 {             compatible = "fsl,imx6q-pcie", "snps,dw-pcie";             reg = <0x01ffc000 0x04000>,                   <0x01f00000 0x80000>;             reg-names = "dbi", "config";             #address-cells = <3>;             #size-cells = <2>;             device_type = "pci";             ranges = <0x81000000 0 0          0x01e00000 0 0x00100000 /* downstream I/O */                   0x82000000 0 0x01000000 0x01000000 0 0x00e00000>; /* non-prefetchable memory */             /* ranges = <0x81000000 0 0          0x01f80000 0 0x00010000                   0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; */             num-lanes = <1>;             interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;             interrupt-names = "msi";             #interrupt-cells = <1>;             interrupt-map-mask = <0 0 0 0x7>;             interrupt-map = <0 0 0 1 &gpc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,                             <0 0 0 2 &gpc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,                             <0 0 0 3 &gpc GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,                             <0 0 0 4 &gpc GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;             clocks = <&clks IMX6QDL_CLK_PCIE_AXI>,                  <&clks IMX6QDL_CLK_LVDS1_IN>,                  <&clks IMX6QDL_CLK_SATA_REF_100M>;             clock-names = "pcie", "pcie_bus", "pcie_phy";             status = "disabled";         }; ... and add new source clocks dependencies: .... &clks {         assigned-clocks = <&clks IMX6QDL_PLL6_BYPASS_SRC>,                           <&clks IMX6QDL_PLL6_BYPASS>;                                   assigned-clock-parents = <&clks IMX6QDL_CLK_LVDS1_IN>,                                  <&clks IMX6QDL_PLL6_BYPASS_SRC>;         assigned-clock-rates = <100000000>, <100000000>; }; .... for your board dtsi. I could not start the pcie-bus with the function Gen2. Next, I needed to change the bus driver (pci-imx6.c), for fine tuning the bus clock frequency. I add MPLL frequency services functions (Thanks for Charle Powe i.MX6Q: Using an external reference for PCIe 😞 ... static void imx_pcie_override_phy_mpll(struct pcie_port *pp, u32 mpll_multiplier, u32 ref_clkdiv2) {     u32 ref_usb2_en;     u32 reg1;               pr_info("Overriding PCIe PHY MPLL config: multiplier = %d, clkdiv2 = %d\n",         mpll_multiplier, ref_clkdiv2);                   // set MPLL to disabled     ////pcie_phy_write(pp->dbi_base, PCIE_PHY_MPLL_OVRD_IN_LO, 0x0001);          // set MPLL multiplier         pcie_phy_write(pp->dbi_base, PCIE_PHY_MPLL_OVRD_IN_LO,             (0x0001<<9 | (mpll_multiplier<<2)) & 0x03fc);          /*      * set the ref_clkdiv2.  when this override is enabled it      * overrides both ref_clkdiv2 and ref_usb2_en.  make sure      * the overriden ref_usb2_en reflects the original value.      */          pcie_phy_read(pp->dbi_base, PCIE_PHY_ATEOVRD, &reg1);          ref_usb2_en = (reg1 >> 1) & 0x1;        /* set the current value of ref_usb2_en as the override */          /* set the ref_clkdiv2 override  */          /* enable the ref_clkdiv2 override */          pcie_phy_write(pp->dbi_base, PCIE_PHY_ATEOVRD,             (ref_usb2_en << 1) | ref_clkdiv2 | (0x1 << 2));             /* enable MPLL */         ///pcie_phy_write(pp->dbi_base, PCIE_PHY_MPLL_OVRD_IN_LO, 0x0003);          } ... call this function in pcie_hos_init ... static void imx6_pcie_host_init(struct pcie_port *pp) {     imx6_pcie_assert_core_reset(pp);            imx6_pcie_init_phy(pp);            imx6_pcie_deassert_core_reset(pp);        imx_pcie_override_phy_mpll(pp, 50, 1); /* tune this */          dw_pcie_setup_rc(pp);     imx6_pcie_establish_link(pp);      if (IS_ENABLED(CONFIG_PCI_MSI))         dw_pcie_msi_init(pp); } ... See documentation for p.p. IMX6DLRM 50.5.1.2. Tune <pci_hotplug_mem_size> global variable for optimal pci window sizes enumeration. See for my imx6_add_pcie_port call. If you use a FEC module, it will stop working. You must use an external clock as specified in the documentation (http://cache.freescale.com/files/32bit/doc/user_guide/IMX6DQ6SDLHDG.pdf ). Changes are shown in the attached dtsi file. For clocks segment ... rmii_clk: clock@0 {             compatible = "fixed-clock";             reg = <0>;             #clock-cells = <0>;             clock-frequency = <50000000>;  /* 50MHz */         }; ... and for fec: ... fec: ethernet@02188000 {                 compatible = "fsl,imx6q-fec";                 reg = <0x02188000 0x4000>;                 interrupts-extended =                     <&intc 0 118 IRQ_TYPE_LEVEL_HIGH>,                     <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>;                 clocks = <&clks IMX6QDL_CLK_ENET>,                      <&clks IMX6QDL_CLK_ENET>,                      <&rmii_clk>;                 clock-names = "ipg", "ahb", "ptp";                 status = "disabled";             }; ... If they are not required, disable this editing this file. Thanks for all. Sorry for my bad English. Alfred <[email protected]> This document was generated from the following discussion: IMX6 PCI with external cloks
記事全体を表示
If you already followed the i.MX31ADS Compiling Uboot steps or got a compiled U-boot image, copy u-boot.bin to /tftpboot: $ cp u-boot.bin /tftpboot If you have RedBoot on your board follow the "Installing RedBoot using U-Boot", but if you already have been installed U-Boot and are just installing a new version jump to "Installing U-Boot using U-Boot". Installing U-Boot using RedBoot Load the U-boot image to board RAM: RedBoot> load -v -r -b 0x100000 /tftpboot/u-boot.bin -h 10.29.244.27 Where: 0x100000 is the memory position where the firmware image will be downloaded; 10.29.244.27 is your host IP which is running the TFTP server. Erase the Flash: RedBoot> fis erase -f 0xA0000000 -l 0x00040000 To make sure about what area you should erase, perform the fis list command and compare the areas Write the image to Flash: RedBoot> fis write -f 0xA0000000 -b 0x100000 -l 0x00040000 Reset the board: RedBoot> reset You should see something like this: U-Boot 1.3.3 (May 26 2008 - 11:19:43) CPU: Freescale i.MX31 at 531 MHz Board: MX31ADS DRAM: 128 MB Flash: 32 MB In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 => Installing U-Boot using U-Boot First upload the U-Boot firmware using Network (Transferring file over network ) or Serial (Transferring File Over Serial) This is a common serial transfer output: => loady ## Ready for binary (ymodem) download to 0x80800000 at 115200 bps... CCmode, 1359(SOH)/0(STX)/0(CAN) packets, 9 retries ## Total Size = 0x0002a388 = 172936 Bytes Unprotect the bootloader flash area: protect off A0000000 A003FFFF Erase the flash blocks: erase A0000000 A003FFFF Copy from RAM to Flash: If firmware has been thansfered over serial: cp.b 80800000 A0000000 2a388 If firmware has been transfered over tftp: cp.b 100000 A0000000 2a388 Installing U-Boot using OpenOCD JTAG/GDB To do that you need to compile U-Boot with this define: #define CONFIG_SKIP_LOWLEVEL_INIT 1 Then enter in GDB and execute: (arm-gdb) restore u-boot.bin binary 0x87f00000 Restoring binary file u-boot.bin into memory (0x87f00000 to 0x87f2c790) (arm-gdb) set $pc = 0x87f00000 (arm-gdb) c You will see U-Boot starting in the serial console. Then compile a new U-Boot without the CONFIG_SKIP_LOWLEVEL_INIT and follow the Installing U-Boot using U-Boot to install U-Boot in the flash. Installing U-Boot using LogicLoader losh> ifconfig sm0 dhcp losh> load raw 0x81000000 115764 /tftp/10.29.244.27:u-boot.bin.lite losh> exec 0x81000000 -
記事全体を表示
Platform: i.mx8qm/qxp OS: imx-yocto-L4.14.98_2.0.0_ga Camera: max9286 deserializer <=> max96705 serializer  + ar0144 or: max9286 deserializer <=> max96705 serializer + ov9284 Note that currently only one camera is support and the serializer should be connected to the IN0 of max9286. Data format: ar0144: mono raw 12bit. ov9284: mono raw 10bit. On imx8qm/qxp the data will be recieved as raw 16bit and the valid data bit start from bit[13] to LSB. for mono raw 12bit the valid data bit is 0bxxdd_dddd_dddd_ddxx for mono raw 10bit the valid data bit is 0bxxdd_dddd_dddd_xxxx max9286 and max96705 configuration: dbl bws PXL_CRC/edc hven hibw lccen him should be the same on both sides, this can be achieved by pin or register configurations. The crossbar function of max96705 can be used to fix the reversed data bit. for example, reversed 12bit with dbl to 1. 0x20 0xb 0x21 0xa 0x22 0x9 ....... 0x2b 0x0 0x30 0xb 0x31 0xa .... 0x3b 0x0 0x20 to 0x2b and 0x30 to 0x3b are the registers of max96705. Patch apply: 1. push the kernel-patch to the kernel source and apply it. 2. reconfig the kernel setting, make sure there is only CONFIG_MAX9286_AR0144 or        CONFIG_MAX9286_WISSEN(ov9284) enabled, all other max9286 related are disabled. You can run menuconfig to achieve this. 3. For testing copy the vulkan-v4l2.tar to the board, and run vulkan-v4l2.     the source code is at https://github.com/sheeaza/vulkan-v4l2 branch ar0144 for ar0144, branch ov9284 for ov9284. =========== updated patch for data format.
記事全体を表示
The default BSP release supports sii902x hdmi card via LCDIF in i.MX6 Solo, but doesn't support it via IPU display interface in i.MX6 Dual/Quad/Plus. The patch provides support for the Sii902x HDMI video driver for i.MX6 Dual/Quad/Plus. Useful documents: MCIMXHDMICARD: Schematic for sii902x hdmi card MCIMX6Q-SMART DEVICE PLATFORM: Schematic for i.MX6 Quad Sabre SDP Software version: Linux 3.14.52_1.1.0-ga Verified platform: imx6q-sabresd imx6qp-sabresd Patch: 0001-video-mxc-sii902x-add-sii902x-hdmi-card-driver.patch 0002-arch-arm-boot-dts-add-sii902x-hdmi-card-devicetree-n.patch Features: Support video mode setup via uboot command; Support video mode setup via device tree; Supprt HDMI hot-plug; Support many video modes and a dynamic switching between them; Notes: The default settings( don't add "video=" to bootcmd) are as follows: ---------------------------------------------------------------------------------------- ------------ /sys/class/graphics/fb0 DISP4 BG - DI1 U:1024x768p-60 ldb 2-layer-fb-bg ------------ /sys/class/graphics/fb1 DISP4 FG overlay 2-layer-fb-fg ------------ /sys/class/graphics/fb2 DISP3 BG - DI1 U:1920x1080p-60 hdmi 2-layer-fb-bg ------------ /sys/class/graphics/fb3 DISP3 FG overlay 2-layer-fb-fg ------------ /sys/class/graphics/fb4 DISP3 BG sii902x_hdmi 1-layer-fb ------------ /sys/class/graphics/fb5 DISP4 BG --------------------------------------------------------------------------------------- If you want sii902x_hdmi to be fb0, you can add following arguments to bootcmd: video=mxcfb0:dev=sii902x_hdmi,1920x1080M@60,if=RGB24 video=mxcfb1:off video=mxcfb2:off video=mxcfb2:off consoleblank=0 Risks: Sometimes the sii902x will fail to read hdmi edid information, and the modelist of this framebuffer will be NULL. At this time, the driver will setup a default video mode which has been tuned  on imx6q-sabresd and imx6qp-sabresd. The default video mode is as follows: /* 1080p @ 56 Hz */ 60, 1920, 1080, 7692, 100, 40, 30, 3, 10, 2, 0, FB_VMODE_NONINTERLACED, 0 The user can modify this default setting for their case. Specially, there are some risks to use 1080p@60 video mode for imx6qp-sabresd. The hdmi device will has no valid hdmi signal output in this case. For example, /* 1080p @ 60 Hz */ 60, 1920, 1080, 6734, 148, 88, 36, 4, 44, 4, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, 0 The user sholud set these values according to hareware parameters.
記事全体を表示
Running Zephyr on i.MX9 A55 core brings a high performance, real-time (short interrupt, scheduler latency, etc.) OS experiences as well as the fast boot, small memory footprint features. This article provide all the information on how to run the Zephyr v4.1 on Cortex-A55 cores to support below features: Supported Features FRDM-IMX93 FRDM-IMX91 Description Zephyr RTOS code base     Based on Zephyr v4.1 FRDM-IMX93 board configure Yes   Board configuration, build, device tree files FRDM-IMX91 board configure   Yes Board configuration, build, device tree files Hello world Yes Yes   Dual Ethernet Yes   TY8521 Ethernet PHY support Display Yes   LCDIF, MIPI DSI, Waveshare 1024x600 7inch DSI LCD(C) Camera Yes   MIPI-CSI, ISI, AP1302 sensor Audio Yes   I2S with eDMA (Driver only) uSDHC Yes   SD card only USB Yes   USB CDC device class   The code has been release on github: Zephyr samples/drivers: https://github.com/nxp-zephyr/zephyr Zephyr HAL: https://github.com/nxp-zephyr/hal_nxp Tag: FRDM-IMX93-v4.1 How to doc is attached.  
記事全体を表示
Hello! In this post, we’ll cross-compile a kernel module for Linux 6.12.    This can be done either using a standalone kernel or a Yocto-built kernel.    Requirements:  A compiled Linux kernel 6.12.  A board running the same kernel version (Linux 6.12 in this case).  A cross-compiler toolchain.    This process applies to any i.MX processor, including i.MX8, i.MX8M, i.MX8MM, i.MX8MN, i.MX8MP, i.MX93, i.MX91, i.MX95, as well as the i.MX6 and i.MX7 families.    Step 1: Compile the Linux Kernel and get the Toolchain    First, you need to compile the Linux kernel (6.12 in this case).    You can do this in a standalone environment or using Yocto.     If you are using a Standalone environment, please refer to the Chapter 4.5.12 How to build U-Boot and Kernel in standalone environment of i.MX Linux User's Guide.  Also, in that document section, you will see how to obtain the cross-compiler toolchain.    NOTE: To get the toolchain you need use Yocto at least once (for more information please refer to i.MX Yocto Project User's Guide😞  $ DISTRO=fsl-imx-xwayland MACHINE=Target-Machine bitbake core-image-minimal -c populate_sdk   At the end of the building, you can install your toolchain populated under:    yocto-bsp/build/tmp/deploy/sdk     There you will find a file called:    fsl-imx-wayland-glibc-x86_64-imx-image-core-armv8a-your-machine-name-toolchain-6.12-walnascar.sh    Execute with:  $ sudo ./fsl-imx-wayland-glibc-x86_64-imx-image-core-armv8a-your-machine-name-toolchain-6.12-walnascar.sh   If you use the default installation, you will have your toolchain under /opt in your host machine.      (If you will use the compiled kernel from Yocto, you can avoid below step)  Download Standalone Kernel source by cloning with:  $ git clone https://github.com/nxp-imx/linux-imx -b lf-6.12.y $ cd linux-imx   To build the kernel in the standalone environment for i.MX 6 and i.MX 7, execute the following commands:    $ make imx_v7_defconfig $ Make   To build the kernel in the standalone environment for i.MX 8 and i.MX 9, execute the following commands:  $ make imx_v8_defconfig $ make   The full kernel compilation is required to generate headers and symbol files required for external module compilation, even if you don't plan to boot this kernel directly.      Step 2: Write a simple Kernel Module to test    Now that your kernel is compiled, you can write a basic kernel module for testing.    Create a new directory. It will have our hello.c and Makefile.    We will create the file hello.c:  #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("Salas"); MODULE_DESCRIPTION("A simple kernel module example for cross-compilation."); MODULE_VERSION("0.1"); static int __init hello_init(void) { printk(KERN_INFO "Hello from the kernel module!\n"); return 0; } static void __exit hello_exit(void) { printk(KERN_INFO "Goodbye from the kernel module!\n"); } module_init(hello_init); module_exit(hello_exit);   Then, create a basic Makefile to compile the modules:    # Module name obj-m += hello.o # Build flags ldflags-y += --strip-debug # Kernel source directory (provided by Yocto) KERNEL_SRC ?= /path/to/your/compiled/kernel # Build target all: $(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules # Clean target clean: $(MAKE) -C $(KERNEL_SRC) M=$(PWD) clean # Install target modules_install: $(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules_install   KERNEL_SRC should be your compiled kernel from your Yocto build:   yocto-bsp/build/tmp/work/your-machine-poky-linux/linux-imx/6.12.20+git/build   Or the Standalone : path/to/linux-imx/     Step 3: Set the toolchain and compile the kernel module    Finally, we can compile the kernel module.    First, set the toolchain (in my case):  $ source /opt/fsl-imx-wayland/6.12-walnascar/environment-setup-armv8a-poky-linux   Then, compile using the makefile:  $ make   f everything goes well, at final you will have the generated files:    hello.ko hello.mod hello.mod.c hello.mod.o hello.o Makefile modules.order Module.symvers   The one we need is the hello.ko (Kernel Object).    We can check if the file was created correctly using:    $ readelf -h hello.ko ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: REL (Relocatable file) Machine: AArch64 Version: 0x1 Entry point address: 0x0 Start of program headers: 0 (bytes into file) Start of section headers: 33992 (bytes into file) Flags: 0x0 Size of this header: 64 (bytes) Size of program headers: 0 (bytes) Number of program headers: 0 Size of section headers: 64 (bytes) Number of section headers: 41 Section header string table index: 40   We can see the Machine is AArch64 and the Type is a Relocatable file.      Step 4: Running the Kernel Object/Module in the board    Transfer the generated hello.ko file from your host machine to your board.    Then, In your board you can run with:    root@imx93evk:~# ls hello.ko root@imx93evk:~# insmod hello.ko root@imx93evk:~# dmesg | tail [ 5140.547447] Hello world from kernel! root@imx93evk:~# rmmod hello.ko root@imx93evk:~# dmesg | tail [ 5140.547447] Hello world from kernel! [ 5153.415215] Goodbye world from kernel!   I hope this can helps to you.    Best regards,  Salas. 
記事全体を表示
Getting started with Linux on the i.MX53QSB
記事全体を表示