嵌入式系统:
应用层:可以开发各种app应用,用于处理业务需求
内核层:通过将硬件虚拟成为文件,此层主要用于操作硬件和保护硬件
硬件层:所有的硬件设备
嵌入式linux交叉编译环境
主机(可以运行linux或者VM上运行linux)
目标板(开发版)
连接介质(串口线、网线)
开发版与主机用网线和串口线进行连接
可以访问板子上的文件,相当于linux系统
主机也可以将文件放到板子上
主机可以进行编写程序和编译程序
开发版启动流程:
搭建嵌入式linux开发环境主要工作:
- 准备开发主机、目标机及二者连接介质
- 准备目标机代码
- 安装交叉编译链
- 开发主机上安装的软件(方面调试)
- 终端软件(putty、minicom)
- tftp服务
- nfs服务
- 目标机安装(u-boot烧写调试)
- 主机和目标机联通
- 网络自动tftp加载内核,并挂载nfs rootfs启动
开发主机搭建:
- ubuntu中需要系列配置
- ubuntu与win文件共享,方便文件使用
- 安装交叉编译工具链(全路径太麻烦,可以设置PATH环境变量)
- tftp服务(用于文件传输)
- nfs服务(用于文件同步)
tftp服务:
条件:
- 网络连接
- 主机安装tftp服务器
- 目标机安装tftp客户端
优点:传输速度快
可以将编译好的内核下载到目标机,提升开发效率
tftp服务器配置:
1.检查是否安装tftp server
dpkg -s tftpd-hpa
sudo apt-get install tftpd-hpa tftp-hpa
2.修改配置文件,开启tftp服务
sudo vi /etc/default/tftpd-hap
TFTP_DIRECTORY = "文件目录" "/tftpboot"
3.创建tftpboot,启动tftp-server
mkdir /tftpboot
chmod a+w /tftpboot
service tftpd-hpa restart
4.准备传输文件
cp u-boot-............. /tftpboot
5.本机自环测试
tftp 127.0.0.1
tftp>get <downfile>
tftp>put <uploadfile>
nfs服务:
1.检查nfs服务是否安装
service nfs-kernel-server
sudo apt-get install nfs-kernel-server
2.修改 /etc/exports文件
/source/rootfs/ *(rw,sync,no_root_squash)
同步目录
3.准备内容
sudo mkdir /source
sudo chmod 777 /source
cd /source
sudo mkdir /rootfs (或者自己拷贝文件)
sudo chmod 777 /rootfs
4.重启nfs服务
sudo /etc/init.d/nfs-kernel-server
5.测试nfs是否安装
sudo mount -t nfs localhost:/source/rootfs/ /mnt/
ls /mnt/ 查看内容是否与source/rootfs内容一致
sudo unmount /mnt
目标机搭建:
- 制作SD卡,从SD卡启动
- 将sdfuse_q文件拷贝到linux下
- SD卡插入电脑中
- 从ubuntu中进入sdfuse_q目录执行命令
- sudo ./mkuboot.sh /dev/sdb
- 提示成功信息则写入成功
- 关闭开发板电源,将拨码开关调节为SD卡启动
- 插入SD卡到开发板
- 打开电源
板子如果通过串口有信息输出,则表示成功
连接:
tftp:板子ping主机和虚拟机
如果不能联通修改设置:
通过串口修改板子的网络地址
win10无法ping通,可能和防火墙有关
网络自动tftp加载内核,并挂载nfs rootfs
setenv bootcmd tftp 41000000 uImage;
tftp 42000000 exynos4412-fs4412.dtb;
bootm 41000000 - 42000000
nfs:挂载nfs bootfs
setenv bootargs root=/dev/nfs nfsroot=192.168.0.88:/source/rootfs
rw console=ttySAC2,115200
init=/linuxrc ip=192.168.0.33
注:192.168.0.88是虚拟机中的地址,后面接的是虚拟机同步文件路径;
192.168.0.33是板子的ip地址,必须和虚拟机在同一网段。