實習報告嵌入式_第1頁
實習報告嵌入式_第2頁
實習報告嵌入式_第3頁
實習報告嵌入式_第4頁
實習報告嵌入式_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、成績 學 生 實 習 報 告實 習 名 稱 院 部 名 稱 專 業(yè) 班 級 學 生 姓 名 學 號 實 習 地 點 指 導 教 師 實習起止時間:2011年 7月 4日至2011年 7月29日 實習報告前言中軟國際有限公司(中軟國際)是根植中國、服務全球的IT服務提供商,致力于為遍及全球的客戶提供全面的服務,打造中國智造綜合平臺。中軟國際總部位于北京,在美國、日本、香港以及中國大陸25個主要城市設有35家分子公司或辦事處,員工突破10000人。年營業(yè)額逾10億元人民幣(2007財年)。2007年和2008年中軟國際對歐美軟件外包業(yè)務位列全國第一(IDC統(tǒng)計數(shù)據(jù))。集團業(yè)務涵蓋以咨詢?yōu)轵寗拥慕鉀Q

2、方案、以專業(yè)化為準則的ITO和BPO外包服務和以人才供鏈為導向的培訓服務,包括咨詢服務、軟件開發(fā)、系統(tǒng)集成、軟件測試、軟件本地化、企業(yè)應用平臺建設與維護、IT服務外包以及業(yè)務流程外包。憑借集團的全球分布,中軟國際能夠充分運用全球資源和自身領先的技術實力幫助客戶應對不斷快速變化的商業(yè)挑戰(zhàn)。憑借中軟國際在中國市場所擁有的獨特領導地位和全球提交能力,除能為客戶提供“傳統(tǒng)”外包服務及信息解決方案外,還能以其國內、海外市場的互動能力幫助客戶在中國或海外開拓新的業(yè)務機會。一、 實習目的1、掌握嵌入式微處理器的結構與原理2、熟悉并掌握嵌入式Linux操作系統(tǒng)的操作3、熟悉嵌入式軟件開發(fā)流程并至少做一個嵌入式

3、軟件項目。二、 實習時間2010年07月04號07月29號,具體安排如下表:第一周1、嵌入式技術發(fā)展現(xiàn)在及未來。2、實習任務布置。3、實習嵌入式硬件平臺環(huán)境熟悉。4、C語言基礎強化。第二周1、 Linux程序設計。2、 多進程和多線程模式下的程序設計。3、 系統(tǒng)資源控制程序設計。第三周1、 ARM的體系結構與匯編語言。2、 ARM的GNU交叉編譯工具和ADS應用與調試。3、 LCD驅動原理的講解。4、 PWM驅動原理的講解。第四周1、嵌入式Linux下驅動開發(fā)。 2、TFT LCD驅動開發(fā)。動手實驗:驅動程序的編寫與調試。三、實習地點 江蘇省無錫市無錫新區(qū)新安鎮(zhèn)震澤路5號江蘇軟件外包產(chǎn)業(yè)園處子

4、座B座四、實習單位和部門 實習單位:無錫中軟國際信息技術培訓有限公司實習部門:無錫中軟國際信息技術培訓有限公司五、 實習內容來到中軟國際,主要實習方向為嵌入式開發(fā),細化為LCD驅動開發(fā)。所謂嵌入式系統(tǒng)是一臺特殊用途的計算機,該計算機由它控制的設備完全封裝。驅動這些系統(tǒng)的軟件稱為嵌入式軟件。通用個人計算機可以執(zhí)行多個任務,接受新的任務,并可由用戶編程;而嵌入式系統(tǒng)有特定的需求,只能執(zhí)行有限數(shù)量的預定義任務,嵌入式系統(tǒng)的優(yōu)勢在于,它們可以進行優(yōu)化來進一步改善性能,并可以減小規(guī)模和成本。由于存在這些優(yōu)勢,嵌入式系統(tǒng)的使用越來越普及,因而使日常生活的各個方面(包括通訊、娛樂和工業(yè)控制系統(tǒng))得到充分的改

