当前位置:文档之家› 实习报告_嵌入式(DOC)

实习报告_嵌入式(DOC)

实习报告_嵌入式(DOC)
实习报告_嵌入式(DOC)

学 生 实 习 报 告

实 习 名 称 院 部 名 称 专 业 班 级

学 生 姓 名 学 号 实 习 地 点

指 导 教 师

实习起止时间:2011年 7月 4日至2011年 7月29日

实习报告

前言

中软国际有限公司(中软国际)是根植中国、服务全球的IT服务提供商,致力于为遍及全球的客户提供全面的服务,打造中国智造综合平台。中软国际总部位于北京,在美国、日本、香港以及中国大陆25个主要城市设有35家分子公司或办事处,员工突破10000人。年营业额逾10亿元人民币(2007财年)。2007年和2008年中软国际对欧美软件外包业务位列全国第一(IDC统计数据)。

集团业务涵盖以咨询为驱动的解决方案、以专业化为准则的ITO和BPO外包服务和以人才供链为导向的培训服务,包括咨询服务、软件开发、系统集成、软件测试、软件本地化、企业应用平台建设与维护、IT服务外包以及业务流程外包。

凭借集团的全球分布,中软国际能够充分运用全球资源和自身领先的技术实力帮助客户应对不断快速变化的商业挑战。凭借中软国际在中国市场所拥有的独特领导地位和全球提交能力,除能为客户提供“传统”外包服务及信息解决方案外,还能以其国内、海外市场的互动能力帮助客户在中国或海外开拓新的业务机会。

一、实习目的

1、掌握嵌入式微处理器的结构与原理

2、熟悉并掌握嵌入式Linux操作系统的操作

3、熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。

二、实习时间

三、实习地点

江苏省无锡市无锡新区新安镇震泽路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—>Virtual Machine…->选择“custom”下一步->下一步,出现的界面中选择安装路径,必须注意待安装盘有足够的空间。因为后面安装的RedHat系统是桌面版本,它对内存还是有一定的要求,在机器内存较大的情况下,尽可能给RedHat多分配一些内存,此处分配的内存是256MB。下面可以选择默认选择,最后单击”Close”,此时虚拟机已经建立起来了。

接下来光盘配置使用我们下载的RedHat是iso文件,单击OK按钮。下面就可以启动安装RedHat系统了。首先进行语言的选择,选择中文,并单击前进按钮。接下来选择时区,此处选择上海时区,单击前进按钮。在进行用户帐户和主机命名设置时,我用“zxy”作为登录名且同时作为这台计算机的名称。安装向导的最后一步将用户安装过程中所做过的配置信息再次反馈给用户,确认信息。最后点击“安装”即可。

准备工作做好之后,开始进行嵌入式开发,以下是开发过程中所做的练习。作业一(大小端)

#include

typedef union tag_MYUNION

{char ch[4];

int value;

}MYUNION;

int main()

{MYUNION myunion;

myunion.value=0x12345678;

if(myunion.ch[0]==0x12)

printf("big endian\n");

else myunion.ch[0]==0x78;

printf("little endian\n");

return 0;}

作业二(多线程)

#include

#include

#include

int main()

{

pid_t pid;

char *message;

int n;

printf("fork program starting\n"); pid = fork();

switch(pid)

{

case -1:

perror("fork failed");

exit(1);

case 0:

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

#include

#include

int main()

{

pid_t pid;

char *message;

int n;

printf("fork program starting\n"); pid = fork();

switch(pid)

{

case -1:

perror("fork failed");

exit(1);

case 0:

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

#include

int main()

{

int j=65;

int i;

char a[27];

char *b;

char readbuf[27]={0};

char readbuf1[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("file open failed.\n"); return 0;

}

fwrite(buf,strlen(buf),1,fp);

fclose(fp);

fp=fopen("zmpx.txt","r");

if(fp==NULL)

{

printf("file open failed.\n");

return 0;

}

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("file open failed.\n");

return 0;

}

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驱动,虚拟光驱,还有像Source Insight 3.5;CodeWarrior for ARM;SecureCRT Developer Suite;TFTP Server以及DNW这些软件。

首先我们做的有:

1.SecureCRT的设置。

2.设置DNW软件。

3.安装USB下载驱动安装完毕USB下载驱动后,打开DNW软件,就可以在DNW 软件的顶上看到USB连接OK的字样同时可以在“设备管理器”看到刚刚安装的USB驱动此时就可以使用USB下载u-boot、操作系统和文件系统了。

4.安装GIVEIO驱动,

Step 1:首先打开PC的“控制面板”界面,双击“添加硬件”图标,进入到添加硬件的界面。

Step 2:然后点击“下一步”继续。系统会自动搜索硬件的。

Step 3:过一会会完成搜索,进入到下面第二图的界面,选择“是,我已经连接了此硬件”。

Step 4:然后点击“下一步”继续出现“安装向导”,这里选择“安装我手动从列表选择的硬件(高级)”选项。

Step 5:然后点击“下一步”继续。在硬件列表中找到“端口(COM和LPT)”选项,然后点击“下一步”继续。

Step 6:点击“从磁盘安装”选项后继续。

Step 7:从“磁盘安装”界面中选择“浏览”选项。

Step 8:然后定位到刚才的GIVEIO目录下面,找到“GIVEIO.inf”文件,点击“打开”继续。

Step 9:然后回到“从磁盘安装”界面,点击“确定”继续回到驱动设备安装的界面,选择“giveio”设备后,点击“下一步”继续出现“向导准备安装您的硬件”界面中:。

Step 10:点击“下一步”继续然后出现驱动未经过微软认证的界面,点击“仍然继续”选项继续

Step 11:点击“完成”选项后就完成驱动安装了。

Step 12:在“设备管理器”中您可以看到新安装的驱动。

5.TFTP代理软件设置

至此,软件安装,设置基本完成。

接下来就是烧写驱动代码和图片代码。由于代码过于庞大,仅截图一段,仅供参考。

/**************************************************************

在LCD屏幕上指定坐标点画一个指定大小的图片

**************************************************************/

void Paint_Bmp(int x0,int y0,int h,int l,unsigned char bmp[])

{

int x,y;

U32 c;

int p = 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 ;

}

}

}

/**************************************************************

**************************************************************/

void Lcd_TFT_Init(void)

{

Lcd_Init();

Lcd_PowerEnable(0, 1);

Lcd_EnvidOnOff(1); //turn on vedio

Lcd_ClearScr( (0x00<<11) | (0x00<<5) | (0x00) );

#define LCD_BLANK 12

#define C_UP ( LCD_XSIZE_TFT - LCD_BLANK*2 )

#define C_RIGHT ( LCD_XSIZE_TFT - LCD_BLANK*2 )

#define V_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); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*0), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*1),0x001f); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*1), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*2),0x07e0); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*2), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*3),0xf800); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*3), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*4),0xffe0); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*4), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*5),0xf81f); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*5), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*6),0x07ff); //fill a Rectangle with some color

Glib_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 ) ;

}

void Lcd_TFT_Test( void )

{

Uart_Printf("\nTest TFT LCD!\n");

Lcd_ClearScr( (0x00<<11) | (0x00<<5) | (0x00) ) ; //clear screen

Uart_Printf( "\nDisplay Black! Press any key to continue!\n" );

Uart_Getch() ; //wait uart input

Lcd_ClearScr( (0x1f<<11) | (0x3f<<5) | (0x1f) ) ; //clear screen

Uart_Printf( "Display White! Press any key to continue!\n" );

Uart_Getch() ; //wait uart input

Lcd_ClearScr( (0x00<<11) | (0x00<<5) | (0x1f) ) ; //clear screen

Uart_Printf( "Display Blue! Press any key to continue!\n" );

Uart_Getch() ; //wait uart input

Lcd_ClearScr( (0x00<<11) | (0x3f<<5) | (0x00) ) ; //clear screen

Uart_Printf( "Display Green! Press any key to continue!\n" );

Uart_Getch() ; //wait uart input

Lcd_ClearScr( (0x1f<<11) | (0x00<<5) | (0x00) ) ; //clear screen

Uart_Printf( "Display Red! Press any key to continue!\n" );

Uart_Getch() ; //wait uart input

/* Lcd_ClearScr( (0x00<<11) | (0x3f<<5) | (0x1f) ) ; //clear screen

Uart_Printf( "LCD clear screen is finished! press any key to continue!\n" );

Uart_Getch() ; //wait uart input

Lcd_ClearScr( (0x1f<<11) | (0x00<<5) | (0x1f) ) ; //clear screen

Uart_Printf( "LCD clear screen is finished! press any key to continue!\n" );

Uart_Getch() ; //wait uart input

Lcd_ClearScr( (0x1f<<11) | (0x3f<<5) | (0x00) ) ; //clear screen

Uart_Printf( "LCD clear screen is finished! press any key to continue!\n" );

Uart_Getch() ; //wait uart input

*/

Lcd_ClearScr(0xffff); //fill all screen with some color

#define LCD_BLANK 12

#define C_UP ( LCD_XSIZE_TFT - LCD_BLANK*2 )

#define C_RIGHT ( LCD_XSIZE_TFT - LCD_BLANK*2 )

#define V_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); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*0), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*1),0x001f); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*1), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*2),0x07e0); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*2), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*3),0xf800); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*3), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*4),0xffe0); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*4), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*5),0xf81f); //fill a Rectangle with some color

Glib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*5), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*6),0x07ff); //fill a Rectangle with some color

