物联网之系统移植一(概述及环境搭建)

时间:2024-03-25 20:33:07

笔记:https://blog.csdn.net/weixin_39148042/article/details/82494675

系统移植概述及环境搭建

主要内容

嵌入式基本概念和开发环境搭建

     目标:能搭建嵌入式开发环境,并分析失败的原因(难点)

BootLoader

     目标:掌握启动步骤

内核移植(难点)

     目标:掌握移植的思路和方法

        • 根文件系统制作

嵌入式基本概念

嵌入式系统的应用领域

物联网之系统移植一(概述及环境搭建)

什么是嵌入式系统

嵌入式系统的定义

嵌入式系统本身是一个相对模糊的定义

一般定义

以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

广义上讲

凡是带有微处理器的专用软硬件系统都可称为嵌入式系统。

嵌入式系统的核心是定制

是根据市场需求对软硬件进行定制,实现性能的最大化

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

• 通用嵌入式系统硬件一般由一下部分组成

– 微控制器

– 晶振

– 内存(如: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

http://code.google.com/p/android/downloads/list  http://code.google.com/android/index.html 

http://www.androidcn.net/  http://www.androidin.com/ 

• 另外 intel,amd 也在涉足嵌入式领域,联想已经推出了基于atom控制器的mid产品,据悉苹果也正在采用atom控制器开发产品。随着intel,amd的处理器在嵌入式领域中的优化,智能网络终端产品很快将大众化。

• 相信linux在嵌入式领域的应用将更加广泛。

嵌入式Linux内核结构

物联网之系统移植一(概述及环境搭建)

Android系统

物联网之系统移植一(概述及环境搭建)

嵌入式开发环境搭建

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

• 开发主机(Host)

• 目标机(Target)

• 连接介质

物联网之系统移植一(概述及环境搭建)

开发板启动流程

物联网之系统移植一(概述及环境搭建)

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

• 准备开发主机、目标机(开发板)以及二者的连接介质

• 准备目标机代码

• 安装交叉工具链

• 开发主机上安装的软件(为方便调试)

• 终端软件(putty、minicom)

• tftp服务

• nfs服务

• 目标机安装(u-boot烧写调试)

   SD卡方式

    Fastboot方式 (成功后,板子有串口信息输出)

• 主机和目标机能联通

• 网络自动 tftp 加载内核,并挂载nfs  rootfs 启动

开发主机搭建

物联网之系统移植一(概述及环境搭建)

ubuntu环境

物联网之系统移植一(概述及环境搭建)

目标机搭建

物联网之系统移植一(概述及环境搭建)

连接之 TFTP 服务

物联网之系统移植一(概述及环境搭建)

TFTP  服务

― 使用条件是:

• 需要网络连接

• 主机端需要安装 tftp 服务器软件

• 目标机需要实现tftp客户端

― 优点:

• 传输速度快

• 可以将编译好的内核下载到目标机,提高开发效率

― tftp  是用来下载远程文件的最简单网络协议,它基于udp协议而实现。嵌入式 linux 的 tftp 开发环境包括两个方面:

• 一是 linux 开发主机端的 tftp-server 支持,

• 二是嵌入式目标系统的 tftp-client 支持。

主机端tftp服务器配置

l 1、检查是否安装tftp server

$dpkg   -s   tftpd-hpa

如果未安装,安装 tftp-server

$apt-get  install  tftpd-hpa  tftp-hpa

 

l 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"

主机端tftp服务器配置

        l 4、创建tftpboot目录,启动 tftp-server

        $mkdir  /tftpboot

        $chmod  a+w  /tftpboot

        $service   tftpd-hpa   restart

        l 5.  准备带传输的文件

        $cp  u-boot-fs4412.bin  uImage exynos4412-fs4412.dtb   /tftpboot

        l 6、本机自环测试

        #tftp   127.0.0.1

        tftp>get  <download file>

        tftp>put  <upload file>

        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