zoukankan      html  css  js  c++  java
  • 20145312 《信息安全系统设计基础》实验三 实时系统的移植(修改版)

    20145312 《信息安全系统设计基础》实验三 实时系统的移植(修改版)

    实验目的与要求

    • 了解安装ADS、GIVEIO、JTAG驱动的基本步骤
    • 学会在 ADS1.2 集成开发环境下程序设计的方法

    实验内容与步骤

    1. 配置基本开发环境

    • 连接实验箱电源,用串口线、并口线、网线、连接实验箱和主机

    • 安装ADS并破解。安装完成后,提示出现 "ARM License Wizard" 对话框,选择 "Install License",然后在 "License File To Be Installed" 中使用 "Browse",选择 CRACK 目录下的 license.dat 文件即可。

    • 安装GIVEIO驱动。把整个GIVEIO目录拷贝到C:WINDOWS下,并把该目录下的giveio.sys文件拷贝到c:/windows/system32/drivers下。在控制面板里,选添加硬件>下一步>选-是我已经连接了此硬件>下一步>选中-添加新的硬件设备>下一步>选中安装我手动从列表选择的硬件>下一步>选择-显示所有设备>选择-从磁盘安装-浏览,指定驱动为C:WINDOWSGIVEIOgiveio.inf文件,点击确定,安装好驱动。

    • 安装JTAG驱动。安装完后,链接UP-NETARM3000->简易仿真器(Jtag)->并口线->PC机,然后添加硬件:在控制面板里,选添加硬件>下一步>选-是我已经连接了此硬件>下一步>选中-添加新的硬件设备>下一步>选中安装我手动从列表选择的硬件>下一步>选择-显示所有设备>选择-从磁盘安装-浏览,指定驱动为C:Program FilesUArmJtagdriverLPTJtag文件,点击确定,安装好驱动。

    2. 仿真调试

    • 首先运行 ADS1.2 集成开发环境,单击 File->Open 选项
    • 选择工程文件我们以光盘中的/ucos v6.0/Exp11 绘图的 API 函数为例选择 Exp11.mcp 后点击打开。
    • 选择需要编译的文件,在相应文件夹前的空白位置点击即可选中,头文件库文件是不能选中的,因为已经被包含到了源代码中。
    • 点击 make 进行编译链接
    • 编译后出现编译结果,次图片表示没有错误,4 个警告和 15 条其他信息。如果不是下面的结果,可能的问题是代码路径中有中文,把代码拷贝一个英文目录中,还有可能是代码文件夹中 Exp11_Data 文件夹的问题,删除 Exp11_Data 文件夹。
      ![]http://images2015.cnblogs.com/blog/885499/201611/885499-20161120224133951-246773062.bmp)
    • 开启Uarmjtag点击“初始化配置”,在弹出的对话框中,“处理器类型”选择ARM9后,最小化到托盘并且保证我们的平台停止在 VIVI 状态下。
    • 点配置超级终端:波特率为 115200,数据位 8,无奇偶校验,停止位 1,无数据流控制。启动实验平台。打开超级终端,打开arm机电源开关。等待一分钟,arm机的信息会显示在超级终端的窗口中。按除了ENTER之外的键进入VIVI平台。
    • 点击Debug按钮进行仿真调试,弹出调试界面。之后继续点击Options->Configure Target,弹出对话框之后点击Configure,弹出对话框,将框中参数设置如下
    • 确定之后会选择ADP,再点击确定出现加载界面,加载完成后点击run(运行)按钮,之后正常状态下他会停止在main函数,这是系统自动的。继续点击RUN按钮即可运行绘图实验

    • 之后我们继续点击 RUN 按钮即可运行绘图实验。这是液晶屏上会出现我们绘制好的图形。
    • 在结束前先暂停再退出程序
    • 超级终端上显示运行成功

    代码分析

    源代码

    #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...
    ");
    	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);
    
    	OSAddTask_Init(1);
      
    	LCD_printf("Starting uCOS-II...
    ");
    	LCD_printf("Entering graph mode...
    ");
    	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);//删除绘图设备上下文
    }
    

    实验过程中遇到的问题

    问题:

    • 打开ARM –Flash下载程序时,弹出窗口提示没有正确安装驱动。

    解决:

    • 详细阅读UarmJtag2.0使用说明.pdf后发现JTAG驱动安装方法错误。后依据该说明,安装驱动后解决问题。

    问题:

    • 在ADS软件中调试实例,点击debug按钮总是报错。

    解决:

    • 检查后发现驱动GIVEIO没有装好,重新安装后再点击debug仿真成功

    问题:

    • 按照“03-测试文档”的操作步骤执行完第四步,即已选择需要编译的文件后,点击make,编译链接失败,没有出现4个警告和15条其他信息,反而出现编译错误。

    解决:

    • 04-Text文件夹中的ucos-ii未删除; 04-Text文件夹的初始路径在桌面上,而在ADS软件中编译的文件不识别中文路径。
    • 将04-Text文件夹复制到F盘根目录下,重新选择需要编译的文件并点击make进行编译链接,编译后即能出现正确的编译结果。

    实验体会

    本次试验重点完成了实时系统的移植以及一个实例的操作。与前几次实验不同的是,没有使用RedHat虚拟机中的操作,对于超级终端的配置也有了新的要求。在实验过程中,小组同学按照实验指导书的步骤安装ADS,GIVEIO驱动,JTEG驱动等软件,并且调试实现了老师提供的实例,在实验中很好的学习了几个软件的使用方法和功能,对于以后的学习打下了良好的理论基础。

    经过本次实验,小组成员对于实验平台以及超级终端的搭建已经较为熟练,可是在实验过程中由于忽略了一些细节,导致实验中出现了一些检错,改错的过程,告诫我们下次实验必须要严谨,一旦由于疏忽,很有可能出现一些不可预料和改正的错误,到时实验失败,只能重新启动机器从心开始配置环境。

  • 相关阅读:
    文件操作回顾
    数据类型回顾
    面向对象三大特性之封装与多态
    面向对象之继承
    轮播图
    jQuery事件操作
    jQuery动画效果
    jQuery篇
    文档对象模型
    javascript
  • 原文地址:https://www.cnblogs.com/yx20145312/p/6230697.html
Copyright © 2011-2022 走看看