Glib_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( "Press any key to continue!\n" );

Uart_Getch() ; //Any Key To Next

Paint_Bmp(0, 0, 480, 272, TQ_LOGO_480272);

#elif(LCD_Type == VGA)

Uart_Printf( "Press any key to continue!\n" );

Uart_Getch() ; //Any Key To Next

Paint_Bmp(0, 0, 640, 480, TQ_LOGO_640480);

#endif

Uart_Printf("LCD Test Complete!\n");

Uart_Printf("Press any key to quit!\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.保存,编译,测试,运行成功。

至此项目开发内容基本完成,接下来是完成项目的文档,包括:

①项目计划

②概要设计说明

③需求规格说明

④详细设计说明

⑤测试问题跟踪

在项目验收过后,一个月的实习内容,圆满结束。

六、实习总结

为期一个月的实习就要结束了,我在这一个月的实习中学到了很多在课堂上根本就学不到的知识,真是受益非浅。

有一名话叫做:不经过风雨,怎么见彩虹?我想改一下:不真正进入社会,怎能了解社会呢?

中软国际位于江苏省无锡市国家软件园,该公司是国内大型综合性软件与信息服务企业,具有极高的市场感召力和客户忠诚度,以领先的技术、丰富的经验、精湛的服务在中国 IT 行业享有极高的声誉。这样的公司给我们学校电子信息类的学生提供了难得的实习条件,在那里,公司的各种管理方法、流程和管理者之间的上下层关系可以说是我们现实社会中一个缩影的充分体现,她为我们在校的学生踏进社会提供了一个抢先一步踏进社会体验生活的可贵机会。

刚开始在中软国际里实习第一个体会到的就是一个字——“累”,但后来慢慢的习惯下来,因为刚从校园里走出来,没有经历过很大风吹雨打,可以说一直以来在保护伞下走过,这次学校组织的实习生活可以给我真正体会到现实生活中的酸、甜、苦、辣;但是我很高兴,因为在实习中到困难时,并没有后退,而是

勇敢地面对现实,向困难中挑战。实习磨炼了我的意志,使我现在的意志比实习前坚强多,我真正体会到“苦尽甘来”的味道。

在实习过程中还学会了很多东西:

首先,第一个是懂得了什么叫做团队精神,一个班组要团结,不然的话就有可能导致事情的失败。

其次,我学会了沟通,学会处理好身边的人际关系,学会在苦中作乐的技巧,我的工作是比较枯燥的,每天都反复的做哪份工作,如果没有同身边的同事沟通,处理好身边的人际关系,一个人是很孤独,同时在一个工位上工作时间长了,前后工位之间将免不了有磨擦出现,处理不好,将影响我们的工作质量。这就让我懂得了人际关系的重要性,一个好的人缘将会给我们的工作带来了无限的方便和欢乐。

其三在工作中学会了研究。在工作中,方法中的正确和方便性非常重要,直接影响到代码实现的正确与否,在自己的岗位上做熟了,对自己所做的工作也仔细研究起来,细心分析其方法,代码的缺点,自己优化出一个更加便捷简单的代码来提高自己,真正充分体现出大学生的不同之处,体现了大学生的风采。

其四,这次中软国际之旅给同学增进了不少友谊,加深了同学之间的感情。在这陌生的地方实习,意识到同学之间的帮助非常重要,大家紧密的团结在一起、生活、工作有遇到什么问题都互相的关顾,加深了同学之间的友谊。通过这次实习,让我成熟了很多。

回想自己在这期间的工作学习情况,不尽如意。对此我思考过,学习经验自然是一个因素,然而更重要的是心态的转变没有做到位。现在发现了这个不足之处,应该还算是及时吧,因为我明白了何谓工作。在接下来的日子里,我会朝这个方向努力,我相信自己能够把那些不该再存在的“特点”抹掉。

对于我来说,这是我第一次走进公司,也是我第一次真正体验一份工作和感受企业文化。感谢学校,给了我这次体验人生的机会。感谢中软国际,让我在这次实习中学到了很多东西。向尊敬的老师、敬爱的校领导致敬!

嵌入式的培训心得体会

嵌入式的培训心得体会 嵌入式的培训心得体会1 8月我参加了学校安排的课题实训,基地在北京,学院安排我们集体坐火车一同前去,浩浩荡荡的队伍开始出发了。刚来北京的时候,映入眼绵的都是高楼大厦,一直想到的地方终于到了,好多以前的同学听说我要去北京实训都很羡慕不已,我自己也隐隐感到自豪。 我参加的课题实训是嵌入式方向的,开课的内容主要是嵌入式开发方面的,C语言,数据结构,LINUX基本操作,网络编程,操作系统和汇编语言,这些都是嵌入式不可缺少的。 每个专业技能都决定了你以后找工过。我们班分了很多小组,每组都有小组长,小组长直接对我们负责。教课老师很认真,都是从很基础的开始讲;同学们听课也很认真,由于代码操作比较多,键盘的声音源源不断的在响。好久没有感觉到这种浓重的学习气氛了,而在这紧张而充实的学习氛围中我获益匪浅,感受颇多。 授课过程中老师们也传授了一些找工作方面的经验,比如简介的样式和写法,面试中的一些着装,礼貌用语和技巧,对此基地的老师还精心的为我们安排了一场模拟面试,在其中我们学到了很多有关于面试方面的经验。

通过这几个月的实训我学到了很多,同时也让我们意识到我们要学的更多。从程序的设计到编写、画图、调试、修改、完善、到最后的实训报告,每个人都付出了时间和精力去做好自己的任务帮助队友,所以团队的合作和队友之间的相互协助非常重要。 通过实训让我们更深一步的对自己的专业,对自己的能力,对自己所学的有正确的认识,并且能在以后的学习工作中不断提高和完善自己。 特别是讲C语言和进程通信中老师给了我们每个小组的几个小项目,让我学到了更多项目经验,这在学校之前是没有的。这次实训也碰到了些问题,比如项目文档的写法,代码的规范,流程图的画法,这些都有讲究,在老师和同学的帮助下,我不断的提高了在这些方面的学习。 生活上班主任郭老师和王老师对我们关怀备至,让我们没有感觉在外面的那种不适感,同学们也互帮互助,所以生活上大致没什么问题,这让我们更好的去学专业。很感谢学校有这样的实训安排。 总的来说,这次实训还是比较成功的,无论是个人动手能力还是团队协作能力都得到了很好的锻炼。在实训过程中老师也交给我们很多简单实用的技巧。我们也学到了,做好做对一个项目固然重要,同时美观程度也是必不可少的,无论是从参观者的角度还是自己看的角度都很重要。

实习报告_嵌入式(DOC)

学 生 实 习 报 告 实 习 名 称 院 部 名 称 专 业 班 级 学 生 姓 名 学 号 实 习 地 点 指 导 教 师 实习起止时间:2011年 7月 4日至2011年 7月29日

实习报告 前言 中软国际有限公司(中软国际)是根植中国、服务全球的IT服务提供商,致力于为遍及全球的客户提供全面的服务,打造中国智造综合平台。中软国际总部位于北京,在美国、日本、香港以及中国大陆25个主要城市设有35家分子公司或办事处,员工突破10000人。年营业额逾10亿元人民币(2007财年)。2007年和2008年中软国际对欧美软件外包业务位列全国第一(IDC统计数据)。 集团业务涵盖以咨询为驱动的解决方案、以专业化为准则的ITO和BPO外包服务和以人才供链为导向的培训服务,包括咨询服务、软件开发、系统集成、软件测试、软件本地化、企业应用平台建设与维护、IT服务外包以及业务流程外包。 凭借集团的全球分布,中软国际能够充分运用全球资源和自身领先的技术实力帮助客户应对不断快速变化的商业挑战。凭借中软国际在中国市场所拥有的独特领导地位和全球提交能力,除能为客户提供“传统”外包服务及信息解决方案外,还能以其国内、海外市场的互动能力帮助客户在中国或海外开拓新的业务机会。 一、实习目的 1、掌握嵌入式微处理器的结构与原理 2、熟悉并掌握嵌入式Linux操作系统的操作 3、熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 二、实习时间

三、实习地点 江苏省无锡市无锡新区新安镇震泽路5号江苏软件外包产业园处子座B座四、实习单位和部门 实习单位:无锡中软国际信息技术培训有限公司 实习部门:无锡中软国际信息技术培训有限公司 五、实习内容 来到中软国际,主要实习方向为嵌入式开发,细化为LCD驱动开发。 所谓嵌入式系统是一台特殊用途的计算机,该计算机由它控制的设备完全封装。驱动这些系统的软件称为嵌入式软件。通用个人计算机可以执行多个任务,接受新的任务,并可由用户编程;而嵌入式系统有特定的需求,只能执行有限数量的预定义任务,嵌入式系统的优势在于,它们可以进行优化来进一步改善性能,并可以减小规模和成本。由于存在这些优势,嵌入式系统的使用越来越普及,因而使日常生活的各个方面(包括通讯、娱乐和工业控制系统)得到充分的改善。 为了成功的进行嵌入式开发,我们做了如下准备:C语言的强化,linux系统下的操作。 linux常用命令: cd【目录】: 切换到指定的目录,可以是相对路径或者是绝对路径。绝对路径是以“ / ”开头,从目录的最顶层开始列出目录路径。相对路径不用“ / ”开头,只列出当前工作目录以下的目录路径。 ls【选项】【文件目录列表】:显示指定工作目录中所包含的内容的指令是ls,要说明的是ls命令列出文件的名字,而不是文件的内容。 mkdir【选项】路径: “路径”可以是一系列,此时若路径中的目录不存在,则系统自动创建那些不存在的目录。

嵌入式系统开发技术课程设计

《嵌入式系统开发技术》课程设计 一、课程设计目的 嵌入式系统的教学可以分为课堂理论教学、实验教学和课程设计三个层面。这三个层面的目标有所不同。理论学习的主要目标是掌握嵌入式系统的一般原理,例如实时调度策略、自动控制算法等;实验教学的主要目的是掌握嵌入式系统的主要开发流程和基本方法,例如开发工具链的使用、小型应用开发等;课程设计的主要目的是通过实际的嵌入式应用系统开发实例掌握嵌入式系统设计和开发的技能和专门知识,积累实践和工程经验。 二、课程设计要求 1、学生按题目分组参加课程设计,要求每个学生有明确的分工,每组成员4-6人; 2、必须按照工程化开发流程,撰写相应的文档和代码,最后还必须通过课设答辩。课设成果包括设计文档、程序代码等。文档必须按照规定的格式撰写(具体见“五、课程设计写作细则”,否则必须调整好格式才能参加答辩。 3、课设答辩必须撰写PPT,简要阐述所完成的主要工作,自我阐述时间控制在8分钟之内;自我阐述之后,还需回答指导教师所提的2-3个问题。 4、考核办法及评分比例:设计文档占30%,程序代码占30%,答辩占20%,考勤占20%。 三、课程设计流程 1、准备阶段 针对题目所涉及的基本实验(详见“四、课程设计参考题目”),进行分析研究,掌握课题所需要的基本知识,包括理论部分及实验部分的基础知识。 2、需求分析 根据课设题目进行需求分析,各小组组织召开需求分析研讨会,充分挖掘潜在的需求。 3、设计阶段 根据需求分析,进行系统设计,可以分为两步: (1)概要设计 概要设计主要完成系统软件模块的划分,给出软件总体框图,分析数据之间的关系,确定所需要的数据结构。 (2)详细设计 详细设计阶段针对概要设计所划分出的软件模块,设计函数原型、数据结构,确定函数之间的接口,并细化个函数的设计,给出函数的流程图。 4、编码阶段

嵌入式学习心得体会5篇

嵌入式学习心得体会5篇 嵌入式学习心得体会(一) 首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。 对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的modem 射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15k以上。 另一类就是数字部分了,在大方向上又可分为51/arm的单片机类,dsp类,fpga 类,国内fpga的工程师大多是在ic设计公司从事ip核的前端验证,这部分不搞到门级,前途不太明朗,即使做个ic前端验证工程师,也要搞上几年才能胜任。dsp 硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。 而arm单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互pk,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如pxa255处理器i2c要求速度在100kbps,如果把一个i2c外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接lcd,但为什么这种lcd就不能挂在arm的总线上,还有arm7总线上可以外接个winband的sd卡控制器,但为什么这种控制器接不到arm9或是xscale处理器上,这些都是问题。 因此接口并不是一种简单的连接,要看时序,要看参数。一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师

嵌入式实习生实习日志(精品)

实习名称:嵌入式开发 实习时间:2014年7月7日至8月 1 实习生实习日志 实习生: 学校实习指导教师签字: 日期: 年 月曰

实习生实习报告 实习内容:

培训机构。我满怀着一腔热血,就是为了自己能够在专业水平得到提高,以及为自己以后工作做铺垫。在为期四周实习中,我学到了许多知识,从中也认识到了自已的不足。 在未实习之前,我就对牛尔教育机构有所了解,因为我在网络上搜索过,从网络上我了解到了牛尔教育机构是非常不错的机构,是我一直想进入的机构。 为期四周的实习生活,每天上午上课下午自习,每天的作息时间都很规律,朝九晚五。正是因为这是使我们能够更好的适应以后的工作和生活节奏。这次实习主要是了解关于嵌入式的开发、C言语的学习,C语言高级编程的学习,shell编程的学习,以及关于面试的技巧的学习。 第一天的实习中,我们就学习了C语言知识,主要是将讲数组和指针,以及它们之间的差别。其中比较重要的知识点有:①指针变量 是用来存放地址的变量,而指针只是一个地址量,数组名是一个地址常量,不能修改它的内容,而指针在声明时,还能赋初值。②指针数组指的是数组中的元素是指针变量,它是一个数组,元素是指针,元素相当于二位数组的行名。③在C语言中,数组不能作为一个整体参与任何运算,数组的处理是通过逐个处理其元素来实现的。④注意for 循环的控制语句,由于人工计算容易出错,因此可以让计算机来计算数组的大小,预算符sizeof给出其后的对象或者类型的大小(以字节为单位)。整个数组的大小除以单个元素的大小就是数组中元素的数目⑤数据在内存中存储的方式具体有四种:自动、静态的、寄存器的和外部的。其中用静

2020版嵌入式实训报告范文

2020版嵌入式实训报告范文 Embedded training report model ( 实习报告 ) 汇报人:_________________________ 职务:_________________________ 日期:_________________________ 适用于工作总结/工作汇报/年终总结/全文可改

2020版嵌入式实训报告范文 一、实习时间 20xx年4月12日-20xx年4月26日 二、指导教师姓名 陈xx 三、实习地点 长沙市牛耳服务外包实训基地 四、实习目的与内容 对于嵌入式项目进行学习培训,掌握嵌入式的主要项目及相关技术 五、实习收获与体会 一转眼半个月的实习生活过去了,现在我已经回到学校,回想起半个月的实习生活,自己学到了很多,懂得了很多。 真的说不出是什么感觉,伴着时间,就像是在和自己的影子赛

跑,不可能从真实的两面去看清它,只是经意不经意的感受着有种东西在过去,也许更适合的只有那句话:时不待我,怎可驻足。原以为实习对于我来说会是很长,但实际却不同。想象收获的东西,真的很多,看看我的工作笔记,一篇又一篇,记别人的事情比自己的还多,也许……实习,并不像我想象中的那样轻松惬意,而是充满了挑战和艰辛。我给自己敲响了警钟:“不要半途而废,做事情切忌三分热度。”我信心十足的回答到:“我一定会坚持到底!” 天下英雄皆我辈,一入江湖立马催。”从学校到社会的大环境的转变,身边接触的人也完全换了角色,老师变成老板,同学变成同事,相处之道完全不同。在这巨大的转变中,我们可能彷徨,迷茫,无法马上适应新的环境,但在同学、同事的帮助和自己摸索的情况下,我还是完成了这次实习。但我发现,以我们的经验,不学到一定的深度和广度是难以在实际工作中应付自如的。因此反映出学习的还不够,缺点疏漏。需在加以刻苦钻研及学习,不断开拓视野,增强自己的实践操作技能,我们也许看不惯企业之间残酷的竞争,无法忍受同事之间漠不关心的眼神和言语。很多时候觉得自己没

嵌入式系统学习心得

嵌入式系统学习心得 首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。 对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的modem射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15k以上。 另一类就是数字部分了,在大方向上又可分为51/arm的单片机类,dsp类,fpga类,国内fpga的工程师大多是在ic设计公司从事ip核的前端验证,这部分不搞到门级,前途不太明朗,即使做个ic前端验证工程师,也要搞上几年才能胜任。dsp硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。而arm 单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互pk,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如pxa255处理器

i2c要求速度在100kbps,如果把一个i2c外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接lcd,但为什么这种lcd就不能挂在arm的总线上,还有arm7总线上可以外接个winband的sd卡控制器,但为什么这种控制器接不到arm9或是xscale处理器上,这些都是问题。因此接口并不是一种简单的连接,要看时序,要看参数。一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5v变1.8v的dc芯片,直接更换成ldo,有时就会把cpu烧上几个。前几天还有人希望我帮忙把他们以前基于pxa255平台的手持gps设备做下程序优化,我问了一下情况,地图是存在sd卡中的,而sd卡与pxa255的mmc控制器间采用的spi接口,因此导致地图读取速度十分的慢,这种情况是设计中严重的缺陷,而不是程序的问题,因此我提了几条建议,让他们更新试下再说。因此想成为一个优秀的工程师,需要对系统整体性的把握和对已有电路的理解,换句话说,给你一套电路图你终究能看明白多少,看不明白80%以上的话,说明你离优秀的工程师还差得远哪。其次是电路的调试能力和审图能力,但最最基本的能力还是原理图设计pcb绘制,逻辑设计这块。这是指的硬件设计工程师,从上面的硬件设计工程师中还可以分出ecad工程师,就是专业的画pcb板的工程师,和emc设计工程师,帮人家解决emc的问题。硬件工程师再往上就是板级测试工程师,就是c语功底很好的硬件工程师,在电路板调试过程中

毕业实习报告10000字

毕业实习报告10000字 导读:本文毕业实习报告10000字,仅供参考,如果能帮助到您,欢迎点评和分享。 “毕业实习报告10000字”,欢迎大家阅读,仅供大家参考,希望对您有所帮助。 10000字 一、实习目的和意义 二、实习概述 2周的生产参观实习。 xx医学系统有限公司、xx集团、xxxx电厂、xx实训基地。了解这些企业的生产情况,与本专业有关的各种知识,各企业工作情况等等。第一次亲身感受了所学知识与实际的应用,压力传感器在测血压和心率等医学设备中的应用、温度传感器在消防感温感烟等器械中的应用、集散控制系统在大型消防系统中的应用、工业网络在电厂工作条件恶劣下的应用,等等。理论与实际的相结合,让我们大开眼界,也是对以前所学知识的一个初审。通过这次生产实习,进一步巩固和深化所学的理论知识,弥补以前单一理论教学的不足,为后续专业课学习和毕业设计打好基础。 三、实习内容及企业概况 301医院、北京协和医院等都在使用xx公司的心脑电产品。 CMS-50C,将其夹在手指上,通过显示设备就可以显示相关的实时数

据。这么小的产品就可以完成很多复杂的功能不禁产生了兴趣。经公司负责人介绍,这就是利用了我们学习的检测技术里面的压电传感技术,而且都利用了比较经济流行的芯片作为内部处理器。我看到了S3C2410,就是三星的ARM9芯片,是现在比较流行的芯片,这为以后学习知识能和企业要求同步指明了方向。一楼展厅还有胎心多普勒仪、便携B超、病人监护仪、CMS系列动态脑电图系统、TLC系列动态心电系统、运动负荷测试跑台等等。 6层的软件研发中心和7层的硬件研发中心。了解到他们用的软件诸如编程软件C++,用于嵌入式开发平台RedHat9 linux,以及硬件电路PCB制图的Altium Designer,都是些常用的软件,值得我们以后学习。xx的生产流程。根据市场调研来信息,研发部门开始进行设计,硬件工程师根据具体任务书的要求进行选择器件和PCB板的绘制,然后软件工程师根据电路的结构进行软件编程,实现具体要求。设计任务完成后,交付车间进行生产。xx的车间内有几台大型的PCB板贴片机,可以对元器件进行贴片焊接,不能用机器焊接的器件交由人工焊接处理,焊接好的电路板需要人工进行修剪处理,处理好好后的电路板接下来就是进行检验部门进行检验,不合格的产品退回,合格的产品进行和外包装的组装,这些都是由人手工来完成的。组装完后的产品仍然需要再次检验,不合格的产品退回,合格产品进行老化处理。公司负责人解释说,这不是因为产品老化或是坏了,而是由于各部件都是新的,需要进行48小时的运行使各部件能磨合好达到最优化。经过老化后的产品就可以包装出厂了。

嵌入式学习心得

嵌入式学习心得 如何学习嵌入式系统(基于ARM平台) 前言 网上看到众多网友都问了关于嵌入式系统方面的很多问题,很多都可在这里找到答案,希望我的这篇文章能给他们以启发。也请大家不要轻易转载。 一、嵌入式系统的概念 着重理解“嵌入”的概念 主要从三个方面上来理解。 1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC 机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目标基于ARM体系统结构下由intel进行整合后成Xscale内核的最高的处理器了。 2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。 3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的“嵌入”。 以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,历为毕竟嵌入式系统是计算机范畴下的一门综合性学科 二、嵌入式系统的分层与专业的分类。 嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。 1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。 硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、C语言。 2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows 下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运

实验三 搭建嵌入式系统开发环境

实验三搭建嵌入式系统开发环境 一、实验目的: 1.掌握嵌入式开发环境的配置; 2.掌握开发工具链的安装与配置; 3.掌握嵌入式系统内核和根文件系统的烧写的过程。 二、实验内容: 1)安装配置嵌入式开发环境; 2)安装与配置工具链; 3)内核和根文件系统的烧写 三、实验设备及工具: 硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。 软件:PC机操作系统Red Hat Enterprise Linux 4、MINICOM 、AMRLINUX开发环境。 四、实验步骤: 1.共享windows下内核文件至linux环境下,并将文件复制至个人开发目录中 2.进入目录,输入make menuconfig,对内核进行裁剪配置 3.编译内核之前输入make clean清理编译环境 4.输入make dep 编译相关依赖文件 5.输入make zImage 输出最终编译后的镜像文件 6.将镜像文件共享至windows环境下 7.在windows打开超级终端,进入vivi,将镜像文件烧录至实验箱开发板中 五、实验总结: 通过本次实验,熟悉了Linux 开发环境,学会了如何进行linux内核的烧写。在实验

