1 / 8
文档名称:

嵌入式Linux填充圆算法.doc

格式:doc   大小:113KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

嵌入式Linux填充圆算法.doc

上传人:2072510724 2017/12/19 文件大小:113 KB

下载得到文件列表

嵌入式Linux填充圆算法.doc

文档介绍

文档介绍:《嵌入式Linux软件设计》
课程设计报告
-----------填充圆算法设计
姓名
学号
班级
题目
成绩
评语
日期
项目名称
设计圆的两种以上填充算法,并比较其在ARM Linux的执行速度
项目需求分析
在实验箱的LCD(Linux framebuffer设备)上完成圆或椭圆的两种以上填充算法,比较他们的填充效果和填充速度。本实验计划完成圆的两种填充算法,分别用点和线的方式填充半径相等的两个圆,并进行比较。
项目分工
本次课程设计为一人完成。
概要设计
在ARM机上执行填充圆算法,需要在软硬件方面协调工作方可。
一、硬件
保证虚拟机和ARM机的通信,本次实验采用串口通信方式;
本实验要在LCD上画圆,所以需要使用到帧缓冲设备(Framebuffer)。
二、软件
所编写的填充圆算法必须可执行的,能够得出正确结果的。可利用交叉编译工具在宿主机上开发在目标板上运行的软件,即在Linux下先编写主函数然后编译连接成ARM可运行的二进制文件,最后把该二进制文件下载到超级终端上运行。
Ubuntu虚拟机
GUN交叉编译
ARM9超级终端
预处理
汇编
编译
链接
.C源程序
运行
预处理器编译器汇编器连接器可执行文件
软硬件流程图如图所示
GUN交叉编译工具链:
arm-linux-gcc 编译C程序(.c)或汇编程序(.s)
使用交叉编译工具编译一个程序的arm可执行程序:
#arm-linux-gcc -Wall -o *** +++.c(+++.c为已编译好的c程序,***为生成的arm程序的名字)
-c:只编译不链接,-o:编译且链接,-Wall:显示出错信息
gcc的使用格式如下:$ gcc [options][filenames]
其中filenames为所要编译的程序源文件。
时,gcc会完成预处理、编译、汇编和连接。前三步分别生成目标文件,连接时,把生成的目标文件链接成可执行文件。 gcc可以针对支持不同的源程序文件进行不同处理,文件格式以文件的后缀来识别。
详细设计
在本次实验中我采用了两种填充圆算法。
第一种算法:
以(x-Rx)2+(y-Ry)2≤R2为判断准则对LCD屏幕上的每一个点进行其相对圆心的距离是否小于圆的半径进行判断,若小于等于则进行填充,反之,则不进行动作。
以一个16*16的网格为底板分别画一个半径为5和为6的圆,则填充效果如下图所示,则其圆的边界会随着半径的增大而变得更加光滑。

半径为5 半径为6
(圆心未填充只是为了更清楚的标识)
第二种算法:
以|x-Rx2+y-Ry2-R2|为判断准则判断边界点,取该绝对值最小的点为直线一端端点端点,并以此取得另一个端点,从而画以此两点为端点的直线。
最终将整个圆完成。
以一个16*16的网格为底板分别画一个半径为5的圆,填充过程如下:

(圆心未填充只是为了更清楚的标识)
流程图
main函数


hanshu函数

打开Framebuffer设备
对LCD进行检测,证明其屏幕显示正常工作,无坏点
进行第一种填充圆算法
进行第二种填充圆算法
关闭Framebuffer设备
退出程序
关键代码
第一种填充算法:
r=