久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

8_嵌入式Linux系統QT應用程序解析

時間:2019-05-15 00:18:04下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《8_嵌入式Linux系統QT應用程序解析》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《8_嵌入式Linux系統QT應用程序解析》。

第一篇:8_嵌入式Linux系統QT應用程序解析

實驗現象 點擊桌面應用程 序圖標可打開用 戶應用程序; 點擊OK 鍵后,文 本框顯示清除。嵌入式Linux系統QT 應用程序

本章小結 Qt/Embedded 開發模型; Qt/Embedded 信號與槽機制; Qt 應用程序的開發過程及移植方法。嵌入式Linux系統QT 應用程序

習題

1、簡述信號與插槽機制。

2、簡述Qt 應用程序的建立及移植過程。嵌入式Linux系統QT 應用程序

第二篇:嵌入式linu學習心得

嵌入式Linux學習心得

1、Linux命令

ls:查看目錄-l以列表方式查看;ls –l 與ll的功能一樣 pwd: 查看當前的目錄

cd:改變當前操作目錄cd /直接跳到根目錄 cd..回到上一級目錄 cat: 打印顯示當前文件的內容信息

mkdir:創建目錄

fdisk: 查看硬盤分區信息,-l以列表方式查看

->代表是鏈接文件,類似window下的快捷方式。

cp: 復制命令,例子cp 文件名 /home/dir/

mv: 移動或改名,如mv sonf.confsonf.txt(改名)移動:mv sonf.conf / rm:刪除命令,如rm –f test.c;如刪除目錄rm –fr d

man:查看某個命令的幫助,man 命令

2、各系統目錄的功能

drw—r—w--:d代表是目錄,drw代表當前用戶的權限,r代表組用戶的權限,w代表其它用戶的權限。x代表有執行權限。

/boot/gruff.conf: 啟動引導程序

/dev:brw—rw--:b代表是塊設備。Linux設備有三種,塊設備(b開頭)、字符設備(c開頭)、網絡設備。had代表第一個硬盤,hdb代表第二個硬盤。Hdb2代表第二塊硬盤的第二個分區。3,67代表主設備為3,從設備為67./etc:存放的是系統的配置文件。Inittab文件存放不同啟動方式下必須啟動的進程。Inittab文件中有6個啟動level,wait中對應著6個level的目錄,respawn代表當一個進程被意外終止了,但會自動啟動的進程,如守護進程。rc.d目錄中存放了一個rc.sysinit文件,里面存放系統初始化配置信息。/etc還有一個vsftpd里面存放tcp、ftp的配置。

/home : 用戶目錄,存放用戶的文件,/lib:存放庫文件,后綴為so的文件代表動態鏈接庫。

/lost+found:系統意外終止,存放一些可以找回的文件。

/mnt:掛載外部設備,如掛載光驅:mount –t /dev/cdrom/mnt/cdrom,如

果在雙系統中,要查看windows中D盤的文件,首先應該將D盤的文件映射過來,mount –t /dev/hda2/mnt/windows/d

/opt:用戶安裝的應用程序

/proc:是系統運行的映射,比較重要。里面的文件數字代表進程號。每個進程號目錄下包含進程的基本信息。還有其他信息,如cpuinfo等,內核支持的文件系統filesystem等。系統支持的中斷interrupts,iomen代表內存分配情況。ioport存放IO端口號。還有分區信息,modole信息,狀態信息,版本信息

對于Linux的設備驅動程序,有兩種加載模式,一種是直接加載進linux內核,一種是以模塊的方式加載到內核。

/sbin: 系統管理的一些工具。如poweroff關機工具。

/usr: 安裝系統時很多文件放在此目錄下面,包含一些更新等,include包含的頭文件,lib 是Linux的庫文件,src包含Linux2.4的內核源碼

/var:存放是臨時變量

3、

第三篇:嵌入式系統實驗報告

廣西工學院鹿山學院

實 驗 報 告

課程名稱: 嵌入式系統

指導教師: 劉瑞琪 班 級: 自動化101 姓 名: 楊杰 學 號: 20102787 成績評定: 指導教師簽字:

2013年5月25日

實驗一

簡單的程序

一 實驗目的:、動手實踐一個簡單的字符型設備驅動程序。、學習Linux 驅動程序構架。、學習在應用程序中調用驅動。

二 實驗內容:

編寫簡單的字符型設備驅動程序。編寫相應的應用程序。

三 實驗設備:、一套S3C2410RP 嵌入式實驗箱。、安裝Redhat9的宿主PC機,并且配置好 ARM Linux 的開發環境。

四 實驗步驟

實驗二 CPU GPIO 驅動程序及測試程序

一、實驗目的:

編寫第一個針對實際硬件的驅動程序,進一步了解驅動程序構架。

二、實驗內容:、編寫S3C2410 GPIO驅動程序。、編寫S3C2410 GPIO應用程序。、在 LINUX系統中插入自己的驅動程序,調用它。實現用 CPU GPIO 控制外部LED,利用S3C2410 核心板上的 LED 驗證我們的工作。

三、實驗設備、一套S3C2410RP 嵌入式實驗箱。、安裝Redhat9的宿主PC機,并且配置好 ARM Linux 的開發環境。

四、實驗步驟

1、復制Experiment_KeyHello_driverapl_test文件下的simple_test_driver.c文件到Experiment_KeyGPIO文件夾下,將文件名更改為test.c。

2、打開test.c,在else語句后更改函數語句如下:

3、復制Experiment_KeyADapl_test文件夾下的Makefile到Experiment_KeyGPIO文件夾下,打開并將中的ADC刪除。

4、打開Experiment_KeyGPIOdriver文件下的gpio_led.c文件。

5、在ssize_t SIMPLE_GPIO_LED_ioctl函數下添加如下語句:

if(cmd==0)GPBDAT &= ~(0xf<<5);

if(cmd==1)GPBDAT |=(0xf<<5);如下圖所示:

6、在int __init HW_GPIO_LED_CTL_init函數下屏蔽for循環,如下圖所示:

保存并關閉。

7、打開終端,并編譯test.c文件和gpio_led.c文件。

8、重新打開一個終端,并按步驟輸入如下語句:

9、依次輸入如下語句:

1、cd..2、ls

3、mknod /dev/hello_ctl c 97 1

4、./test

實驗三 中斷實驗及LED顯示

一、實驗目的:

學習Linux 系統是如何處理中斷。

二、實驗內容:

編寫獲取和處理外中斷的驅動程序。

三、實驗設備:、一套S3C2410RP 嵌入式實驗箱。、安裝Redhat9的宿主PC機,并且配置好 ARM Linux 的開發環境。

四、實驗步驟

1、打開Experiment_KeyGPIOdriver文件下的gpio_led.c文件。

2、在ssize_t SIMPLE_GPIO_LED_ioctl函數下添加如下語句:

if(cmd==0)GPBDAT &= ~(0xf<<5);

if(cmd==1)GPBDAT |=(0xf<<5);如下圖所示:

3、在int __init HW_GPIO_LED_CTL_init函數下屏蔽for循環,如下圖所示:

保存并關閉。

4、打開Experiment_KeyInterruptdriver下的Interrupt.c文件,并在其interrupt函數下添加for語句,如下圖所示:

5、打開終端,并編譯Interrupt.c文件和gpio_led.c文件。

6、重新打開一個終端,并按步驟輸入如下語句:

7、依次輸入如下語句:

1、cd /mnt/2410RP_linux/Experiment_Key/Interrupt/driver

2、ls

3、insmod Interrupt.o

實驗四 數碼管顯示實驗

一、實驗目的:

學習串并轉換的相關知識,并編寫驅動程序。

二、實驗內容:

編寫針對zlg7289A 的驅動程序。

三、實驗設備:、一套S3C2410RP 嵌入式實驗箱。、安裝Redhat9的宿主PC機,并且配置好 ARM Linux 的開發環境。

四、實驗步驟

1、打開Experiment_KeySpi_leddriver文件夾下的spi_led.c

2、并在spi_ledInit函數下添加如下語句:

保存并關閉。

3、打開終端,并編譯spi_led文件。

4、重新打開一個終端,并輸入如下語句:

實驗五

AD 驅動實驗

一 實驗目的:、了解模數轉換的基本原理;、掌握模數轉換的編程方法。

二 實驗內容:、編程對模擬量輸入進行采集和轉換,并將結果顯示在超級終端上。、通過改變模擬量輸入,觀察顯示結果。

三 實驗設備:、一套S3C2410RP 嵌入式實驗箱。、安裝Redhat9的宿主PC機,并且配置好 ARM Linux 的開發環境。

四 實驗步驟

1、在spi_led..c中的simpled ioctl中加入以下程序

2、在testADC中復制以下程序并修改如下

3、掛載程序

cd /mnt/2410RP_linux/Experiment_Key/spi_led/driver

ls insmod spi_led.o

cd /mnt/2410RP_linux/Experiment_Key/ad/driver

insmod adc.o cd /mnt/2410RP_linux/Experiment_Key/ad/apl_test

ls

mknod /dev/spi c 104 1

ls

./testADC

第四篇:嵌入式系統學習心得

篇一:嵌入式心得體會

這學期才接觸嵌入式系統感覺還稱不上入門,我通過學習知道了嵌入式的發展前景很大,各個領域都用到了嵌入式,學好嵌入式不愁沒飯吃。

廣義上講,凡是帶有微處理器的專用軟硬件系統都是嵌入式系統。如各類單片機和dsp系統。從狹義上講,那些使用嵌入式微處理器構成獨立系統,具有自己操作系統,具有特定功能,用于特定場合的專用軟硬件系統稱為嵌入式系統。嵌入式系統由嵌入式硬件與嵌入式軟件組成;嵌入式硬件以芯片、模板、組件、控制器形式埋藏于設備內部。

理解“嵌入”的概念 主要從三個方面上來理解。

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中就實現了一個真正的“嵌入”。

嵌入式系統分為4層,硬件層、驅動層、操作系統層和應用層

1、硬件層,是整個嵌入式系統的根本,如果現在單片機及接口這塊很熟悉,并且能用c和匯編語言來編程的話,從嵌入式系統的硬件層走起來相對容易,硬件層也是驅動層的基礎,一個優秀的驅動工程師是要能夠看懂硬件的電路圖和自行完成cpld的邏輯設計的,同時還要對操作系統內核及其調度性相當的熟悉的。但硬件平臺是基礎,增值還要靠軟件。硬件層比較適合于,電子、通信、自動化、機電一體、信息工程類專業的人來搞,需要掌握的專業基礎知識有,單片機原理及接口技術、微機原理及接口技術、c語言。

