嵌入式系统与设计课程报告.docx
- 文档编号:9877689
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:12
- 大小:581.89KB
嵌入式系统与设计课程报告.docx
《嵌入式系统与设计课程报告.docx》由会员分享,可在线阅读,更多相关《嵌入式系统与设计课程报告.docx(12页珍藏版)》请在冰豆网上搜索。
嵌入式系统与设计课程报告
嵌入式系统与设计课程报告
研究背景:
嵌入式linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。
嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。
嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_LinuxHardhatLinux等嵌入式Linux支持,实时性能稳定性好安全性好。
本课程所学内容:
包括linux命令和编辑、编译、调试工具;windows和linux系统之间文件共享的三种方法;makefile文件编写;Tiny6410开发板的介绍;利用Qt软件编译程序,并烧写入开发板实现一些画图功能。
一、linux命令以及编辑、编译、调试工具
首先安装虚拟机VMware,在虚拟机上安装RedFlag版本的linux操作系统。
一些常用的linux命令有:
ls查看列表,cd切换目录,mkdir创建目录,pwd显示当前路径,cp复制,mv剪切,chmod切换用户,diff比较文件的不同,tar文件打包,gzip压缩,ifconfig设置网络属性等。
当然每个命令都会结合一些参数使用,实现不一样的功能。
VI编辑器:
VI编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。
由于不需要图形界面,使它成了效率很高的文本编辑器。
尽管在Linux上也有很多图形界面的编辑器可用,但VI在系统和服务器管理中的能是那些图形编辑器所无法比拟的。
VI编辑器是Visualinterface的简称,通常称之为VI。
它在Linux上的地位就像Edit程序在DOS上一样。
它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
vi的基本概念:
基本上vi可以分为三种状态,分别是命令模式(commandmode)、插入模式(Insertmode)、底行模式(lastlinemode)
不过一般我们在使用时把vi简化成两个模式,就是将底行模式(lastlinemode)也算入命令行模式commandmode)。
vi的基本操作:
在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
在命令行模式(commandmode)]下按一下字母i就可以进入插入模式(Insertmode),这时候就可以开始输入文字了。
命令行模式下保存并退出:
输入ZZ;在命令行模式(commandmode)下,按一下:
冒号键进入Lastlinemode,[:
wq](存盘并退出vi),[:
q!
](输入q!
不存盘强制退出vi),[:
x](执行保存并退出vi编辑器)。
GCC编译器:
使用GCC编译程序时,编译过程可以被细分为四个阶段:
假设需要编译的文件为hello.c,则这几个阶段可以通过以下几个命令实现:
◆预处理(Pre-Processing)
使用-E参数可以让GCC在预处理结束后停止编译过程:
#gcc-Ehello.c-ohello.i
◆编译(Compiling)
下一步是将hello.i编译为目标代码,这可以通过使用-c参数来完成:
#gcc-xcpp-output–chello.i-ohello.o
或者#gcc-chello.i-ohello.o
◆汇编(Assembling)
◆链接(Linking)
#gcchello.o-ohello
汇编应该调用as,这里应该是一起完成了
GDB调试器使用流程:
假设已编辑好的文件test.c,在保存退出后首先使用Gcc对test.c进行编译,注意一定要加上选项”-g”,gcc-gtest.c-otest,这样编译出的可执行代码中才包含调试信息,否则之后Gdb无法载入该可执行文件。
#gdbtest
可以看出,在Gdb的启动画面中指出了Gdb的版本号、使用的库文件等信息,接下来就进入了由“(gdb)”开头的命令行界面了。
(1)查看文件
在Gdb中键入”l”(list)就可以查看所载入的文件。
(2)设置断点
设置断点是调试程序中是一个非常重要的手段,它可以使程序到一定位置暂停它的运行。
因此,程序员在该位置处可以方便地查看变量的值、堆栈情况等,从而找出代码的症结所在。
(Gdb)b6
Breakpoint1at0x804846d:
filetest.c,line6.
(3)查看断点情况
在设置完断点之后,用户可以键入”infob”来查看设置断点情况,在Gdb中可以设置多个断点。
(Gdb)infob
(4)运行代码
接下来就可运行代码了,Gdb默认从首行开始运行代码,可键入”r”(run)即可(若想从程序中指定行开始运行,可在r后面加上行号)。
(Gdb)r
(5)查看变量值
在程序停止运行之后,程序员所要做的工作是查看断点处的相关变量值。
在Gdb中只需键入”p”+变量值即可,(Gdb)pn
(6)单步运行
单步运行可以使用命令”n”(next)或”s”(step),它们之间的区别在于:
若有函数调用的时候,”s”会进入该函数而”n”不会进入该函数。
因此,”s”就类似于VC等工具中的”stepin”,”n”类似与VC等工具中的”stepover”
(7)恢复程序运行
在查看完所需变量及堆栈情况后,就可以使用命令”c”(continue)恢复程序的正常运行了。
这时,它会把剩余还未执行的程序执行完,并显示剩余程序中的执行结果。
二、windows和linux系统之间文件共享的三种方法
(1)利用移动设备直接拷贝。
(2)FTP进行数据共享,一般安装linux系统会安装FTP服务。
首先检查是否启动FTP服务
#ftplocalhost如果提示输入用户名则已经启动
如果提示connectionrefused则没有启动
启动FTP服务
#servicevsftpdstart
如果需要用root用户来上传文件(一般不这么做)需要修改配置
#vi/etc/vsftpd.ftpusers将root删除或者注释
#vi/etc/vsftpd.user_list同样将root删除或者注释
最后只需要在windows上装上FTP客户端即可
(3)安装VmwareTools
选择虚拟机上的菜单选项VM-->settings-->Options-->SharedFolders-->Alwaysenables点击add选择windows上目录,切换回linux执行命令:
#cd/mnt/hgfs/共享文件在此目录下。
三、makefile文件编写
makefile关系到了整个工程的编译规则。
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:
Delphi的make,VisualC++的nmake,Linux下GNU的make。
可见,makefile都成为了一种在工程方面的编译方法。
Makefile的规则:
target...:
prerequisites...
command
...
...
target也就是一个目标文件,可以是ObjectFile,也可以是执行文件,还可以是一个标签(Label)。
prerequisites就是,要生成那个target所需要的文件或是目标。
command也就是make需要执行的命令。
(任意的Shell命令)这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。
说白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。
这就是Makefile的规则,也就是Makefile中最核心的内容。
四、Tiny6410开发板的介绍
Tiny6410是一款以ARM11芯片(三星S3C6410)作为主处理器的嵌入式核心板,该CPU基于ARM1176JZF-S核设计,内部集成了强大的多媒体处理单元,支持Mpeg4,H.264/H.263等格式的视频文件硬件编解码,可同时输出至LCD和TV显示;它还并带有3D图形硬件加速器,以实现OpenGLES1.1&2.0加速渲染,另外它还支持2D图形图像的平滑缩放,翻转等操作。
Tiny6410采用高密度6层板设计,尺寸为64x50mm,它集成了128MDDRRAM,256M/1GBSLCNandFlash存储器,采用5V供电,在板实现CPU必需的各种核心电压转换,还带有专业复位芯片,通过2.0mm间距的排针,引出各种常见的接口资源,以供不打算自行设计CPU板的开发者进行快捷的二次开发使用。
Tiny6410SDK是采用Tiny6410核心板的一款参考设计底板,它主要帮助开发者以此为参考进行核心板的功能验证以及扩展开发。
该底板具有三LCD接口、4线电阻触摸屏接口、100M标准网络接口、标准DB9五线串口、MiniUSB2.0接口、USBHost1.1、3.5mm音频输入输出口、标准TV-OUT接口、SD卡座、红外接收等常用接口;另外还引出4路TTL串口,另1路TV-OUT、SDIO2接口(可接SDWiFi)接口等;在板的还有蜂鸣器、I2C-EEPROM、备份电池、AD可调电阻、8个中断式按键等。
在布局上安排上,我们尽量考虑把常用尺寸的LCD模块能够固定在底板上,比如3.5”,4.3”LCD,7”LCD等,这样用户在使用时不至于把各种电线搅在一起,更增加了开发套件的便携性。
Tiny6410
五、Qt软件以及往开发板烧写程序
在学习Qt之前,我们在虚拟机里重新装了一个linux版本,Fedora9,内核为2.6.28,之所以选择Fedora9系统主要是因为:
fedora9的系统内核和Tiny6410驱动要求的内核相匹配。
首先是下载安装QtCreator,运行QtCreator,首先弹出的是欢迎界面,这里可以打开其自带的各种演示程序。
File->New菜单来新建工程,
这里我们选择QtC++Project和Qt4GuiApplication,然后点Choose,
下面输入工程名和要保存到的文件夹路径。
我们这里的工程名为painter01,文件路径为/home/MFwork/STD/stdpainter/painter01,然后点击next,
这时软件自动添加基本的头文件,因为这个程序我们不需要其他的功能,所以直接点击Next,
我们将baseclass选为QDialog对话框类。
然后点击Next。
点击Finish,完成工程的建立。
(1)建立工程painter01,如上,
(2)在dialog.h文件中声明重绘事件函数voidpaintEvent
(QPaintEvent*);
(3)在dialog.cpp中添加绘图类QPainter的头文件包含#include
(4)在下面进行该函数的重定义。
voidDialog:
:
paintEvent(QPaintEvent*)
{
QPainterpainter(this);
painter.drawLine(0,0,100,100);
}
其中创建了QPainter类对象,它是用来进行绘制图形的,我们这里画了一条线Line,其中的参数为线的起点(0,0),和终点(100,100)。
这里的数值指的是像素,这里(0,0)点指的是窗口的左上角即可。
运行效果如下:
实现了画线函数之后,更改voidDialog:
:
paintEvent(QPaintEvent*)函数的内容如下,
voidDialog:
:
paintEvent(QPaintEvent*)
{
QPainterpainter(this);
QLinearGradientlinearGradient(100,150,300,150);
//从点(100,150)开始到点(300,150)结束,确定一条直线
linearGradient.setColorAt(0,Qt:
:
red);
linearGradient.setColorAt(0.2,Qt:
:
black);
linearGradient.setColorAt(0.4,Qt:
:
yellow);
linearGradient.setColorAt(0.6,Qt:
:
white);
linearGradient.setColorAt(0.8,Qt:
:
green);
linearGradient.setColorAt(1,Qt:
:
blue);
//将直线开始点设为0,终点设为1,然后分段设置颜色
painter.setBrush(linearGradient);
painter.drawRect(100,100,200,100);
//绘制矩形,线性渐变线正好在矩形的水平中心线上
}
效果如下:
在本机编译运行时,BuildSettings中的Editbuildconfiguration选项选择QTinPATHDebug,若把编译好的程序烧入Tiny6410开发板,编译时则选择4.7.0Debug。
开发板系统烧写:
开发板支持两种烧写模式:
(1)用SD卡复制烧写系统;
(2)通过在SD卡里面运行superboot,然后通过USB烧写系统镜像。
通过SD卡来烧写系统时,首先用烧写superboot的软件烧写好superboot,然后复制系统镜像到SD卡,并配置好FriendlyARM.ini文件,然后直接将开发板置为SD卡启动,会自动安装系统。
通过USB烧写时,首先用烧写superboot的软件烧写好superboot,然后从SD卡启动,安装好DNW的驱动,然后通过DNW下载系统镜像到开发板。
系统的镜像主要包括三部分:
bootloader、linux内核、文件系统。
文件系统根据不同的压缩方式有:
yaffs2格式和UBIFS格式。
六、总结
这学期通过这门课程的学习,我对linux系统有了新的认识,我掌握了linux的基本指令和一些编辑调试工具,可以对这个系统进行操作,而不仅仅是欣赏它的一些界面和设置。
了解了如何在windows和linux两个系统之间实现文件共享,以及工程管理中的makefile文件的编写。
最后学习了QtCreator软件及Tiny6410开发板的使用,让我们真正对嵌入式系统入了门,了解了一个嵌入式系统的基本流程。
我认为牟老师使用的这种教学模式很好,一边教学一边操作,让我们不仅了解了理论知识,而且培养了动手能力。
唯一不足的就是,最后一节课的时候,我在自己电脑上编译好的程序要拷到老师机器上试验的时候,出了点错误,没能得到很好的验证。
但总体来说,这门课真的让我们受益匪浅。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 设计 课程 报告