笔记: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