体积、重量等因素。 2.1.2.体系结构设计
描述系统如何实现所述的功能性和非功能性需求,包括对硬件、软件和执行装置的功能划分以及系统的软件、硬件选型等。一个好的体系结构是设计成功与否的关键。 2.1.3.硬件/软件协同设计(硬件、软件、执行装置并行设计)
基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品开发周期,设计往往是并行的。嵌入式系统设计的大部分工作集中在软件设计上,采用面向对象技术、软件组件技术、模块化设计是现代软件工程经常采用的方法。 2.1.4.系统集成
把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。 2.1.5.系统测试
对设计好的系统进行测试,检查是否满足规格说明书中给定的功能要求。 嵌入式系统开发模式最大特点是软件、硬件综合开发。这是因为嵌入式产品是软硬件的结合体,软件针对硬件开发、固化、不可修改。
2.2基于Linux的嵌入式系统开发
如果在一个嵌入式系统中使用Linux技术开发,根据应用需求的不同有不同的配置开发方法,但是,一般情况下,在遵照一般嵌入式系统开发流程的同时,都需要经过如下的过程。
5
2.2.1. 开发目标板硬件
设计目标板硬件选型及器件布局。 2.2.2. 建立一套交叉编译工具
建立一套交叉编译工具,能够在宿主机上产生目标板上运行的目标代码。通过网络下载相应的GCC交叉编译器进行安装(比如,arm-1inux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的相关交叉编译器;并配置开发主机,使其与目标板建立通信,配置MINICOM,一般的参数为波特率115200 Baud/s,数据位8位,停止位为1,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样。MINICOM软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。 2.2.3. 移植一个合适的引导加载程序到目标板上,用于初始化目标板和加载内核
从网络上下载一些公开源代码的BOOTLOADER,如U-BOOT、VIVI、ARM-BOOT等,根据具体芯片进行移植修改。有些芯片没有内置引导装载程序,就需要编写开发板上FLASH的烧写程序,可以在网上下载相应的烧写程序,也有Linux下的公开源代码的J-FLASH程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。如果用户购买了厂家的仿真器比较容易烧写FLASH,虽然无法了解其中的核心技术,但对于需要迅速开发自己的应用的人来说可以极大提高开发速度。
2.2.4. 移植一个合适的Linux内核到目标板上
如果有专门针对所使用的CPU移植好的Linux操作系统那是再好不过,下载后再添加特定硬件的驱动程序,然后进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,否则只能编译进内核进行调试。
6
2.2.5. 建立一个根文件系统
可以从http://www.busy.box.net下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。由于默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs genromfs等工具产生烧写映像文件。 2.2.6. 开发特定外设的驱动程序
为特定外设编写驱动程序并添加进内核运行。 2.2.7. 开发上层的应用程序
开发上层应用程序之后,可以将其放入根文件系统中运行,也可以放入YAFFS、JFFS2文件系统中,有的开发不使用根文件系统,也可直接将应用程序和内核设计在一起。
7
第三章 课程设计内容
基础实验 嵌入式系统开发环境搭建
一、 实验目的
对嵌入式系统开发而言,配置宿主机-目标板开发环境、建立合适的开发工具链、对内核进行配置和移植等工作是进一步进行上层应用程序开发的不可或缺的重要步骤。当前Internet上具有丰富的Linux相关开发源代码可供用户下载和使用,其中包括编译器等开发工具链,各种协议的支持软件工具,以及操作系统自身。如何使用这些资源是本实验的重要内容。通过本实验,旨在使学生能够:
1. 掌握开发主机与嵌入式开发板通信的方法 2. 掌握嵌入式开发工具链的构造过程 3. 掌握烧写镜像文件到开发板的方法 4. 掌握相关镜像文件配置和编译的过程 二、实验环境要求 1)开发板准备: 1.Idea6410开发板
2.交叉串口线(双母头):用于连接开发板COM0和PC机COM口进行调试用 3.USB数据线:用于下载镜像 4.电源适配器:用于给开发板供电 5.SD卡:用于初次烧写时,从SD启动
6.USB接口SD读卡器:用于在PC端烧写启动代码至SD卡中 2)主机环境准备:
在虚拟机VMware中安装ubuntu10.04 三、实验准备
1.参照手册UT6410-Android2.1_manual和Ubuntu安装资料中方法在虚拟机VMware中安装ubuntu10.04
2.学习“【申嵌视频】1 体验篇”视频,参照“【申嵌视频】1 体验篇”中视频的开发板连线方法将目标板与主机相连
8
四、实验步骤
1. 开发主机和嵌入式开发板间的通信
嵌入式内核和应用软件经过编译和链接后,可以下载到嵌入式系统中,同时在程序运行过程中需要用户通过控制终端输入命令,并向用户显示特定信息。这就需要在开发主机和嵌入式系统之间进行通信。
串行接口是开发主机和嵌入式系统通信的基本手段,可以通过串行接口为嵌入式系统中Linux建立一个控制终端,也可以完成内核和应用程序的下载。
嵌入式系统开发中四种常见串口调试工具有: 超级终端、SecureCRT、DNW、minicom
通过学习“【申嵌视频】1 体验篇”视频和相关资料,掌握开发主机和嵌入式开发板间串口的通信的方法。
2. 掌握嵌入式开发工具链的构造过程
交叉编译工具链是指在一个体系结构平台下开发另一个平台下运行的程序所需的编译工具集。目前主机一般采用x86指令系统,而默认的编译器配置是将高级语言程序编译为x86指令系统。交叉编译工具就是要将高级语言程序编译成为嵌入式系统中特定处理器的指令系统(如ARM指令系统)。
交叉编译工具链包括汇编器,高级语言编译器,连接工具和make工具等。交叉开发环境的建立实际上就是在通用PC机上安装一个交叉开发工具链,这一过程包括如下步骤:
①创建编译环境,包括准备源文件、建立编译目录、建立内核头文件 ②建立二进制工具(binutils) ③建立初始编译器(gcc) ④建立C语言库(glibc) ⑤建立全套编译器
也可直接安装开发板附带光盘中的交叉编译器。
参照“idea6410开发板linux使用手册”和课程设计资料中“s3c6410开发环境配置”进行交叉工具链的安装和环境变量的设置。
3. 掌握烧写镜像文件到开发板的方法
嵌入式开发板系统运行需要有bootloader、Linux内核镜像、根文件系统镜像3个
9