过程中了解到Linux内核模块的组成结构,通过本次实验,初步了解嵌入式开发的基本过程。 实验四嵌入式驱动程序设计 一、实验目的: 1.学习在LINUX 下进行驱动设计的原理 2.掌握使用模块方式进行驱动开发调试的过程 二、实验内容: 在PC 机上编写简单的虚拟硬件驱动程序并进调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。 三、实验设备及工具: 硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。 软件:PC机操作系统Red Hat Enterprise Linux 4、MINICOM 、AMRLINUX开发环境。 四、预备知识: 1.有 C 语言基础。 2.掌握在Linux 下常用编辑器的使用。 3.掌握Makefile 的编写和使用。 4.掌握Linux 下的程序编译与交叉编译过程。 5.有驱动开发的基本知识。 五、实验步骤: 1.进入/arm2410cl/exp/drivers/01_demo,使用vi 编辑器或其他编辑器阅读理解源代码 2.使用makefile编译驱动模块与测试程序,编译器采用armv4l-unknown-linux-gcc 3.将编译后的驱动模块demo.o和测试程序test_demo挂载到实验箱上 4.插入驱动模块demo.o 执行命令insmod demo.o 5.查看驱动是否插入成功,执行命令lsmod demo.o 6.运行测试程序,查看执行结果

