QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样

========================================================

执行命令

  1. u-boot# env default -f -a; setenv ipaddr 192.168.0.100;setenv serverip 192.168.0.107;setenv image zImage;setenv fdt_file zImage-imx6ul-14x14-evk.dtb;setenv rootfsinfo 'setenv bootargs ${bootargs} root=/dev/nfs ip=dhcp nfsroot=${serverip}:/tftpboot/imx6ulevk.rootfs,v3,tcp';setenv bootcmd_net 'run rootfsinfo; dhcp ${image}; dhcp ${fdt_addr} ${fdt_file}; bootz ${loadaddr} - ${fdt_addr}';setenv bootcmd 'run bootcmd_net'

出现错误

  1. CPU:   Freescale i.MX6UL rev1.0 at 396 MHz
    CPU:   Temperature 38 C
    Reset cause: POR
    Board: MX6UL 14x14 EVK
    I2C:   ready
    DRAM:  512 MiB
    MMC:   FSL_SDHC: 0, FSL_SDHC: 1
    Display: TFT43AB (480x272)
    Video: 480x272x24
    In:    serial
    Out:   serial
    Err:   serial
    switch to partitions #0, OK
    mmc1 is current device
    Net:   FEC1
    Normal Boot
    Hit any key to stop autoboot:  0 
    BOOTP broadcast 1
    DHCP client bound to address 192.168.0.105 (3 ms)
    Using FEC1 device
    TFTP from server 192.168.0.107; our IP address is 192.168.0.105
    Filename 'zImage'.
    Load address: 0x80800000
    Loading: #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             ########################
             885.7 KiB/s
    done
    Bytes transferred = 6070432 (5ca0a0 hex)
    BOOTP broadcast 1
    DHCP client bound to address 192.168.0.105 (3 ms)
    Using FEC1 device
    TFTP from server 192.168.0.107; our IP address is 192.168.0.105
    Filename 'zImage-imx6ul-14x14-evk.dtb'.
    Load address: 0x83000000
    Loading: ###
             364.3 KiB/s
    done
    Bytes transferred = 34342 (8626 hex)
    Kernel image @ 0x80800000 [ 0x000000 - 0x5ca0a0 ]
    Wrong Ramdisk Image Format
    Ramdisk image is corrupt or invalid

修改为(Thanks tony):

  1. U-boot# setenv serverip 192.168.0.107; setenv bootargs console=ttymxc0, debug root=/dev/nfs ip=dhcp nfsroot=${serverip}:/nfsroot/rootfs,v3,tcp
  2. dhcp 0x80800000 zImage; dhcp 0x83000000 zImage-imx6ul-14x14-evk.dtb; bootz 0x80800000 - 0x83000000
  3.  
  4. # 注释
  1. # setenv serverip 192.168.0.107; // 设置服务器地址
    # setenv bootargs console=ttymxc0,115200 debug root=/dev/nfs ip=dhcp nfsroot=${serverip}:/nfsroot/rootfs,v3,tcp // boot属性,串口显示log,配置nfs加载rootfs
    # dhcp 0x80800000 zImage; // 设置zImage的加载地址
    #
    dhcp 0x83000000 zImage-imx6ul-14x14-evk.dtb; // 设置dtb文件的加载地址
    # bootz 0x80800000 - 0x83000000 // 开始加载地址段之间的内容到内存

以下代码可以从tftp加载zImage和zImage-imx6ul-14x14-evk.dtb,但加载rootfs时出错,错误log

  1. cpu cpu0: dev_pm_opp_get_opp_count: device OPP not found (-)
  2. gpio_dvfs: disabling
  3. VSD_3V3: disabling
  4. can-3v3: disabling
  5. regulator-dummy: disabling
  6. imx mcc test is registered.
  7. snvs_rtc 20cc034.snvs-rtc-lp: setting system clock to -- :: UTC ()
  8. IP-Config: Failed to open eth0
  9. IP-Config: Failed to open eth1
  10. IP-Config: No network devices available
  11. ALSA device list:
  12. #: wm8960-audio
  13. VFS: Unable to mount root fs via NFS, trying floppy.
  14. VFS: Cannot open root device "nfs" or unknown-block(2,0): error -6
  15. Please append a correct "root=" boot option; here are the available partitions:
  16. 1f00 mtdblock0 (driver?)
  17. b300 mmcblk1 driver: mmcblk
  18. b301 mmcblk1p1 a9d0174c-
  19. b302 mmcblk1p2 a9d0174c-
  20. Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(,)
  21. random: nonblocking pool is initialized

初步断定是nfs服务器加载失败, 先设置从sd卡中加载rootfs,可以正常启动:

  1. setenv bootargs 'console=ttymxc0,115200 debug ip=dhcp root=/dev/mmcblk1p2 rootwait rw'

进入系统后网卡无法正常打开

  1. root@imx6ulevk:/usr/games# ifconfig eth0 up
  2. ifconfig: SIOCSIFFLAGS: No such device

查看系统信息

  1. dmesg | grep eth -C

===================================================================================================

