打印
[活动]

【安防记录仪】第一篇 i.MX6的Uboot代码获取编译及烧写

[复制链接]
2277|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 白菜爱吃白菜 于 2016-10-21 14:56 编辑

官方提供的开发环境是基于yocto的,功能强大,配置灵活,使用简单。但是我个人电脑比较老旧,编译一次系统需要耗费很长时间,所以我选择了单独编译Uboot、Kernel和文件系统。
这篇文档里面介绍的是Uboot的代码获取、编译及烧写

代码获取

Uboot代码可以从git官方上获取
      git clone git://git.freescale.com/imx/uboot-imx.git
切换到远程的分支
      git checkout -b yourname origin/imx_v2015.04_4.1.15_1.0.0_ga


编译

  • 需要下载官方的交叉编译工具gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12
  • 进入uboot目录
  • 设置环境变量
      export ARCH=arm  
      export CROSS_COMPILE=/path/to/yourdir/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-
  • 编译
      mkdir build
      make mx6sxsabresd_defconfig O=build
      cd build
      make



生成
  
  
生成的Uboot在build目录下: u-boot.imx


准备烧写

i.MX6上电启动流程可参照《IMX6Solo启动流程-从上电到Uboot》 ,u-boot.imx中包含了IVT,所以按照数据手册中,需要将u-boot.imx烧写到SD卡偏移量为1Kb的地址。
将SD卡通过读卡器插入电脑(主机是Debian Linux),假设识别为/dev/sdb,使用root用户使用fdisk进行分区,将SD卡分成两个区,第一个区为FAT32文件系统格式,第二个区为ext4格式。
  fdisk /dev/sdb  #分区,下面的操作都是在fdisk下
      p    #打印当前的所有分区
      d   #删除分区命令,d 1表示删除第一个分区
      n   #增加分区命令,按照命令交互提示对SD卡进行分区,第一个分区至少要10M,偏移量大于Uboot的大小
      w  #将修改的数据写入到SD卡
分区结束之后,重新拔插SD卡,对其进行格式化分区,使用root用户执行:
      mkfs.vfat /dev/sdb1
    mkfs.ext4 /dev/sdb2
分区1用于存放内核,设备树文件,M4镜像等,分区2用于文件系统,而Uboot放在起始地址为1Kb的位置,在第一个分区之前


烧写

      sudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2 conv=fsync

相关帖子

沙发
荣丰宇| | 2016-9-9 12:54 | 只看该作者

使用特权

评论回复
板凳
HORSE7812| | 2016-10-20 13:48 | 只看该作者

使用特权

评论回复
地板
一般首席| | 2017-9-7 19:58 | 只看该作者

使用特权

评论回复
5
weixiu123| | 2017-9-22 18:50 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

61

帖子

3

粉丝