嵌入式系统学习心得总结

嵌入式系统学习心得总结 嵌入式系统学习心得总结 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。以下为你带来嵌入式系统学习心得总结,希望对你有所帮助! 嵌入式系统学习心得总结篇1 嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。 看到了嵌入式系统的范围,你也应该知道嵌入式系统工程师是做什么的,就是开发上面的那些电子产品的工程师。 关于如何学习嵌入式? 学习嵌入式,该学习什么基本的知识呢? 首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言,你说不掌握它可以吗?至于如何学习C语言,我想这些基础的知识每个人都有自己的方法,关键要去学习,看书也好,网上找些视频看也好。很多人会问,

C语言要学到怎么样,我觉得这没有标准的答案。我想至少你在明白了一些基础的概念后,就该写代码了,动手才是最重要的,当你动手了,遇到问题了,再反过来学习,反过来查查课本,那时的收获就不是你死看书能得到的。 其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。 还有应该学习嵌入式系统,如linux或者wince下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习MTK、塞班、Android等操作系统,Android是以后发展的趋势,现在很热门,Android也是基于linux系统封装的,所以建议先学习下linux。 还有,应该学习下单片机或者ARM或者MIPS,很多人说我没有单片机的经验,直接学ARM可以吗?我觉得那完全没有问题的,当然如果你学习过单片机,那最好不过了,以后学习ARM就更简单了。 最后如果你把以上的知识都有所了解后,就该去阅读阅读一些优秀的代码,比如结合arm芯片手册学习去学习下UBOOT的源代码,了解下最小的系统开发,那对你整个嵌入式开发的非常有帮助的,可以的话,还可以学习下linux的源代码,当然如果你直接阅读2.6的代码,我想你会很痛苦的,可以先看看linux 代码早期的版本,比如0.12 的代码等等,麻雀虽小,五脏俱全,如果你全看完了,那我想