2、驅動層,這部分比較難,驅動工程師不僅要能看懂電路圖還要能對操作系統內核十分的精通,以便其所寫的驅動程序在系統調用時,不會獨占操作系統時間片,而導至其它任務不能動行,不懂操作系統內核架構和實時調度性,沒有良好的驅動編寫風格,按大多數書上所說添加的驅動的方式,很多人都能做到,但可能連個初級的驅動工程師的水平都達不到,這樣所寫的驅動在應用調用時就如同windows下我們打開一個程序運行后,再打開一個程序時,要不就是中斷以前的程序,要不就是等上一會才能運行后來打開的程序。想做個好的驅動人員沒有三、四年功底,操作系統內核不研究上幾編,不是太容易成功的,但其工資在嵌入式系統四層中可是最高的。

驅動層比較適合于電子、通信、自動化、機電一體、信息工程類專業尤其是計算機偏體系結構類專業的人來搞,除硬件層所具備的基礎學科外,還要對數據結構與算法、操作系統原理、編譯原理都要十分精通了解。

3、操作系統層,對于操作系統層目前可能只能說是簡單的移植,而很少有人來自已寫操

作系統,或者寫出缺胳膊少腿的操作系統來,這部分工作大都由驅動工程師來完成。操作系統是負責系統任務的調試、磁盤和文件的管理,而嵌入式系統的實時性十分重要。據說,xp操作系統是微軟投入300人用兩年時間才搞定的,總時工時是600人年,中科院軟件所自己的女媧hopen操作系統估計也得花遇幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。

4、應用層,相對來講較為容易的,如果會在windows下如何進行編程接口函數調用,到操作系統下只是編譯和開發環境有相應的變化而已。如果涉及java方面的編程也是如此的。嵌入式系統中涉及算法的由專業算法的人來處理的,不必歸結到嵌入式系統范疇內。但如果涉及嵌入式系統下面嵌入式數據庫、基于嵌入式系統的網絡編程和基于某此應用層面的協議應用開發(比如基于sip、h.323、astrisk)方面又較為復雜,并且有難度了。

通過網上查詢我發現目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟件(例如操作系統級、驅動程序級軟件),對軟件專業水平要求較高(嵌入式系統對軟件設計的時間和空間效率要求較高),而且必須懂得硬件的工作原理,所以非專業it人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬件技術出現時間不長或正在出現(如arm處理器、嵌入式操作系統等),掌握這些新技術的人當然很少。嵌入式人才稀缺,身價自然就高,越有經驗價格就越高。其實嵌入式人才稀少,根本原因可能是大多數人無條件接觸,這需要相應的嵌入式開發板和軟件,另外需要有經驗的人進行指導開發流程。我們軟件系的人學習嵌入式,顯然應偏重于嵌入式軟件,特別是嵌入式操作系統方面。對于搞嵌入式軟件的人,最重要的技術顯然是掌握主流嵌入式微處理器的結構與原理,必須掌握一個嵌入式操作系統,必須熟悉嵌入式軟件開發流程并至少做過一個嵌入式軟件項目。

然而我們都沒有做過一個嵌入式軟件項目,甚至連嵌入式的開發流程我也不清楚,我只了解了使用簡單工具做一個簡單的實驗。只有去專研才能在嵌入式的領域站住腳,只有知道的比別人多才會更有競爭力。通過網上了解,我查詢了嵌入式的入門和所需要的知識,其中c語言尤為重要,不管是做嵌入式軟件還是硬件開發的人員,對c語言的掌握這個是必需的,特別是對于以后致力于嵌入式軟件開發的人,現在絕大部分都是用c語言。其次,應該對操作系統有所了解,這對你對硬件和軟件的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如進程、線程,系統如何來分配資源的,系統如何來管理硬件的;知道了c語言和操作系統之后,再來看看嵌入式系統,我們主要學的是arm,用的是arm7,深入理解arm不是件容易的事,只有在知道arm相關知識之后才能稱得上嵌入式已經入門了。與嵌入式有關的知識我也學了不少就是不能夠綜合在一起運用,組成原理,數據結構,操作系統,c++,這3門與嵌入式密切相關的學科都系統的學了一遍,但由于長時間沒用到都有點忘記了,從網上得知嵌入式的學習與這些書有很大關系之后,我把嵌入式與以前學過的知識結合起來發現嵌入式的實驗中很多都是共通的,我對嵌入式有了初步的理解。

我以為學習嵌入式應該分為2個部分:軟件和硬件。關于硬件方面我接觸到了數字電路教材和模擬電路方面的知識,但由于沒有嵌入式cpu很難親自動手來實現嵌入式的相關理論;嵌入式入門則需要不斷地實驗與分析,我只在實驗課時做幾個與所給的程序相關的小程序來實現一下;而軟件方面則學過c語言,里面通常的語法曾今熟悉過;我通過下列方法來適應c語言在嵌入式中應用:首先重新翻看了下c的教材,看了些常見的語法,接著在編譯器的角度來看待c,編譯原理我剛學過,其中將高級語言與低級語言的翻譯感覺在嵌入式中用到了很多;最后沖硬件的角度來看待c。嵌入式的核心包括嵌入式操作系統,嵌入式軟件開發平臺及工具以及嵌入式應用軟件。這些決定怎樣才能開發一個好的嵌入式系統。下面談談我了解的嵌入式的相關知識與應用:

首先,嵌入式系統是以應用為中心,以計算機技術為基礎,且軟硬件可裁減,適應應

用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。嵌入式有如下幾個突出的有點1.系統內核小,2專用性強,3系統精簡4高實時性os5嵌入式系統的應用程序可以沒有操作系統直接在芯片上運行,6嵌入式系統需要開發工具和環境。

嵌入式系統是近幾年才風靡起來的,但是這個概念并非新近才出現。從20世紀七十年代單片機(最早的單片機是intel公司的 8048,出現在1976年)的出現到今天各式各樣的嵌入式微處理器,微控制器的大規模應用,嵌入式系統已經有了近30年的發展歷史。經過30年的發展,嵌入式技術已經日趨成熟,在中國嵌入式機一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用戶的應用程序等四個部分組成,用于實現對其他設備的控制、監視或管理等功能。

其次,嵌入式系統無疑是當前最熱門最有發展前途的it應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。嵌入式系統是軟硬結合的學科,通常有兩類人會去專研嵌入式:一類是學電子工程、通信工程等偏硬件專業的,另一類是學軟件、計算機專業出身的人,主要從事嵌入式操作系統和應用軟件的開發。我是軟件專業的學習嵌入式,越是智能設備越是復雜系統,軟件越起關鍵作用,而且這是目前的趨勢。嵌入式應用在很多方面,具體的可以分為工業控制,交通管理,信息家電,家庭智能管理系統,pos網絡及電子商務,環境工程與自然,機器人,機電產品方面應用等方面。其中目前在服務領域,如遠程點菜器等已經體現了嵌入式系統的優勢。例外還有很多地方用到了嵌入式系統,最近飛利浦和arm共同推出32位risc嵌入式控制器,適用于工業控制,采用最先進的0.18微米cmos嵌入式閃存處理技術,操作電壓可以低至1.2伏,它還能降低25%到30%的制造成本,在工業領域中對最終用戶而言是一套極具成本效益的解決方案。

那么該如何學好嵌入式我覺得應該從以下幾點入手:

首先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 的代碼等等,麻雀雖

小,五臟俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程師。

以上就是我在本學期學習嵌入式后的心得及感想。篇二:嵌入式學習總結

一.為什么學習嵌入式?

1.就業前景

近幾年,嵌入式系統產品日臻完善,并在全世界各行業得到廣泛應用。嵌入式系統產品的研制和應用已經成為我國信息化帶動工業化、工業化促進信息化發展的新的國民經濟增長點。

隨著消費家電的智能化,嵌入式更顯重要。像我們平常見到的手機、pda、電子字典、可視電話、vcd/dvd/mp3player、數字相機(dc)、數字攝像機(dv)、u-disk、機頂盒(set top box)、高清電視(hdtv)、游戲機、智能玩具、交換機、路由器、數控設備或儀表、汽車電子、家電控制系統、醫療儀器、航天航空設備等等,都是典型的嵌入式系統。據預測,隨著internet的迅速發展和廉價微處理器的出現,嵌入式系統將在日常生活里形成更大的應用領域。

在中國,嵌入式軟件發展過程中,政府已充分認識到它的重要作用,并在政策、資金等方面給予了大力支持。2004 年國家發改委、科技部、商務部聯合頒布的《當前優先發展的高技術產業化重點領域指南》,把嵌入式軟件產業作為國家發展的一個重要領域。

最近幾年來,中國的嵌入式軟件發展速度一直高于中國軟件產業的發展速度和全球嵌入式軟件的發展速度,在中國軟件產業和全球嵌入式軟件產業中所占的比重越來越大。目前,中國嵌入式軟件產業在整個軟件產業中的比重已經超過了三分之一強。從2006年至2010年,中國嵌入式軟件產業規模仍將保持快速增長態勢,年均復合增長率為25.8%,到2010年將達到3339.6億元的規模。

中國嵌入式軟件產業的發展面臨著良好的發展環境與機遇,這包括政府的重視與扶植、信息產業與傳統產業的融合機遇、壟斷局面尚未形成、中國制造的良好基礎、自由軟件運動的興起等等。

同時,不可否認的是長期以來,由于人才、宣傳、資金等諸多問題以及嵌入式本身所特有的軟硬結合特性,使嵌入式軟件人才一直處于供不應求的狀態。

2.自身發展

嵌入式系統是軟硬結合的東西,搞嵌入式開發的人有兩類。

一類是學電子工程、通信工程等偏硬件專業出身的人,他們主要是搞硬件設計,有時要開發一些與硬件關系最密切的最底層軟件,如bootloader、board support package(像pc的bios一樣,往下驅動硬件,往上支持操作系統),最初級的硬件驅動程序等。他們的優勢是對硬件原理非常清楚,不足是他們更擅長定義各種硬件接口,但對復雜軟件系統往往力不從心(例如嵌入式操作系統原理和復雜應用軟件等)。

另一類是學軟件、計算機專業出身的人,主要從事嵌入式操作系統和應用軟件的開發。如果我們學軟件的人對硬件原理和接口有較好的掌握,我們完全也可寫bsp和硬件驅動程序。嵌入式硬件設計完后,各種功能就全靠軟件來實現了,嵌入式設備的增值很大程度上取決于嵌入式軟件,這占了嵌入式系統的最主要工作(目前有很多公司將硬件設計包給了專門的硬件公司,稍復雜的硬件都交給臺灣或國外公司設計,國內的硬件設計力量很弱,很多嵌入式公司自己只負責

開發軟件,因為公司都知道,嵌入式產品的差異很大程度在軟件上,在軟件方面是最有“花頭“可做的),所以我們搞軟件的人完全不用擔心我們在嵌入式市場上的用武之地,越是智能設備越是復雜系統,軟件越起關鍵作用,而且這是目前的趨勢。

二.怎樣學習嵌入式?

1.arm嵌入式開發領域

包括什么?

軟件開發

操作系統以下的底層偏硬件驅動

在簡單操作系統如uc/os-ii之上的程序開發

