嵌入式系统移植-01嵌入式基本概念,嵌入式开发环境搭建,目标机搭建,TFTP服务搭建,NFS服务搭建

系统移植概述及环境搭建

嵌入式基本概念

嵌入式系统的应用领域

在这里插入图片描述

什么是嵌入式系统

嵌入式系统的定义
嵌入式系统本身是一个相对模糊的定义
一般定义
以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
广义上讲
凡是带有微处理器的专用软硬件系统都可称为嵌入式系统。

嵌入式系统的核心是定制
是根据市场需求对软硬件进行定制,实现性能的最大化

用嵌入式系统硬件组成部分

通用嵌入式系统硬件一般由一下部分组成
微控制器
晶振
内存(如:SRAM,SDRAM)
存储器(如:ROM,FLASH,SD,微硬盘)
其他外围设备接口
输入、输出接口

在这里插入图片描述

通用嵌入式系统软件组成部分

  • 无os嵌入式系统组成图
    在这里插入图片描述
  • 有os嵌入式系统组成图
    在这里插入图片描述

Linux 在嵌入式中应用的条件与前景

嵌入式系统越来越追求数字化、网络化和智能化。这就要要求整个嵌入式系统必须是开放的、提供标准的API,并且能够方便地与众多第三方的软硬件沟通。
Linux是在GPL协议下开放源码的系统,内核可以定制剪裁、功能强大、支持多种文件系统、网络功能及其强大、非常适合高端嵌入式系统。
更重要的是 linux 不仅仅支持X86体系结构的cpu,还支持众多的体系结构的 cpu/mcu。
Android 系统最初就是基于linux-2.6.23的。硬件基本要求 armv5 ARM926EJ-S 200Mhz 64M

嵌入式Linux内核结构

在这里插入图片描述

Android系统

在这里插入图片描述

嵌入式开发环境搭建

嵌入式Linux交叉开发环境硬件基本组成

  1. 开发主机(Host)
  2. 目标机(Target)
  3. 连接介质
    在这里插入图片描述

开发板启动流程

在这里插入图片描述

搭建嵌入式Linux开发环境的主要工作

准备开发主机、目标机(开发板)以及二者的连接介质
准备目标机代码
安装交叉工具链
开发主机上安装的软件(为方便调试)
终端软件(putty、minicom)
tftp服务
nfs服务
目标机安装(u-boot烧写调试)
SD卡方式
Fastboot方式 (成功后,板子有串口信息输出)
主机和目标机能联通
网络自动 tftp 加载内核,并挂载nfs rootfs 启动

开发主机搭建

在这里插入图片描述

ubuntu环境

在这里插入图片描述

目标机搭建

在这里插入图片描述

TFTP 服务

在这里插入图片描述

  1. 使用条件是:
    需要网络连接
    主机端需要安装 tftp 服务器软件
    目标机需要实现tftp客户端
  2. 优点:
    传输速度快
    可以将编译好的内核下载到目标机,提高开发效率
    tftp 是用来下载远程文件的最简单网络协议,它基于udp协议而实现。嵌入式 linux 的 tftp 开发环境包括两个方面:
    一是 linux 开发主机端的 tftp-server 支持,
    二是嵌入式目标系统的 tftp-client 支持。
主机端tftp服务器配置
  1. 检查是否安装tftp server
    $dpkg -s tftpd-hpa
    如果未安装,安装 tftp-server
    $apt-get install tftpd-hpa tftp-hpa

  2. 修改文件vim /etc/default/tftpd-hpa,开启tftp服务
    sudo vi /etc/default/tftpd-hpa

    TFTP_USERNAME=“tftp”
    TFTP_DIRECTORY="/tftpboot"
    TFTP_ADDRESS=“0.0.0.0:69”
    TFTP_OPTIONS="-c -s -l"

  3. 创建tftpboot目录,启动 tftp-server
    $mkdir /tftpboot
    $chmod a+w /tftpboot
    $service tftpd-hpa restart

  4. 准备带传输的文件
    $cp u-boot-fs4412.bin uImage exynos4412-fs4412.dtb /tftpboot

  5. 本机自环测试
    #tftp 127.0.0.1
    tftp>get
    tftp>put
    tftp>q
    ls //有看到获取的文件,表示该tftp服务是OK的

NFS 服务

在这里插入图片描述

主机端NFS服务器配置
  1. 检查nfs服务是否安装
    $ service nfs-kernel-server 如果为安装需安装 sudo apt-get install nfs-kernel-server

  2. 修改 /etc/exports 文件为
    /etc/exports: the access control list for filesystems which may be exported
    /nfs/rootfs *(rw,sync,no_root_squash)

  3. 准备内容
    $ sudo mkdir /nfs
    $ sudo chmod 777 /nfs
    $ cd /nfs
    $ cp rootfs.tar.xz . 它已制作好的根文件系统
    $ tar -xvf rootfs.tar.xz
    $ sudo chmod 777 rootfs

  4. 重启 nfs 服务
    $ sudo /etc/init.d/nfs-kernel-server restart

  5. 测试nfs服务是否安装成功
    $ sudo mount -t nfs localhost:/nfs/rootfs/ /mnt/
    $ ls /mnt/ 如果其中的内容和/nfs/rootfs中一致。 表示有挂载成功
    $ sudo umount /mnt

目标机安装(u-boot烧写调试) – 需要SD卡

制作SD卡,并从SD卡启动 (使用的是2010版本u-boot,支持fastboot烧写的)

将sdfuse_q 拷贝到Linux下
将SD卡插入电脑并识别
进入sdfuse_q执行如下操作

 $ sudo ./mkuboot.sh /dev/sdb 

