目录
前言
此部分是我跟着正点原子的教程,在学习到驱动开发指南,对Linux的整个运作有了一定的了解后回头整理的笔记,此部分烧写的前提是,你已经有了一个很成熟的系统即,内核文件、设备树、根文件系统、u-boot全都准备好的前提下适用。后续的话,我还会对以上几个大模块的烧写,做分类的整理,便于对Linux整个系统架构的理解。
烧写的本质
烧写的本质就是往开发板里烧写一个u-boot(引导Linux启动)、zlmage(Linux内核)、dtb(设备树)、根文件系统(管理文件)。整个嵌入式Linux的框架搭建都是围绕着这四大部分进行。
烧写方法
(一)在Windows下利用OTG烧写系统
原理:是OTG工具先往板子里下载一个Linux系统,通过这个Linux系统来完成系统烧写。连接串口线可以看到整个项目的烧写过程。
在Windows下利用NXP提供的mfgtool向开发板烧写系统,需要先将开发板的USB_OTG接口连接到电脑上。
由于是用usb烧写,要把拨码开关拨到usb档位,拔出SD卡,按复位。
烧写的系统有以下几种分类:分为存储类型EMMC、NAND;烧写到SD卡里还是烧写到EMMC/NAND里。打开其中一个,连接上板子后点start直接开始烧写,等待完成,点Stop然后Exit。
选择正确的启动方式启动板子。
前面打开的工具可以理解为一个脚本文件,这个脚本文件会在这个目录下匹配出一个用来辅助烧写的Linux系统。
真实要烧写进去的系统在以下目录,文件夹内依次存放的东西为:
boot:放着u-boot、dtb和zlmage。
filesystem:根文件系统。
module:内核模块(这个东西我现阶段也没怎么接触过,不是很理解,能确定的是,这个东西对与Linux的运行并不起决定性作用,他更像是一个依托于Linux内核并对其功能进行拓展的东西,具体作用暂时不清楚,后期用到了会回来补充说明)。
(二)Ubuntu下通过脚本烧写
原理:先向SD里烧写一个系统,然后启动,启动后再通过这个系统想EMMC/NAND中烧写一个系统。
在Ubuntu下新建一个文件夹,把第一种方法里files里的东西拷进去。
准备一个SD卡(FAT32格式),并格式化,把下图这三个.sh脚本的权限开到最大。(chmod 777)
接入SD卡以后用sudo fdisk -l可以查看有哪些盘符,找出你的SD卡的盘符,(我的是sdb)
烧写命令如下,烧写完成后得到了一个可用于烧写的Linux系统,再把files文件夹(即我们要烧写到EMMC的文件)拷贝到SD卡里的rootf分区,/home/root里,执行sync代码同步一下。
sudo ./imx6mksdboot.sh -device /dev/sdb -flash emmc -ddrsize 512
插入SD卡,开发版选择从SD卡启动模式,此时开发板进入的Linux系统和我们要烧写的无疑,但这个系统是挂载在SD卡下的,并不是EMMC,我们要依托这个系统,再把这个系统烧写一遍到EMMC里。
打开命令行,进入到...../root文件夹里,输入fdisk -l找到我们的emmc设备,(我的是mmcblk1 ),输入以下代码烧录等待完成。
sudo ./imx6mkemmcboot.sh -device /dev/mmcblk1 -ddrsize 512
烧写完成后,启动方式选择EMMC启动,复位,即从EMMC启动系统。