嵌入式系统设计实习报告

嵌入式系统实习报告学院:重庆邮电大学移通学院 专业:网络工程 班级:02121202 姓名:王喜民 学号:2012214607 指导教师:罗兴宇

目录 一、实习目的 (2) 二、实习设备 (2) 三、实习内容 (2) 四、实习原理 (2) 五、实习步骤 (5) 六、实习主程序 (6) 七、实习中间过程 (7) 八、实习心得 (10)

基于S3C2410嵌入式MDK开发和EduKit-IV-ucos-II实习 一、实习目的: 1、掌握有关音频处理的基础知识; 2、通过实验了解IIS音频接口的工作原理; 3、通过实验掌握对处理器S3C2410X中IIS模块电路的控制方法; 4、通过实验掌握对常用IIS接口音频芯片的控制方法。 5、初步掌握液晶屏的使用及其设计方法。 6、掌握S3C2410X处理器的LCD控制其使用。 7、掌握通过任务调度的方法把液晶显示函数添加到UC/os-II中。 二、实习设备: 1、硬件:Embest EduKit-IV平台,ULINK2仿真器套件,PC机; 2、软件:μVision IDE for ARM集成开发环境,Windows 98/2000/NT/XP。 三、实习内容: 1、将从UART1接收到的字符串回送显示。 2、通过使用Embest Edukit-IV实验板的彩色液晶屏进行电路设计,掌握液晶屏作为人机接口界面的设计方法,并编写任务函数在uc/os-II系统中实现位图显示,在uc/os-II 中建立两个任务Task1和Task2,其中Task1顺序熄灭四个LED,延迟一会再顺序点亮四个LED,Task1和Task2在LED屏幕上循环显示两幅图片,并打印一些文字信息。 3、在实习箱上显示你的专业,姓名。 四、实习原理: 1、数字音频基础:

