I.MX6UL系统移植(一)—— U-Boot

1、U-Boot简介 uboot的全称是Universal Boot Loader,uboot是一个遵循GPL协议的开源软件,uboot是一个裸机代码,可以看作是一个裸机综合例程。现在的uboot已经指出液晶屏、网络、 USB等高级功能。2、U-Boot编译 ①、make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean ②、make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- ...
摘要由CSDN通过智能技术生成

1、U-Boot简介
   uboot的全称是Universal Boot Loader,uboot是一个遵循GPL协议的开源软件,uboot是一个裸机代码,可以看作是一个裸机综合例程。现在的uboot已经指出液晶屏、网络、
   USB等高级功能。

2、U-Boot编译
   ①、make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
   ②、make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
   ③、make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4

3、U-Boot烧写与启动
   uboot启动的时候会输出一些信息
   ①、U-Boot 2016.03 (Apr 12 2019 - 02:33:00 +0800)
       uboot的版本号和编译时间,当前的uboot版本是2016.03,编译时间是2019年4月12日凌晨2点33。
   ②、CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
       CPU: Industrial temperature grade (-40C to 105C) at 46C
       CPU信息,当前使用的CPU是飞思卡尔的I.MX6ULL,如果时间528MHz的I.MX6ULL,此处会显示主频为528MHz。这颗芯片是工业级的,可以工作在-40℃~105℃。
   ③、Reset cause: POR
       复位原因,当前的复位原因是POR。I.MX6ULL芯片上有个POR_B引脚,将这个引脚拉低即可复位I.MX6ULL。
   ④、Board: MX6ULL 14x14 EVK
       板子名字,当前的板子名字为MX6ULL 14x14 EVK。 
   ⑤、I2C: ready
       提示I2C准备就绪。 
   ⑥、DRAM: 512 MiB
       提示当前板子的DRAM(内存)为512MB,如果是NAND版本的话内存为256MB。
   ⑦、MMC: FSL_SDHC: 0, FSL_SDHC: 1
       提示当前有两个MMC/SD卡控制器:FSL_SDHC(0)和FSL_SDHC(1)。I.MX6ULL支持两个MMC/SD,正点原子的I.MX6ULL EMMC核心板上FSL_SDHC(0)接的EMMC,FSL_SDHC(1)
       接的SD(TF)卡。
   ⑧、Display: ATK-LCD-7-1024x600 (1024x600)
       Video: 1024x600x24
       LCD型号,当前的LCD型号是ATK-LCD-7-1024x600(1024x600),分辨率为1024x600,格式为RGB888(24位)。
   ⑨、In: serial
       Out: serial
       Err: serial
       标准输入、标准输出和标准错误所使用的终端,这里都使用串口(serial)作为终端。
   A、switch to partitions #0, OK
       mmc0 is current device
       切换到emmc的第0个分区上,因为当前的uboot是emmc版本的,也就是从emmc启动的。只是为了方便烧写到了SD卡上,但是它的内心还是EMMC的。所以uboot启动以后
       会将emmc作为默认存储器,当然也可以将SD卡作为uboot的存储器。
   B、Net: FEC1
       网口信息,提示我们当前使用的FEC1这个网口,I.MX6ULL支持两个网口。
   C、Normal Boot
       提示正常启动,就是说uboot要从emmc里面读取环境变量和参数信息启动Linux内核了。
   D、Hit any key to stop autoboot: 0
       倒计时提示,默认倒计时3秒,倒计时结束之前按下回车键就会进入Linux命令模式。如果在倒计时结束以后没有按下回车键,那么Linux内核就会启动,Linux内核一
       旦启动,uboot就会寿终正寝。

4、U-Boot命令使用
(1)信息查询命令
     ①、bdinfo
         用于查看板子信息。
     ②、printenv
         用于输出环境变量信息。
     ③、version
         用于查看uboot的版本号。
