嵌入式系统:




嵌入式 前后台架构 嵌入式后端开发_目标机


应用层:可以开发各种app应用,用于处理业务需求

内核层:通过将硬件虚拟成为文件,此层主要用于操作硬件和保护硬件

硬件层:所有的硬件设备

嵌入式linux交叉编译环境

主机(可以运行linux或者VM上运行linux)

目标板(开发版)

连接介质(串口线、网线)

开发版与主机用网线和串口线进行连接

可以访问板子上的文件,相当于linux系统

主机也可以将文件放到板子上

主机可以进行编写程序和编译程序

开发版启动流程:


嵌入式 前后台架构 嵌入式后端开发_嵌入式 前后台架构_02


搭建嵌入式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地址,必须和虚拟机在同一网段。