实习报告-嵌入式_第1页
实习报告-嵌入式_第2页
实习报告-嵌入式_第3页
实习报告-嵌入式_第4页
实习报告-嵌入式_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成绩学生实习报告实习名称院部名称专业班级学生姓名学号实习地点指导教师实习起止时间:2023年7月4日至2023年7实习报告前言中软国际〔中软国际〕是根植中国、效劳全球的IT效劳提供商,致力于为普及全球的客户提供全面的效劳,打造中国智造综合平台。中软国际总部位于北京,在美国、日本、香港以及中国大陆25个主要城市设有35家分子公司或办事处,员工突破10000人。年营业额逾10亿元人民币〔2007财年〕。2007年和2023年中软国际对欧美软件外包业务位列全国第一〔IDC统计数据〕。集团业务涵盖以咨询为驱动的解决方案、以专业化为准那么的ITO和BPO外包效劳和以人才供链为导向的培训效劳,包括咨询效劳、软件开发、系统集成、软件测试、软件本地化、企业应用平台建设与维护、IT效劳外包以及业务流程外包。凭借集团的全球分布,中软国际能够充分运用全球资源和自身领先的技术实力帮助客户应对不断快速变化的商业挑战。凭借中软国际在中国市场所拥有的独特领导地位和全球提交能力,除能为客户提供“传统〞外包效劳及信息解决方案外,还能以其国内、海外市场的互动能力帮助客户在中国或海外开拓新的业务时机。实习目的1、掌握嵌入式微处理器的结构与原理2、熟悉并掌握嵌入式Linux操作系统的操作3、熟悉嵌入式软件开发流程并至少做一个嵌入式软件工程。实习时间2023年07月04号~07月29号,具体安排如下表:第一周1、嵌入式技术开展现在及未来。2、实习任务布置。3、实习嵌入式硬件平台环境熟悉。4、C语言根底强化。第二周Linux程序设计。多进程和多线程模式下的程序设计。系统资源控制程序设计。第三周ARM的体系结构与汇编语言。ARM的GNU交叉编译工具和ADS应用与调试。LCD驱动原理的讲解。PWM驱动原理的讲解。第四周1、嵌入式Linux下驱动开发。2、TFTLCD驱动开发。动手实验:驱动程序的编写与调试。三、实习地点江苏省无锡市无锡新区新安镇震泽路5号江苏软件外包产业园处子座B座四、实习单位和部门实习单位:无锡中软国际信息技术培训实习部门:无锡中软国际信息技术培训实习内容来到中软国际,主要实习方向为嵌入式开发,细化为LCD驱动开发。所谓嵌入式系统是一台特殊用途的计算机,该计算机由它控制的设备完全封装。驱动这些系统的软件称为嵌入式软件。通用个人计算机可以执行多个任务,接受新的任务,并可由用户编程;而嵌入式系统有特定的需求,只能执行有限数量的预定义任务,嵌入式系统的优势在于,它们可以进行优化来进一步改善性能,并可以减小规模和本钱。由于存在这些优势,嵌入式系统的使用越来越普及,因而使日常生活的各个方面〔包括通讯、娱乐和工业控制系统〕得到充分的改善。为了成功的进行嵌入式开发,我们做了如下准备:C语言的强化,linux系统下的操作。linux常用命令:cd【目录】:切换到指定的目录,可以是相对路径或者是绝对路径。绝对路径是以“/〞开头,从目录的最顶层开始列出目录路径。相对路径不用“/〞开头,只列出当前工作目录以下的目录路径。ls【选项】【文件目录列表】:显示指定工作目录中所包含的内容的指令是ls,要说明的是ls命令列出文件的名字,而不是文件的内容。mkdir【选项】路径:“路径〞可以是一系列,此时假设路径中的目录不存在,那么系统自动创立那些不存在的目录。Pwd:显示的是当前工作目录的绝对路径。cp【选项】源文件目标文件或目标目录mv【选项】文件列表目录rm【选项】文件列表:可从文件系统中删除文件及整个目录。cat【选项】文件列表:用来将几个文件的内容相连接,并显示到终端上。Clear:去除屏幕上的信息。kill进程号:删除执行中的进程。tar[选项]文件或者目录:文件打包解包。ifconfig网络接口【选项】【地址】:配置网络接口的地址、网络掩码等。gcc[选项]要编译的文件[选项][目标文件]:编译可执行文件。〔2〕在VMware中安装Linux,New—>VirtualMachine…->选择“custom〞下一步->下一步,出现的界面中选择安装路径,必须注意待安装盘有足够的空间。因为后面安装的RedHat系统是桌面版本,它对内存还是有一定的要求,在机器内存较大的情况下,尽可能给RedHat多分配一些内存,此处分配的内存是256MB。下面可以选择默认选择,最后单击〞Close〞,此时虚拟机已经建立起来了。接下来光盘配置使用我们下载的RedHat是iso文件,单击OK按钮。下面就可以启动安装RedHat系统了。首先进行语言的选择,选择中文,并单击前进按钮。接下来选择时区,此处选择上海时区,单击前进按钮。在进行用户帐户和主机命名设置时,我用“zxy〞作为登录名且同时作为这台计算机的名称。安装向导的最后一步将用户安装过程中所做过的配置信息再次反应给用户,确认信息。最后点击“安装〞即可。准备工作做好之后,开始进行嵌入式开发,以下是开发过程中所做的练习。作业一〔大小端〕#include<stdio.h>typedefuniontag_MYUNION{charch[4];intvalue;}MYUNION;intmain(){MYUNIONmyunion;myunion.value=0x12345678;if(myunion.ch[0]==0x12)printf("bigendian\n");elsemyunion.ch[0]==0x78;printf("littleendian\n");return0;}作业二〔多线程〕#include<sys/types.h>#include<unistd.h>#include<stdio.h>intmain(){pid_tpid;char*message;intn;printf("forkprogramstarting\n");pid=fork();switch(pid){case-1:perror("forkfailed");exit(1);case0:message="child:";n=100;break;default:sleep(1);message="parent:";n=100;break;}for(n=1;n<100;n+=2){ printf("%s",message);printf("%d,%d\n",n,n+1);sleep(1);}exit(0);}作业三〔大小字母输出及ASC码〕#include<sys/types.h>#include<unistd.h>#include<stdio.h>intmain(){pid_tpid;char*message;intn;printf("forkprogramstarting\n");pid=fork();switch(pid){case-1:perror("forkfailed");exit(1);case0:message="child:";n=100;break;default:sleep(1);message="parent:";n=100;break;}for(n=1;n<100;n+=2){ printf("%s",message);printf("%d,%d\n",n,n+1);sleep(1);}exit(0);}作业四〔字母排序〕#include<stdio.h>#include<string.h>intmain(){intj=65;inti;chara[27];char*b;charreadbuf[27]={0};charreadbuf1[27]={0};for(i=0;i<26;i++){a[i]=j;j++;}a[i]='\0';FILE*fp;FILE*fp1;FILE*fp2;fp=fopen("zmpx.txt","w");char*buf=a;if(fp==NULL){printf("fileopenfailed.\n");return0;}fwrite(buf,strlen(buf),1,fp);fclose(fp);fp=fopen("zmpx.txt","r");if(fp==NULL){printf("fileopenfailed.\n");return0;}fread(readbuf,strlen(buf),1,fp);fp1=fopen("zhengxu.txt","w");fwrite(readbuf,strlen(buf),1,fp1);fclose(fp1);fp=fopen("zmpx.txt","r");if(fp==NULL){printf("fileopenfailed.\n");return0;}fread(readbuf,strlen(buf),1,fp);for(i=0;i<26;i++){fseek(fp,(-i-1),SEEK_END);fread(b,1,1,fp);readbuf1[i]=*b;}fp2=fopen("daoxu.txt","w");fwrite(readbuf1,strlen(buf),1,fp2);fclose(fp2);}当然,嵌入式开发仅仅学习C语言是远远不够的。于是在我们已有的单片机根底之上,又深入学习了汇编语言。从而,嵌入式开发的准备工作,我们已根本完成。在接下来的两周里,我们开始接触TQ2440开发板。刚接触开发板,我们自己对照使用手册开始接线。然后安装USB驱动,虚拟光驱,还有像SourceInsight3.5;CodeWarriorforARM;SecureCRTDeveloperSuite;TFTPServer以及DNW这些软件。首先我们做的有:1.SecureCRT的设置。2.设置DNW软件。3.安装USB下载驱动安装完毕USB下载驱动后,翻开DNW软件,就可以在DNW软件的顶上看到USB连接OK的字样同时可以在“设备管理器〞看到刚刚安装的USB驱动此时就可以使用USB下载u-boot、操作系统和文件系统了。4.安装GIVEIO驱动,Step1:首先翻开PC的“控制面板〞界面,双击“添加硬件〞图标,进入到添加硬件的界面。Step2:然后点击“下一步〞继续。系统会自动搜索硬件的。Step3:过一会会完成搜索,进入到下面第二图的界面,选择“是,我已经连接了此硬件〞。Step4:然后点击“下一步〞继续出现“安装向导〞,这里选择“安装我手动从列表选择的硬件〔高级〕〞选项。Step5:然后点击“下一步〞继续。在硬件列表中找到“端口〔COM和LPT〕〞选项,然后点击“下一步〞继续。Step6:点击“从磁盘安装〞选项后继续。Step7:从“磁盘安装〞界面中选择“浏览〞选项。Step8:然后定位到刚刚的GIVEIO目录下面,找到“GIVEIO.inf〞文件,点击“翻开〞继续。Step9:然后回到“从磁盘安装〞界面,点击“确定〞继续回到驱动设备安装的界面,选择“giveio〞设备后,点击“下一步〞继续出现“向导准备安装您的硬件〞界面中:。Step10:点击“下一步〞继续然后出现驱动未经过微软认证的界面,点击“仍然继续〞选项继续Step11:点击“完成〞选项后就完成驱动安装了。Step12:在“设备管理器〞中您可以看到新安装的驱动。5.TFTP代理软件设置至此,软件安装,设置根本完成。接下来就是烧写驱动代码和图片代码。由于代码过于庞大,仅截图一段,仅供参考。/**************************************************************在LCD屏幕上指定坐标点画一个指定大小的图片**************************************************************/voidPaint_Bmp(intx0,inty0,inth,intl,unsignedcharbmp[]){intx,y;U32c;intp=0;for(y=y0;y<l;y++){for(x=x0;x<h;x++){c=bmp[p+1]|(bmp[p]<<8);if(((x0+x)<SCR_XSIZE_TFT)&&((y0+y)<SCR_YSIZE_TFT))LCD_BUFFER[y0+y][x0+x]=c;p=p+2;}}}/****************************************************************************************************************************/voidLcd_TFT_Init(void){Lcd_Init();Lcd_PowerEnable(0,1);Lcd_EnvidOnOff(1); //turnonvedioLcd_ClearScr((0x00<<11)|(0x00<<5)|(0x00));#defineLCD_BLANK 12#defineC_UP (LCD_XSIZE_TFT-LCD_BLANK*2)#defineC_RIGHT (LCD_XSIZE_TFT-LCD_BLANK*2)#defineV_BLACK ((LCD_YSIZE_TFT-LCD_BLANK*4)/6)Glib_FilledRectangle(LCD_BLANK,LCD_BLANK,(LCD_XSIZE_TFT-LCD_BLANK),(LCD_YSIZE_TFT-LCD_BLANK),0x0000); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*0),(C_RIGHT),(LCD_BLANK*2+V_BLACK*1),0x001f); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*1),(C_RIGHT),(LCD_BLANK*2+V_BLACK*2),0x07e0); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*2),(C_RIGHT),(LCD_BLANK*2+V_BLACK*3),0xf800); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*3),(C_RIGHT),(LCD_BLANK*2+V_BLACK*4),0xffe0); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*4),(C_RIGHT),(LCD_BLANK*2+V_BLACK*5),0xf81f); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*5),(C_RIGHT),(LCD_BLANK*2+V_BLACK*6),0x07ff); //fillaRectanglewithsomecolorGlib_Line(LCD_BLANK,LCD_BLANK,(LCD_XSIZE_TFT-LCD_BLANK),(LCD_YSIZE_TFT-LCD_BLANK),0x0000);Glib_Line(LCD_BLANK,(LCD_YSIZE_TFT-LCD_BLANK),(LCD_XSIZE_TFT-LCD_BLANK),LCD_BLANK,0x0000);Glib_Line((LCD_XSIZE_TFT/2),(LCD_BLANK*2+V_BLACK*0),(LCD_XSIZE_TFT/2),(LCD_BLANK*2+V_BLACK*6),0x0000);}voidLcd_TFT_Test(void){Uart_Printf("\nTestTFTLCD!\n");Lcd_ClearScr((0x00<<11)|(0x00<<5)|(0x00)); //clearscreenUart_Printf("\nDisplayBlack!Pressanykeytocontinue!\n");Uart_Getch(); //waituartinputLcd_ClearScr((0x1f<<11)|(0x3f<<5)|(0x1f)); //clearscreenUart_Printf("DisplayWhite!Pressanykeytocontinue!\n");Uart_Getch(); //waituartinputLcd_ClearScr((0x00<<11)|(0x00<<5)|(0x1f)); //clearscreenUart_Printf("DisplayBlue!Pressanykeytocontinue!\n");Uart_Getch(); //waituartinputLcd_ClearScr((0x00<<11)|(0x3f<<5)|(0x00)); //clearscreenUart_Printf("DisplayGreen!Pressanykeytocontinue!\n");Uart_Getch(); //waituartinputLcd_ClearScr((0x1f<<11)|(0x00<<5)|(0x00)); //clearscreenUart_Printf("DisplayRed!Pressanykeytocontinue!\n");Uart_Getch(); //waituartinput/* Lcd_ClearScr((0x00<<11)|(0x3f<<5)|(0x1f)); //clearscreenUart_Printf("LCDclearscreenisfinished!pressanykeytocontinue!\n");Uart_Getch(); //waituartinputLcd_ClearScr((0x1f<<11)|(0x00<<5)|(0x1f)); //clearscreenUart_Printf("LCDclearscreenisfinished!pressanykeytocontinue!\n");Uart_Getch(); //waituartinputLcd_ClearScr((0x1f<<11)|(0x3f<<5)|(0x00)); //clearscreenUart_Printf("LCDclearscreenisfinished!pressanykeytocontinue!\n");Uart_Getch(); //waituartinput*/Lcd_ClearScr(0xffff); //fillallscreenwithsomecolor#defineLCD_BLANK 12#defineC_UP (LCD_XSIZE_TFT-LCD_BLANK*2)#defineC_RIGHT (LCD_XSIZE_TFT-LCD_BLANK*2)#defineV_BLACK ((LCD_YSIZE_TFT-LCD_BLANK*4)/6)Glib_FilledRectangle(LCD_BLANK,LCD_BLANK,(LCD_XSIZE_TFT-LCD_BLANK),(LCD_YSIZE_TFT-LCD_BLANK),0x0000); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*0),(C_RIGHT),(LCD_BLANK*2+V_BLACK*1),0x001f); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*1),(C_RIGHT),(LCD_BLANK*2+V_BLACK*2),0x07e0); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*2),(C_RIGHT),(LCD_BLANK*2+V_BLACK*3),0xf800); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*3),(C_RIGHT),(LCD_BLANK*2+V_BLACK*4),0xffe0); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*4),(C_RIGHT),(LCD_BLANK*2+V_BLACK*5),0xf81f); //fillaRectanglewithsomecolorGlib_FilledRectangle((LCD_BLANK*2),(LCD_BLANK*2+V_BLACK*5),(C_RIGHT),(LCD_BLANK*2+V_BLACK*6),0x07ff); //fillaRectanglewithsomecolorGlib_Line(LCD_BLANK,LCD_BLANK,(LCD_XSIZE_TFT-LCD_BLANK),(LCD_YSIZE_TFT-LCD_BLANK),0x0000);Glib_Line(LCD_BLANK,(LCD_YSIZE_TFT-LCD_BLANK),(LCD_XSIZE_TFT-LCD_BLANK),LCD_BLANK,0x0000);Glib_Line((LCD_XSIZE_TFT/2),(LCD_BLANK*2+V_BLACK*0),(LCD_XSIZE_TFT/2),(LCD_BLANK*2+V_BLACK*6),0x0000);#if(LCD_Type==LCDW43)Uart_Printf("Pressanykeytocontinue!\n");Uart_Getch(); //AnyKeyToNextPaint_Bmp(0,0,480,272,TQ_LOGO_480272);#elif(LCD_Type==VGA)Uart_Printf("Pressanykeytocontinue!\n");Uart_Getch(); //AnyKeyToNextPaint_Bmp(0,0,640,480,TQ_LOGO_640480);#endifUart_Printf("LCDTestComplete!\n");Uart_Printf("Pressanykeytoquit!\n");Uart_Getch(); }//*************************************************************插入组号“3〞的代码。Lcd_ClearScr((0x00<<11)|(0x00<<5)|(0x1f)); Glib_FilledRectangle(170,46,310,66,0xf800);

Glib_FilledRectangle(290,46,310,146,0xf800); Glib_FilledRectangle(170,126,310,146,0xf800); Glib_FilledRectangle(290,146,310,226,0xf800);

Glib_FilledRectangle(170,206,310,226,0xf800);由于插入图片的代码过于庞大在此就补贴出了。插入图片的具体方法是:1.将已有图片用PS等软件转换成像素为480*272大小的BMP文件。2.用BMP图片转换软件将BMP图文件转换成.c文件。3.讲图文件代码插入图片显示代码段中。4.保存,编译,测试,运行成功。至此工程开发内容根本完成,接下来是完成工程的文档,包括:①工程方案②概要设计说明③需求规格说明④详细设计说明⑤测试问题跟踪在工程验收过后,一个月的实习内容,圆满结束。

六、实习总结为期一个月的实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论