嵌入式系统设计实训报告

上海海洋大学 嵌入式系统设计项目实训报告 (2016- 2017第_1_学期) 专业:______计算机科学与技术_________________ 实训项目:____嵌入式应用——电子相册______ __ 实训时间:__2016_______年__12___月___26___日 实训成员:_________孙嘉晨1351127____________ _________周力1351137______________ __________________________________ __________________________________ 指导老师:________池涛_____________________ 计算机科学技术系 2015年11月制

一、实训目的 通过电子相册的制作,了解S3C2440芯片的构造,了解外围SDRAM及NANDFLASH 的存储结构。学会运用定时器中断及通过LCD显示图片,加强自身对嵌入式的理解,提升自身的实践能力。 二、实训内容 以S3C2440芯片为核心,通过外围SDRAM及NANDFLASH存储实现照片的存储,结合定时器中断,实现LCD显示图片,完成简易电子相册的设计。 三、实训设备 硬件:mini2440硬件平台 软件:bmp2h.exe软件进行图片转换 CodeWarrior for ARM Developer Suite软件 四、实训设计方案 (包括项目功能需求分析,方案设计,完成时间规划) 需求分析: 在上世纪末本世纪初,电子相册呈现迅速发展的势头,普及型数码相机的分辨率由200万象素增长到现在的800—1500万象素,价格也由300美元左右下降到现在的120美元左右。随着数码相机的日益普及,作为一种以数字照片的保存、回放和浏览为核心功能的产品——电子相册自然迎合了消费者的需求。 方案设计: 软件设计:代码包含2个模块,LCD模块包含两个文件,进行图片的显示与编辑;Timer 模块包含6个文件,其中timer.c和timer.h文件完成定时器的初始化,interrupt.h和interrupt.c 文件完成定时器中断函数的初始化,isrservice.h和isrservice.c文件完成定时器中断处理,pic.c 和pic.h等文件是由图片生产的C语言数组文件 硬件方面选择了S3C2440为核心的架构。基于ARM的微处理器具有低功耗、低成本、高性能等特点,ARM采用RISC(精简指令集计算机)架构和流水线结构,使用了大量的寄存器,具有极高的工作效率。其中,RISC架构具有如下特点:固定长度的指令格式,指令归整、简单,基本寻址方式只有2~3种,使用单周期指令,便于流水线操作。因此选择此硬件方案的优势有如下: (1)系统芯片功能强大,实现的功能多,对于新的多媒体格式支持性好,只需要安装更新的软件; (2)硬件电路简单,可采用标准电路,不需耗费过多的资源(人力,资金等); (3)可以在硬件上增加模块,留作二次开发使用,极为方便; (4)S3C2440是一个比较成熟的芯片,技术积累齐全; (5)S3C2440支持丰富的存储卡接口。 完成时间规划:第一天分析实训项目实现过程,完成软件方面内容,编写代码。 第二天实现硬件分析,完成硬件连接,对项目进行测试。 第三天完成实训内容,提交报告。 五、实训项目实现

