20135326、20135303-linux实验三实验报告
北京电子科技学院(BESTI)
实 验 报 告
课程:信息安全系统设计基础实验 班级:1353 姓名:魏昊卿 王亦可 学号:20135303 20135326
成绩: 指导教师:娄嘉鹏 实验日期:2015.11.24
实验密级: 预习程度: 实验时间:15:30-18:00
仪器组次: 必修/选修:必修 实验序号:三
实验名称: 画正弦余弦曲线
实验目的与要求:
1.通过ARM画出正弦余弦曲线。
2.读懂理解代码含义,能够修改代码,画出多条曲线。
实验仪器:
|
名称 |
型号 |
数量 |
|
计算机 |
1 |
实验内容、步骤与体会(附纸):
一、实验内容
在 PC 机上编写简单的虚拟硬件驱动程序并进行调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。
二、实验步骤
1 基本开发环境
1.0 连接实验箱电源,用串口线、并口线、网线、连接实验箱和主机。
1.1 安装ADS(安装文件在00-ads1.2目录下,破解方法00-ads1.2\Crack目录下)
1.2 安装GIVEIO驱动(安装文件在01-GIVEIO目录下)
把整个GIVEIO目录拷贝到C:\WINDOWS下,并把该目录下的giveio.sys文件拷贝到c:/windows/system32/drivers下。
在控制面板里,选添加硬件>下一步>选-是我已经连接了此硬件>下一步>选中-添加新的硬件设备>下一步>选中安装我手动从列表选择的硬件>下一步>选择-显示所有设备>选择-从磁盘安装-浏览,指定驱动为C:\WINDOWS\GIVEIO\giveio.inf文件,点击确定,安装好驱动
1.3 安装JTAG驱动(安装文件在02-UArmJtag2.0目录下)
1.4 配置超级终端:波特率为 115200,数据位 8,无奇偶校验,停止位 1,无数据流控制。
2 测试安装
(1) 首先运行ADS1.2集成开发环境。
(2) 选择工程文件我们以光盘中的/ucos v6.0/Exp11 绘图的API函数为例选择Exp11.mcp后点击打开。
(3) 点击make进行编译链接。编译后出现编译结果,次图片表示没有错误,4个警告和15条其他信息。
(4) 在调试程序运行之前务必先开启Uarmjtag点击初始化配置选择ARM9点击确定。最小化到托盘即可,并且保证我们的平台停止在VIVI状态下。
(5) 点击Debug按钮进行仿真调试
(6) 在AXD下,点击Options->Configure Target->Configure。修改如下:Name:选择ARM Ethernet driver;Configuration:配置为:127.0.0.1。选择ADP点击确定。
(7) 点击run(运行)按钮。
注:之后正常状态下他会停止在main函数,这是系统自动的。
(8) 之后我们继续点击RUN按钮即可运行绘图实验。这是液晶屏上会出现我们绘制好的正弦图形。在结束前请先暂停再退出程序。
3 修改代码显示两条曲线
修改代码如下:
#include"../ucos-ii/includes.h" /* uC/OS interface */
#include "../ucos-ii/add/osaddition.h"
#include "../inc/drivers.h"
#include "../inc/sys/lib.h"
#include "../src/gui/gui.h"
#include <string.h>
#include <stdio.h>
#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting
///******************任务定义***************///
OS_STK Main_Stack[STACKSIZE]={0, }; //Main_Test_Task堆栈
void Main_Task(void *Id); //Main_Test_Task
#define Main_Task_Prio 12
OS_STK test_Stack[STACKSIZE]={0, }; //test_Test_Task堆栈
void test_Task(void *Id); //test_Test_Task
#define test_Task_Prio 15
/**************已经定义的OS任务*************
#define SYS_Task_Prio 1
#define Touch_Screen_Task_Prio 9
#define Main_Task_Prio 12
#define Key_Scan_Task_Prio 58
#define Lcd_Fresh_prio 59
#define Led_Flash_Prio 60
***************************************/////////
///*****************事件定义*****************///
/////////////////////////////////////////////////////
// Main function. //
////////////////////////////////////////////////////
int main(void)
{
ARMTargetInit(); // do target (uHAL based ARM system) initialisation //
OSInit(); // needed by uC/OS-II //
OSInitUart();
initOSFile();
#if USE_MINIGUI==0
initOSMessage();
initOSDC();
LoadFont();
#endif
loadsystemParam();
// create the tasks in uC/OS and assign increasing //
// priorities to them so that Task3 at the end of //
// the pipeline has the highest priority. //
LCD_printf("Create task on uCOS-II...\n");
OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_Stack[STACKSIZE-1], Main_Task_Prio);
OSTaskCreate(test_Task, (void *)0, (OS_STK *)&test_Stack[STACKSIZE-1], test_Task_Prio);//将本句代码注释除去即可在ARM机上显示两条曲线。
OSAddTask_Init(1);
LCD_printf("Starting uCOS-II...\n");
LCD_printf("Entering graph mode...\n");
LCD_ChangeMode(DspGraMode);
OSStart(); // start the OS //
// never reached //
return 0;
}//main
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Main_Task(void *Id) //Main_Test_Task
{
int oldx,oldy;//保存原来坐标系位置
PDC pdc;//定义绘图设备上下文结构
int x,y;//坐标
double offset=0;//x坐标偏移量
ClearScreen();//清屏
pdc=CreateDC();//创建绘图设备上下文
SetDrawOrg(pdc, LCDWIDTH/2,LCDHEIGHT/2, &oldx, & oldy); //设置绘图原点为屏幕中心
Circle(pdc,0, 0, 50);//画圆
MoveTo(pdc, -50, -50);//移动
LineTo(pdc, 50, -50);//画线
ArcTo(pdc, 80, -20, TRUE, 30);//画弧
LineTo(pdc, 80, 20);
ArcTo(pdc, 50, 50, TRUE, 30);
LineTo(pdc, -50, 50);
ArcTo(pdc, -80, 20, TRUE, 30);
LineTo(pdc, -80, -20);
ArcTo(pdc, -50, -50, TRUE, 30);
OSTimeDly(3000);//将任务挂起3秒
ClearScreen();
SetDrawOrg(pdc, 0, LCDHEIGHT/2, &oldx,&oldy);//设置绘图原点为屏幕左边中部
for(;;)
{
MoveTo(pdc, 0, 0);
for(x=0;x<LCDWIDTH;x++)
{//画正弦波
y=(int)(50*sin(((double)x)/20.0+offset));
LineTo(pdc, x, y);
}
offset+=1;
if(offset>=2*3.14)
offset=0;
OSTimeDly(1000);
ClearScreen();
}
DestoryDC(pdc);//删除绘图设备上下文
}
void test_Task(void *Id) //添加一条曲线
{
int oldx,oldy;//保存原来坐标系位置
PDC pdc;//定义绘图设备上下文结构
int x,y;//坐标
double offset=0;//x坐标偏移量
ClearScreen();//清屏
pdc=CreateDC();//创建绘图设备上下文
SetDrawOrg(pdc, LCDWIDTH/4,LCDHEIGHT/4, &oldx, & oldy); //设置绘图原点为屏幕中心
Circle(pdc,0, 0, 50);//画圆
MoveTo(pdc, -50, -50);//移动
LineTo(pdc, 50, -50);//画线
ArcTo(pdc, 80, -20, TRUE, 30);//画弧
LineTo(pdc, 80, 20);
ArcTo(pdc, 50, 50, TRUE, 30);
LineTo(pdc, -50, 50);
ArcTo(pdc, -80, 20, TRUE, 30);
LineTo(pdc, -80, -20);
ArcTo(pdc, -50, -50, TRUE, 30);
OSTimeDly(3000);//将任务挂起3秒
ClearScreen();
SetDrawOrg(pdc, 0, LCDHEIGHT/4, &oldx,&oldy);//设置绘图原点为屏幕左边中部
for(;;)
{
MoveTo(pdc, 0, 0);
for(x=0;x<LCDWIDTH;x++)
{//画正弦波
y=(int)(50*cos(((double)x)/20.0+offset));
LineTo(pdc, x, y);
}
offset+=1;
if(offset>=2*3.14)
offset=0;
OSTimeDly(1000);
ClearScreen();
}
DestoryDC(pdc);//删除绘图设备上下文
}
Ps:代码中标红处为修改后代码。
三、实验体会
本次实验是在ARM机上显示正弦余弦曲线,由于不需要配置虚拟机,整体过程比较简洁,因此按照指导书的介绍,安装程序,配置以及运行都实现得比较顺利。然而在编译代码的时候,代码总是编译出错,在删除原来的编译结果后重新编译,重复几次后错误消失,原因可能是先前的编译结果没有被覆盖。最终在ARM机上出现了正弦曲线。
通过本次实验,了解了ADS1.2集成开发环境,学习了使用ARM机编译的新知识。并阅读理解了c++代码,对编程知识的学习有一定帮助。
20135326、20135303-linux实验三实验报告的更多相关文章
- 20145206《Java程序设计》实验三实验报告
20145206<Java程序设计>实验三实验报告 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运 ...
- 20145337实验三实验报告——敏捷开发与XP实践
20145337实验三实验报告--敏捷开发与XP实践 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 ** 实验步骤**### 敏捷开发与XP 软件工程包括下列领域:软件需求 ...
- 20145236 《Java程序设计》实验三实验报告
实验三实验报告 和张亚军同学一组: 实验三实验报告
- 20145120 《Java程序设计》实验三实验报告
20145120 <Java程序设计>实验三实验报告 实验名称:敏捷开发与XP实践 实验目的与要求: XP基础 XP核心实践 相关工具 (一)敏捷开发与XP 极限编程(eXtreme Pr ...
- 20155206 《Java程序设计》实验三实验报告
20155206 <Java程序设计>实验三实验报告 实验内容 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 提交一: 提交二: 提交三: 提交四:
- 20155232 《Java程序设计》实验三实验报告
20155232 <Java程序设计>实验三实验报告 实验内容 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发(Agile ...
- 20145303《Java程序设计》实验三实验报告
20145303<Java程序设计>实验三实验报告 ssh公钥配置及git安装: eclipse中git配置: 队友链接: http://www.cnblogs.com/5321z/p/5 ...
- 20145328 《Java程序设计》实验三实验报告
20145328 <Java程序设计>实验三实验报告 实验名称 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发是一种以人为 ...
- 20145229实验三实验报告——敏捷开发与XP实践
20145229实验三实验报告--敏捷开发与XP实践 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 ** 实验步骤**### 敏捷开发与XP 软件工程包括下列领域:软件需求 ...
随机推荐
- mysql高可用之DRBD + HEARTBEAT + MYSQL
1. 架构 Mysql: master<=slave 10.24.6.4:3306<=10.24.6.6:3306 VIP: 10.24.6.20 必须使得VIP和mysql处于同一网段, ...
- iOS开发者必备的10款工具
当前iOS和Android两大移动操作系统“二足鼎立”,几乎覆盖了市面上大部分的智能手机.相比Android,iOS开发适配更简单,且随着各种实用工具和Swift语言的出现,iOS开发门槛地降低,开发 ...
- sql 执行动态语句
没看明白,可不可以描述清楚点哦 收获园豆:5 回复 | artwl | 专家六级 |园豆:16486 | 2011-09-01 09:10 exec (select top 2 * from pub ...
- 设计模式C#实现(七)——生成器模式
生成器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. UML类图: 构成: 1.Builder(接口/抽象类)定义了创建一个产品Product的各个部件的方法,返回创 ...
- 将text 文件转为List
Integer 类型 ArrayList<Integer> Mlist = new ArrayList<Integer>(); Scanner scM = new Scanne ...
- 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解
本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.c ...
- 如何快速开发出一个高质量的APP——创业谈
[起] 今早,一个技术群里有人想快速做出一个app,然后询问技术方案,大概是这样, 拿到了200w投资,期望花20w两个月先做出一个app,包括iOS,Android, 先,呵呵,一下, 大概预估了一 ...
- 对于大学4年的反思(续),记我的ThoughtWorks面试
之前我写了一篇对于大学四年的反思,时隔一个月,为什么我这么快就要来写这篇续章呢?主要有两个原因,第一是感谢静子姐姐,记得知乎上有个回答里面说过人生需要有贵人的帮助,遇到贵人是一件很幸运的事情.我想,静 ...
- 内网穿透利器 Ngrok 使用教程
ngrok 服务可以分配给你一个域名让你本地的web项目提供给外网访问,特别适合向别人展示你本机的web demo 以及调试一些远程的API (比如微信公众号,企业号的开发) 下面开始教程 Step ...
- 2014 Super Training #8 B Consecutive Blocks --排序+贪心
当时不知道怎么下手,后来一看原来就是排个序然后乱搞就行了. 解法不想写了,可见:http://blog.csdn.net/u013368721/article/details/28071241 其实就 ...