常用命令备忘

  1. # env default -f -a // 恢复默认设置
  2. # saveenv // 保存设置到长期存储emmc,否则掉电设置失效
  3. # help or ? // 查看帮助信息
  4. # print // 打印当前环境信息
  5. # setenv ethaddr xx:xx:xx:xx:xx:xx // 因为要上网,如果网卡没有mac地址,随便搞个mac地址
    # setenv ethaddr 00.01.02.03.04.05

===================================================================================================

boot四大件儿

  Bootloader (U-boot);  // 如果没有指定boot设备,默认从SD/MMC启动;

             // MFGTool可以把u-boot image烧写到任何所有设备,

             // 可以通过dd命令把u-boot image烧写到sdcard

             // 通过u-boot命令行可以把u-boot image 烧写到其他设备

  Linux kernel image(zImage);  // 所有I.MX的板子可以用同一套zImage

  A device tree file (.dtb) for the board being used   // 适配不同的硬件pin和软件配置文件,专门做适配的一个东东;

                             // 注意在选择上有个LDO bypass区别,硬件和系统工程师注意

  A root file system(rootfs) for the particular system image  // busybox, common libraries

========================================================

SD卡启动

先准备一张4G卡,如果您有钱用8G也没关系,只不过会有4G浪费不见了,有更多空间需求也可以自己适配。

可以通过一个命令一次烧写四大件儿,XXX.sdcard这个文件都包含了,简单方便。

也可以分批次一个一个烧写四大件儿,灵活。

Table 1. Image layout

Start address (sectors)

Size (sectors)

Format

Description

0x400 bytes (2)

0x9FFC00 bytes (20478)

RAW

U-Boot and reserved area

0xa00000 bytes (20480)

500 Mbytes (1024000)

FAT

Kernel zImage and DTBs

0x25800000 bytes (1228800)

Remaining space

Ext3/Ext4

Rootfs

准备第一次烧写:

  $ cat /proc/partitions   // 找到自己sd卡的盘符,别找错了,不然可能毁掉你的操作系统

  $ sudo dd if=<.sdcard image> of=/dev/sdx bs=1M conv=fsync   // 替换到属于你的.sdcard image和u盘盘符

.sdcard image 这个东西很牛逼,已经对sdcard分好了区,如果你想分开烧写四大件,你就得自己分区了:

  $ sudo umount /dev/sdx     // 先卸掉设备

  $ sudo fdisk /dev/sdx   // 进入磁盘分区程序,别怕费事儿,按顺序把下边儿命令敲了吧

  1.     p [lists the current partitions]
  2.     d [to delete existing partitions. Repeat this until no unnecessary partitions
  1.      are reported by the 'p' command to start fresh.]
  1.     u [switch the unit to sectors instead of cylinders]
  2.     n [create a new partition]
  3.     p [create a primary partition - use for both partitions]
  4.     1 [the first partition]
  5.     20480 [starting at offset sector]
  6.     1024000 [size for the first partition to be used for the boot images]
  7.     p [to check the partitions]
  1.     n
  2.     p
  3.     2
  4.     1228800 [starting at offset sector, which leaves enough space for the kernel,
  1.      the bootloader and its configuration data]
  2.     <enter> [using the default value will create a partition that extends to
  1.      the last sector of the media]
  2.     p [to check the partitions]
  1.     w [this writes the partition table to the media and fdisk exits]

拷贝四大件儿

  内容太多,就不一一拷贝了,参考文档《i.MX_Linux_User's_Guide.pdf》

========================================================

从NFS启动系统

  1. setenv serverip 192.168.0.107
  2. setenv consoleinfo 'console=ttymxc0,115200'
  3. setenv displayinfo 'video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24'
  4. setenv loadaddr 0x80800000 setenv fdt_addr 0x83000000 setenv fdt_file 'zImage-imx6ul-14x14-evk.dtb'
  5. setenv special 'uart_from_osc'
  6. setenv rootfsinfo 'root=/dev/nfs ip=dhcp nfsroot=${serverip}:/nfsroot/rootfs,v3,tcp'
  7. setenv bootargsset 'setenv bootargs ${consoleinfo} ${rootfsinfo} ${displayinfo} ${special}'
  8. setenv bootcmd_net 'run rootfsinfo bootargsset; dhcp ${image}; dhcp ${fdt_addr} ${fdt_file}; bootz ${loadaddr} - ${fdt_addr}'
  9. setenv bootcmd 'run bootcmd_net'
  10. -------------------------
  11. setenv ipaddr 192.168..xxx
  12. setenv serverip 192.168..xxx
  13. setenv bootfile uImage
  14. setenv nfsroot /home/carmili/ltib/rootfs
  15. setenv bootargs_base 'setenv bootargs console=ttymxc0,115200'
  16. setenv bootargs_nfs 'setenv bootargs ${bootargs} root=/dev/nfs rw ip=${ipaddr }{serverip }:192.168.2.1:255.255.255.0::eth0ff nfsroot=${serverip}{nfsroot},v3,tcp
  17. setenv bootcmd_net 'run bootargs_base bootargs_nfs;bootm'
  18. setenv bootcmd 'tftpboot uImage; run bootcmd_net'
  19. -------------------------
  20. U-Boot > setenv ipaddr 192.168.0.100
  21. U-Boot > setenv serverip 192.168.0.107
  22. U-Boot > setenv image zImage
  23. U-Boot > setenv fdt_file zImage-imx6ul-14x14-evk.dtb
  24. U-Boot > setenv rootfsinfo 'setenv bootargs ${bootargs} root=/dev/nfs ip=dhcp nfsroot=${serverip}:/tftpboot/imx6ulevk.rootfs,v3,tcp'
  25. U-Boot > setenv bootcmd_net 'run rootfsinfo; dhcp ${image}; dhcp ${fdt_addr} ${fdt_file}; bootz ${loadaddr} - ${fdt_addr}'
  26. U-Boot > setenv bootcmd 'run bootcmd_net'