嵌入式开发学习心得

个人学习嵌入式心得体会 就我个人而言,从最开始对嵌入式一窍不通到现在越学越感兴趣,当然相应在嵌入式方面的提高也是很明显的。学习潜入式越来越成为我学习生活的一部分,现在把我的学习过程与大家一起分享,希望那些和我一样对嵌入式想学而又迷茫,不知从哪入手的同学朋友有所帮助。 一、语言基础 嵌入式开发很大一部分靠C语言,尤其在底层驱动等用的很多,当然在应用开发还用到诸如C++等其他语言,但我想对于一个初学者有C基础就足够了,等到学到一定程度再去扩展。所以,C 基础是学嵌入式的前提。 二、单片机等知识的储备 我觉得单片机、嵌入式等这一类都有很大的相似性,知识功能不一样,但工作的原理、控制原理都和大的相似。就我个人而言,能比较快的进入嵌入式的学习与提高,很大一部分依赖于对单片机的原理有较深入的学习和理解,单片机比较简单,学习起来相对比较容易,所以我建议哪些想学潜入式的同学,可以和我一样从单片机入手,那样不仅可以理解这些微处理器、微控制器的操作与控制原理,当然还可以顺便学学汇编语言,这对后面的嵌入式学习都有很大的帮助。 三、接受培训 暑假,我在学院的组织下参加过ICC的嵌入式培训,虽然接触的都是皮毛,但是对我进入嵌入式的学习起了一个很好的引导作用。所以,如果有条件的可以去报名正规的专门的培训班,这样如果遇到问题也可以比较容易的得到老师或专业人士的指导,提高学习效率。 四、买开发板自己动手做 个人觉得这是最重要的一种做法。这东西没自己亲手做,程序没亲手写,没有进行调试等,都是很难学到东西,因为很多东西感觉看的都懂,其实真正做起来就什么都不会了。因此买块板来自己做,这样才能真正将所学的应用到实际中去。而且这样做映像很深,死记硬背原理及规则不但不可行还会拖垮你的学习兴趣,自然学不下。 总之,我觉得,基础知识很重要,但是动手做更重要!我能说的就这些了,能力有限,不好的地方请指教!

嵌入式系统实验报告

实验报告 课程名称:嵌入式系统 学院:信息工程 专业:电子信息工程 班级: 学生姓名: 学号: 指导教师: 开课时间:学年第一学期

实验名称:IO接口(跑马灯) 实验时间:11.16 实验成绩: 一、实验目的 1.掌握 STM32F4 基本IO口的使用。 2.使用STM32F4 IO口的推挽输出功能,利用GPIO_Set函数来设置完成对 IO 口的配置。 3.控制STM32F4的IO口输出,实现控制ALIENTEK 探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。 二、实验原理 本次实验的关键在于如何控制STM32F4的IO口输出。IO主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH和AFRL等8个寄存器的控制,并且本次实验主要用到IO口的推挽输出功能,利用GPIO_Set函数来设置,即可完成对IO口的配置。所以可以通过了开发板上的两个LED灯来实现一个类似跑马灯的效果。 三、实验资源 实验器材: 探索者STM32F4开发板 硬件资源: 1.DS0(连接在PF9) 2.DS1(连接在PF10) 四、实验内容及步骤 1.硬件设计 2.软件设计 (1)新建TEST工程,在该工程文件夹下面新建一个 HARDWARE文件夹,用来存储以后与硬件相关的代码。然后在 HARDWARE 文件夹下新建一个LED文件夹,用来存放与LED相关的代码。 (2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在led.c中输入相应的代码。

(3)采用 GPIO_Set 函数实现IO配置。LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版) 的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。 (4)新建一个led.h文件,保存在 LED 文件夹下,在led.h中输入相应的代码。 3.下载验证 使用 flymcu 下载(也可以通过JLINK等仿真器下载),如图 1.2所示: 图1.2 运行结果如图1.3所示:

嵌入式实训心得体会_嵌入式实习心得与感悟.docx

篇一:嵌入式实训心得体会 8月我参加了学校安排的课题实训,基地在北京,学院安排我们集体坐火车一同前去,浩浩荡荡的队伍开始出发了。刚来北京的时候,映入眼绵的都是高楼大厦,一直想到的地方终于到了,好多以前的同学听说我要去北京实训都很羡慕不已,我自己也隐隐感到自豪。 我参加的课题实训是嵌入式方向的,开课的内容主要是嵌入式开发方面的,C语言,数据结构,LINUX基本操作,网络编程,操作系统和汇编语言,这些都是嵌入式不可缺少的。每个专业技能都决定了你以后找工过。我们班分了很多小组,每组都有小组长,小组长直接对我们负责。教课老师很认真,都是从很基础的开始讲;同学们听课也很认真,由于代码操作比较多,键盘的声音源源不断的在响。好久没有感觉到这种浓重的学习气氛了,而在这紧张而充实的学习氛围中我获益匪浅,感受颇多。 授课过程中老师们也传授了一些找工作方面的经验,比如简介的样式和写法,面试中的一些着装,礼貌用语和技巧,对此基地的老师还精心的为我们安排了一场模拟面试,在其中我们学到了很多有关于面试方面的经验。 通过这几个月的实训我学到了很多,同时也让我们意识到我们要学的更多。从程序的设计到编写、画图、调试、修改、完善、到最后的实训报告,每个人都付出了时间和精力去做好自己的任务帮助队友,所以团队的合作和队友之间的相互协助非常重要。通过实训让我们更深一步的对自己的专业,对自己的能力,对自己所学的有正确的认识,并且能在以后的学习工作中不断提高和完善自己。特别是讲C语言和进程通信中老师给了我们每个小组的几个小项目,让我学到了更多项目经验,这在学校之前是没有的。这次实训也碰到了些问题,比如项目文档的写法,代码的规范,流程图的画法,这些都有讲究,在老师和同学的帮助下,我不断的提高了在这些方面的学习。 生活上班主任郭老师和王老师对我们关怀备至,让我们没有感觉在外面的那种不适感,同学们也互帮互助,所以生活上大致没什么问题,这让我们更好的去学专业。很感谢学校有这样的实训安排。 总的来说,这次实训还是比较成功的,无论是个人动手能力还是团

