环境搭建
1、 shell
shell和shell脚本有什么区别?确切一点说,Shell就是一个命令行解释器, 它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用 Shell来启动、挂起、停止甚至是编写一些程序。 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言(就是你所说的shell脚本)。作为命令语言,它互动式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。
2、bootloader 作用
1、初始化硬件 2、搬内核到内存
3、镜像
所谓镜像文件其实和ZIP压缩包类似,它将特定的一系列文件按照一定的格式制作成单一的文件,以方便用户下载和使用
4、 桥接
5、安装编译器时,最好不要去修改环境变量,因为如果以后有的编译器(arm-gcc)版本不一样,但是名称一样,但是想使用后来安装的编译器是无法的,最好是在使用的时候将要用的编译器名称一并写出来。
6、环境变量参数放在flash中,在U-BOOT启动时,会去读取环境变量参数,选择如波特率、IP、MAC等参数
7、U-boot中有一个IP 内核也有一个IP,这两个IP可以重复,因为当内核启动后U-boot就不再使用了,他的任务即完成。
8、Tftp和nfs的功能
Tftp:只是一个文件传输的工具,在u-boot启动后(如果是通过网络下载内核),会将u-boot(目标板为客服端)中所指向的tftp的服务器端(PC端)里的内核下载到内存中。然后开始运行内核。
TFTP协议是简单的文件传输协议,所以实现很简单,使用方便,正好适合目标板BOOTLOADER使用。但是文件传输是基于UDP,文件传输(特别是大文件)是不可靠的。
Tftp:主机端tftp配置
1、 检查是否安装tftp server
命令:dpkg –s tftp-hpa
2、如果未安装,安装tftp-hpa
Apt-get install tftp-hpa tftp-hpa (需要联网)
3、修改文件 vim/etc/default/tftpd-hpa,开启tftp服务
在root权限下
Vim /etc/default/tftpd-hpa
TFTP_USERNAME=”tftp”
TFTP_DIRECTORY=”/tftpboot” 服务器端存放文件的目录(即内核所在位置,此目录需要先创建)
(其他不做修改)
4、创建tftpboot目录,启动tftp-server
Mkdir /tftpboot
Chmod a+w /tftpboot 修改此目录的权限
Serveice tftpd-hpa restart 重启服务器
5、在本机可以测试是否tftp是否正常
Tftp 127.0.0.1
Get 文件名(此文件名是在/tftpboot中存在的,会将文件下载到当前目录)
6、在目标板上运行
首先将目标板上的服务器的IP地址和服务器端tftp下载的文件路径设置到u-boot中。
设置内核加载方式为tftp下载,set bootcmd
NFS:
服务的主要任务是把本地的一个目录通过网络输出,其他计算机可以远程地挂接这个目录并且访问文件。 实际中,本地计算机上设置一个根文件系统(相当于Ubuntu下那个根文件系统,但是对于Ubuntu来说只是一个目录),然后让目标板挂接到此目录,以后目标板的根文件系统就在此目录下,当在PC端操作此目录,目标表上同时更新,这是相当于镜像。
(1)设置共享目录
运行命令
#gedit /etc/exports
编辑nfs 服务的配置文件(注意:第一次打开时该文件是空的),添加以下内容:
/home/root_nfs*(rw,sync,no_root_squash)
其中:
/home /root_nfs 表示nfs 共享目录,它可以作为开发板的根文件系统通过nfs 挂接;
* 表示所有的客户机都可以挂接此目录(可以只允许某个IP访问,加入IP地址代替*,“*(“ 中间不能有空格 )
rw 表示挂接此目录的客户机对该目录有读写的权力
no_root_squash 表示允许挂接此目录的客户机享有该主机的root 身份
(2) 建立共享目录
(3) 启动和停止nfs 服务
在命令行下运行:
#/etc/init.d/nfs start
这将启动nfs 服务,可以输入以下命令检验nfs 该服务是否启动。
# mount -t nfs 服务器ip地址: /home/root_nfs /mnt/ (/mnt/nfs ,其中nfs需要提前创建)
如果没有出现错误信息, 您将可以浏览到/mnt 目录中的内容和
/home/root_nfs 是一致的。
使用这个命令可以停止nfs 服务:
#/etc/init.d/nfsstop
7、注意u-boot的命令
Pri 显示环境参数
Set
9、 在VMware虚拟机环境下网卡桥接 双网卡设置
原理:在ubuntu下设置了两张虚拟的网卡,而在windows下有两张物理网卡,这样需要将ubuntu下的两张虚拟网卡桥接(镜像或者叫串联)到两张物理网卡上。然后各自使用物理网卡与外界通信。
步骤:(如果主机有两张物理网卡)
1、点击vmvare中的编辑------虚拟网络编辑器
2、添加到两个网络,都设置为桥接模式
3、为每个网卡设置IP地址(连接英特网的可以不用设置) 在有上角的上下图标
4、编辑设置IP地址 手动设置
5、在虚拟机中 设置项 设置桥接到物理网卡上
系统启动总结:
首先三星的s5pc100处理器内部有一个rom,会去将外部nand中U-boot读取到内存中,然后u-boot运行起来后,初始化硬件,并将内核搬移到内存中(内核存在网络虚拟文件中或者NAND中),然后开始运行内核,当内核运行起来后开始加载根文件系统(如果是调试阶段,将根文件系统挂在到PC机的文件目录下,直接在PC下编译文件,然后目标板自动更新,这样不用烧写到nand中,存放在PC机上的,镜像到目标板)。