不包括什么?

硬件設計

類似linux這樣操作系統以上的純應用開發

2.arm基礎知識

#1.arm體系結構:

load/store體系,big/little endian大小端格式,risc/cisc指令集,pipeline流水線

#2.arm工作模式: 7種工作模式:usr,sys,svc,irq,fiq,und,abt;其中5種異常模式 #3.arm寄存器:

37個寄存器:r0-r12, r13(sp),r14(lr),r15(pc),cpsr(spsr)#4.arm異常: 7種異常,異常向量表,異常優先級,異常處理程序,處理器現場,現場的保存和恢復

#5.amba總線: ahb(高性能總線),asb(系統總線),apb(外設總線)#6.arm內核技術: trustzone,jazelle,neon,thumb-2,simd,mmu,mpu #7.jtag標準: ieee1149.1,tdi,tdo,tck,tms,trst,邊界掃描鏈,h-jtag,banyan,giveio #8.arm內核分類: arm7tdmi,arm926,strongarm/xscale,arm10,arm11,cortex-(a/r/m),securcore #9.arm匯編指令: mov,add,sub,b,bl,ldr,str,ldmfd,stmfd,mrs,msr,swi,mrc,mcr #10.mmu內存管理單元: va/pa,i-cache/d-cache,write buffer,context switch,cp15,tlb,ap,domain access control,cache coherence #11.arm芯片外設控制器:

memory controller(內存控制器),watchdog(看門狗),gpio(通用io),uart(串口),timer(定時器),interrupt controller(中斷控制器),nand flash controller,clock & power management(時鐘和電源管理),dma(直接存儲訪問),usb controller,lcd controller,adc,iic,iis,spi,ac97,camera,mmc/sd #12.最小系統:

處理器,時鐘,電源,pll鎖相環,存儲器,通訊端口,外設接口

存儲器件

sram,sdram,nor flash,nand flash #13.arm處理器: samsung: s3c4510,s3c44b0,s3c2410,s3c2440,s3c6410,#14.soc設計: fpga,cpld,vhdl,verilog #15.arm開發調試工具: sdt,ads1.2,axd,realview,keil mdk 4.11(rvmdk4.11)#16.arm命令行工具: armcc,armasm,armlink,fromelf #17.嵌入式操作系統: vxworks,rtlinux,uc/os-ii,wince/wm #18.外設驅動程序: volatile關鍵字,位操作bit,時序圖timing,管腳功能pin function,外設控制/數據/狀態寄存器

#19.程序的存儲,加載和運行: ro段,rw段,zi段,ro-base/rw-base,??臻g,堆空間,位置無關代碼pic,啟動搬移代碼

3.核心概念

#1.寄存器:

arm內核寄存器

r0-r12 r13(sp)r14(lr)r15(pc)cpsr, spsr arm soc 特殊功能寄存器

sfr(special function register)#2.地址

c程序中變量的“地址” :&a soc 特殊功能寄存器的“地址” :0x48000000 尋址方式里面的“地址” :ldr r0, [r1] 二進制指令里面的“地址” :0xe59ff018 存儲芯片內部的“地址” :0x4h 操作系統之上應用程序的“(虛)地址”

cpld器件對應的“(假)地址”

#3.異常和中斷

異常是屬于arm內核體系結構的概念

中斷是屬于arm soc處理器的概念

了解軟件中斷(swi)是實現操作系統提供系統調用的重要手段

了解硬件中斷(例如timer定時器)是實現操作系統時間片的重要手段

三.三個問題。

#1.為什么要編寫一個bootloader?

從根本上掌握一個嵌入式開發板底層的軟硬件系統是怎樣運轉起來的

時鐘頻率如何設置;看門狗所起作用,串口如何工作;通訊協議如何實現;庫函數;反匯編;函數??臻g。

#2.為什么要移植一個操作系統?

了解操作系統和底層硬件之間的依賴關系,知道哪些是移植相關的部分(即接口)定時器中斷(時鐘節拍);異常處理和現場保存恢復;進程,進程控制塊;處理器現場;進程的上下文切換;中斷級別的進程切換。

#3.為什么要實現一個用戶應用?

一個音頻播放器;dma控制器,interrupt中斷控制器;iis 總線;uda1341聲卡芯片驅動;wav/mp3 音頻文件格式;lcd液晶顯示驅動;一個u盤;usb協議;fat文件系統格式;scsi命令集;nandflash存儲芯片驅動。

四.經典語段

經典語段一:

嵌入式技術的掌握是需要一個過程的

實事求是的說,嵌入式技術的全面掌握是有相當難度的??梢暂p輕松松學會嵌入式技術的說法是夸大其詞了。這個就像學英語一樣,學英語無論怎樣學,不管是“瘋狂學”還是用新理念來學,真正掌握的話還是需要一步步積累才能熟練掌握。在此,我建議大家不要想在幾天內學會嵌入式,成為這方面的高手。這些想法本身是不太現實的。

現在我們需要做的是:

第一:把心踏實下來,做好打硬仗的準備。

第二:注意學習方法。盡量不要走彎路,爭取一鼓作氣入門。一旦入門了以后呢就好辦了。嵌入式技術的掌握,本身呢就比較難,要是再走些彎路,時間上會浪費,甚至會影響學習的信心。

經典語段二:

最好的學習方法:

做項目。如果有機會大家跟著做一個難度適中的嵌入式項目,相信大家會很快入

門的。也就是說從實戰之中來獲得進步。但是,在我們沒有嵌入式基礎之前,不容易獲得這樣的機會。也就是說,在能力沒有到之前,找個這樣的工作很難。很顯然呢,如果我們具備了獲得這樣一份工作的能力就好辦了。但是,恰恰是這個階段最難。這個就是搞嵌入式系統的門檻。這個門檻的跨越,我覺得是需要引導的。

比如有的人買了塊開發板自學,上來就分析linux源碼,結果折騰了幾個月呢都沒有什么收獲。有的人只是掩飾了幾個基本的功能,放了個mp3,玩了下如何來瀏覽網頁,下不就不知道該怎么做了。實際上呢,學習一門技術是需要一個過程的,期間也會有一定的規律。我們具體來看。

五.學習心得

#1.嵌入式系統的范圍很廣,指具有計算能力的非pc系統,即具有通常使用的個人電腦的全部或部分特質的專用計算機系統。如生活中的pda、手機、電視機頂盒、數字電視、數碼相機以及工業自動化儀表、醫療儀器等。它分硬件和軟件兩部分,硬件以嵌入式處理器(相當于pc的cpu)為核心,外擴rom、ram(相當于pc的硬盤、內存條)、輸入/輸出設備(pc的鍵盤/顯示器)、各種通信接口(串口、usb、網絡)等。軟件由引導程序(pc的bios)、嵌入式操作系統(相當于pc機的windows xp)和應用程序(相當于在windows xp上運行的程序,如金山詞霸、word等)3部分組成,或只有其中的某部分。

#2.目標要明確,不要得過且過,不要追逐熱門的東西。不管在什么時候,心里都要有自己的信念和理想,不要被其他東西左右了自己。

#3要從興趣和競爭出發,因為這才是你產生動力源的地方。學東西時,要讓自己先喜歡上它,要學會享受學習它的時間,喜歡喬***的都知道,喬老爺子最常說的一句就是要享受比賽的時間。因為只有你喜歡上了它,享受了它,才不會被它所產生的壓力壓倒自己,不要產生一種厭惡的心理。而且心態要調整,不要一味的蠻學,死學,在沒有什么興趣學的時候可以先玩幾天,在回過頭來,或者用其他的方式來轉換。

#4要抱著一種十年方能磨一劍的心理,扎扎實實從基礎開始,不要為高速開發的一些現象所迷惑,那些都只是軟件的功勞。我個人認為搞編程,英語和數學很重要,大家一定要時時的抓,至于怎么抓那就是另外一回事了,當然其他的知識也要汲取,可以多接觸點天文,地理,人文方面的東西來補充自己。篇三:學習嵌入式系統感言

個人覺得培訓學校都是差不多,所學的內容都是一樣的。您不妨自己找幾個學校的課程對比下,你就知道大同小異了,培訓主要就是c、linux和arm課程。

我原來也想去培訓,可是家里條件不允許,我沒有那么多錢,后來我只好自學了,不懂的就上論壇問,我自己學了四個月,差不多也入門了,現在也是在做嵌入式開發。想想我自己走過的路,其實我發現,其實嵌入式并沒有想象的難,關鍵是要花時間去學,要堅持幾個月就可以了。

如果樓主還有時間,不妨自己學下。實在覺得困難的話再去培訓吧。當然,樓主如果家里經濟不錯的話,也可以去培訓吧。但是如果真的下決心要學的話,其實可以去找找自學的方法。

我把我前階段看到的一篇一個??粕绾巫詫W嵌入式,里面有介紹了他的學習方法和學習過程的文章,給樓主看看,希望對你有幫助。

??粕鷮W嵌入式到找到工作的前前后后--學習的榜樣

退學后我也迷茫,大專都沒有畢業,我真的不知道我能干什么,我在糾結著我能做什么。所以輟學后我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘做技術的,可是處處碰壁。

一次偶然的機會,我才聽到嵌入式這個行業。那天我去新華書店,在計算機分類那邊想找本書學習。后來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習嵌入式,然后給我介紹了一下嵌入式現在的火熱情況,告訴我學嵌入式多么的有前景,給我了一份傳單,嵌入式培訓的廣告。聽了她的介紹,我心里癢癢的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。

回家后,我就上網查了下嵌入式,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相對比較高。我就下決心想學嵌入式了。于是我去找嵌入式培訓的相關信息,說真的,我也很迷茫,我不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。

后來,我在百度知道看到一篇讓我很鼓舞的文章《如何學習嵌入式》,是一個嵌入式高手介紹沒有基礎的朋友怎么自學入門學嵌入式,文章寫的很好,包含了如何學習,該怎么學習。他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。

我在想,為什么別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會我再去培訓。主意一定,我就去搜索嵌入式的視頻,雖然零星找到一些嵌入式的視頻,但是都不系統,我是想找一個能夠告訴我該怎么學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教,不懂可以請教的。

下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。

收到他們寄過來的光盤后,我就開始學習了,由于我沒有什么基礎,我就從最簡單的c語言視頻教程學起,話說簡單,其實我還是很多不懂的,我只好請教他們,他們還是很熱心的,都幫我解決了。c語言我差不多學了一個禮拜,接下來我就學了linux的基本命令,我在他們提供linux虛擬機上都有做練習,敲linux的基本命令,寫簡單的c語言代碼,差不多也就三個禮拜。我每天都在不停的寫一些簡單的代碼,這樣一月后我基本掌握了c和linux的基本操作。