嵌入式实习报告总结

嵌入式实习报告总结 随着信息化技术的发展和数字化产品的普及,以计算机技 术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的热点,通信、计算机、消费电子技术(3C)合一的趋势正在逐步形成,无所不在的网络和无所不在的计算( , )正在将人类带入一个崭新的信息社会。 二、实习目的 学习和了解了嵌入式在生活中的重要作用和发展过程,熟练掌握硬件体系结构,熟悉下的嵌入式编程流程,积累自己的软件编写经验,能够参与并实现一个真实和完整的嵌入式项目,为今后的学习和将从事的技术工作打下坚实的基础 三、实习任务 第一阶段操作和编程基础 主要介绍的基本命令和基础编程知识,包括 的文件操作和目录操作命令,编辑器,编译器,调试器和项目管理工具等知识。 第二阶段嵌入式C语言编程基础 主要介绍在嵌入式开发编程中C语言的重要概念和编程技巧中的重点难点,以复习串讲和实例分析的形式,重点介绍包括函数与程序结构,指针、数组和链表,库函数的使用等知识。

第三阶段上C强化编程训练 主要包括整数算法训练,递归和栈编程训练,位操作训练,指针训练,字符串训练和常用C库函数编程接口实践,强化学员对下基本编程开发的理解和编码调试的能力。 第四阶段环境高级编程及项目开发编程实践 主要包括系统编程(信号/系统调用/管道消息队列/共享内存等),文件编程(文件描述符/文件读写接口/原子操作/阻塞与非阻塞等,多任务和多线程编程(进程标识/ 用户标识与多线程概念/线程同步等),网络编程(网络基本概念/套接口编程/网络字节次序结构编程);掌握下编程的开发流程,熟悉网络编程的调用接口函数和相关数据结构,使学员初步具备在上进行系统编程开发的能力。同时综合之前所学内容和编程技术,以小组为单位进行一个团队合作项目的开发,考核内容包括文件编程,多线程编程,网络编程和项目文档编写。 第五阶段嵌入式处理器体系结构及编程实践 主要介绍体系结构及其基本编程知识,包括指令分类,寻址方式、指令集、存储系统、异常中断处理、汇编语言以及C\和汇编语言的混合编程等知识。同时结合嵌入式开发板硬件设计原理和基本硬件设计流程,分析各种外设的工作原理和驱动机制,并自己动手实践完成一个开发板上的编程大作业。

嵌入式系统实训报告

第一天 一、实训任务: 1.熟悉虚拟机的环境,了解了虚拟机的基础知识 2.安装与配置 VMware Workstation虚拟机 3.进而熟悉交叉编译环境,完成交叉编译环境的安装和配置 4.测试端口的连通性 二、原理 交叉编译,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。一般情况下,主机和目标机是同一类型的计算机,这就是正常的编译。所谓交叉编译就是在主机上为目标机编译,比如在 PC 上编译,然后在手机上运行,这种编译就叫交叉编译。 交叉编译需要交叉编译器,不同的目标机(主要是看芯片类型)需要不同的交叉编译器。我们所用的交叉编译器就是 arm-linux-gcc 系列。构建一个交叉编译器(toolchain),说简单也简单,说复杂也复杂。原理上很简单,实际情况常常比较复杂,原因是编译器一直处于开发状态,你要了解某个版本的稳定性,要去找patch。网上已经有不少已经构建好了的交叉编译器(toolchain),除非你想了解如何构建交叉编译器,否则直接下载一个来用是比较明智的做法。 三、截图及说明 1、测试连通性:COM3 显示了相关信息,表示虚拟机和开发机连通了 2、可执行以下命令,安装交叉编译环境: #mkdir -p /A8RP/tools /A8RP/toolchain

#cd /media/cdrom/linux/toolchain #cp –arf arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bz2 arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 /A8RP/tools #cd /A8RP/toolchain #tar -jxvf arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bz2 #tar –jxvf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 # cp media/cdrom/linux/tools/mkimage /A8RP/tools # cp /media/cdrom/linux/tools/signGP /A8RP/tools #cp /media/cdrom/linux/tools/mkfs.ubifs /A8RP/tools #cp /media/cdrom/linux/tools/ubinize /A8RP/tools #cp /media/cdrom/linux/tools/ubinize.cfg /A8RP/tools 添加环境变量 #export PATH=/A8RP/toolchain/arm-2007q3/bin:/A8RP/toolchain/arm-2009q1/bin:/A8RP/tools:$PATH 这样我们就完成了交叉编译环境及编译工具的安装 第二天 一、实训任务: 1.交叉编译生成用于SD 卡启动的x-loader 映像文件MLO 2.U-Boot的编译 3.kernel的编译 4.格式化SD 卡,并设置活动分区,将编译好的系统镜像以及文件系统拷贝至SD卡 二、原理 OURS-A8RP 支持MMC/SD 启动或NAND 启动,不同的启动方式烧写的x-loader 的映像文件是不一样的,对应的映射生成方法也不同。 x-loader是一级引导程序,主要完成加载uboot之前的板载初始化, fat文件驱动,以便于从sd卡fat32分区读取uboot等文件,系统上电后由CPU内部ROM自动拷贝到内部RAM并执行。主要作用为初始化CPU,拷贝u-boot到内存中,然后把控制权交给u-boot。 u-boot是二级引导程序,主要用于和用户进行交互,提供映像更新、引导内核等功能。kernel是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

相关主题
文本预览
相关文档 最新文档