5、善。為了成功的進行嵌入式開發(fā),我們做了如下準備:C語言的強化,linux系統(tǒng)下的操作。linux常用命令:cd【目錄】: 切換到指定的目錄,可以是相對路徑或者是絕對路徑。絕對路徑是以“ / ”開頭,從目錄的最頂層開始列出目錄路徑。相對路徑不用“ / ”開頭,只列出當前工作目錄以下的目錄路徑。ls【選項】【文件目錄列表】:顯示指定工作目錄中所包含的內容的指令是ls,要說明的是ls命令列出文件的名字,而不是文件的內容。mkdir【選項】 路徑: “路徑”可以是一系列,此時若路徑中的目錄不存在,則系統(tǒng)自動創(chuàng)建那些不存在的目錄。Pwd:顯示的是當前工作目錄的絕對路徑。cp【選項】源文件 目標文件或目標

6、目錄mv【選項】 文件列表 目錄rm【選項】 文件列表:可從文件系統(tǒng)中刪除文件及整個目錄。cat【選項】文件列表:用來將幾個文件的內容相連接,并顯示到終端上。Clear:清除屏幕上的信息。 kill進程號:刪除執(zhí)行中的進程。tar 選項 文件或者目錄:文件打包解包。ifconfig網(wǎng)絡接口【選項】【地址】:配置網(wǎng)絡接口的地址、網(wǎng)絡掩碼等。gcc選項要編譯的文件 選項 目標文件:編譯可執(zhí)行文件。(2)在VMware中安裝Linux,New>Virtual Machine->選擇“custom”下一步->下一步,出現(xiàn)的界面中選擇安裝路徑,必須注意待安裝盤有足夠的空間。因為后面安裝

7、的RedHat系統(tǒng)是桌面版本,它對內存還是有一定的要求,在機器內存較大的情況下,盡可能給RedHat多分配一些內存,此處分配的內存是256MB。下面可以選擇默認選擇,最后單擊”Close”,此時虛擬機已經(jīng)建立起來了。接下來光盤配置使用我們下載的RedHat是iso文件,單擊OK按鈕。下面就可以啟動安裝RedHat系統(tǒng)了。首先進行語言的選擇,選擇中文,并單擊前進按鈕。接下來選擇時區(qū),此處選擇上海時區(qū),單擊前進按鈕。在進行用戶帳戶和主機命名設置時,我用“zxy”作為登錄名且同時作為這臺計算機的名稱。安裝向導的最后一步將用戶安裝過程中所做過的配置信息再次反饋給用戶,確認信息。最后點擊“安裝”即可。準

8、備工作做好之后,開始進行嵌入式開發(fā),以下是開發(fā)過程中所做的練習。作業(yè)一(大小端)#include<stdio.h>typedef union tag_MYUNIONchar ch4;int value;MYUNION;int main()MYUNION myunion;myunion.value=0x12345678;if(myunion.ch0=0x12)printf("big endiann");else myunion.ch0=0x78;printf("little endiann");return 0;作業(yè)二(多線程)#include

9、 <sys/types.h>#include <unistd.h>#include <stdio.h>int main()pid_t pid;char *message;int n;printf("fork program startingn");pid = fork();switch(pid) case -1:perror("fork failed");exit(1);case 0:message="child:"n =100;break;default:sleep(1);message=&quo

10、t;parent:"n =100;break;for(n=1;n<100;n+=2) printf("%s",message);printf("%d,%dn",n,n+1);sleep(1);exit(0);作業(yè)三(大小字母輸出及ASC碼)#include <sys/types.h>#include <unistd.h>#include <stdio.h>int main()pid_t pid;char *message;int n;printf("fork program startingn