出现下面的信息,表示SD启动盘制作成功

Fuse FS4412 trustzone uboot file into SD card
/dev/sdb reader is identified.
u-boot-fs4412.bin fusing...
1029+1 records in
1029+1 records out
527104 bytes (527 kB) copied, 5.31834 s, 99.1 kB/s
u-boot-fs4412.bin image has been fused successfully.
Eject SD card

关闭开发板电源,将拨码开关SW1调至(1000)(SD启动模式)
刚才做好的SD启动盘插入SD卡插槽
打开电源

fastboot烧写
	连接USB线到板子上的USB OTG口 
	连接串口线到板子的COM2口   
	重启板子,并快速停下,在串口终端输入下面命令 /*
						  如果有有需要,可以格式化 eMMC 并创建分区
						  $ fdisk -c 0
					    $ fatformat mmc 0:1
					    $ ext3format mmc 0:2
					    $ ext3format mmc 0:3
					    $ ext3format mmc 0:4
    */
  $ reset    重启切换到2010版的sd卡启动  
  $ fastboot  //会提示装驱动,选中第一天_环境搭建里的fastboot_driver 安装 	
  打开dos终端 进入USB_fastboot_tool\platform-tools目录输入
  > fastboot.exe flash bootloader u-boot-fs4412.bin  /*
          同理可以烧录其它镜像
			    > fastboot.exe flash kernel zImage
				  > fastboot.exe flash ramdisk ramdisk-uboot.img
			    > fastboot.exe flash system system.img
			    > fastboot -w
       */
  
  关闭开发板电源,将拨码开关SW1调至0110(EMMC启动模式)后打开电源
  从flash 的u-boot启动  /*
      如果启动失败,可以通过拨号开关恢复到SD卡方式启动
      如果启动成功,想恢复到原来的u-boot启动 (第一次输入reset后会自动切换回去,不用拔拨号开关)   
    */
IP地址设置

板子能ping通虚拟机 (要关闭防火墙 网卡右键高级)
|板子 192.168.2.10 |
--------------------------
------------------------
|电脑 192.168.2.112 | //做中转用,和板子虚拟机IP要在同一网段, 且不能和它们IP一样
------------------------
------------------------
|虚拟机 192.168.2.231 |

确认板子和电脑是能通信的

设置电脑网卡ip 为192.168.2.112 255.255.255.0 192.168.9.1
启动板子,快速按任意键停在boot处,设置u-boot 的环境变量

#setenv serverip 192.168.2.231    //注意它与虚拟机里 ubuntu 的ip要一致
#setenv ipaddr 192.168.2.10
#setenv gatewayip  192.168.2.1

#pri 查看设置后效果

FS4412 # pri
baudrate=115200
bootargs=root=/dev/nfs nfsroot=192.168.9.120:/nfs/rootfs rw console=ttySAC2,115200 clk_ignore_unused init=/linuxrc ip=192.168.9.9
bootcmd=tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 - 42000000
bootdelay=3
ethact=dm9000
ethaddr=11:22:33:44:55:66
gatewayip=192.168.2.1
ipaddr =192.168.2.10
netmask=255.255.255.0
serverip=192.168.2.231

#ping 192.168.2.231
测试网络是否连通 ,注意在u-boot中, 它能ping电脑, 电脑不能ping它 ,注意,要拔掉jtag线,否则ping 会重启
host 192.168.2.231 is alive //is alive 表示ok

确认电脑和虚拟机时能通信

编辑 -> 虚拟网络编辑器 -> VMnet0 桥接到(选连板子的网卡) //注意不要用automic,应手动指定对应的网卡
虚拟机 -> 设置 -> 网卡适配器 -> 自定义 (选 VMnet0)
使虚拟机内的虚拟网卡,关联到电脑实际用到的网卡
通过选VMnet0 和 VMnet1 。实现连板子,还是上internet的切换

网络自动 tftp 加载内核,并挂载nfs rootfs 启动
  1. 设置tftp方式加载内核
    setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-origen.dtb;bootm 41000000 - 42000000
    setenv bootcmd 设置环境变量(自启动命令 bootcmd)
    tftp 41000000 uImage; 通过tftp从虚拟机/tftpboot目录下下载内核uImage到板子的内存 41000000 处。 ; 用于分割多个命令
    tftp 42000000 exynos4412-origen.dtb 通过tftp下载设备树文件 exynos4412-fs4412.dtb 到板子的内存 42000000 处
    bootm 41000000 - 42000000 启动内核(41000000处放的是内核uImage, 42000000处放的是设备树文件)

  2. 挂载nfs rootfs
    setenv bootargs root=/dev/nfs nfsroot=192.168.2.231:/nfs/rootfs rw console=ttySAC2,115200 clk_ignore_unused init=/linuxrc ip=192.168.2.10

    setenv bootarg 设置环境变量( bootarg是启动参数)
    root=/dev/nfs 指定根文件系统类型是 nfs
    nfsroot=192.168.2.231:/source/rootfs 指定source rootfs的位置 (是在ip 是192.168.2.231的机器上 ,的/source/rootfs目录下). 注意/nfs/rootfs必须和前面NFS服务配置文件设置一致

  3. savenenv //保存环境变量
    掉电重启动板子 看能否挂载nfs rootfs成功
    能看到下面信息表示成功
    [root@farsight ]# ls
    etc linuxrc proc sbin tmp var
    bin dev lib mnt root sys usr
    在里面创建文件,电脑的/nfs/rootfs上同步变化

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值