接下來我就去學習了人家的視頻的培訓教程,是整套的,和去參加培訓沒有多大的區別,這一看就是兩個月,學習了arm的基本原理,學習嵌入式系統的概念,也掌握了嵌入式的環境的一些搭建,對linux也有更深層次的理解了,明白了嵌入式應用到底是怎么做的,但是驅動我只是有一點點的了解,這個相對難一點,我想以后再慢慢啃。

這兩個月,除了吃飯睡覺,我幾乎都在學習。因為我知道幾乎沒有基礎,比別人差勁,我只能堅持努力著,我不能放棄,我必要要靠自己來養活自己,必須學好這門技術,同時我不懂的就問,這里真的很感謝他們的技術客服對我的任何問題都是耐心的解答,每天都我幾乎都有好幾個問題問他們,然后我就把不懂的問題總結記下來,這樣慢慢積累了一段時間,我發現自己真的有點入門了。

最后的一個月,我就去看關于實踐部分的內容,了解嵌入式項目具體的開發流程,需要什么樣的知識,我就開始準備這方面的知識,也就是學習這方面的視頻,同時他們建議我去找了找一些嵌入式面試的題目,為自己以后找工作做準備。我就到網上找了很多嵌入式的題目,把他們理解的記下來,這樣差不多準備了20天左右

我覺得自己差不多入門了,會做一些簡單的東西了。我就想去找工作看看,于是我就到51job瘋狂的投簡歷,因為我學歷的問題,??茮]有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過后,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了準備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。

把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。

在大學生如則的身上,我們看到了一種精神,就是對認準的事情,不管多困難,多曲折,都不放棄,而且要堅定地、執著地做下去。這是在許多成功者身上我們看到的共同的東西。搞發明創造是寂寞的、艱苦的,但當一個人將它視作自己的事業和理想,它就是快樂的、充實的,堅持下去,必將看到成功的果實,世界上的許多事情亦是同理。(完)篇四:學習嵌入式心得

實驗報告書

課程名: 《嵌入式系統及應用》 題 目: 學習嵌入式心得

班 級:

姓 名:

學 號:

這學期才接觸嵌入式系統學了8周了感覺還稱不上入門,我通過了解知道了嵌入式的發展前景很大,各個領域都用到了嵌入式,學好嵌入式不愁沒飯吃。

廣義上講,凡是帶有微處理器的專用軟硬件系統都是嵌入式系統。如各類單片機和dsp系統。從狹義上講,那些使用嵌入式微處理器構成獨立系統,具有自己操作系統,具有特定功能,用于特定場合的專用軟硬件系統稱為嵌入式系統。嵌入式系統由嵌入式硬件與嵌入式軟件組成;嵌入式硬件以芯片、模板、組件、控制器形式埋藏于設備內部。

大體的嵌入式可以用下圖來表示:

通過網上查詢我發現目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟件(例如操作系統級、驅動程序級軟件),對軟件專業水平要求較高(嵌入式系統對軟件設計的時間和空間效率要求較高),而且必須懂得硬件的工作原理,所以非專業it人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬件技術出現時間不長或正在出現(如arm處理器、嵌入式操作系統等),掌握這些新技術的人當然很少。嵌入式人才稀缺,身價自然就高,越有經驗價格就越高。其實嵌入式人才稀少,根本原因可能是大多數人無條件接觸,這需要相應的嵌入式開發板和軟件,另外需要有經驗的人進行指導開發流程。我們軟件系的人學習嵌入式,顯然應偏重于嵌入式軟件,特別是嵌入式操作系統方面。對于搞嵌入式軟件的人,最重要的技術顯然是掌握主流嵌入式微處理器的結構與原理,必須掌握一個嵌入式操作系統,必須熟悉嵌入式軟件開發流程并至少做過一個嵌入式軟件項目。

然而我們都沒有做過一個嵌入式軟件項目,甚至連嵌入式的開發流程我也不清楚,我只了解了使用簡單工具做一個簡單的實驗。只有去專研才能在嵌入式的領域站住腳,只有知道的比別人多才會更有競爭力。通過網上了解,我查詢了嵌入式的入門和所需要的知識,其中c語言尤為重要,不管是做嵌入式軟件還是硬件開發的人員,對c語言的掌握這個是必需的,特別是對于以后致力于嵌入式軟件開發的人,現在絕大部分都是用c語言。其次,應該對操作系統有所

了解,這對你對硬件和軟件的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如進程、線程,系統如何來分配資源的,系統如何來管理硬件的;知道了c語言和操作系統之后,再來看看嵌入式系統,我們主要學的是arm,用的是arm7,深入理解arm不是件容易的事,只有在知道arm相關知識之后才能稱得上嵌入式已經入門了。

與嵌入式有關的知識我也學了不少就是不能夠綜合在一起運用,組成原理,數據結構,操作系統,c++,這3門與嵌入式密切相關的學科都系統的學了一遍,但由于長時間沒用到都有點忘記了,從網上得知嵌入式的學習與這些書有很大關系之后,我把嵌入式與以前學過的知識結合起來發現嵌入式的實驗中很多都是共通的,我對嵌入式有了初步的理解。我們這學期的嵌入式課本名為《嵌入式系統開發與應用教材》由北京航空航天大學出版社出版,其中講到了嵌入式系統的開發基礎,arm相關技術以及基于arm的嵌入式軟件開發基礎,還提到了基于s3c44b0x嵌入式系統應用開發實例,這些書上都提到但卻不是很全,并沒有叫我們怎么去學好嵌入式系統相關開發實例或過程。

我以為學習嵌入式應該分為2個部分:軟件和硬件。關于硬件方面我接觸到了數字電路教材和模擬電路方面的知識,但由于沒有嵌入式cpu很難親自動手來實現嵌入式的相關理論;嵌入式入門則需要不斷地實驗與分析,我只在實驗課時做幾個與所給的程序相關的小程序來實現一下;而軟件方面則學過c語言,里面通常的語法曾今熟悉過;我通過下列方法來適應c語言在嵌入式中應用:首先重新翻看了下c的教材,看了些常見的語法,接著在編譯器的角度來看待c,編譯原理我剛學過,其中將高級語言與低級語言的翻譯感覺在嵌入式中用到了很多;最后沖硬件的角度來看待c。嵌入式的核心包括嵌入式操作系統,嵌入式軟件開發平臺及工具以及嵌入式應用軟件。這些決定怎樣才能開發一個好的嵌入式系統。

我們上課學的都是怎么樣調試嵌入式系統可以通過下面的圖來演示:

下面談談我了解的嵌入式的相關知識與應用:

首先,嵌入式系統是以應用為中心,以計算機技術為基礎,且軟硬件可裁減,適應應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。嵌入式有如下幾個突出的有點1.系統內核小,2專用性強,3系統精簡4高實時性os5嵌入式系統的應用程序可以沒有操作系統直接在芯片上運行,6嵌入式系統需要開發工具和環境。

嵌入式系統是近幾年才風靡起來的,但是這個概念并非新近才出現。從20世紀七十年代單片機(最早的單片機是intel公司的 8048,出現在1976年)的出現到今天各式各樣的嵌

入式微處理器,微控制器的大規模應用,嵌入式系統已經有了近30年的發展歷史。經過30年的發展,嵌入式技術已經日趨成熟,在中國嵌入式機一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用戶的應用程序等四個部分組成,用于實現對其他設備的控制、監視或管理等功能。

其次,嵌入式系統無疑是當前最熱門最有發展前途的it應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。嵌入式系統是軟硬結合的學科,通常有兩類人會去專研嵌入式:一類是學電子工程、通信工程等偏硬件專業的,另一類是學軟件、計算機專業出身的人,主要從事嵌入式操作系統和應用軟件的開發。我是軟件專業的學習嵌入式,越是智能設備越是復雜系統,軟件越起關鍵作用,而且這是目前的趨勢。嵌入式應用在很多方面,具體的可以分為工業控制,交通管理,信息家電,家庭智能管理系統,pos網絡及電子商務,環境工程與自然,機器人,機電產品方面應用等方面。其中目前在服務領域,如遠程點菜器等已經體現了嵌入式系統的優勢。例外還有很多地方用到了嵌入式系統,最近飛利浦和arm共同推出32位risc嵌入式控制器,適用于工業控制,采用最先進的0.18微米cmos嵌入式閃存處理技術,操作電壓可以低至1.2伏,它還能降低25%到30%的制造成本,在工業領域中對最終用戶而言是一套極具成本效益的解決方案。下圖為一個真實的嵌入式系統實例,全套采用嵌入式系統制作的污水管理系統: 其實用到嵌入式的地方還有很多,隨著計算機的飛速發展嵌入式的價格越來越便宜也將更加普及,嵌入式是一門前途光明的學科。

通過8周的學習學到的并不是很多,要想在這個領域中有所作為還需深入研究,我要走的路還有很多但我會一步一步走下去的。

篇五:學習嵌入式的心得

嵌入式學習[轉貼] 怎樣做才能快速的嵌入式了? 其實,做工程是沒有捷徑可走的

先說做硬件: 把你的數字電路教材和模擬電路的教材讀熟,暫時先把重點放在數字電路上面,接著把微機原理和接口技術讀熟悉了,最好能用匯編寫幾個簡單的程序上機調試一下,這是很重要的。

完成上面的工作大概需要半年,不管你有多么的聰明,除非你以前這個基礎就打的不錯,否則,還是老老實實花上至少半年的時間!還是那句話,沒有捷徑可走,如果你相信那些什么“21天學通xx”什么的,那么我告訴你,放棄做工程吧!再說,你這么容易就學會了,別人也能的,你確定能拿到高薪嗎?

下一步,就是選擇一個dsp(或其它的嵌入式cpu)平臺作為你的目標平臺,先熟悉它的架構和與外圍電路的接口,然后學習她的指令集,也要寫一些小程序去跑一下。這個時候,你應該去買一個開發板了,一般的廠家附帶會給你一些demo程序,看懂它,理解它,修改它,在你的板子上跑一跑。完成上面兩步,說明你已經入了這個行業的門了,下一步,想成為高手的話,就是自己去設計一些項目了,這個階段所花的時間每個人都是不同的,要看你的造化(主要是前面的基礎是否牢固)了。

再說說軟件:

在嵌入式行業,你想做軟件開發的話,沒別的,那就深入理解c語言,尤其是c的指針,如果你以前學過c,但是沒有意識到c相比其它的高級語言的優點的話(不是聽別人說的,你自己的體會),你可以按下面步驟來理解c:

1、重新翻一遍c的教材,記住一些常用的c語法,但不要死摳語法;

2、從編譯器的角度來理解c;

從編譯原理的角度來理解你工作中使用的高級語言,如果你做到這一點,至少有兩個好處: 第一個好處是避免一大堆低水平重復出現的編譯錯誤。一名優秀的coder平均在一個工作日中應該完成200行以上的源碼,其編譯錯誤應該控制在5個以下,要知道這200行源碼不是一次完成的,所以大多數情況下你都要追求一次編譯通過;

