约定: “$”表示是在主机上执行,“#”表示在目标板执行
一块板子的启到Linux运行大概经历:
BootLoader——加载内核——设备树——挂载根文件系统
BootLoader
启动过程:
1、打开svc权限,关闭看懵,中断,清cache,关闭MMU
2、基本初始化时钟、串口、flash内存
3、自搬移(重定位)到内存 (将flash中的搬移到内存中。原因内存速度快)
4、栈的初始化,跳到C语言部分
5、大部分硬件的初始化
6、搬移内核到内存
7、跳到内核执行
环境搭建(配置编译)
{//
一、 开发主机安装
{//
二、交叉编译工具安装
$ tar xvf gcc-4.6.4.tar.xz
$ export PATH=/home/linux/gcc-4.6.4/bin:$PATH ///home/linux/gcc-4.6.4/bin要根据你实际路径来改
$ arm-n 然后按Tab键补全 //如果能补全为arm-none-linux-gnueabi- 表示安装交叉编译工具成功了
}
{//
三、tftp服务安装
//----
1、虚拟机上安装tftp服务
$ sudo dpkg -s tftpd-hpa //检查是否安装tftp server
//$ sudo apt-get install tftpd-hpa 如果未安装,安装 tftp-server
$ sudo vi /etc/default/tftpd-hpa //修改tftp服务器配置文件为
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-c -s -l"
$ mkdir /tftpboot //创建tftpboot目录,
$ sudo chmod -R 777 /tftpboot
$ sudo service tftpd-hpa restart //启动 tftp-server
//----
2、-验证虚拟机tftp服务是否OK
$ sudo cat /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
$ sudo service tftpd-hpa restart //如果有更改配置,需要重启一下 tftp-server
$ cd /tftpboot
$ touch test
$ cd /tmp
$ tftp 127.0.0.1
tftp>get test
tftp>q
$ ls //看到有test文件,表示该tftp服务是OK的
//---
3、准备待传输文件
拷贝 uImage exynos4412-fs4412.dtb 到 /tftpboot 目录下
}
{//
<