本文是参考http://blog.csdn.net/girlkoo/article/details/44536447和http://blog.csdn.net/girlkoo/article/details/44626011这篇两篇文章,然后把移植过程和学习笔记再次留下.
本文是"imx6q处理器,linux操作系统平台搭建 从SD卡启动系统"的姐妹篇,差别尽在uboot的环境变量略有不用,在完成imx6q处理器,linux操作系统平台搭建 从SD卡启动系统后,只需修改相应的环境变量即可完成从eMMC启动系统.
下面是针对uboot环境变量的修改,是在"imx6q处理器,linux操作系统平台搭建 从SD卡启动系统"uboot基础上进行修改的.
u-boot的修改
( 1 ) 修改rootfs的存放位置
"root=/dev/mmcblk1p1 rootwait\0" \ 修改为 "root=/dev/mmcblk0p1 rootwait\0" \
( 2 ) 修改读取mmc的设备位置,为第3块设备(对应硬件的4号 接口)
"mmc dev 1; " \ 修改为 "mmc dev 3; " \
修改完毕,重新编译uboot
./build.sh
暂时我只知道在烧写eMMC要用MFGtools工具,只能在Windows烧写,有其他方式,给我留言,非常感谢啊.
烧写开始喽
( 1 ) 准备食材,就是u-boot.bin uImage rootfs.tgz
( 2 ) 讲以上文件复制到 Mfgtools-Rel-1.1.0_121218_MX6Q_updateR/Profiles/MX6Q Linux Update/OS Firmware/files/linux/ 下
( 3 ) 修改烧写工具根目录下的 cfg.ini 文件
修改成
[profiles] chip = MX6Q Linux Update [platform] board = SabreSD [LIST] name =Linux-SabreSD-eMMC
就是修改的name
这个name对应 Mfgtools-Rel-1.1.0_121218_MX6Q_UPDATER/Profiles/MX6Q Linux Update/OS Firmware/ 下 ucl2.xml 的应用配置名称的烧写过程.
给开发板加电,就可以使用MFGtools工具烧写了.
烧写完成后,系统启动输出信息如下
U-Boot 2009.08-dirty ( 1??月 25 2016 - 20:05:12) CPU: Freescale i.MX6 family TO1.2 at 792 MHz Thermal sensor with ratio = 170 Temperature: 27 C, calibration data 0x5384a769 mx6q pll1: 792MHz mx6q pll2: 528MHz mx6q pll3: 480MHz mx6q pll8: 50MHz ipg clock : 66000000Hz ipg per clock : 66000000Hz uart clock : 80000000Hz cspi clock : 60000000Hz ahb clock : 132000000Hz axi clock : 264000000Hz emi_slow clock: 132000000Hz ddr clock : 528000000Hz usdhc1 clock : 198000000Hz usdhc2 clock : 198000000Hz usdhc3 clock : 198000000Hz usdhc4 clock : 198000000Hz nfc clock : 24000000Hz Board: i.MX6Q-SABRESD: unknown-board Board: 0x63012 [WDOG ] Boot Device: MMC I2C: ready DRAM: 1 GB MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3 *** Warning - bad CRC or MMC, using default environment In: serial Out: serial Err: serial Net: got MAC address from IIM: 00:00:00:00:00:00 FEC0 [PRIME] Hit any key to stop autoboot: 0 mmc3(part 0) is current device MMC read: dev # 3, block # 2048, count 8192 ... 8192 blocks read: OK ## Booting kernel from Legacy Image at 10800000 ... Image Name: Linux-3.0.35 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3847528 Bytes = 3.7 MB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux... done, booting the kernel. Linux version 3.0.35 (shirf@shirf-pc) (gcc version 4.8.3 20140320 (prerelease) 6 CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache Machine: Freescale i.MX 6Quad/DualLite/Solo Sabre-SD Board Ignoring unrecognised tag 0x54410008 Memory policy: ECC disabled, Data cache writealloc CPU identified as i.MX6Q, silicon rev 1.2 PERCPU: Embedded 7 pages/cpu @8c008000 s5440 r8192 d15040 u32768 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 194560 Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p1 rootwait 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: 512MB 256MB = 768MB total Memory: 765844k/765844k available, 282732k reserved, 0K highmem Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) DMA : 0xf4600000 - 0xffe00000 ( 184 MB) vmalloc : 0xc0800000 - 0xf2000000 ( 792 MB) lowmem : 0x80000000 - 0xc0000000 (1024 MB) pkmap : 0x7fe00000 - 0x80000000 ( 2 MB) modules : 0x7f000000 - 0x7fe00000 ( 14 MB) .init : 0x80008000 - 0x8003c000 ( 208 kB) .text : 0x8003c000 - 0x80a9a220 (10617 kB) .data : 0x80a9c000 - 0x80affce0 ( 400 kB) .bss : 0x80affd04 - 0x80b2db4c ( 184 kB) SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 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 0x2020000 (options '115200') bootconsole [ttymxc0] enabled Console: colour dummy device 80x30 Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 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 (6324.22 BogoMIPS). print_constraints: dummy: NET: Registered protocol family 16 print_constraints: vddpu: 725 <--> 1300 mV at 700 mV fast normal print_constraints: vddcore: 725 <--> 1300 mV at 1150 mV fast normal print_constraints: vddsoc: 725 <--> 1300 mV at 1200 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 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 0x32070000, Cache size: 1048576 B bio: create slab <bio-0> at 0 mxs-dma mxs-dma-apbh: initialized print_constraints: SPKVDD: 4200 mV print_constraints: vmmc: 3300 mV SCSI subsystem initialized spi_imx imx6q-ecspi.0: 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 $ mc_pfuze 1-0008: recv failed!:-5,c8 mc_pfuze: probe of 1-0008 failed with error -1 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) mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 driver probed mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 dphy version is 0x3130302a MIPI CSI2 driver module loaded 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 max17135 2-0048: PMIC MAX17135 for eInk display i2c-core: driver [max17135] using legacy suspend method i2c-core: driver [max17135] using legacy resume method 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. PMU: registered new PMU device of type 0 Static Power Management for Freescale i.MX6 wait mode is enabled for i.MX6 cpaddr = 0 suspend_iram_base=f2900000 PM driver module loaded IMX usb wakeup probe add wake up source irq 75 IMX usb wakeup probe cpu regulator mode:ldo_enable i.MXC CPU frequency driver JFFS2 version 2.2. (NAND) ?© 2001-2006 Red Hat, Inc. msgmni has been set to 1495 alg: No test for stdrng (krng) io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) mxc_mipi_dsi mxc_mipi_dsi: i.MX MIPI DSI driver probed MIPI DSI driver module loaded mxc_sdc_fb mxc_sdc_fb.0: register mxc display driver ldb _regulator_get: get() with no identifier imx-ipuv3 imx-ipuv3.1: IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7) Console: switching to colour frame buffer device 128x48 mxc_sdc_fb mxc_sdc_fb.1: register mxc display driver ldb mxc_sdc_fb mxc_sdc_fb.2: register mxc display driver lcd mxc_sdc_fb mxc_sdc_fb.3: register mxc display driver ldb mxc_sdc_fb mxc_sdc_fb.3: ipu1-di0 already in use mxc_sdc_fb: probe of mxc_sdc_fb.3 failed with error -16 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.0: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX console [ttymxc0] enabled, bootconsole disabled console [ttymxc0] enabled, bootconsole disabled loop: module loaded Wait for CR ACK error! sata phy rx_pll is stable! No sata disk. m25p80 spi0.0: unrecognized JEDEC id ffffff GPMI NAND driver registered. (IMX) vcan: Virtual CAN interface driver CAN device driver interface flexcan netdevice driver FEC Ethernet Driver fec_enet_mii_bus: probed 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 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 hub 2-0:1.0: USB hub found hub 2-0:1.0: 1 port detected 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) mousedev: PS/2 mouse device common for all mice input: gpio-keys as /devices/platform/gpio-keys/input/input0 input: max11801_ts as /devices/platform/imx-i2c.1/i2c-1/1-0048/input/input1 egalax_ts 1-0004: egalax_ts: failed to read firmware version egalax_ts: probe of 1-0004 failed with error -5 egalax_ts 2-0004: egalax_ts: failed to read firmware version egalax_ts: probe of 2-0004 failed with error -5 usb 2-1: new high speed USB device number 2 using fsl-ehci elan - Read Hello Packet Failed elan-touch: probe of 2-0010 failed with error -22 i2c-core: driver [isl29023] using legacy suspend method i2c-core: driver [isl29023] using legacy resume method snvs_rtc snvs_rtc.0: rtc core: registered snvs_rtc as rtc0 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 mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video18 mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video19 mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video20 hub 2-1:1.0: USB hub found hub 2-1:1.0: 4 ports detected mag3110 2-000e: check mag3110 chip ID mag3110 2-000e: read chip ID 0xfffffffb is not equal to 0xc4! mag3110: probe of 2-000e failed with error -22