第二個好處是可以提高源碼的可讀性和效率。規范地編寫你的代碼使你自己的邏輯清晰,因為你明白多加幾個括號和空行、多換行對齊、多注釋,編譯器是會自動識別的,不影響程序執行的效率,反過來,控制好遞歸調用和循環內的if語句才是提高程序效率的關鍵,要全力避免遞歸,但要深刻理解遞歸,能通過自己建立堆棧來把遞歸程序轉換成非遞歸程序,要求還是較高的哦!

3、從硬件的角度來理解c。

完成上面3步,你就是c的高手了,接下來應該去看看軟件工程方面的書了,這個我還不太懂,不敢妄言。

另外說說教材的選擇:學一門東西,選好你的教材,只要一本就可以了。堅決防止這種情況的出現:去圖書館借很多本書,像搶劫似的,而只是每一本都翻翻,就又還給圖書館了的!注意上面我把匯編語言放在硬件學習的板塊里面,是由于匯編跟硬件的關系太緊密了,以至于是先學匯編還是先學習硬件電路和cpu架構成了要分清到底是“先有雞還是先有蛋”的千年哲學難題了。

嵌入式操作系統一覽

其實,嵌入式系統并不是一個新生的事物,從八十年代起,國際上就有一些it組織、公司,開始進行商用嵌入式系統和專用操作系統的研發。這其中涌現了一些著名的嵌入式系統: windows ce microsoft windows ce是從整體上為有限資源的平臺設計的多線程、完整優先權、多任務的操作系統。它的模塊化設計允許它對于從掌上電腦到專用的工業控制器的用戶電子設備進行定制。操作系統的基本內核需要至少200k的rom。

vxworks vxworks是目前嵌入式系統領域中使用最廣泛、市場占有率最高的系統。它支持多種處理器,如x8

6、i960、sun sparc、motorola mc68xxx、mips rx000、power pc等等。大多數的vxworks api是專有的。采用gnu的編譯和調試器。

psos isi公司已經被winriver公司兼并,現在psos屬于windriver公司的產品。這個系統是一個模塊化、高性能的實時操作系統,專為嵌入式微處理器設計,提供一個完全多任務環境,在定制的或是商業化的硬件上提供高性能和高可靠性。可以讓開發者根據操作系統的功能和內存需求定制成每一個應用所需的系統。開發者可以利用它來實現從簡單的單個獨立設備到復雜的、網絡化的多處理器系統。

qnx qnx是一個實時的、可擴充的操作系統,它部分遵循posix相關標準,如:posix.1b實時擴展。它提供了一個很小的微內核以及一些可選的配合進程。其內核僅提供4種服務:進程調度、進程間通信、底層網絡通信和中斷處理,其進程在獨立的地址空間運行。所有其它os服務,都實現為協作的用戶進程,因此qnx內核非常小巧(qnx4.x大約為12kb)而且運行速度極快。這個靈活的結構可以使用戶根據實際的需求,將系統配置成微小的嵌入式操作系統或是包括幾百個處理器的超級虛擬機操作系統。

palm os os-9 microwave的os-9是為微處理器的關鍵實時任務而設計的操作系統,廣泛應用于高科技產品中,包括消費電子產品、工業自動化、無線通訊產品、醫療儀器、數字電視/多媒體設備。它提供了很好的安全性和容錯性。與其他的嵌入式系統相比,它的靈活性和可升級性非常突出。lynxos lynx real-time systems的lynxos是一個分布式、嵌入式、可規模擴展的實時操作系統,它遵循posix.1a、posix.1b和posix.1c標準。lynxos支持線程概念,提供256個全局用戶線程優先級;提供一些傳統的、非實時系統的服務特征;包括基于調用需求的虛擬內存,一個基于motif的用戶圖形界面,與工業標準兼容的網絡系統以及應用開發工具。

目前,世面上有很多商業性嵌入式系統都在努力地為自己爭取著嵌入式市場的份額。但是,這些專用操作系統均屬于商業化產品,價格昂貴;而且,由于它們各自的源代碼不公開,使得每個系統上的應用軟件與其它系統都無法兼容。并且,由于這種封閉性還導致了商業嵌入式系統在對各種設備的支持

方面存在很大的問題,使得對它們的軟件移植變得很困難。在嵌入式這個it產業的新的關鍵領域,linux操作系統適時地出現在了國家和國內各嵌入式廠商面前,由于linux自身諸多優勢,吸引了許多開發商的目光,成為嵌入式操作系統的新寵。它的出現無疑為國家發展嵌入式操作系統事業提供了一個極有吸引力的機會。

前言

這個題目很大,給人一種感覺我好像很成功,其實不然。實際上自己水平不高,甚至很低,但是做過了一些曲折的學習道路,同時把自己真實的學習歷程表達出來,希望對后來者有借鑒的意義,甚幸!

工作三年、幾成廢人!

我2000年畢業于華中地區的一個理工科大學,專業是機械電子,我當時已經簽了一家內陸某個省級機關工作,家里八輩是農民,并且很偏遠,能夠進入這樣的地方是祖墳有風水。但在畢業前夕有個進入it的機會,我本想進去的,家里人極力反對,阻力可想而知。同時要交4000元的違約金,對我來說是天文數字。大學里的費用很多是借的,幾乎將近一半的費用是在大學勤工儉學掙的,為了省錢,高中一個學期回家一次,大學一年回去一次。并且我個人也有特殊的人生背景(悲景更確切),這里不多說了,寫十篇也寫不完,同時偏離主題。這樣我就參加了工作。一張報紙一杯茶的日子,幾乎下班后有種很空虛和恐慌的感覺。在工作中雖然是與自己專業有點關系,但是很少。專業幾乎荒廢。我自己也思考,如果再不出去,自己將會成廢人,只好讓國家養了。兩年后決定出去,但是幾成廢人,誰要呢,只好到學校去鍍金。這是中國教育和社會的悲哀!

至于專業就改為計算機方面,聽說好找工作,我說實話不是很對計算機特別感興趣,生存第一需要。不要笑我,哈哈!

考研成績出來,超過了國家線幾十分。那個方向要兩個,我第三,但是那年非碘,不面試就按分數來排,自然我落選了。其實給我面試機會也不一定要我,哈哈,自己幾斤幾兩很清楚。

最后調劑到另外一個學校,交錢,咬咬牙,交吧!現在仍然債臺高筑!

進入學校前夕

為什么要把這段列出,看后就知道了。

單位有網絡,經常上網查些英語資料,在那里唯獨英語沒有丟很多。于是我就在網上查資料,學什么好呢,最后確定學嵌入式把,聽說跟硬件相對比較緊密!而我在大學里多少學習了數字電路,單片機等,所以多少也有所利用,不會真的一無所知。當然在這之前也自學過數據結構,計算機組成原理等。

c 語言在大學就學了。哈哈這就是我的家底。

我知道自己的基礎差,于是我就拿操作系統,數據庫、數據結構、c++來看,機關有這個好處,空余時間多,于是平常就看書,很痛苦,沒有人請教。

另外就上網到論壇上去,我就到各個專業的技術論壇,其實是電子論壇和嵌入式論壇。我幾乎沒有發帖,幾乎把幾個大型的出名的論壇的帖子翻遍了,雖然有很多重復的,我才知道嵌入式是個什么東東。這些帖子對我以后的學習產生了極大的影響。

最關鍵兩點:

1、嵌入式是什么?

2、嵌入式需要哪些知識?

知道了這兩點,好辦!我就開始規劃學習路線。計算機的基本理論不能丟,于是重點看組成原理,數據機構,操作系統、c++。同時論壇上了解到,實時操作系統ucos是一個很好的嵌入式操作系統,對初學者很好。于是我就買了一本書,但是代碼在電腦里調不通,網上也有很多相同的問題,我就看書,分析代碼,一遍不行就兩遍,三遍,這樣才看了入了門,才知道什么是進程。原來看操作系統書時,根本就不知道進程是個什么東西。

在這段時間掌握的東西不多,但是,對我以后的影響很大,我想起了大學時一個同學跟我說過了一句話:大學里最重要的不是學到了什么,最重要的是學會怎么學!大概是這個意思。

進入我的避難所

對我來講,再次進入大學不再是大學,而是避難所。希望這次進入給我喘氣和養精蓄銳的機會和時間。我是這樣認為和實踐的。

在學校我有三件事:上課,上圖書館,上網。

對于上課,學校開了很多課程,非常好,很多是名人名師講解,于是很多同學都想學,都去聽。我也考慮過,最后放棄。我是這樣認為的,時間是有限的,什么都想學,什么都學不成。于是我把我自己學的課進行了分化,一般的課程通過就行,重要的一定好好學。我希望不要什么爭論學習課程多和少的問題,這僅僅是我的看法。所以我的成績應該是很差的。分數低。好在后來的單位沒有要我的成績單,否則就慘了。

我個人感覺是上圖書館的效率比在寢室里高多了,這是我的經驗。

有人會問,您下了那么多資料,怎么看的完和消化的了呢?

我是這樣對待這個問題的:

1、網上資料比較零散,不系統,但是如果把差不多的東西收集起來看就相對完整了,(嵌入式的圖書就是這兩年特別多,特別是2004年,簡直是向外涌!2003年想買本嵌入式,特別是嵌入式linux的不多。)

2、對于像我這種入門的來說,很多看不懂,沒關系,反復看,我個人對學習方法的一個總結是:重復是最好的老師!

3、即使有的用不上,也可以收集以后用的上時查閱。

但是我并非什么都要,目前我的技術路線是嵌入式linux,所以像wince之類基本上不

收集。

總之,我在學校里我充分利用時間來學習,我看到一些同學整天的掛在網上打游戲,發

些無關痛癢的帖子,浪費時間呀!我真的很痛心!

學習嵌入式

在這里我把它單獨列出,文章有點紊亂,但是內容希望有益。

1、學習linux 根據我在論壇的了解,我選擇學習嵌入式linux,剛好我們學校也重視嵌入式linux,從實驗室到課程安排都是關于嵌入式linux方面,天時地利!這里我把學習linux的經驗和教訓說說。

可以這樣說,在論壇里說道學習linux差不多就學習linux內核。于是我電腦里安裝了linux就開始看linux內核方面的書了。我記得來學校以前就買到一本陳莉君的講linux內核的第一版,現在有第二版了。我就開始看那本說,大家說linux內核情景分析不錯,我就買了上下冊,后來又買了 《深入理解linux內核》,最后也買了毛德操的《嵌入式系統》也是分析linux內核代碼的,主要講arm相關的。

看內核期間是個非常痛苦的過程,看情景分析有種在森林中找出路,其間我組織了一些同學學習內核,幾乎沒有幾個能堅持下來的。我認為我是堅持下來了。情景分析在看第一、第二遍是幾乎沒有摸到門道,我分析有三個方面的原因:

1、自己的基礎差,這是最關鍵的。

2、內核本身很難。

