一、Windows下使用OTG烧写系统
1、在Windows使用NXP提供的mfgtool来向开发板烧写系统,需要用先将开发板的USB_OTG接口连接上电脑上。
Mfgtool工具是向板子先下载一个Linux系统,然后通过这个系统来完成烧写工作。
切记!使用OTG烧写的时候,要先把SD卡拔出来,等USBOTG与电脑连接成功后,可以将SD卡插进去。
烧写系统都是烧写到NAND或者EMMC中里面。
将拨码开关拨到01000000,进入USB下载模式。
烧写成功后,拨到10100110,从EMMC启动系统。
二、Ubuntu下通过脚本烧写系统
1、首先向SD卡烧写一个系统,然后使用SD卡启动,启动以后在Linux中执行烧写到EMMC或NAND中。(比较麻烦,不推荐)
正点原子官方Uboot编译与体验
一、何为Uboot?
1、uboot是一个裸机程序比较复杂。
2、uboot就是一个bootloader,作用就是用于启动linux或其他系统。Uboot最主要的工作就是初始化DDR,因为Linux是运行在DDR里面。一般linux镜像zImage(uImage)+设备树存放在SD,EMMC,NAND,SPI,FLASH等等外置存储区域。
这里就牵扯到一个问题,需要将Linux镜像从外置flash拷贝到DDR中,再去启动。
Uboot的主要目的就是为系统的启动做准备。
Uboot不仅仅能启动Linux,也可以启动其他系统,比如vxworks。
Linux不仅仅能通过Uboot启动。
Uboot是个通用的bootloader。他支持多种架构。
Uboot获取,
1、首先就是Uboot官网的获取,支持少,比如某一款芯片驱动等不完善。
2、soc厂商会从uboot官网下载一个版本的uboot,然后在这个版本的uboot上加入相应的soc以及驱动,这就是soc厂商定制版的uboot。比如NXP官方的I.MX6ULL EVK板子。
3、做开发板的厂商,开发板会参考SOC厂商的板子。开发板必然会和官方的板子不一样。因此开发板厂商又会去修改SOC厂商做好的uboot,以适应自己的板子。
正点原子官方Uboot的初次编译
1、编译UBOOT的时候需要先配置
2、编译完成以后就会生成一个u-boot.bin。必须向u-boot.bin添加头部信息。Uboot编译最后会通过/tools/mkimage软件添加头部信息,
可以写脚本程序编译,脚本如下。
3、如果配置uboot,那么一定要注意shell脚本会清除整个工程,那么配置的文件也会被删除,配置也会被删除。
4、为了方便开发,建议直接在uboot顶层Makefile里面设置好ARCH和CROSS_COMPILE这两个变量的值。
然后直接make V=1 -j12就行了。
Uboot启动log信息分析与基础命令
一、uboot启动log简析
1、以后带有调试性质的开发,uboot都是烧写到SD卡中的,因为方便烧写。
二、uboot命令使用
2.1、help命令
查看某一个命令帮助信息,?命令名
2.2、信息查询
1、bdinfo
2、pintenv命令:查看当前板子的环境变量(重要)
3、setenv命令 :设置环境变量,也可以自定义环境变量,setenv author zuozhongkai.也可以删除环境变量。
4、saveenv命令:保存环境变量
内存操作命令
1、md命令:md.b 80000000 10 md.w 80000000 10 md.l 800000000 10.查看内存命令
2、nm命令: nm.d 80000000 nm.w 80000000 nm.l 80000000
修改内存命令(修改一个内存)
3、mm命令:mm.l 80000000
修改连续的内存命令(内存地址会自增)
4、mw命令:mw.l 80000000 0A0A0A0A 10
0A0A0A0A 填充10个块
5、cp命令:cp.l 80000000 80000100 10
6、cmp命令:cmp.l 80000000 80000100 10
网络操作命令
网线插入到ENET2上,保证开发板和电脑处于同一网段内。
1、ping 命令.ping 192.168.66.130
2、dhcp命令,获取ip地址
3、nfs命令:用于调试下载 nfs 80800000 192.168.66.130:/home/wangzhen/IMX6ULL/nfs/zImage
4、tftp命令:首先需要安装tftp,可以百度一下。tftp 80800000 zImage
EMMC和SD卡操作命令
mmc info //设备信息
mmc rescan //扫描设备
mmc list //列出设备
mmc dev 0 //切换设备
mmc part //列出分区
mmc read //用于读取mmc设备的数据 mmc read addr blk# cnt mmc read 808000000 600 10
mmc write //用于将数据写入EMMC设备中 mmc write addr blk# cnt
mmc erase //擦除
FAT格式文件系统操作命令
对于IMX6U来说,SD/EMMC分为三个分区:
第一个:存放uboot
第二个:存放Linux zImage .dtb FAT
第三个:系统的根文件系统 EXT4
fatinfo 命令:查看指定的MMC分区文件系统信息
fatinfo mmc 1:1
fatls命令:查询FAT格式设备的目录和文件信息
fatls mmc 1:1
fstype命令:用于查看MMC设备某个分区的文件系统格式
fstype mmc 1:0 fstype mmc 1:1 fstype mmc 1:2
fatload命令:用于将指定的文件读取到DRAM中
fatload mmc 1:1 80800000 zImage
fatwrite命令:用于将DRAM中的数据写入MMC设备
fatwrite mmc 1:1 808000000 zImage 0x5c2720
BOOT操作命令
bootz命令:要启动Linux必须将zImage 。dtb文件放到DRAM中
(tftp 80800000 zImage tftp 83000000 imx6ull-14x14-c.dtb bootz 80800000 - 83000000)
boot命令:执行步骤
setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 imx6ull-14x14-c.dtb;bootz 80800000 - 83000000;'
saveenv
boot