11、");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,%dn",n,n+1);sleep(1);exit(0);作業(yè)四(字母排序)#in

12、clude<stdio.h>#include<string.h>int main()int j=65;int i;char a27;char *b;char readbuf27=0;char readbuf127=0;for(i=0;i<26;i+) ai=j;j+;ai='0'FILE *fp;FILE *fp1;FILE *fp2;fp=fopen("zmpx.txt","w");char *buf=a;if(fp=NULL) printf("file open failed.n");

13、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.

14、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);readbuf1i=*b;fp2=fopen("daoxu.txt","w");fwrite(readbuf1,strlen(buf),1,fp2);fclose(fp2);當然,嵌入式開發(fā)僅僅學習C語言

15、是遠遠不夠的。于是在我們已有的單片機基礎之上,又深入學習了匯編語言。從而,嵌入式開發(fā)的準備工作,我們已基本完成。在接下來的兩周里,我們開始接觸TQ2440開發(fā)板。剛接觸開發(fā)板,我們自己對照使用手冊開始接線。然后安裝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的字樣同時可以

16、在“設備管理器”看到剛剛安裝的USB驅動此時就可以使用USB下載u-boot、操作系統(tǒng)和文件系統(tǒng)了。4.安裝GIVEIO驅動,Step 1:首先打開PC的“控制面板”界面,雙擊“添加硬件”圖標,進入到添加硬件的界面。Step 2:然后點擊“下一步”繼續(xù)。系統(tǒng)會自動搜索硬件的。Step 3:過一會會完成搜索,進入到下面第二圖的界面,選擇“是,我已 經(jīng)連接了此硬件”。Step 4:然后點擊“下一步”繼續(xù)出現(xiàn)“安裝向導”,這里選擇“安裝我手動從列表選擇的硬件(高級)”選項。Step 5:然后點擊“下一步”繼續(xù)。在硬件列表中找到“端口(COM和LPT)”選項,然后點擊“下一步”繼續(xù)。Step 6:點擊

17、“從磁盤安裝”選項后繼續(xù)。Step 7:從“磁盤安裝”界面中選擇“瀏覽”選項。Step 8:然后定位到剛才的GIVEIO目錄下面,找到“GIVEIO.inf”文件,點擊“打開”繼續(xù)。Step 9:然后回到“從磁盤安裝”界面,點擊“確定”繼續(xù)回到驅動設備安裝的界面,選擇“giveio”設備后,點擊“下一步”繼續(xù)出現(xiàn)“向導準備安裝您的硬件”界面中:。Step 10:點擊“下一步”繼續(xù)然后出現(xiàn)驅動未經(jīng)過微軟認證的界面,點擊“仍然繼續(xù)”選項繼續(xù)Step 11:點擊“完成”選項后就完成驅動安裝了。Step 12:在“設備管理器”中您可以看到新安裝的驅動。5.TFTP代理軟件設置至此,軟件安裝,設置基本完

18、成。接下來就是燒寫驅動代碼和圖片代碼。由于代碼過于龐大,僅截圖一段,僅供參考。/*在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 = bmpp+1 | (bmpp<<8) ;if ( ( (x0+x) < SCR_XSIZE_TFT) && ( (y0+y) < SCR_Y

19、SIZE_TFT) )LCD_BUFFERy0+yx0+x = c ;p = p + 2 ;/*/void Lcd_TFT_Init(void)Lcd_Init();Lcd_PowerEnable(0, 1);Lcd_EnvidOnOff(1);/turn on vedioLcd_ClearScr( (0x00<<11) | (0x00<<5) | (0x00) ); #define LCD_BLANK12#define C_UP( LCD_XSIZE_TFT - LCD_BLANK*2 )#define C_RIGHT( LCD_XSIZE_TFT - LCD_BLA