从SD卡启动

  1. U-Boot > setenv mmcpart
  2. U-Boot > setenv loadfdt 'fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}'
  3. U-Boot > setenv loadkernel 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} zImage'
  4. U-Boot > setenv bootcmd 'mmc dev ${mmcdev}; run loadkernel; run mmcargs; run loadfdt; bootz $ {loadaddr} - ${fdt_addr};'

Yocto开发笔记之《U-boot启动内核流程》(QQ交流群:519230208)的更多相关文章

  1. 运维开发笔记整理-URL配置

    运维开发笔记整理-URL配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.URL路由 对于高质量的Web应用来说,使用简洁,优雅的URL的路由是一个非常值得重视的细节.Dja ...

  2. Yocto开发笔记之《快速入门,环境搭建 & 编译》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:,为避免广告骚扰,申请时请注明 “开发者” 字样 ======================================== ...

  3. Yocto开发笔记之《根文件系统裁剪》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 =============================== ...

  4. Yocto开发笔记之《嵌入式linux libcurl编程》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 =============================== ...

  5. Yocto开发笔记之《Makefile编写》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 =============================== ...

  6. Yocto开发笔记之《驱动调试-GPS数据采集》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 =============================== ...

  7. Yocto开发笔记之《Tip-bitbake常用命令》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 =============================== ...

  8. [Openwrt 项目开发笔记]:MySQL配置(六)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在本人的项目中,运行在路由器上的服务器采用Ngi ...

  9. 《linux就该这么学》课堂笔记12 网卡配置、防火墙配置

    1.网卡配置(四种方法,选其一即可,配置后须重启网络服务使其生效) 1)修改配置文件./etc/sysconfig/network-scripts/ifcfg-网卡名称 2)nmtui [RHEL7] ...

  10. Yocto开发笔记之《网卡配置》(QQ交流群:519230208)

    QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 ============================================== # ifconfig -a # ...

随机推荐

  1. SharedPreferences

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它是Android数据持久化方法中最简单的一种. 其本质是基于XML文件存储key-value键值对数据,通常用 ...

  2. react.js 之 批量添加与删除功能

    最近做的CMS需要用到批量添加图片的功能:在添加文件的容器盒子内,有两个内容,分别是:添加按钮与被添加的选择文件组件. 结构分析: 被添加的组件,我们称为:UploadQiNiuFiles(七牛文件上 ...

  3. mysql-存储过程案例-存储过程中创建表和修改表数据

    -- 本存储过程有特殊执行循环数量的要求,是对security_market_history表进行修正 -- 判断存储过程是否存在 drop PROCEDURE if exists proc_secu ...

  4. Python列表、元组、字典和字符串的常用函数

    Python列表.元组.字典和字符串的常用函数 一.列表方法 1.ls.extend(object) 向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中 ...

  5. mysql通过sql语句如何批量去掉某一个表中某一个字段的下面的相同部分字符串

    今天用Excel导入的数据中,前面包含` 批量去除 UPDATE  sheet2 set total=replace(total,'`','');

  6. UML类图中的六种关系及实例【补充】

    ·继承和接口都比较常见,通过继承子类可以直接使用父类的(public,protected属性以及方法:而实现了Speakable接口的Person类必须定义其所有方法,包括speak()): ·依赖指 ...

  7. 63.Android面试题精选 (转)

    1.Android dvm 的进程和Linux的进程,应用程序的进程是否为同一个概念: 答:dvm是dalivk虚拟机.每一个android应用程序都在自己的进程中运行,都拥有一个dalivk虚拟机实 ...

  8. js-this的用法,来自阮一峰老师的文章

    1. 随着函数使用场合的不同,this的值会发生变化.但是有一个总的原则,那就是this指的是,调用函数的那个对象. 或者说,this指向当前执行的函数的所有者. 2.情况一:纯粹的函数调用 这是函数 ...

  9. java项目的划分方式:模块优先还是层优先?

    I've seen and had lots of discussion about "package by layer" vs "package by feature& ...

  10. JSP的JSTL标签使用

    JSTL标签和asp.net中的webform控件很像,但是功能确比asp.net的强很多. 配置过程,从最简单的项目开始: 1.下载JSTL标签库:http://archive.apache.org ...