(2)环境变量操作命令
     ①、修改环境变量
         setenv:修改DRAM中的环境变量值。
         saveenv:将修改后的环境变量保存到flash中。
         PS1:将环境变量bootdelay改为5
         命令:setenv bootdelay 5
               saveenv
         PS2:修改环境变量bootargs的值
         命令:setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
               saveenv
     ②、新建环境变量
         PS1:新建命令author
         命令:setenv author zuozhongkai
               saveenv
     ③、删除环境变量
         PS1:删除命令author(通过给author赋空值)
         命令:setenv author
               saveenv
(3)内存操作命令
     ①、md命令
         md命令用于显示内存值,格式:md [.b,.w,.l] address [# of objects]
         命令中的[.b .w .l]对应byte、word和long,也就是分别以1个字节、2个字节、4个字节来显示内存值。address就是要查看的内存起始地址,[# of objects]表示
         要查看的数据长度,这个数据长度单位不是字节,而是跟你所选择的显示格式有关。比如你设置要查看的内存长度为20(十六进制为0x14),如果显示格式为.b的
         的话那就表示20个字节;如果显示格式为.w的话就表示20个word,也就是20*2=40个字节;如果显示格式为.l的话就表示20个long,也就是20*4=80个字节。
         另外要注意:uboot命令中的数字都是十六进制的,不是十进制的。
         PS1:查看以0X80000000开始的20个字节的内存值,显示格式为.b
         命令:md.b 80000000 14
     ②、nm命令
         nm命令用于修改指定地址的内存值,格式:nm [.b,.w,.l] address
         PS1:修改0X80000000地址的值为0X12345678
         命令:=> nm.l 80000000         
               80000000: ffffff00 ? 12345678 #修改为0X12345678
               80000000: 12345678 ? q        #q退出修改
     ③、mm命令
         mm命令也是修改指定内存值的,使用mm修改内存值的时候地址会自增,而使用nm的话地址不会自增。
         PS1:修改以0X80000000地址开始的连续3个内存块(3*4=12个字节)的数据为0X05050505
         命令:=> mm.l 80000000
               80000000: 12345678 ? 05050505
               80000004: ffffafff ? 05050505
               80000008: fff9ffff ? 05050505
               8000000c: ffbffeff ? q
     ④、mw命令
         命令mw用于使用一个指定的数据填充一段内存,格式:mw [.b,.w,.l] address value [count]
         mw命令同样可以用.b、.w和.l来指定操作格式,address表示要填充的内存起始地址,value为要填充的数据,count是填充的长度。
         PS1:使用.l格式将以0X80000000为起始地址的0X10个内存块(0x10*4=64字节)填充为0X0A0A0A0A
         命令:mw.l 80000000 0A0A0A0A 10
     ⑤、cp命令
         cp是数据拷贝命令,用于将DRAM中的数据从一段内存拷贝到另一段内存中,或者把Nor Flash中的数据拷贝到DRAM中。
         命令:cp [.b,.w,.l] source target count
         cp命令同样可以以.b、.w和.l来指定操作格式,source为源地址,target为目的地址,count为拷贝的长度。
         PS1:使用.l格式将0X80000000处的地址拷贝到0X80000100处,长度为0X10个内存块(0X10*4=64个字节)
         命令:cp.l 80000000 80000100 10
     ⑥、cmp命令
         cmp是比较命令,用于比较两段内存的数据是否相等。
         命令:cmp [.b,.w,.l] addr1 addr2 count
         cmp命令同样可以以.b、.w和.l来指定操作格式,addr1为第一段内存首地址,addr2为第二段内存首地址,count为要比较的长度。
         PS1:使用.l格式来比较0X80000000和0X80000100这两个地址数据是否相等,比较长度为0x10个内存块(16*4=64个字节)
         命令:=> cmp.l 80000000 80000100 10
               Total of 16 word(s) were the same
         PS2:使用.l格式来比较0X80002000和0X80003000这两个地址数据是否相等,比较长度为0x10个内存块(16*4=64个字节)
         命令:=> cmp.l 80002000 80003000 10
               word at 0x80002000 (0xffff7ff7) != word at 0x80003000(0xfffff7ff)
               Total of 0 word(s) were the same

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值