20、NK*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 colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*0), (C_RIGHT), (LCD_BLANK*2 + V_BL

21、ACK*1),0x001f);/fill a Rectangle with some colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*1), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*2),0x07e0);/fill a Rectangle with some colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*2), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*3),0xf800);/

22、fill a Rectangle with some colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*3), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*4),0xffe0);/fill a Rectangle with some colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*4), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*5),0xf81f);/fill a Rectangle

23、 with some colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*5), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*6),0x07ff);/fill a Rectangle with some colorGlib_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)

24、, (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 scr

25、eenUart_Printf( "nDisplay Black! Press any key to continue!n" );Uart_Getch() ;/wait uart inputLcd_ClearScr( (0x1f<<11) | (0x3f<<5) | (0x1f) ) ;/clear screenUart_Printf( "Display White! Press any key to continue!n" );Uart_Getch() ;/wait uart inputLcd_ClearScr( (0x00<

26、;<11) | (0x00<<5) | (0x1f) ) ;/clear screenUart_Printf( "Display Blue! Press any key to continue!n" );Uart_Getch() ;/wait uart inputLcd_ClearScr( (0x00<<11) | (0x3f<<5) | (0x00) ) ;/clear screenUart_Printf( "Display Green! Press any key to continue!n" );Uart_

27、Getch() ;/wait uart inputLcd_ClearScr( (0x1f<<11) | (0x00<<5) | (0x00) ) ;/clear screenUart_Printf( "Display Red! Press any key to continue!n" );Uart_Getch() ;/wait uart input/*Lcd_ClearScr( (0x00<<11) | (0x3f<<5) | (0x1f) ) ;/clear screenUart_Printf( "LCD clea

28、r screen is finished! press any key to continue!n" );Uart_Getch() ;/wait uart inputLcd_ClearScr( (0x1f<<11) | (0x00<<5) | (0x1f) ) ;/clear screenUart_Printf( "LCD clear screen is finished! press any key to continue!n" );Uart_Getch() ;/wait uart inputLcd_ClearScr( (0x1f<

29、<11) | (0x3f<<5) | (0x00) ) ;/clear screenUart_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_BLANK12#define C_UP( LCD_XSIZE_TFT - LCD_BLANK*2 )#define C_RIGHT(

30、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 colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*0), (C_RIGH

31、T), (LCD_BLANK*2 + V_BLACK*1),0x001f);/fill a Rectangle with some colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*1), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*2),0x07e0);/fill a Rectangle with some colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*2), (C_RIGHT), (LCD_BLANK*2

32、 + V_BLACK*3),0xf800);/fill a Rectangle with some colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*3), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*4),0xffe0);/fill a Rectangle with some colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*4), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*5),0x

33、f81f);/fill a Rectangle with some colorGlib_FilledRectangle( (LCD_BLANK*2), (LCD_BLANK*2 + V_BLACK*5), (C_RIGHT), (LCD_BLANK*2 + V_BLACK*6),0x07ff);/fill a Rectangle with some colorGlib_Line( LCD_BLANK,LCD_BLANK, (LCD_XSIZE_TFT-LCD_BLANK), (LCD_YSIZE_TFT-LCD_BLANK), 0x0000 ) ;Glib_Line( LCD_BLANK,(L

34、CD_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 NextPaint_Bm

35、p(0, 0, 480, 272, TQ_LOGO_480272);#elif(LCD_Type = VGA)Uart_Printf( "Press any key to continue!n" );Uart_Getch() ;/Any Key To NextPaint_Bmp(0, 0, 640, 480, TQ_LOGO_640480);#endifUart_Printf("LCD Test Complete!n");Uart_Printf("Press any key to quit!n");Uart_Getch();/*插入組

36、號“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.保存,編譯,測試,運行成功。至此項目開發(fā)內容基本完成,接下來是完成項目的文檔,包括:項目計劃概要設計說明需求規(guī)格說明詳細設計說明測試問題跟蹤在項目驗收過后,一個月的實習內容,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論