uboot移植及LCD和网络驱动设置
环境:
Ubuntu 20.04
野火imx6ull pro开发板
tftp服务的搭建
IMX6ULL开发板参考的是NXP官方的I.MX6ULL EVK开发板做的硬件。
Linux的移植要复杂的多,在移植Linux之前我们需要先移植一个 bootloader 代码,这个 bootloader 代码用于启动Linux 内核,bootloader有很多,常用的就是 U-Boot。移植好U-Boot以后再移植Linux 内核,移植完Linux内核以后Linux还不能正常启动,还需要再移植一个根文件系统(rootfs),根文件系统里面包含了一些最常用的命令和文件。所以 U-Boot、Linux kernel 和 rootfs 这三者一起构成了一个完整的Linux 系统,一个可以正常使用、功能完善的 Linux 系统。
uboot 的全称是Universal Boot Loader,uboot是一个遵循GPL协议的开源软件,uboot是一个裸机代码,可以看作是一个裸机综合例程。现在的uboot已经支持液晶屏、网络、USB 等高级功能。
Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了,bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动Linux 内核,bootloader和Linux内核的关系就跟PC上的 BIOS 和Windows的关系一样,bootloader就相当于BIOS。
一、U-Boot命令
=> help
? - alias for 'help'
base - print or set address offset
bdinfo - print Board Info structure
bmode - sd1|sd2|qspi1|normal|usb|sata|ecspi1:0|ecspi1:1|ecspi1:2|ecspi1:3|esdhc1|esdhc2|esdhc3|esdhc4 [noreset]
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootelf - Boot from an ELF image in memory
bootm - boot application image from memory
bootp - boot image via network using BOOTP/TFTP protocol
bootvx - Boot vxWorks from an ELF image
bootz - boot Linux zImage image from memory
clocks - display clocks
cmp - memory compare
coninfo - print console devices and information
cp - memory copy
crc32 - checksum calculation
dcache - enable or disable data cache
dhcp - boot image via network using DHCP/TFTP protocol
dm - Driver model low level access
echo - echo args to console
editenv - edit environment variable
env - environment handling commands
erase - erase FLASH memory
exit - exit script
ext2load- load binary file from a Ext2 filesystem
ext2ls - list files in a directory (default /)
ext4load- load binary file from a Ext4 filesystem
ext4ls - list files in a directory (default /)
ext4size- determine a file's size
ext4write- create a file in the root directory
false - do nothing, unsuccessfully
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
fatsize - determine a file's size
fatwrite- write file into a dos filesystem
fdt - flattened device tree utility commands
flinfo - print FLASH memory information
fstype - Look up a filesystem type
fuse - Fuse sub-system
go - start application at address 'addr'
gpio - query and control gpio pins
help - print command description/usage
i2c - I2C sub-system
icache - enable or disable instruction cache
iminfo - print header information for application image
imxtract- extract a part of a multi-image
itest - return true/false on integer compare
load - load binary file from a filesystem
loadb - load binary file over serial line (kermit mode)
loads - load S-Record file over serial line
loadx - load binary file over serial line (xmodem mode)
loady - load binary file over serial line (ymodem mode)
loop - infinite loop on address range
ls - list files in a directory (default /)
md - memory display
mdio - MDIO utility commands
mii - MII utility commands
mm - memory modify (auto-incrementing address)
mmc - MMC sub system
mmcinfo - display MMC info
mtest - simple RAM read/write test
mw - memory write (fill)
nfs - boot image via network using NFS protocol
nm - memory modify (constant address)
ping - send ICMP ECHO_REQUEST to network host
pmic - PMIC
printenv- print environment variables
protect - enable or disable FLASH write protection
reset - Perform RESET of the CPU
run - run commands in an environment variable
save - save file to a filesystem
saveenv - save environment variables to persistent storage
setenv - set environment variables
setexpr - set environment variable as the result of eval expression
sf - SPI flash sub-system
showvar - print local hushshell variables
size - determine a file's size
sleep - delay execution for some time
source - run script from memory
test - minimal test like /bin/sh
tftpboot- boot image via network using TFTP protocol
true - do nothing, successfully
usb - USB sub-system
usbboot - boot from USB device
version - print monitor, compiler and linker version
二、U-Boot移植
uboot 的移植并不是说我们完完全全的从零开始将从官网下载的uboot 移植到我们所使用的开发板上。这个难度较大,这个工作一般是半导体厂商做的,半导体厂商会将uboot 移植到他们自己的原厂开发板上,测试好以后就会将这个uboot发布出去,这就是大家常说的原厂BSP包。我们一般做产品的时候就会参考原厂的开发板做硬件,然后在原厂提供的BSP包上做修改,将uboot或者linux kernel移植到我们的硬件上。这个就是uboot 移植的一般流程:
①、在uboot中找到参考的开发平台,一般是原厂的开发板。
②、参考原厂开发板移植uboot到我们所使用的开发板上。
1、移植NXP官方的uboot到开发板IMX6ULL开发板参考的是NXP官方的I.MX6ULL EVK开发板做的硬件。因此在移植uboot的时候就可以以NXP官方的I.MX6ULL EVK开发板为蓝本。将 NXP官方的uboot移植到野火的I.MX6ULL开发板上。
1、编译一下NXP官方I.MX6ULL EVK开发板对应的uboot。
2、在 U-Boot中添加自己的开发板
1、添加开发板默认配置文件
先查看下我们要参考的配置文件是否存在,从下图可以看出是存在的。
先在configs
目录下创建默认配置文件,复制mx6ull_14x14_evk_emmc_defconfig
,然后重命名为 mx6ull_myself_emmc_defconfig
,命令如下:
cp configs/mx6ull_14x14_evk_emmc_defconfig configs/mx6ull_myself_emmc_defconfig
修改mx6ull_myself_emmc_defconfig
文件,打开configs/mx6ull_myself_emmc_defconfig
将第1行中的mx6ullevk
修改为mx6ull_myself_emmc
将第4行中的CONFIG_TARGET_MX6ULL_14X14_EVK=y
修改为CONFIG_TARGET_MX6ULL_MYSELF_EMMC=y
2、添加开发板对应的头文件
在 目 录 include/configs 下 添 加 I.MX6ULL-ALPHA 开 发 板 对 应 的 头 文 件 , 复 制include/configs/mx6ullevk.h,并重命名为 mx6ull_myself_emmc.h,命令如下:
cp include/configs/mx6ullevk.h include/configs/mx6ull_myself_emmc.h
修改include/configs/mx6ull_myself_emmc.h
#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H
修改为
#ifndef __MX6ULL_MYSELF_EMMC_CONFIG_H
#define __MX6ULL_MYSELF_EMMC_CONFIG_H
mx6ull_alientek_emmc.h 里面有很多宏定义,这些宏定义基本用于配置uboot,也有一些I.MX6ULL 的配置项目。如果我们自己要想使能或者禁止uboot的某些功能,那就在mx6ull_alientek_emmc.h 里面做修改即可。mx6ull_alientek_emmc.h里面的内容比较多,去掉一些用不到的配置。
3、添加开发板对应的板级文件夹
uboot 中每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等等。NXP 的 I.MX 系列芯片的所有板级文件夹都存放在board/freescale目录下,在这个目录下有个名为mx6ullevk 的文件夹,这个文件夹就是NXP官方I.MX6ULL EVK开发板的板级文件夹。复制mx6ullevk,将其重命名为mx6ull_alientek_emmc,命令如下:
cp board/freescale/mx6ullevk/ -r board/freescale/mx6ull_myself_emmc
将board/freescale/mx6ull_myself_emmc/mx6ullevk.c
目 录 中的mx6ullevk.c 文件重命名为mx6ull_myself_emmc.c
,命令如下:
mv board/freescale/mx6ull_myself_emmc/mx6ullevk.c board/freescale/mx6ull_myself_emmc/mx6ull_myself_emmc.c
1 、修改board/freescale/mx6ull_myself_emmc目录下的Makefile
将obj-y := mx6ullevk.o
修改为obj-y := mx6ull_myself_emmc.o
如下图所示:
1 、修改board/freescale/mx6ull_myself_emmc目录下的 imximage.cfg 文件
在文件中找到下面内容
PLUGIN board/freescale/mx6ullevk/plugin.bin 0x00907000
修改为
PLUGIN board/freescale/mx6ull_myself_emmc/plugin.bin 0x00907000
修改位置如下图所示:
3 、修改mx6ull_alientek_emmc 目录下的 Kconfig 文件
打开Kconfig文件mx6ullevk替换为mx6ull_myself_emmc
4 、修改mx6ull_alientek_emmc 目录下的MAINTAINERS文件
修改 MAINTAINERS 文件,修改后的内容如下:
3、修改 U-Boot 图形界面配置文件
uboot 是支持图形界面配置,关于 uboot 的图形界面配置下一章会详细的讲解。修改文件arch/arm/cpu/armv7/mx6/Kconfig
,在 207 行加入如下内容:
config TARGET_MX6ULL_MYSELF_EMMC
bool "Support mx6ull_myself_emmc"
select MX6ULL
select DM
select DM_THERMAL
在arch/arm/cpu/armv7/mx6/Kconfig
文件后面添加内容
source "board/freescale/mx6ull_myself_emmc/Kconfig"
到此为止,I.MX6U开发板
就已经添加到uboot
中了,接下来就是编译这个新添加的开发板。
5、使用新添加的板子配置编译 uboot
sudo make ARCH=arm CROSS_COMPILE=/home/cwz/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-eabi/bin/arm-eabi- mx6ull_myself_emmc_defconfig
输入以下命令编译uboot
sudo make ARCH=arm CROSS_COMPILE=/home/cwz/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-eabi/bin/arm-eabi- -j8
执行完上述命令,编译出许多u-boot相关的文件,在这里只关注u-boot.bin文件。
烧录u-boot文件到sd卡
在电脑插入sd卡,使用ls /dev/sd*
找到对应的设备。
使用imxdownload
程序,将u-boot.bin程序烧录到sd卡中,这里我的sd设备是sdc
,根据自己的sd卡调整,一定不要搞错!!
./imxdownload u-boot.bin /dev/sdc
测试
将烧录好的sd插入开发板启动,在mobaxter显示信息如下:
分析打印信息
从图可以看出,uboot 启动正常,虽然我们用的是NXP官方I.MX6ULL开发板的uboot,但是在野火的I.MX6ULL开发板上是可以正常启动的,而且DRAM识别正确,为512MB。如果用的NAND版本的核心版的话uboot启动会失败!因为NAND核心板用的 256MB的DRAM。
6、LCD 驱动修改
一般 uboot 中修改驱动基本都是在xxx.h和xxx.c这两个文件中进行的,xxx 为板子名称,比如 mx6ull_alientek_emmc.h 和 mx6ull_alientek_emmc.c 这两个文件。
一般修改 LCD 驱动重点注意以下几点:
①、LCD 所使用的 GPIO,查看uboot中LCD的IO配置是否正确。
②、LCD 背光引脚GPIO的配置。
③、LCD 配置参数是否正确。
正点原子的 I.MX6U-ALPHA 开发板 LCD 原理图和 NXP 官方 I.MX6ULL 开发板一致,也就是 LCD的IO和背光IO都一样的,所以IO部分就不用修改了。需要修改的之后LCD参数,打开文件 mx6ull_alientek_emmc.c,找到如下所示内容:修改board/freescale/mx6ull_myself_emmc/mx6ull_myself_emmc.c
name :LCD 名字,要和环境变量中的 panel 相等。
xres 、yres :LCD X 轴和 Y 轴像素数量。
pixclock:像素时钟,每个像素时钟周期的长度,单位为皮秒。
left_margin :HBP,水平同步后肩。
right_margin :HFP,水平同步前肩。
upper_margin:VBP,垂直同步后肩。
lower_margin:VFP,垂直同步前肩。
hsync_len :HSPW,行同步脉宽。
vsync_len:VSPW,垂直同步脉宽。
vmode :大多数使用 FB_VMODE_NONINTERLACED,也就是不使用隔行扫描。
这里的参数要根据你的屏幕对应上面的参数要一一对应,不能错。
找到下面的内容
struct display_info_t const displays[] = {{
.bus = MX6UL_LCDIF1_BASE_ADDR,
.addr = 0,
.pixfmt = 24,
.detect = NULL,
.enable = do_enable_parallel_lcd,
.mode = {
.name = "TFT43AB",
.xres = 480,
.yres = 272,
.pixclock = 108695,
.left_margin = 8,
.right_margin = 4,
.upper_margin = 2,
.lower_margin = 4,
.hsync_len = 41,
.vsync_len = 10,
.sync = 0,
.vmode = FB_VMODE_NONINTERLACED
} } };
修改成下面内容:
1/(33.3*106)*1012=30030
struct display_info_t const displays[] = {{
.bus = MX6UL_LCDIF1_BASE_ADDR,
.addr = 0,
.pixfmt = 24,
.detect = NULL,
.enable = do_enable_parallel_lcd,
.mode = {
.name = "TFT43AB",
.xres = 800,
.yres = 480,
.pixclock = 30030,
.left_margin = 8,
.right_margin = 4,
.upper_margin = 2,
.lower_margin = 4,
.hsync_len = 41,
.vsync_len = 10,
.sync = 0,
.vmode = FB_VMODE_NONINTERLACED
} } };
测试网络
野火的开发板,网卡不需要修改驱动,插上网线后,按照下面的进行测试。
使用sd卡启动,在mobaxterm上显示,如下:
提示没有设置地址输入以下命令设置环境变量:
设置网络相关的变量
setenv serverip '192.168.3.200'
setenv gatewayip '192.168.3.254'
setenv netmask '255.255.255.0'
setenv ipaddr '192.168.3.167'
setenv ethaddr '32:34:46:78:9A:DC'
saveenv
重新启动开发板,打印画面如下:
测试网络是否连通
接着在mobaxtem中ping以下虚拟机的IP地址,成功画面如下:
uboot启动linux测试
经过上面的网络测试,我们使用uboot加载的内核镜像是在Ubuntu上的tftp服务的共享目录下,将zImage
和设备树文件imx6ull-14x14-evk-emmc.dtb
(编译linux源码得到的,这里先提前拿出来用)放到Ubuntu上的/home/cwz/tftp_share/
目录(这是我创建的tftp共享目录)。
启动uboot,进入命令行模式。
在baxterm输入下面命令,从Ubuntu上下载内核镜像
tftp 80800000 zImage
在baxterm上下载设备树文件
tftp 83000000 imx6ull-14x14-evk-emmc.dtb
启动linux
bootz 80800000 - 83000000
内核刚开始启动的画面
最后停留在这里,是因为没有根文件系统
到这里说明我们uboot启动linux是成功的。
上面设置变量是一步一步来的,可以在mobaxterm上直接设置变量。
setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 imx6ull-14x14-evk-emmc.dtb;bootz 80800000 - 83000000'
保存变量
saveenv
查看设置的环境变量
printfenv
从上图可以看到,设置了变量。
重新启动开发板,就会在mobaxtem上输出下面信息,
U-Boot 2016.03 (Oct 24 2023 - 15:33:54 +0800)
CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
CPU: Industrial temperature grade (-40C to 105C) at 44C
Reset cause: POR
Board: MX6ULL_TEST
I2C: ready
DRAM: 512 MiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Display: TFT43AB (800x480)
Video: 800x480x24
In: serial
Out: serial
Err: serial
switch to partitions #0, OK
mmc0 is current device
Net: FEC1
Normal Boot
Hit any key to stop autoboot: 0
Using FEC1 device
TFTP from server 192.168.3.200; our IP address is 192.168.3.210
Filename 'zImage'.
Load address: 0x80800000
Loading: #######################################################error frame: 0x9ef46940 0x00000804
##########
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#####
314.5 KiB/s
done
Bytes transferred = 6680104 (65ee28 hex)
Using FEC1 device
TFTP from server 192.168.3.200; our IP address is 192.168.3.210
Filename 'imx6ull-14x14-evk-emmc.dtb'.
Load address: 0x83000000
Loading: ########
201.2 KiB/s
done
Bytes transferred = 36093 (8cfd hex)
Kernel image @ 0x80800000 [ 0x000000 - 0x65ee28 ]
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Using Device Tree in place at 83000000, end 8300bcfc
Starting kernel ...
Booting Linux on physical CPU 0x0
Linux version 4.1.15 (cwz@cwz) (gcc version 4.9.3 20150413 (prerelease) (Linaro GCC 4.9-2015.05) ) #1 SMP PREEMPT Wed Oct 25 17:37:12 CST 2023
CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine model: Freescale i.MX6 ULL 14x14 EVK Board
Reserved memory: created CMA memory pool at 0x8c000000, size 320 MiB
Reserved memory: initialized node linux,cma, compatible id shared-dma-pool
Memory policy: Data cache writealloc
PERCPU: Embedded 12 pages/cpu @8bb32000 s16960 r8192 d24000 u49152
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048
Kernel command line: noinitrd console=ttymxc0,115200
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 178576K/524288K available (8396K kernel code, 446K rwdata, 2928K rodata, 440K init, 450K bss, 18032K reserved, 327680K cma-reserved, 0K highmem)
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xa0800000 - 0xff000000 (1512 MB)
lowmem : 0x80000000 - 0xa0000000 ( 512 MB)
pkmap : 0x7fe00000 - 0x80000000 ( 2 MB)
modules : 0x7f000000 - 0x7fe00000 ( 14 MB)
.text : 0x80008000 - 0x80b1737c (11325 kB)
.init : 0x80b18000 - 0x80b86000 ( 440 kB)
.data : 0x80b86000 - 0x80bf5be0 ( 447 kB)
.bss : 0x80bf8000 - 0x80c68a1c ( 451 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Preemptible hierarchical RCU implementation.
Additional per-CPU info printed with stalls.
RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=1.
RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
NR_IRQS:16 nr_irqs:16 16
mxc_clocksource_init 3000000
Switching to timer-based delay loop, resolution 333ns
sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 715827882841ns
clocksource mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 637086815595 ns
Console: colour dummy device 80x30
Calibrating delay loop (skipped), value calculated using timer frequency.. 6.00 BogoMIPS (lpj=30000)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
/cpus/cpu@0 missing clock-frequency property
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x80008280 - 0x800082d8
Brought up 1 CPUs
SMP: Total of 1 processors activated (6.00 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
device-tree: Duplicate name in lcdif@021c8000, renamed to "display#1"
VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor ladder
cpuidle: using governor menu
hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
hw-breakpoint: maximum watchpoint size is 8 bytes.
imx6ul-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver
imx6ul-pinctrl 2290000.iomuxc-snvs: initialized IMX pinctrl driver
mxs-dma 1804000.dma-apbh: initialized
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
i2c i2c-0: IMX I2C adapter registered
i2c i2c-0: can't use DMA
i2c i2c-1: IMX I2C adapter registered
i2c i2c-1: can't use DMA
Linux video capture interface: v2.00
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
PTP clock support registered
MIPI CSI2 driver module loaded
Advanced Linux Sound Architecture Driver Initialized.
Bluetooth: Core ver 2.20
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
Switched to clocksource mxc_timer1
NET: Registered protocol family 2
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 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.
imx rpmsg driver is registered.
Bus freq driver module loaded
futex hash table entries: 256 (order: 2, 16384 bytes)
VFS: Disk quotas dquot_6.6.0
VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
NFS: Registering the id_resolver key type
Key type id_resolver registered
Key type id_legacy registered
jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
fuse init (API version 7.23)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
imx-weim 21b8000.weim: Driver registered.
backlight supply power not found, using dummy regulator
MIPI DSI driver module loaded
MIPI DSI driver module loaded
21c8000.lcdif supply lcd not found, using dummy regulator
mxsfb 21c8000.lcdif: failed to find mxc display driver
Console: switching to colour frame buffer device 60x34
mxsfb 21c8000.lcdif: initialized
imx-sdma 20ec000.sdma: no event needs to be remapped
imx-sdma 20ec000.sdma: loaded firmware 3.3
imx-sdma 20ec000.sdma: initialized
2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 18, base_baud = 5000000) is a IMX
console [ttymxc0] enabled
21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 235, base_baud = 5000000) is a IMX
imx-rng 2284000.rngb: iMX RNG Registered.
imx sema4 driver is registered.
[drm] Initialized drm 1.1.0 20060810
[drm] Initialized vivante 1.0.0 20120216 on minor 0
brd: module loaded
loop: module loaded
fsl-quadspi 21e0000.qspi: unrecognized JEDEC id bytes: ff, ff, ff
fsl-quadspi 21e0000.qspi: Freescale QuadSPI probe failed
spi_gpio spi4: gpio-miso property not found, switching to no-rx mode
CAN device driver interface
flexcan 2090000.can: device registered (reg_base=a09f8000, irq=27)
flexcan 2094000.can: device registered (reg_base=a0a00000, irq=28)
20b4000.ethernet supply phy not found, using dummy regulator
pps pps0: new PPS source ptp0
libphy: fec_enet_mii_bus: probed
fec 20b4000.ethernet eth0: registered PHC device 0
2188000.ethernet supply phy not found, using dummy regulator
pps pps1: new PPS source ptp1
fec 2188000.ethernet eth1: registered PHC device 1
usbcore: registered new interface driver asix
usbcore: registered new interface driver ax88179_178a
usbcore: registered new interface driver cdc_ether
usbcore: registered new interface driver net1080
usbcore: registered new interface driver cdc_subset
usbcore: registered new interface driver zaurus
usbcore: registered new interface driver cdc_ncm
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci-mxc: Freescale On-Chip EHCI Host driver
usbcore: registered new interface driver usb-storage
usbcore: registered new interface driver usb_ehset_test
2184800.usbmisc supply vbus-wakeup not found, using dummy regulator
2184000.usb supply vbus not found, using dummy regulator
2184200.usb supply vbus not found, using dummy regulator
ci_hdrc ci_hdrc.1: EHCI Host Controller
ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1
ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
mousedev: PS/2 mouse device common for all mice
input: 20cc000.snvs:snvs-powerkey as /devices/platform/soc/2000000.aips-bus/20cc000.snvs/20cc000.snvs:snvs-powerkey/input/input0
input: iMX6UL TouchScreen Controller as /devices/platform/soc/2000000.aips-bus/2040000.tsc/input/input1
read sensor who am i (0x0)error !
fxls8471: probe of 0-001e failed with error -22
snvs_rtc 20cc000.snvs:snvs-rtc-lp: rtc core: registered 20cc000.snvs:snvs-r as rtc0
i2c /dev entries driver
IR NEC protocol handler initialized
IR RC5(x/sz) protocol handler initialized
IR RC6 protocol handler initialized
IR JVC protocol handler initialized
IR Sony protocol handler initialized
IR SANYO protocol handler initialized
IR Sharp protocol handler initialized
IR MCE Keyboard/mouse protocol handler initialized
IR XMP protocol handler initialized
pxp-v4l2 pxp_v4l2: initialized
0-000e supply vdd not found, using dummy regulator
0-000e supply vddio not found, using dummy regulator
mag3110 0-000e: check mag3110 chip ID
mag3110 0-000e: read chip ID 0xfffffffb is not equal to 0xc4!
mag3110: probe of 0-000e failed with error -22
imx2-wdt 20bc000.wdog: use WDOG_B to reboot.
imx2-wdt 20bc000.wdog: timeout 60 sec (nowayout=0)
Bluetooth: HCI UART driver ver 2.3
Bluetooth: HCI UART protocol H4 registered
Bluetooth: HCI UART protocol BCSP registered
Bluetooth: HCI UART protocol ATH3K registered
usbcore: registered new interface driver bcm203x
usbcore: registered new interface driver btusb
usbcore: registered new interface driver ath3k
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
/soc/aips-bus@02100000/usdhc@02190000: voltage-ranges unspecified
sdhci-esdhc-imx 2190000.usdhc: Got CD GPIO
sdhci-esdhc-imx 2190000.usdhc: No vqmmc regulator found
mmc0: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA
/soc/aips-bus@02100000/usdhc@02194000: voltage-ranges unspecified
sdhci-esdhc-imx 2194000.usdhc: No vmmc regulator found
sdhci-esdhc-imx 2194000.usdhc: No vqmmc regulator found
usb 1-1: new high-speed USB device number 2 using ci_hdrc
mmc1: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
mmc0: host does not support reading read-only switch, assuming write-enable
mmc0: new high speed SDHC card at address 1234
fsl-asrc 2034000.asrc: driver registered
mmcblk0: mmc0:1234 SA16G 14.4 GiB
imx-wm8960 sound: wm8960-hifi <-> 202c000.sai mapping ok
imx-wm8960 sound: snd-soc-dummy-dai <-> 2034000.asrc mapping ok
imx-wm8960 sound: wm8960-hifi <-> 202c000.sai mapping ok
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected
NET: Registered protocol family 26
mmc1: MAN_BKOPS_EN bit is not set
NET: Registered protocol family 10
sit: IPv6 over IPv4 tunneling driver
NET: Registered protocol family 17
can: controller area network core (rev 20120528 abi 9)
NET: Registered protocol family 29
can: raw protocol (rev 20120528)
can: broadcast manager protocol (rev 20120528 t)
can: netlink gateway (rev 20130117) max_hops=1
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Bluetooth: BNEP filters: protocol multicast
Bluetooth: BNEP socket layer initialized
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
Bluetooth: HIDP socket layer initialized
mmc1: new HS200 MMC card at address 0001
mmcblk1: mmc1:0001 8GTF4R 7.28 GiB
8021q: 802.1Q VLAN Support v1.8
Key type dns_resolver registered
mmcblk1boot0: mmc1:0001 8GTF4R partition 1 4.00 MiB
mmcblk1boot1: mmc1:0001 8GTF4R partition 2 4.00 MiB
mmcblk1rpmb: mmc1:0001 8GTF4R partition 3 512 KiB
mmcblk1: p1 p2
dhd_module_init in
snvs_rtc 20cc000.snvs:snvs-rtc-lp: setting system clock to 1970-01-01 00:00:00 UTC (0)
gpio_dvfs: disabling
can-3v3: disabling
ALSA device list:
#0: wm8960-audio
VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
0100 65536 ram0 (driver?)
0101 65536 ram1 (driver?)
0102 65536 ram2 (driver?)
0103 65536 ram3 (driver?)
0104 65536 ram4 (driver?)
0105 65536 ram5 (driver?)
0106 65536 ram6 (driver?)
0107 65536 ram7 (driver?)
0108 65536 ram8 (driver?)
0109 65536 ram9 (driver?)
010a 65536 ram10 (driver?)
010b 65536 ram11 (driver?)
010c 65536 ram12 (driver?)
010d 65536 ram13 (driver?)
010e 65536 ram14 (driver?)
010f 65536 ram15 (driver?)
b300 15114240 mmcblk0 driver: mmcblk
b308 7634944 mmcblk1 driver: mmcblk
b309 40960 mmcblk1p1 33dbcda5-01
b30a 7589888 mmcblk1p2 33dbcda5-02
b320 512 mmcblk1rpmb (driver?)
b318 4096 mmcblk1boot1 (driver?)
b310 4096 mmcblk1boot0 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
会启动linux内核,最后停止,由于没有根文件系统。
(driver?)
0109 65536 ram9 (driver?)
010a 65536 ram10 (driver?)
010b 65536 ram11 (driver?)
010c 65536 ram12 (driver?)
010d 65536 ram13 (driver?)
010e 65536 ram14 (driver?)
010f 65536 ram15 (driver?)
b300 15114240 mmcblk0 driver: mmcblk
b308 7634944 mmcblk1 driver: mmcblk
b309 40960 mmcblk1p1 33dbcda5-01
b30a 7589888 mmcblk1p2 33dbcda5-02
b320 512 mmcblk1rpmb (driver?)
b318 4096 mmcblk1boot1 (driver?)
b310 4096 mmcblk1boot0 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
—[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
会启动linux内核,最后停止,由于没有根文件系统。