3、沒有交流和高人指點。到了第三遍時我才摸到門,才差不多知道個linux的大概脈絡,很多細節也是稀里糊涂。

學習linux總結,這里聲明一下,我指的嵌入式主要是偏向軟件的嵌入式。學習嵌入式的重點和難點關鍵在操作系統,如果沒有掌握操作系統,我認為很難把握一個嵌入式系統。即使在做嵌入式開發中,作應有層的開發幾乎可以不知道操作系統也可以開發,我認為那是浮在表面的。很難深入和提高自己的層次。聲明:一孔之見!不可深究!

在學習linux內核過程中犯了一個極其嚴重路線錯誤:對linux幾乎不懂就開始學習內核。我個人推薦一個學習路線是:使用linux—〉linxu系統編程開發---〉驅動開發和分析linux內核。而我差不多相反,實際上你不會使用linux也可以學習內核,但是如果你懂了這些東西學習更有效率。

關于要不要學習內核的問題,我的回答如下:不一定。如果你是喜歡鉆研的那你進入內核會滿足你的欲望。同時對你以后的嵌入式系統的開發有很好的影響。如果你想從事嵌入式linux系統開發,最好對內核有所了解。如果僅僅是做應用開發沒有必要。我打個比喻:c、c++、java等語言是武林中的某個武林派別的話,如什么拳法,什么刀法等,那么linux 內核應該是一個人的內功的反應。怎么開始學linux內核:最好有三件寶物:《深入理解linux內核》《情景分析》和源代碼。

先看《深》,那主要講原理,好像市場上有本講原理性并且更淺,《linux內核設計與實現》聽說不錯。如果沒有學習操作系統的,像我這樣的,最好先看看操作系統原理的書??戳藥妆楹螅涂辞榫胺治?,最好對著《深》看。兩本交叉看,《深》是綱,《情》是目。最后深入代碼。

2、學習嵌入式linux 學習嵌入式,我認為兩個重點,cpu和操作系統,目前市場是比較流行arm,所以推薦大家學習arm。操作系統很多,我個人對開始學習的人,特別不是計算機專業的,推薦學習ucos。那是開源的,同時很小。學習很好。為什么選linux,我不想講太多,網上這方面的太多,但是我在工作中發現,做linux的技術路線很難,在windows幾乎不會有的問題,在linux開發中幾乎遍地陷阱。一掉進去劃很長時間出來,一旦解決自己又長進了!相對來說開發周期長,難度大?,F在資料也逐漸豐富起來,難度也降低了些!

至于怎么學習,這是他的特色地方,必須有塊開發板,我是同學里最早買學習板的,雖然化錢,我認為值。對我實習和工作產生了很大的影響。

如果沒有開發板,那是紙上談兵。有人說,那要1000-2000亞,的確是,兄弟,看長遠的,對您的職業和發展那點錢不算什么!有的人說我站著說話不腰痛,好吧,錢這東西對我影響很大,我在大學里掃廁所,掃的不錯,獎5元/月。兄弟你有過嗎?我認為教育投資是效益最有保障的!我實習拿3k,很多同學拿1-2k,當然比我高的也有。雖然我現在沒有畢業,但一家公司就簽了。從事目前流行的高檔的消費電子的研發。對于我兩年前一無所知的我,應該有質的變化,我感謝學校收了我這個廢品。當然我也非常的努力。說這么多并不是要炫耀我什么,實際上根本不值得炫耀,雖然現在工作環境和待遇比較滿意,但是,我發現我很差,特別是代碼能力,我希望平常大家少玩游戲,多編程。編程才是硬道理!

3、學習板和培訓 你可以不接受培訓,但是不能不買開發板。如果你想學習嵌入式一定要買塊學習板,最好買塊arm9的,貴些也值。可以跑高級操作系統。這個不要什么品牌公司的,一般不會出什么問題,市場上的板子一般是三星的2410,基本上是抄的。如果是做產品那要注意些。一般的公司一般要2000,加lcd要3000甚至更多。我接觸到有的板只要1200,加lcd也就2000,差別比較大,我認為學習都夠啦。

對于培訓,如果有條件最好參加,主要是嵌入式相對別的不同,自己摸索很費時,如果有高手指點非常的好,進步快。特別是認識做這些的朋友。我接受過培訓,認識個朋友。在以后的工作中幫我很多,在這里謝謝他!我記得哈佛的一個mba的學生這樣說,大意是:在哈佛學到什么不重要,最重要的是這些未來各大公司的高級管理人員是我的同學!真是有遠見!

目前市場是培訓比較貴,一個星期兩三千,真正算起來也要,那些講師待遇絕對不會低。但是有個致命的問題是連續上課,一連幾天,效果不佳。我希望社會上多出些1000元左右,并且時間長些,如一個月,一周一到兩次課。如果沒人做,我來做,哈哈!

沒有想到,一下寫了這么多,其實還想寫的,比如在中科院的一位老兄是怎樣學習linux內核和看書的,真的很感動。他的為人我很欽佩。

第五篇:嵌入式系統實驗報告

嵌入式系統設計實驗報告

班 級:學 號:姓 名:成 績:指導教師:

20110612 2011061208 李曉虹 武俊鵬、劉書勇

1.實驗一

1.1 實驗名稱

博創UP-3000實驗臺基本結構使用方法

1.2 實驗目的

1.熟悉嵌入式系統開發式流程概述。

2.熟悉UP-net3000實驗平臺的核心硬件電路和外設。3.熟悉ARM JTAG的安裝與使用。

1.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發

環境、仿真器驅動程序、超級終端通訊程序。

1.4 實驗內容及要求

1.熟悉嵌入式系統開發式流程概述。

2.熟悉UP-net3000實驗平臺的核心硬件電路和外設。3.熟悉ARM JTAG的安裝與使用。

1.5 實驗設計與實驗步驟

1.新建超級終端

2.選擇ARM 開發實驗臺串口。

完成新建超級終端的設置以后,可以選擇超級終端文件菜單中的保存,將當前設置 3.保存為一個特定超級終端到桌面上,以備后用。用串口線將PC 機串口和平臺UART0 正確連接后,就可以在超級終端上看到程序輸出的信息了。4.啟動開發板,按住任意鍵,使開發板進入BIOS設置狀態。

5.在超級終端的界面上,顯示BIOS版本信息,以及相應的測試指令。操作時,要在PC機上輸入小寫的字母快捷鍵,進入到相應的功能中去。6.按照超級終端上的提示信息,進行功能的測試。

1.6 實驗過程與分析

本次實驗操作起來并不困難,因為此次實驗屬于驗證型實驗,按照實驗資料所給的提示信息,以上面的步驟,即可得到實驗的結果。進入到BIOS界面后,按照超級終端上的提示信息來進行功能

1.7 實驗結果總結

在實驗過程中,我們進行的很順利,沒有遇到什么問題,在超級終端界面,按提示的快

捷鍵來測試對應的功能。如

e:測試由ZLG7289 驅動的LED 顯示,共分3 步,請看超級終端提示按任意鍵繼續,同 時觀察LED 的變化,最后返回主菜單。

b:引導FLASH 中的應用程序system.bin。執行該功能將退出BIOS 狀態,把控制交給應 用程序,等。

1.8 心得體會

通過此次實驗,我對于實驗環境有了初步的了解與認識,對于嵌入式也有了更深一步的認識。同時實驗過程中,我學會了第一次接觸的超級終端的使用方法,并能夠熟練掌握,知道其工作的原理。

2.實驗二

2.1 實驗名稱

ADS1.2軟件開發環境使用方法

2.2 實驗目的

1.熟悉ADS1.2 開發環境,學會ARM 仿真器的使用。

2.使用ADS 編譯、下載、調試并跟蹤一段已有的程序,了解嵌入式開發的基本思想和過程。

2.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發

環境、仿真器驅動程序、超級終端通訊程序。

2.4 實驗內容及要求

掌握AXD Debugger的使用方法,學習串行通訊原理,了解串行通訊控制器,閱讀ARM 芯片文檔,掌握ARM 的UART相關寄存器的功能,熟悉ARM 系統硬件的UART 相關接口。編程實現ARM 和計算機之間的串行通訊:ARM 監視串行口;將接收到的字符再發送給串口(計算機與開發板是通過超級終端通訊的);即按PC 鍵盤通過超級終端發送數據,開發板將接收到的數據再返送給PC,在超級終端上顯示。

2.5 實驗設計與實驗步驟

(1)新建工程,選擇菜單中的Project | Add Files 把和工程相關的所有文件包括init和startup 子目錄加入到工程中。ADS1.2 不能自動按文件類別對這些文件進行分類,需要的話可以執行菜單Project | Create Group 創建文件組,然后分別將不同類的文件加入到不同的組,以方便管理。(另一種辦法是,在新建工程時ADS 創建了和工程同名的目錄,在該目錄下按類別創建子目錄并存放工程文件。選中所有目錄拖動到任務欄上的ADS 任務條上,不要松

開鼠標當ADS 窗口恢復后再拖動到工程文件窗口,松開鼠標。這樣ADS 將以子目錄名建立同名文件組并以此對文件分類。)

