启动【u-boot】
1【bootloader】
1.1【bootloader】简介
bootloader的本质是一个裸机程序,是为了能够正确地启动linux操作系统,在系统初上电时需要对系统做一些硬件的初始化操作。bootloader会将linux内核(kernel)加载到ram中,并引导系统去执行linux代码,完成linux的启动。
所以bootloader是系统上电或者重新启动所执行的第一个程序。
几乎所有运行大型操作系统的硬件平台在启动操作系统前都需要一个定制化的bootloader。
1.2【bootloader】分类
行业中电脑系统使用的bootloader是cmos。
嵌入式系统中使用最为广泛的是u-boot。
1.3【bootloader】作用
1.初始化异常向量表;
2.初始化工作模式;
3.初始化栈指针寄存器;
4.初始化时钟;
5.初始化串口等必要的外设
6.关闭MMU;
7.关闭DCache;
8.初始化sdram;
9.初始化nand flash;
10.初始化网卡并集成一些必要的协议,如tcp,tftp等;
11.提供一个类似于linux那样的终端,方便与操作人员互动;
12.能够设置并保存一些参数;
13.能够复制linux内核程序到指定的内存空间,并引导系统运行
1.4【bootloader】移植
1.4.1【u-boot】移植
1.4.1.1目标平台
1.【s3c2440】
2.【mini2440】板载资源:
(1)64MB sdram;
(2)256MB nand-flash;
(3)2MB nor-flash;
(4)s3c2440内部还有4KB iram;
3.如果选择的是nand-flash启动(右图),那么此时内部iram的首字节地址就是0x00000000,也就是说第一条指令要从内部iram取。如果是这种情况的话,2440在运行iram中的程序之前,它会自动把nand-flash中的前4KB数据拷贝到iram去,这段程序是2440固化好的,称之为“垫脚石”。
1.4.1.2前置条件
1.明确启动方式:开发板以nor-flash启动
2.获取到【u-boot】源码
1.4.1.2移植流程
【STEP1】:通过【J-LINK】方式下载【u-boot】到【nor-flash】
启动【J-FLASH】:
打开工程文件:
打开数据文件:
建立连接:
下载:
【STEP2】:断开【J-FLASH】,PC与开发板通过串口连接
【STEP3】:配置【minicom】
【sudo minicom -s】
【STEP4】:启动【minicom】
【sudo minicom -con】
可见成功启动
【STEP5】:给开发板上电
上电效果如图
至此,【u-boot】已经成功移植到开发板。
补充:
1【u-boot】相关命令
(1)通过help命令可以打印u-boot的命令
(2)内存操作:
命令修饰符:
【.b】:
【.w】:
【.l】:
【md】:查看内存
【mm】:修改内存(地址自增)
【nm】:修改内存(地址不自增)
【cp source target count】:拷贝内存
(3)内存信息:
【nand info】:查看内存信息
【nand bad】:查看坏块信息
【nand dump[.OOB] off-dump page】:打印从0ff开始的dump page页的数据
【nand erase.chip nand-flash】:整片擦除
(4)u-boot环境变量:
键-值:全是文本数据(字符串),(值一般用【‘’】括起来)
【setenv 键 值】:添加环境变量
【setenv 键 值】:删除环境变量,【值】为空即可删除
【printenv】:打印所有环境变量
【setenv 键 值】:设置(修改)环境变量
【saveenv】:保存,保存就是把参数写入到nand-flash中去
(5)配置环境变量
2【TFTP】服务搭建
完成【u-boot】移植后,需要搭建一个【TFTP】服务
2.1【TFTP】服务简介
2.2【TFTP】服务搭建流程
(1)安装软件:
安装【xinetd】:
【sudo apt-get install xinetd】
安装【tftp-hpa】和【tftpd-hpa】:
【sudo apt-get install tftp-hpa tftpd-hpa】
(2)新建目录并修改目录权限
【mkdir tftpboot】
修改为最高权限:
【chmod 777 tftpboot/】
(3)修改配置文件
(4)重启网络服务
【sudo service tftpd-hpa restart】
【sudo /etc/init.d/xinetd reload】
【sudo /etc/init.d/xinetd restart】
(5)双网卡配置
配置虚拟机为双网卡模式:
修改虚拟机双网卡配置文件:
注意网段配置要相同
重启网络服务或者重启【Ubuntu】使得网络配置生效。
(6)配置开发板环境变量
更改服务器ip为配置好的静态ip,保存之后重启开发板,使得配置生效。
检查网络配置是否成功:
(6)下载linux内核的可执行程序:此时linux内核便已经下载到开发板内存中。
启动内核: