电子外出实习报告.doc
《电子外出实习报告.doc》由会员分享,可在线阅读,更多相关《电子外出实习报告.doc(10页珍藏版)》请在冰点文库上搜索。
太原科技大学
实习报告
专业:
电子信息工程
班级:
电子071501
学号:
200715020116
姓名:
完成日期:
2011-5-8
目录
一.实习目的……………………………………………………………………2
二.公司简介……………………………………………………………………2
三.实习任务……………………………………………………………………3
四.实习内容……………………………………………………………………3
五.实习总结……………………………………………………………………7
六.参考文献……………………………………………………………………8
七.附录…………………………………………………………………………8
指导教师:
乔建华徐登伟邓修海
实习单位:
北京凌阳爱普科技有限公司
一、实习目的
通过学习C语言基础与高级编程,熟练掌握指针、结构体、文件、链表的综合应用,精通C语言数组、函数、宏定义编程技巧,熟悉常用代码书写规范。
并学习和了解嵌入式在生活中的重要作用和发展过程,熟练掌握s3c2440开发板的硬件体系结构,熟悉linux下的嵌入式编程流程,积累自己的软件编写经验,能够参与并实现一个真实和完整的嵌入式项目,为今后的学习和将从事的技术工作打下坚实的基础。
二、公司简介
(1)凌阳教育
凌阳教育是凌阳科技大学计划旗下品牌,从2001年开始和全国高校开展校企合作,并专注于IT技术的培训和教育。
2008年底被评为“2008中国教育盛典”十大品牌IT教育机构。
凌阳教育是全国唯一原厂培训机构,学员全程以公司新人身份参加培训,遵守公司规章制度,实践企业项目开发流程,体验公司企业文化,让学员具备专业化的职业素质。
凌阳教育母公司凌阳科技是世界知名IC设计公司,有非常庞大的客户群,凌阳教育嵌入式学员就业以此为主线设立三级就业体系:
第一级:
凌阳教育嵌入式培训学员首先满足凌阳科技北京、上海、深圳、成都等各地子公司的嵌入式人才需求;
第二级:
凌阳科技是芯片设计公司,庞大的客户群和代理商构成凌阳教育的第二级就业体系;
第三级:
凌阳科技子公司和客户群为基础,由此辐射的北京、长三角和珠三角的用人单位构成凌阳教育的第三级就业体系。
(2)凌阳爱普
2001年,为回馈教育事业,改善大专院校嵌入式教学条件,凌阳科技推出了具有长期战略意义的校企合作计划-凌阳科技大学计划。
随着经营范围、服务项目不断发展壮大,凌阳大学计划壮大成为北京凌阳爱普科技有限公司。
公司目前业务范围分别是:
“校企合作中心”负责向高校提供全面的单片机、嵌入式教学创新方案;“应用中心”负责向企业提供凌阳芯片和应用方案;“培训中心”负责面向电子爱好者提供专业的电子工程师培训课程;“61job人才网”负责电子人才与电子相关企业建立绿色通道。
(3)凌阳科技
凌阳科技创立于1990年,总公司位于台湾新竹科学园区,是全球最大消费性芯片设计公司。
产品涵盖了微控器芯片、多媒体芯片、液晶驱动和控制芯片及存储器芯片等。
近几年,凌阳科技陆续开发出μ'nSP系列(16位)、S+Core系列(32位)自主知识产权微处理器内核,并建立完整的嵌入式产业链,在同在同在同类产品中已达到世界领先水平。
三、实习任务
凌阳教育嵌入式培训通过对嵌入式Linux系统全面的学习,能够独立胜任嵌入式Linux应用开发、系统开发、驱动开发等多方面工作。
第一阶段:
嵌入式C语言编程
培训时间:
1周
本期目标:
嵌入式C语言在整个过程中起着至关重要的作用。
C语言有功能强、使用方便灵活等特点,更重要的是可移植性比较强。
一个精通C语言程序设计的程序员,可以很容易地进入Linux、WinCE、Vxworks等嵌入式操作系统下的软件开发工作。
本阶段学习目标是掌握C语言基本知识、C编程语法基础,以及C语言高级编程,为将来的编程工作打下结实的基础。
第二阶段:
Linux应用及系统编程
培训时间:
2周
本期目标:
嵌入式Linux应用开发和系统开发是嵌入式Linux中最重要的一部分,也是企业人才需求最广的一部分。
本期学习的主要目标是精通嵌入式Linux下的程序设计,熟练掌握嵌入式Linux的开发环境、系统编程以及网络编程,熟悉C++、QT编程并且深刻体会整个嵌入式Linux项目开发流程,强化学员对Linux应用开发的能力。
四、实习内容
(1)linux下的C语言基础与高级编程
嵌入式C语言在整个实习过程中起着至关重要的作用。
C语言有功能强、使用方便灵活等特点,更重要的是可移植性比较强。
通过本阶段的学习,基本掌握了C语言基本知识、C编程语法基础,以及C语言高级编程,为将来的编程工作打下结实的基础。
最后完成了MP3歌词解析项目。
实现了解析lre格式的MP3歌词文件,并在屏幕上打印输出。
完成MP3歌词解析器项目的大概过程:
1.)程序运行的环境:
需安装千千静听到默认路径下,同时安装vc6.0环境
2.)程序实现的功能:
完成lrc格式歌词的文件读取、解析、链表创建等,同时在屏幕上将解析出的歌词进行实时显示并实现与千千静听同步播放。
3.)项目完成的步骤:
1.将歌词文件内容通过fread()函数全部读到一个数组中,并在屏幕上打印出来,验证试验结果。
2.判断歌曲的歌名与演唱者,并打印出来。
3.将一个歌词、时间一一对的歌词读到一个结构体数组或链表中,并将时间标签转换为以s为单位。
4.调用time或sleep函数,制作一个模拟时钟。
5.时钟与歌词同步显示
6.改造解析函数,完成多个时间标签对应同一句歌词的情况。
4.)项目最终的效果:
5.)心得体会:
通过一周的C语言基础学习,从起初编写最简单的在屏幕上显示“helloworld”开始,到后来完成较复杂的项目。
我深刻体会到程序是编出来的而不是看出来的,要想学好C语言实践很重要,在实践中发现问题并寻求解问题的方法,如果只是片面的去看课本而不去编程的话,始终不能发现自己的不足。
在这一周的时间里我学到了很多我在学校没有掌握或者是掌握得不够牢固的知识,我感觉这一周C语言的学习,就是把我本身的一个破破烂烂的桶,给打上了一个个的补丁,让里面能真正的保存知识,而不是漏掉。
把程序成功调试出来对于我来说一直是件很有成就感的事,也会不断的增加我的自信。
(2)Linux应用与系统编程
嵌入式Linux应用开发和系统开发是嵌入式Linux中最重要的一部分,也是企业人才需求最广的一部分。
本阶段学习了Linux的安装过程、Linux发展历程、Linux常用命令等,通过上述课程的学习不仅熟悉了Linux操作系统的概念和安装方法,而且学会了使用Linux的常用命令。
通过vi文本编译器、gcc编译器和gdb调试器的使用与练习掌握了vi的基本使用,熟悉了程序的编译过程,学会了使用gcc编译程序,了解了gdb调试器和Make项目管理工具等知识。
最后完成了shell命令解释器项目和Mplayer项目,实现了图形界面初始化,播放列表功能,并且能够实现歌词同步,快进、快退歌词同步,切换歌词的时候自动加载歌词等功能。
完成shell命令解释器项目部分功能的大致流程:
(1)程序实现的功能:
写一个shell命令解释器,使能处理带参数的命令。
(2)项目完成的步骤:
1.命令解释器首先是一个死循环。
2.打印一个命令提示符,包含当前路径信息。
取得命令行输入,本程序是把命令行输入保存在一个字符指针指向的地址中。
3.分析命令行,把以空格分开的命令和参数分别取出来放在字符指针数组arg[]中。
这里取得的命令行字符串保存在input指向的地址。
为了把这一行字符串中的命令和参数分开,需要一个临时数组tmp(本程序是重用前面使用的buf数组),把input指向命令行中的命令和参数分别保存在arg[0]、arg[1]等等。
4.创建一个子进程,调用exec执行命令。
5.父进程(即shell命令解释器)调用waitpid()。
然后进入下一次循环。
(3)项目的流程图:
(4)shell命令解析器项目的源代码见附录中。
(5)将MP3歌词解析器的源程序移植到linux下的运行效果见下图:
五、实习总结
三周的实习时间一晃就过去了,首先感谢老师给我提供了这次特别好的实习机会,在这短短的三周时间里我学到了很多知识,也感悟了不少人生。
以下是我对这次实习的一点总结:
众所周之搞软件开发C语言是一个很好的工具,虽然这次C语言的实习时间只有短短的一周时间,但是感觉收获甚多,从开始的在屏幕上显示“helloworld”到最后完成的MP3歌词解析器项目,每天敲打键盘十几个小时,付出了很多同时收获了更多。
这次实习不仅使我熟练掌握并应用TC程序设计的各个知识点,掌握结构体和指针的联合应用,学会了链表的结构和常用操作方法。
而且通过各种途径查找所需资料,扩宽了视野,培养了自己的编程能力。
虽然之前学习过C语言,但是刚开始实习的的时候,还是感觉到有点迷茫,以前只是看看课本,自己编写程序的时间少之又少,导致开始编写程序时感觉无从下手,开始时照着老师给的程序自己在敲打一遍,然后将它慢慢消化,最后转变成自己的东西。
所以我认为学习C语言上机实践很重要,一定要自己动手编写程序,只看不做,眼高手低是不行的。
还有在自己编写并执行程序时,不要害怕出错,其实,我觉得出错并不一定是坏事,它使我们知道了自己所学知识的不足,并根据提示改正程序中发生的错误,一种成就感油然而生,觉得自己的付出都是值得的。
再者就是良好的编程习惯是学好C语言的重要因素,只有勤动手,多动脑才能学好C语言,光说不练是不行的。
接下来的两周linux学习,更是从不知到了解再到熟悉,最后到基本的操作,并成功将MP3歌词解析器的源程序移植到linux下运行。
总之通过这次实习不仅只是学到了有关嵌入式的基本知识,更重要的是思想上的转变,不仅学会了如何解决在实习中遇到的各种问题,为以后使用该软件进行编程打下了坚实的基础,也培养了自己对该软件的兴趣,对于即将毕业的我正面临着找工作的压力,通过这次实习积累了不少经验,对以后找工作也起到了一定的辅助作用,希望今后能够有机会对该软件进行进一步的学习研究。
计算机和网络已经全面渗透到日常生活的每一个角落,对于我们每个人来说,需要的已经不再仅仅是放在桌面上处理文档,进行工业管理和生产控制的计算机“机器”。
任何一个普通的人都可能拥有从小到大的各种嵌入式技术的电子产品,小到MP3等微型数字化产品,大到网络家电,智能家电等,各种各样的新型嵌入式系统设备在应用数量上已经远远超过了通用计算机,在工业和服务领域,使用嵌入式技术的数字机床、智能工具、工业机器人、服务机器人、正在逐渐的改变着传统的工业生产和服务方式。
最后特别感谢指导老师对我的精心指导和同学们的细心帮助。
六、参考文献:
1.C语言完全手册杨峰编著科学出版社
2.C程序设计谭浩强北京大学出版社
3.Linux高级程序设计(第2版)杨宗德邓玉春编著人民邮电出版社
七、附录
Shell命令解释器的部分功能的源代码。
源代码:
/********************************************************************
*Filename:
shell_item.c
*Description:
*Version:
1.0
*Created:
2011年02月11日15时54分18秒
*Revision:
none
*Compiler:
gcc
*Author:
YOURNAME(),
*Company:
********************************************************************/
#include
#include
#include
#include
#include
#include
intmain(void)
{
charbuf[100];
char*argv[10]={};
intt,i=0;
char*str="";
intstatus;
pid_tpid;
while
(1)
{
printf("Pleaseintput:
\n");
fflush(stdout);
fgets(buf,sizeof(buf),stdin);
buf[strlen(buf)-1]='\0';
i=0;
argv[i]=strtok(buf,str);
while(argv[i]!
=NULL)
{
// printf("%s\n",argv[i]);
argv[++i]=strtok(NULL,str);
}
pid=fork();//创建子进程
if(pid<0)
{
perror("forkerror\n");
}
elseif(pid==0)//子进程
{
for(t=0;t
printf("%s\n",argv[t]);
execvp(argv[0],argv);
exit(6);
}
else//父进程
{
wait(&status);
if(WIFEXITED(status)!
=0)//判断子进程是否正常结束
printf("over\n");
}
}
// return0;
}
9