2.1
需求分析
本课题以龙芯
2K1000
处理器为嵌入式系统的处理器,需要实现一个完成的嵌
入式软件系统,系统能够正常启动并可以稳定运行嵌入式
Linux
。设计网络设备驱
动,可以实现板卡与其他网络设备之间的网络连接和文件传输。设计
PCIE
设备驱
动实现对处理器外接
PCIE
设备的配置和访问。
软件系统的引导程序、
Linux
内核和根文件系统三部分可实现自身功能,组合
在一起能够使系统正常工作。系统的引导程序可以实现如设置网络设备
IP
等对设
备的基本操作,可以完成对
Linux
内核的引导。引导程序的编译方法应当正确,确
保源代码的更改可以生效。嵌入式
Linux
内核可以正常启动,实现进程调度、网络、
文件管理等功能子系统应有的功能。根文件系统需要实现对系统的初始化配置工
作和文件的管理。
处理器内部
GMAC
控制器外接
RTL8211E
网络物理层芯片组成网络系统,当
用户使用
Linux
网络相关操作命令,网络设备驱动需要提供相应的功能函数实现
对设备的打开关闭和设置
IP
等操作。网络设备驱动需要实现与其它网络设备之间
的连通和双向的数据传输。
PCIE
设备驱动需要完成对
CH368
和
FPGA
组成
PCIE
设备的探测和移除等操
作,同时设备驱动需要为上层应用程序提供必要的软件接口。驱动程序需提供对
PCIE
设备配置空间读写的方法,用于获取和更改设备的配置参数。驱动需要提供
对上层应用程序对设备文件操作的函数接口,当应用程序对设备文件操作时,驱动
中相应的功能函数被调用从而实现对设备
IO
空间的读写。
2.3
软件总体方案
2.3.1
引导程序方案
本课题需要对嵌入式
Linux
的启动流程进行分析,来明确引导程序在整个启
动流程中的作用。根据龙芯
2K1000
处理器来修改引导程序,并将引导程序移植到
存储设备中,从而使嵌入式
Linux
能够在龙芯
2K1000
处理器中正常运行。
嵌入式
Linux
系统的结构如图
2-2
所示,系统主要有四个部分,
BootLoader
、
参数区、
Linux
内核和文件系统。
1
)
Bootloader
需要完成对内存和各种硬件设备完成初始化,完成分配资源等
任务,准备
Linux
内核运行所需的环境。之后检测到处理器的类型等信息,将必要
的参数信息传递给
Linux
内核,完成内核的引导工作。
2
)参数区存放内核启动和运行必要的系统参数,第一部分的
Bootloader
获取
并设置必要参数后以原始数据的格式来存放。
3
)内核镜像区为嵌入式
Linux
内核镜像,一般嵌入式系统由于存储资源有限,
一般使用压缩格式的内核文件。系统启动过程中,第一阶段的引导程序为内核运行
创造好条件之后,将内核镜像解压搬运到内存中运行。
4
)文件系统区是压缩的文件系统,文件系统用来明确存储设备上各种文件组
织的方法,是嵌入式
Linux
系统中关键的一部分,文件系统被
Linux
内核解压挂载
之后才能工作
[32]
。
常用的引导程序主要有
U-Boot
和
PMON
。
U-Boot
在功能上和
PMON
基本一
致,有常规的查看设备、设置网络等操作命令,同时有多种设备的驱动,目前
U
Boot
在嵌入式领域作为引导程序被广泛使用,使用规模远远大于
PMON
,对各种
硬件平台的支持都比较完善。在以
ARM
处理器为核心的嵌入式开发中,
U-Boot
是
引导程序的首选,因为
U-Boot
最初是从
ARMBoot
发展而来,经过多年发展和大
量开发者的贡献,
U-Boot
对于
ARM
支持非常完善
[33]
。
信迈提供龙芯软硬一体化方案及定制。