(2)雙擊Main.c 打開該文件,可以看到Main()函數的內容如下所示。int main(void){ ARMTargetInit();//開發版初始化 LCD_Init();LCD_ChangeMode(DspTxtMode);//轉換LCD 顯示模式為文本顯示模式 LCD_Cls();//文本模式下清屏命令

LCD_printf(“Hello world!n”);//向液晶屏輸出 Uart_Printf(“nHello world!n”);//向串口輸出 while(1);}(3)利用上個實驗中的通訊軟件超級終端來將生成的文件放到嵌入式開發平臺中。(4)重啟實驗臺即可看到LCD上顯示的“Hello world!” 2.6 實驗過程與分析

新建工程,然后將所需的工程文件加載打工程目錄下,編譯生成system.bin文件,將文件導入到實驗臺中,然后重啟實驗臺,即可得到實驗結果。

2.7 實驗結果總結

超級終端輸出一些相對應的代碼的執行結果。熟悉了ADS1.2 開發環境以及學會了ARM 仿真器的基本使用。使用ADS 編譯、下載、調試并跟蹤一段已有的程序,并大致了解了嵌入式開發的基本思想和過程。

2.8 心得體會

通過此次實驗,我對于嵌入式開發的基本思想有了一定的了解,嵌入式開發采用的是交叉編譯環境,所以在一些方面會有所限制。對于初學者來說,通過一兩次實驗結果的演示就能夠對實驗臺有深入的了解不可能的,所以在后續的實驗中,我要好好努力,認真做好課程實驗為后續的課程設計實驗打下基礎。

3.實驗三

3.1 實驗名稱

鍵盤及LED實驗

3.2 實驗目的

1.學習鍵盤及LED 驅動原理。

2.掌握ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驅動17鍵的鍵盤和8個共陰極LED。

3.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開

環境、仿真器驅動程序、超級終端通訊程序。

3.4 實驗內容及要求

編寫出一段程序,要求能在LED上顯示出小鍵盤上按下的4位數字。

3.5 實驗設計與實驗步驟

1.新建工程,將“Exp3 鍵盤及LED 驅動實驗”中的文件添加到工程。2.定義ZLG7289 寄存器(ZLG7289.h)。3.編寫ZLG7289 驅動函數(ZLG7289.c)。4.定義鍵盤映射表:(Keyboard16.c)。5.定義鍵值讀取函數。

6.編寫主函數,將按鍵值在數碼管上顯示。

3.6 實驗過程與分析

此次實驗中,我們根據已有實驗,進行調試,查看程序的運行效果。根據效果,我們又回到實驗代碼中,然后對代碼進行深入的研究,查看每部分功能所對應的代碼,通過不斷的調試編譯,我們最終對該實驗用到的代碼有了更深的認識。從而能夠按照要求,完成我們自己實驗。

3.7 實驗結果總結

通過小鍵盤的按鍵,鍵值可以在LED上顯示出來。并學習了鍵盤及LED 驅動原理以及掌握了ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驅動17鍵的鍵盤和8個共陰極LED。

3.8 心得體會

在這次實驗中讓我對嵌入式的實驗箱有了進一步的認識,并且進一步了解的ARM實驗的原理和實驗情況,能夠對源代碼進行正確了理解。并且能修改這些源代碼能夠使其工作在自己的預期的工作狀態和輸出自己想要的結果

4.實驗四

4.1 實驗名稱

電機轉動控制及中斷實驗

4.2 實驗目的

1.熟悉ARM本身自帶的六路即三對PWM,掌握相應寄存器的配置。

2.編程實現ARM系統的PWM輸出和I/O輸出,前者用于控制直流電機,后者用于控制步進電機。

3.了解直流電機和步進電機的工作原理,學會用軟件的方法實現步進電機的脈沖分配,即用軟件的方法代替硬件的脈沖分配器。

4.了解44B0處理器上中斷的應用。

5.學習在44B0處理器上中斷的應用。

6.進一步熟悉平臺外圍硬件及其驅動程序的編寫。

4.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發環境、仿真器驅動程序、超級終端通訊程序。

4.4 實驗內容及要求

1.編程實現ARM芯片的一對PWM輸出用于控制直流電機的轉動,通過A/D旋鈕控制其轉動方式。

2.編程實現ARM的四路I/O通道,實現環形脈沖分配用于控制步進電機的轉動,通過A/D旋鈕控制步進電機的轉角。

3.通過鍵盤控制直流電機與步進電機的切換。4.設置并啟動定時器。

5.設置中斷,編寫定時器中斷服務程序,對中斷次數進行計數并在LED上顯示結果。

4.5 實驗設計與實驗步驟

1.添加并打開工程。

2.進行直流電機初始化設置和代碼編寫。3.進行步進電機初始化設置和代碼編寫。

4.對Timer3編程,編寫定時器中斷服務程序,完成對中斷次數的計數。5.編寫LED計數顯示函數,使LED能正確計數并顯示0-9999。6.編寫中斷初始化函數和中斷響應函數。7.終端下載測試。

4.6 實驗過程與分析

1.對直流電機進行編程和測試,掌握轉速和旋轉方向的設定方法。2.對步進電機進行編程和測試,掌握ARM的四路I/O通道,實現環形脈沖分配用于控制步進電機的轉動,通過A/D旋鈕控制步進電機的轉角。

3.對主函數進行編程,用鍵盤響應直流電機與步進電機的切換控制。

4.掌握中斷相關語句的應用,弄清定義的中斷向量、中斷向量號,編寫中斷響應函數,并完成中斷響應控制。

4.7 實驗結果總結

實現了直流電機與步進電機的基本設置和控制,可以通過鍵盤控制電機之間的切換。完成了中斷的響應和定時中斷。

在通過本次實驗,我初步了解的實驗的目的所在,并且利用所給的源代碼能夠,調試出所預期的結果,而且能夠根據已給的源代碼修改得到所需的結果。

4.8 心得體會

通過本次實驗,掌握了電機工作原理,了解了中斷的意義和實現方法,實現了簡單了中

斷處理程序,更加了解了中斷的意義。

5.實驗五

5.1 實驗名稱

LCD驅動控制實驗及觸摸屏驅動實驗

5.2 實驗目的

1.了解觸摸屏的基本概念與原理。

2.理解觸摸屏與LCD的關系。3.編程實現對觸摸屏的控制。

5.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發環境、仿真器驅動程序、超級終端通訊程序。

5.4 實驗內容及要求

1.了解觸摸屏基本原理,理解對觸摸屏進行輸出標定、與LCD顯示器配合的過程。2.通過編程實現觸摸兩點自動在兩點間劃直線。3.通過編程實現在觸摸屏上動態畫出曲線。

5.5 實驗設計與實驗步驟

1.添加并打開工程。

2.在頭文件中定義宏和常量及驅動函數。3.校準觸摸屏坐標,進行坐標轉換。4.實現觸屏取點并顯示功能。5.實現兩點間自動劃線功能。6.實現觸摸屏動態劃線功能。

5.6 實驗過程與分析

1.在定義觸屏響應功能的函數中對點擊觸屏進行響應函數的修改,在其中添加修改點顏色的函數,修改得到的觸摸點的顏色,并顯示在LCD上。

2.獲取第一個點坐標并儲存,獲取第二個點坐標并儲存,編寫劃線函數,取得兩點間直線上所有點的坐標,并對其改變顏色,顯示在LCD上,即完成劃直線功能。

3.將劃線函數應用到響應觸屏移動消息的函數下,即可對連續獲得的觸摸坐標進行連續的畫短直線,連接成曲線,完成動態劃線功能。

5.7 實驗結果總結

了解了觸摸屏響應動作消息的函數的工作原理,通過修改實現了觸摸屏響應不同動作進行畫點、劃線、動態劃線的功能。

5.8 心得體會

通過本次實驗,使我了解了怎么在一塊嵌入式實驗箱 通過編程控制實驗箱上得硬件,比如在本次實驗中的控制LCD屏幕就是,在屏幕上點擊,然后得到在LCD屏上點擊的位置。本次實驗初步完成了實驗結果。

6.實驗六

6.1 實驗名稱

UCOS-Ⅱ在ARM微處理器上的裁剪

6.2 實驗目的

1.了解UCOS-Ⅱ內核的主要結構。

2.掌握UCOS-Ⅱ裁剪的基本原理與嵌入式編程實現方法。3.學習如何根據具體情況對UCOS-Ⅱ操作系統進行裁剪。

4.通過對UCOS-Ⅱ配置文件(OS_CFG.H)中相關的配置常量進行設置,實現對UCOS-Ⅱ的裁剪。

6.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發環境、仿真器驅動程序、超級終端通訊程序。

6.4 實驗內容及要求

對UCOS-Ⅱ內核進行裁剪并移植到ARM7微處理器上。

6.5 實驗設計與實驗步驟

編輯OS_CFG.H文件。OS_CFG.H文件中的內容可分為兩大類:服務功能的配置和數據結構的配置。

一.服務功能的配置:

根據程序中的實際情況,保留自己要用的系統服務功能,刪除自己不需要的服務功能。進行合理配置后,是我們自己系統的目標代碼比較緊湊,從而降低了對程序代碼存儲空間的要求。如果代碼存儲空間足夠大的話,那就將全部系統服務功能全部配置為1。不需要考慮功能裁剪。

二.數據結構功能的配置: 與任務有關的數據結構 1.OS_MAX_TASKS 作用:設置用戶程序中可以使用的最多任務數。說明:該值不能超過62.舉例: 若程序中用到了三個任務,則該值的最小值 2.OS_LOWEST_PRIO 作用:設置程序中最低任務的優先級。

說明: 設定該值可以節省操作系統使用RAM的空間。任務的最低優先級和最大任務數是沒有直接關系的。

6.6 實驗過程與分析

按照實驗指導書上的步驟進行,得到了要求的系統。

6.7 實驗結果總結

按照要求進行了裁剪,得到了滿足需要又緊湊的應用軟件系統。

6.8 心得體會

了解了UCOS-Ⅱ內核的主要結構,掌握了UCOS-Ⅱ裁剪的基本原理與嵌入式編程實現方法,學會了如何根據具體情況對UCOS-Ⅱ操作系統進行裁剪

7.實驗七

7.1 實驗名稱

ucos-II移植實驗

7.2 實驗目的

1.了解UCOS-Ⅱ內核的主要結構。

2.掌握將UCOS-Ⅱ內核移植到ARM7處理器上的基本方法。

7.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發環境、仿真器驅動程序、超級終端通訊程序。

7.4 實驗內容及要求

1.將UCOS-Ⅱ內核進行移植到ARM7微處理器上。

2.編寫兩個簡單任務,在超級終端上觀察兩個任務的切換。

7.5 實驗設計與實驗步驟

1.該實驗的文件分為兩類,其一是STARTUP 目錄下的系統初始化、配置等文件,其二是uCOS-II 的全部源碼,arch 目錄下的3 個文件是和處理器架構相關的。

2.設置os_cpu.h 中與處理器和編譯器相關的代碼

3.用C 語言編寫6 個操作系統相關的函數(OS_CPU_C.C)4.用匯編語言編寫4 個與處理器相關的函數(OS_CPU.ASM)5.編寫一個簡單的多任務程序來測試一下移植是否成功。

為了使 uCOS-II 可以正常運行,除了上述必須的移植工作外,硬件初始化和配置文件也是必須的。STARTUP 目錄下的文件還包括中斷處理,時鐘,串口通信等基本功能函數。在文件 main.c 中給出了應用程序的基本框架,包括初始化和多任務的創建,啟動等。任務

創建方法如下:

①在程序開頭定義任務堆棧,任務函數聲明和任務優先級 ②在main()函數中調用OSStart()函數之前用下列語句創建任務 ③編寫任務函數內容

6.編譯并下載移植后的uCOS-II 所有的源代碼都準備好后就可以進行編譯了。在ADS 環境下需要設置工程的訪問路徑。從菜單Edit | Debug Settings 進入設置對話框,在Target | Access Paths 中選擇User Paths 并選上Always search user paths。然后點Add 按鈕添加路徑ucos-ii 和arch。這主要是設置編譯器處理文件包含時的搜索范圍。按照實驗一的方法可以對編譯后的代碼進行調試或下載到平臺的電子硬盤中。這個實驗從結構上看和其他的實驗沒有多大區別,同樣生成可執行文件system.bin??梢栽谄脚_BIOS中激活電子硬盤,然后把system.bin 拷貝進去,重啟平臺,然后在超級終端上觀察結果。

7.6 實驗過程與分析

操作系統相關的函數:(1)OSTaskStkInit OSTaskCreate()和OSTaskCreateExt()通過調用OSTaskStkInit()來初始化任務的堆棧結構。因此,堆??雌饋砭拖駝偘l生過中斷并將所有的寄存器保存到堆棧中的情形一樣。圖12A-2 顯示了OSTaskStkInt()放到正被建立的任務堆棧中的東西。這里我們定義了堆棧是從上往下 長的。在用戶建立任務的時候,用戶傳遞任務的地址,pdata 指針,任務的堆棧棧頂和任務的優先級給OSTaskCreate()和OSTaskCreateExt()。一旦用戶初始化了堆棧,OSTaskStkInit()就需要返回堆棧指針所指的地址。OSTaskCreate()和OSTaskCreateExt()會獲得該地址并將它保存到任務控制塊(OS_TCB)中。

(2)OSTaskCreateHook 當用OSTaskCreate()和OSTaskCreateExt()建立任務的時候就會調用OSTaskCreateHook()。該函數允許用戶或使用移植實例的用戶擴展uCOS-II 功能。當uCOS-II 設置完了自己的內部結構后,會在調用任務調度程序之前調用OSTaskCreateHook()。該函數被調用的時候中斷是禁止的。因此用戶應盡量減少該函數中的代碼以縮短中斷的響應時間。當 OSTaskCreateHook()被調用的時候,它會收到指向已建立任務的OS_TCB 的指針,這 樣它就可以訪問所有的結構成員了。函數原型:void OSTaskCreateHook(OS_TCB *ptcb)

(3)OSTaskDelHook 當任務被刪除的時候就會調用OSTaskDelHook()。該函數在把任務從uCOS-II 的內部任 務鏈表中解開之前被調用。當OSTaskDelHook()被調用的時候,它會收到指向正被刪除任務 的OS_TCB 的指針,這樣它就可以訪問所有的結構成員了。OSTaskDelHook()可以來檢驗TCB擴展是否被建立(一個非空指針)并進行一些清除操作。函數原型:void OSTaskDelHook(OS_TCB *ptcb)(4)OSTaskSwHook 當發生任務切換的時候就會調用OSTaskSwHook()。OSTaskSwHook()可以直接訪問 OSTCBCur 和OSTCBHighRdy,因為它們是全局變量。OSTCBCur 指向被切換出去的任務 OS_TCB,而OSTCBHighRdy 指向新任務OS_TCB。注意在調用OSTaskSwHook()期間中斷 一直是被禁止的。因此用戶應盡量減少該函數中的代碼以縮短中斷的響應時間。函數原型:void OSTaskSwHook(void)

(5)OSTaskStatHook OSTaskStatHook()每秒鐘都會被OSTaskStat()調用一次。用戶可以用OSTaskStatHook()

來擴展統計功能。例如,用戶可以保持并顯示每個任務的執行時間,每個任務所用的CPU 份額,以及每個任務執行的頻率等。函數原型:void OSTaskStatHook(void)(6)OSTimeTickHook OSTimeTickHook()在每個時鐘節拍都會被OSTaskTick()調用。實際上OSTimeTickHook()是在節拍被uCOS-II 真正處理,并通知用戶的移植實例或應用程序之前被調用的。函數原型:void OSTimeTickHook(void)

7.7 實驗結果總結

在超級終端上輸出輪流交替run task1和run task2,表明系統正在不斷交替運行2個任務。

7.8 心得體會

在這個實驗中我們初步了解和測試了實驗的內容和源代碼實驗結果基本上符合預期的要求。了解了μC/OS-II 內核的主要結構和ARM7處理器結構,掌握了將μC/OS-II 內核移植到ARM 7 處理器上的基本原理與嵌入式編程實現方法。

8.實驗八

8.1 實驗名稱

各接口模塊相互銜接綜合實驗

8.2 實驗目的

利用前7次實驗所學的知識,綜合設計一個至少含有5個模塊的實驗。

8.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發環境、仿真器驅動程序、超級終端通訊程序。

8.4 實驗內容及要求

1.回顧串口、鍵盤、LED接口、A/D、電機轉動、定時器中斷、LCD接口及觸摸屏驅動控制接口模塊驅動設計及開發方法。

2.綜合應用以上全部或者部分模塊,實現一個嵌入式綜合應用系統,要求至少5個模塊。

3.盡量使綜合應用具有合理功能。

8.5 實驗設計與實驗步驟

1.新建工程,添加所需的文件。

2.編寫計算器的計算程序caculator.c以及caculator.h文件。3.編寫音樂播放文件play.c以及play.h文件。

4.修改鍵盤映射表讓鍵盤上的數字與LCD與LED屏幕上顯示的數字相對應。5.對輸出在LCD屏幕上的顯示結構進行設計

6.進行裁剪和移植功能設計和完成。編譯生成system.bin文件,將文件拷貝至實驗臺內,重啟實驗臺即可看到實驗效果

8.6 實驗過程與分析

1.完成10以內的加減乘除的計算功能,通過鍵盤輸入,可在LCD屏幕上顯示輸入的表達式以及得到的輸出結果。如“2+3=5”。

2.按任務切換鍵,實現任務的切換。3.任務被切換到播放音樂的任務中去。

4.任務切換過程將會在串口的超級終端界面有所顯示,同時我們設置的將LCD上顯示的結果同步到超級終端上。實現串口通信。

5.利用到了直流電機,如果運算范圍超出我們規定的運算范圍,則電機轉動,來提示錯誤。

6.實現裁剪與移植功能。

8.7 實驗結果總結

在這次實驗中,我們利用前面所學習的知識,綜合利用在此次實驗中,我們利用了前面好所學知識中的6個模塊,分別是串口通訊,鍵盤控制,LED與LCD的輸出,電機控制,以及裁剪與移植的功能。通過這些功能的結合,我們實現自己所設計的實驗的功能。

8.8 心得體會

在此次實驗中,我們遇到了一些問題但是過程中遇到了不少問題,說明對實驗原理和語句編寫還不是很熟悉??偟膩碚f,通過這段時間的訓練,我也學會了不少東西,了解了ARM的基本結構,功能等。

9.實驗總結與心得體會

通過這次為期一周的嵌入式課程實驗,我對于嵌入式有了更加深刻的了解與認識。我是第一次接觸嵌入式,以前對于嵌入式的知識了解甚少,但是通過此次實驗,我不僅了解了嵌入式,也學會了許多關于嵌入式方面的知識。

通過前面的基礎實驗,我們對于ARM環境有了更深的了解,掌握了博創平臺的使用方法,例如如何使用小鍵盤,如何使用LCD、LED屏幕,如何控制終端,如何進行多任務之間的切換等等。通過這幾次的基礎課程實驗,我們最后出了計算器,能夠實現10以內的加減乘除,在此基礎上我們利用多任務,實現播放音樂與計算的切換,還利用點擊的轉動來提示運算過程中出現的問題。

通過這幾次實驗,為我們以后的課程設計實驗打下了堅實的基礎,相信有了這幾天系統實驗的培訓,我們的課程設計實驗做起來會更加輕松。

下載8_嵌入式Linux系統QT應用程序解析word格式文檔
下載8_嵌入式Linux系統QT應用程序解析.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    嵌入式系統課程設計

    《嵌入式系統概論》綜合設計報告書 設計題目:用鍵盤控制LED顯示不同圖形 中央民族大學 二零零八年十月三十一日 一、 設計目的 了解LED點陣和矩陣鍵盤的工作原理。 二、 設計......

    嵌入式系統實驗

    南京信息工程大學 實驗(實習)報告 實驗(實習)名稱電機轉動控制及中斷實驗 實驗(實習)日期2016.5 得分 指導教師 謝勝東學院 計算機與軟件 專業 計算機科學與技術 年級2013......

    嵌入式系統實驗報告

    嵌入式系統設計實驗報告 班 級: 學 號: 姓 名: 成 績: 指導教師: 1. 實驗一 1.1 實驗名稱 博創UP-3000實驗臺基本結構及使用方法 1.2 實驗目的 1.學習嵌入式系統開發流程。 2.熟悉U......

    嵌入式系統發展趨勢

    未來嵌入式系統的發展趨勢 在網絡、通信、微電子發展的基礎上,以及勢不可擋的數字化信息產品的強大需求推動下,嵌入式技術具有廣闊的發展創新空間。 (1)低功耗、高性能、高可......

    嵌入式系統調查報告

    “嵌入式系統在企業中的應用”調查報告 工學院范裕婷內容提要:現今,全過程自動化產品制造、大范圍電子商務活動、高度協同科學實驗以及現代化家庭起居,是嵌入式系統在企業中應......

    嵌入式系統實驗報告

    嵌入式系統實驗報告 學號: 姓 名: 班 級:13電子信息工程指導老師: 蘇州大學 電子信息學院 2016年12月 實驗一:一個燈的閃爍 1、實驗要求 實現PF6-10端口所連接的任意一個LED燈......

    嵌入式系統教學大綱

    《嵌入式系統》課程教學大綱 課程名稱: 嵌入式系統 課程編碼:51610209 學時: 44 學分:2.5 開課學期:7 課程類別:專業平臺課程 課程性質:必修 適用專業:電子信息科學與技術 電子信息......

    嵌入式系統課程設計教學大綱

    嵌入式系統課程設計教學大綱 課程名稱:嵌入式系統A課程(Embedded Systems) 課程編號:1310778236 設計時數:1周 學分:1 開課單位:信息電子技術學院通信工程教研室 適用專業:通信工......

主站蜘蛛池模板: 一线二线三线天堂| 无码视频免费一区二区三区| 麻豆一区二区99久久久久| 午夜视频在线观看免费观看1| 熟妇丰满多毛的大隂户| 国产v亚洲v天堂无码久久久| 美女网站免费观看视频| 美女视频黄的全免费视频网站| 国产精品99久久久久久宅男小说| 亚洲综合网站久久久| 日韩精品无码av成人观看| 色欲色欲天天天www亚洲伊| 国产无套抽出白浆来| 国产午夜亚洲精品午夜鲁丝片| 亚洲人成网站在线播放影院在线| 天天躁夜夜躁狠狠眼泪| 中字无码av电影在线观看网站| 1000部拍拍拍18勿入免费视频| 老司机香蕉久久久久久| 久久99亚洲精品久久频| 一二三四免费观看在线视频中文版| 亚韩无码av电影在线观看| 男ji大巴进入女人的视频小说| 国产精品久久久久久久久久久久人四虎| 精品无码久久久久国产动漫3d| 国产在线看片免费观看| 国产成人亚洲精品无码mp4| 欧美交换配乱吟粗大视频| а天堂中文地址在线| 蜜臀性色av免费| 玖玖资源站亚洲最大的网站| 久久男人av资源网站无码软件| 久久久久久久岛国免费观看| 日本真人添下面视频免费| 国产精品久线在线观看| 我把护士日出水了视频90分钟| 激情偷乱人伦小说视频在线| 久久人人爽人人爽人人片av不| 欧美日韩免费一区中文| 成人区人妻精品一区二区不卡视频| 少妇无码吹潮|