第一篇:8_嵌入式Linux系統(tǒng)QT應(yīng)用程序解析
實(shí)驗(yàn)現(xiàn)象 點(diǎn)擊桌面應(yīng)用程 序圖標(biāo)可打開(kāi)用 戶應(yīng)用程序; 點(diǎn)擊OK 鍵后,文 本框顯示清除。嵌入式Linux系統(tǒng)QT 應(yīng)用程序
本章小結(jié) Qt/Embedded 開(kāi)發(fā)模型; Qt/Embedded 信號(hào)與槽機(jī)制; Qt 應(yīng)用程序的開(kāi)發(fā)過(guò)程及移植方法。嵌入式Linux系統(tǒng)QT 應(yīng)用程序
習(xí)題
1、簡(jiǎn)述信號(hào)與插槽機(jī)制。
2、簡(jiǎn)述Qt 應(yīng)用程序的建立及移植過(guò)程。嵌入式Linux系統(tǒng)QT 應(yīng)用程序
第二篇:嵌入式linu學(xué)習(xí)心得
嵌入式Linux學(xué)習(xí)心得
1、Linux命令
ls:查看目錄-l以列表方式查看;ls –l 與ll的功能一樣 pwd: 查看當(dāng)前的目錄
cd:改變當(dāng)前操作目錄cd /直接跳到根目錄 cd..回到上一級(jí)目錄 cat: 打印顯示當(dāng)前文件的內(nèi)容信息
mkdir:創(chuàng)建目錄
fdisk: 查看硬盤(pán)分區(qū)信息,-l以列表方式查看
->代表是鏈接文件,類(lèi)似window下的快捷方式。
cp: 復(fù)制命令,例子cp 文件名 /home/dir/
mv: 移動(dòng)或改名,如mv sonf.confsonf.txt(改名)移動(dòng):mv sonf.conf / rm:刪除命令,如rm –f test.c;如刪除目錄rm –fr d
man:查看某個(gè)命令的幫助,man 命令
2、各系統(tǒng)目錄的功能
drw—r—w--:d代表是目錄,drw代表當(dāng)前用戶的權(quán)限,r代表組用戶的權(quán)限,w代表其它用戶的權(quán)限。x代表有執(zhí)行權(quán)限。
/boot/gruff.conf: 啟動(dòng)引導(dǎo)程序
/dev:brw—rw--:b代表是塊設(shè)備。Linux設(shè)備有三種,塊設(shè)備(b開(kāi)頭)、字符設(shè)備(c開(kāi)頭)、網(wǎng)絡(luò)設(shè)備。had代表第一個(gè)硬盤(pán),hdb代表第二個(gè)硬盤(pán)。Hdb2代表第二塊硬盤(pán)的第二個(gè)分區(qū)。3,67代表主設(shè)備為3,從設(shè)備為67./etc:存放的是系統(tǒng)的配置文件。Inittab文件存放不同啟動(dòng)方式下必須啟動(dòng)的進(jìn)程。Inittab文件中有6個(gè)啟動(dòng)level,wait中對(duì)應(yīng)著6個(gè)level的目錄,respawn代表當(dāng)一個(gè)進(jìn)程被意外終止了,但會(huì)自動(dòng)啟動(dòng)的進(jìn)程,如守護(hù)進(jìn)程。rc.d目錄中存放了一個(gè)rc.sysinit文件,里面存放系統(tǒng)初始化配置信息。/etc還有一個(gè)vsftpd里面存放tcp、ftp的配置。
/home : 用戶目錄,存放用戶的文件,/lib:存放庫(kù)文件,后綴為so的文件代表動(dòng)態(tài)鏈接庫(kù)。
/lost+found:系統(tǒng)意外終止,存放一些可以找回的文件。
/mnt:掛載外部設(shè)備,如掛載光驅(qū):mount –t /dev/cdrom/mnt/cdrom,如
果在雙系統(tǒng)中,要查看windows中D盤(pán)的文件,首先應(yīng)該將D盤(pán)的文件映射過(guò)來(lái),mount –t /dev/hda2/mnt/windows/d
/opt:用戶安裝的應(yīng)用程序
/proc:是系統(tǒng)運(yùn)行的映射,比較重要。里面的文件數(shù)字代表進(jìn)程號(hào)。每個(gè)進(jìn)程號(hào)目錄下包含進(jìn)程的基本信息。還有其他信息,如cpuinfo等,內(nèi)核支持的文件系統(tǒng)filesystem等。系統(tǒng)支持的中斷interrupts,iomen代表內(nèi)存分配情況。ioport存放IO端口號(hào)。還有分區(qū)信息,modole信息,狀態(tài)信息,版本信息
對(duì)于Linux的設(shè)備驅(qū)動(dòng)程序,有兩種加載模式,一種是直接加載進(jìn)linux內(nèi)核,一種是以模塊的方式加載到內(nèi)核。
/sbin: 系統(tǒng)管理的一些工具。如poweroff關(guān)機(jī)工具。
/usr: 安裝系統(tǒng)時(shí)很多文件放在此目錄下面,包含一些更新等,include包含的頭文件,lib 是Linux的庫(kù)文件,src包含Linux2.4的內(nèi)核源碼
/var:存放是臨時(shí)變量
3、
第三篇:嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告
廣西工學(xué)院鹿山學(xué)院
實(shí) 驗(yàn) 報(bào) 告
課程名稱(chēng): 嵌入式系統(tǒng)
指導(dǎo)教師: 劉瑞琪 班 級(jí): 自動(dòng)化101 姓 名: 楊杰 學(xué) 號(hào): 20102787 成績(jī)?cè)u(píng)定: 指導(dǎo)教師簽字:
2013年5月25日
實(shí)驗(yàn)一
簡(jiǎn)單的程序
一 實(shí)驗(yàn)?zāi)康模?、?dòng)手實(shí)踐一個(gè)簡(jiǎn)單的字符型設(shè)備驅(qū)動(dòng)程序。、學(xué)習(xí)Linux 驅(qū)動(dòng)程序構(gòu)架。、學(xué)習(xí)在應(yīng)用程序中調(diào)用驅(qū)動(dòng)。
二 實(shí)驗(yàn)內(nèi)容:
編寫(xiě)簡(jiǎn)單的字符型設(shè)備驅(qū)動(dòng)程序。編寫(xiě)相應(yīng)的應(yīng)用程序。
三 實(shí)驗(yàn)設(shè)備:、一套S3C2410RP 嵌入式實(shí)驗(yàn)箱。、安裝Redhat9的宿主PC機(jī),并且配置好 ARM Linux 的開(kāi)發(fā)環(huán)境。
四 實(shí)驗(yàn)步驟
實(shí)驗(yàn)二 CPU GPIO 驅(qū)動(dòng)程序及測(cè)試程序
一、實(shí)驗(yàn)?zāi)康模?/p>
編寫(xiě)第一個(gè)針對(duì)實(shí)際硬件的驅(qū)動(dòng)程序,進(jìn)一步了解驅(qū)動(dòng)程序構(gòu)架。
二、實(shí)驗(yàn)內(nèi)容:、編寫(xiě)S3C2410 GPIO驅(qū)動(dòng)程序。、編寫(xiě)S3C2410 GPIO應(yīng)用程序。、在 LINUX系統(tǒng)中插入自己的驅(qū)動(dòng)程序,調(diào)用它。實(shí)現(xiàn)用 CPU GPIO 控制外部LED,利用S3C2410 核心板上的 LED 驗(yàn)證我們的工作。
三、實(shí)驗(yàn)設(shè)備、一套S3C2410RP 嵌入式實(shí)驗(yàn)箱。、安裝Redhat9的宿主PC機(jī),并且配置好 ARM Linux 的開(kāi)發(fā)環(huán)境。
四、實(shí)驗(yàn)步驟
1、復(fù)制Experiment_KeyHello_driverapl_test文件下的simple_test_driver.c文件到Experiment_KeyGPIO文件夾下,將文件名更改為test.c。
2、打開(kāi)test.c,在else語(yǔ)句后更改函數(shù)語(yǔ)句如下:
3、復(fù)制Experiment_KeyADapl_test文件夾下的Makefile到Experiment_KeyGPIO文件夾下,打開(kāi)并將中的ADC刪除。
4、打開(kāi)Experiment_KeyGPIOdriver文件下的gpio_led.c文件。
5、在ssize_t SIMPLE_GPIO_LED_ioctl函數(shù)下添加如下語(yǔ)句:
if(cmd==0)GPBDAT &= ~(0xf<<5);
if(cmd==1)GPBDAT |=(0xf<<5);如下圖所示:
6、在int __init HW_GPIO_LED_CTL_init函數(shù)下屏蔽for循環(huán),如下圖所示:
保存并關(guān)閉。
7、打開(kāi)終端,并編譯test.c文件和gpio_led.c文件。
8、重新打開(kāi)一個(gè)終端,并按步驟輸入如下語(yǔ)句:
9、依次輸入如下語(yǔ)句:
1、cd..2、ls
3、mknod /dev/hello_ctl c 97 1
4、./test
實(shí)驗(yàn)三 中斷實(shí)驗(yàn)及LED顯示
一、實(shí)驗(yàn)?zāi)康模?/p>
學(xué)習(xí)Linux 系統(tǒng)是如何處理中斷。
二、實(shí)驗(yàn)內(nèi)容:
編寫(xiě)獲取和處理外中斷的驅(qū)動(dòng)程序。
三、實(shí)驗(yàn)設(shè)備:、一套S3C2410RP 嵌入式實(shí)驗(yàn)箱。、安裝Redhat9的宿主PC機(jī),并且配置好 ARM Linux 的開(kāi)發(fā)環(huán)境。
四、實(shí)驗(yàn)步驟
1、打開(kāi)Experiment_KeyGPIOdriver文件下的gpio_led.c文件。
2、在ssize_t SIMPLE_GPIO_LED_ioctl函數(shù)下添加如下語(yǔ)句:
if(cmd==0)GPBDAT &= ~(0xf<<5);
if(cmd==1)GPBDAT |=(0xf<<5);如下圖所示:
3、在int __init HW_GPIO_LED_CTL_init函數(shù)下屏蔽for循環(huán),如下圖所示:
保存并關(guān)閉。
4、打開(kāi)Experiment_KeyInterruptdriver下的Interrupt.c文件,并在其interrupt函數(shù)下添加for語(yǔ)句,如下圖所示:
5、打開(kāi)終端,并編譯Interrupt.c文件和gpio_led.c文件。
6、重新打開(kāi)一個(gè)終端,并按步驟輸入如下語(yǔ)句:
7、依次輸入如下語(yǔ)句:
1、cd /mnt/2410RP_linux/Experiment_Key/Interrupt/driver
2、ls
3、insmod Interrupt.o
實(shí)驗(yàn)四 數(shù)碼管顯示實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康模?/p>
學(xué)習(xí)串并轉(zhuǎn)換的相關(guān)知識(shí),并編寫(xiě)驅(qū)動(dòng)程序。
二、實(shí)驗(yàn)內(nèi)容:
編寫(xiě)針對(duì)zlg7289A 的驅(qū)動(dòng)程序。
三、實(shí)驗(yàn)設(shè)備:、一套S3C2410RP 嵌入式實(shí)驗(yàn)箱。、安裝Redhat9的宿主PC機(jī),并且配置好 ARM Linux 的開(kāi)發(fā)環(huán)境。
四、實(shí)驗(yàn)步驟
1、打開(kāi)Experiment_KeySpi_leddriver文件夾下的spi_led.c
2、并在spi_ledInit函數(shù)下添加如下語(yǔ)句:
保存并關(guān)閉。
3、打開(kāi)終端,并編譯spi_led文件。
4、重新打開(kāi)一個(gè)終端,并輸入如下語(yǔ)句:
實(shí)驗(yàn)五
AD 驅(qū)動(dòng)實(shí)驗(yàn)
一 實(shí)驗(yàn)?zāi)康模?、了解模?shù)轉(zhuǎn)換的基本原理;、掌握模數(shù)轉(zhuǎn)換的編程方法。
二 實(shí)驗(yàn)內(nèi)容:、編程對(duì)模擬量輸入進(jìn)行采集和轉(zhuǎn)換,并將結(jié)果顯示在超級(jí)終端上。、通過(guò)改變模擬量輸入,觀察顯示結(jié)果。
三 實(shí)驗(yàn)設(shè)備:、一套S3C2410RP 嵌入式實(shí)驗(yàn)箱。、安裝Redhat9的宿主PC機(jī),并且配置好 ARM Linux 的開(kāi)發(fā)環(huán)境。
四 實(shí)驗(yàn)步驟
1、在spi_led..c中的simpled ioctl中加入以下程序
2、在testADC中復(fù)制以下程序并修改如下
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
第四篇:嵌入式系統(tǒng)學(xué)習(xí)心得
篇一:嵌入式心得體會(huì)
這學(xué)期才接觸嵌入式系統(tǒng)感覺(jué)還稱(chēng)不上入門(mén),我通過(guò)學(xué)習(xí)知道了嵌入式的發(fā)展前景很大,各個(gè)領(lǐng)域都用到了嵌入式,學(xué)好嵌入式不愁沒(méi)飯吃。
廣義上講,凡是帶有微處理器的專(zhuān)用軟硬件系統(tǒng)都是嵌入式系統(tǒng)。如各類(lèi)單片機(jī)和dsp系統(tǒng)。從狹義上講,那些使用嵌入式微處理器構(gòu)成獨(dú)立系統(tǒng),具有自己操作系統(tǒng),具有特定功能,用于特定場(chǎng)合的專(zhuān)用軟硬件系統(tǒng)稱(chēng)為嵌入式系統(tǒng)。嵌入式系統(tǒng)由嵌入式硬件與嵌入式軟件組成;嵌入式硬件以芯片、模板、組件、控制器形式埋藏于設(shè)備內(nèi)部。
理解“嵌入”的概念 主要從三個(gè)方面上來(lái)理解。
1、從硬件上,將基于cpu的處圍器件,整合到cpu芯片內(nèi)部,比如早期基于x86體系結(jié)構(gòu)下的計(jì)算機(jī),cpu只是有運(yùn)算器和累加器的功能,一切芯片要造外部橋路來(lái)擴(kuò)展實(shí)現(xiàn),象串口之類(lèi)的都是靠外部的16c550/2的串口控制器芯片實(shí)現(xiàn),而目前的這種串口控制器芯片早已集成到cpu內(nèi)部,還有pc機(jī)有顯卡,而多數(shù)嵌入式處理器都帶有l(wèi)cd控制器,但其種意義上就相當(dāng)于顯卡。比較高端的arm類(lèi)intel xscale架構(gòu)下的ixp網(wǎng)絡(luò)處理器cpu內(nèi)部集成pci控制器(可配成支持4個(gè)pci從設(shè)備或配成自身為cpi從設(shè)備);還集成3個(gè)npe網(wǎng)絡(luò)處理器引擎,其中兩個(gè)對(duì)應(yīng)于兩個(gè)mac地址,可用于網(wǎng)關(guān)交換用,而另外一個(gè)npe網(wǎng)絡(luò)處理器引擎支持dsl,只要外面再加個(gè)phy芯片即可以實(shí)現(xiàn)dsl上網(wǎng)功能。ixp系列最高主頻可以達(dá)到1.8g,支持2g內(nèi)存,1g×10或10g×1的以太網(wǎng)口或febre channel的光通道。ixp系列應(yīng)該是目標(biāo)基于arm體系統(tǒng)結(jié)構(gòu)下由intel進(jìn)行整合后成xscale內(nèi)核的最高的處理器了。
2、從軟件上前,就是在定制操作系統(tǒng)內(nèi)核里將應(yīng)用一并選入,編譯后將內(nèi)核下載到rom中。而在定制操作系統(tǒng)內(nèi)核時(shí)所選擇的應(yīng)用程序組件就是完成了軟件的“嵌入”,比如wince在內(nèi)核定制時(shí),會(huì)有相應(yīng)選擇,其中就是wordpad,pdf,mediaplay等等選擇,如果我們選擇了,在ce啟動(dòng)后,就可以在界面中找到這些東西,如果是以前pc上將的windows操作系統(tǒng),多半的東西都需要我們得新再裝。
3、把軟件內(nèi)核或應(yīng)用文件系統(tǒng)等東西燒到嵌入式系統(tǒng)硬件平臺(tái)中的rom中就實(shí)現(xiàn)了一個(gè)真正的“嵌入”。
嵌入式系統(tǒng)分為4層,硬件層、驅(qū)動(dòng)層、操作系統(tǒng)層和應(yīng)用層
1、硬件層,是整個(gè)嵌入式系統(tǒng)的根本,如果現(xiàn)在單片機(jī)及接口這塊很熟悉,并且能用c和匯編語(yǔ)言來(lái)編程的話,從嵌入式系統(tǒng)的硬件層走起來(lái)相對(duì)容易,硬件層也是驅(qū)動(dòng)層的基礎(chǔ),一個(gè)優(yōu)秀的驅(qū)動(dòng)工程師是要能夠看懂硬件的電路圖和自行完成cpld的邏輯設(shè)計(jì)的,同時(shí)還要對(duì)操作系統(tǒng)內(nèi)核及其調(diào)度性相當(dāng)?shù)氖煜さ?。但硬件平臺(tái)是基礎(chǔ),增值還要靠軟件。硬件層比較適合于,電子、通信、自動(dòng)化、機(jī)電一體、信息工程類(lèi)專(zhuān)業(yè)的人來(lái)搞,需要掌握的專(zhuān)業(yè)基礎(chǔ)知識(shí)有,單片機(jī)原理及接口技術(shù)、微機(jī)原理及接口技術(shù)、c語(yǔ)言。
2、驅(qū)動(dòng)層,這部分比較難,驅(qū)動(dòng)工程師不僅要能看懂電路圖還要能對(duì)操作系統(tǒng)內(nèi)核十分的精通,以便其所寫(xiě)的驅(qū)動(dòng)程序在系統(tǒng)調(diào)用時(shí),不會(huì)獨(dú)占操作系統(tǒng)時(shí)間片,而導(dǎo)至其它任務(wù)不能動(dòng)行,不懂操作系統(tǒng)內(nèi)核架構(gòu)和實(shí)時(shí)調(diào)度性,沒(méi)有良好的驅(qū)動(dòng)編寫(xiě)風(fēng)格,按大多數(shù)書(shū)上所說(shuō)添加的驅(qū)動(dòng)的方式,很多人都能做到,但可能連個(gè)初級(jí)的驅(qū)動(dòng)工程師的水平都達(dá)不到,這樣所寫(xiě)的驅(qū)動(dòng)在應(yīng)用調(diào)用時(shí)就如同windows下我們打開(kāi)一個(gè)程序運(yùn)行后,再打開(kāi)一個(gè)程序時(shí),要不就是中斷以前的程序,要不就是等上一會(huì)才能運(yùn)行后來(lái)打開(kāi)的程序。想做個(gè)好的驅(qū)動(dòng)人員沒(méi)有三、四年功底,操作系統(tǒng)內(nèi)核不研究上幾編,不是太容易成功的,但其工資在嵌入式系統(tǒng)四層中可是最高的。
驅(qū)動(dòng)層比較適合于電子、通信、自動(dòng)化、機(jī)電一體、信息工程類(lèi)專(zhuān)業(yè)尤其是計(jì)算機(jī)偏體系結(jié)構(gòu)類(lèi)專(zhuān)業(yè)的人來(lái)搞,除硬件層所具備的基礎(chǔ)學(xué)科外,還要對(duì)數(shù)據(jù)結(jié)構(gòu)與算法、操作系統(tǒng)原理、編譯原理都要十分精通了解。
3、操作系統(tǒng)層,對(duì)于操作系統(tǒng)層目前可能只能說(shuō)是簡(jiǎn)單的移植,而很少有人來(lái)自已寫(xiě)操
作系統(tǒng),或者寫(xiě)出缺胳膊少腿的操作系統(tǒng)來(lái),這部分工作大都由驅(qū)動(dòng)工程師來(lái)完成。操作系統(tǒng)是負(fù)責(zé)系統(tǒng)任務(wù)的調(diào)試、磁盤(pán)和文件的管理,而嵌入式系統(tǒng)的實(shí)時(shí)性十分重要。據(jù)說(shuō),xp操作系統(tǒng)是微軟投入300人用兩年時(shí)間才搞定的,總時(shí)工時(shí)是600人年,中科院軟件所自己的女?huà)zhopen操作系統(tǒng)估計(jì)也得花遇幾百人年才能搞定。因此這部分工作相對(duì)來(lái)講沒(méi)有太大意義。
4、應(yīng)用層,相對(duì)來(lái)講較為容易的,如果會(huì)在windows下如何進(jìn)行編程接口函數(shù)調(diào)用,到操作系統(tǒng)下只是編譯和開(kāi)發(fā)環(huán)境有相應(yīng)的變化而已。如果涉及java方面的編程也是如此的。嵌入式系統(tǒng)中涉及算法的由專(zhuān)業(yè)算法的人來(lái)處理的,不必歸結(jié)到嵌入式系統(tǒng)范疇內(nèi)。但如果涉及嵌入式系統(tǒng)下面嵌入式數(shù)據(jù)庫(kù)、基于嵌入式系統(tǒng)的網(wǎng)絡(luò)編程和基于某此應(yīng)用層面的協(xié)議應(yīng)用開(kāi)發(fā)(比如基于sip、h.323、astrisk)方面又較為復(fù)雜,并且有難度了。
通過(guò)網(wǎng)上查詢我發(fā)現(xiàn)目前國(guó)內(nèi)外這方面的人都很稀缺。一方面,是因?yàn)檫@一領(lǐng)域入門(mén)門(mén)檻較高,不僅要懂較底層軟件(例如操作系統(tǒng)級(jí)、驅(qū)動(dòng)程序級(jí)軟件),對(duì)軟件專(zhuān)業(yè)水平要求較高(嵌入式系統(tǒng)對(duì)軟件設(shè)計(jì)的時(shí)間和空間效率要求較高),而且必須懂得硬件的工作原理,所以非專(zhuān)業(yè)it人員很難切入這一領(lǐng)域;另一方面,是因?yàn)檫@一領(lǐng)域較新,目前發(fā)展太快,很多軟硬件技術(shù)出現(xiàn)時(shí)間不長(zhǎng)或正在出現(xiàn)(如arm處理器、嵌入式操作系統(tǒng)等),掌握這些新技術(shù)的人當(dāng)然很少。嵌入式人才稀缺,身價(jià)自然就高,越有經(jīng)驗(yàn)價(jià)格就越高。其實(shí)嵌入式人才稀少,根本原因可能是大多數(shù)人無(wú)條件接觸,這需要相應(yīng)的嵌入式開(kāi)發(fā)板和軟件,另外需要有經(jīng)驗(yàn)的人進(jìn)行指導(dǎo)開(kāi)發(fā)流程。我們軟件系的人學(xué)習(xí)嵌入式,顯然應(yīng)偏重于嵌入式軟件,特別是嵌入式操作系統(tǒng)方面。對(duì)于搞嵌入式軟件的人,最重要的技術(shù)顯然是掌握主流嵌入式微處理器的結(jié)構(gòu)與原理,必須掌握一個(gè)嵌入式操作系統(tǒng),必須熟悉嵌入式軟件開(kāi)發(fā)流程并至少做過(guò)一個(gè)嵌入式軟件項(xiàng)目。
然而我們都沒(méi)有做過(guò)一個(gè)嵌入式軟件項(xiàng)目,甚至連嵌入式的開(kāi)發(fā)流程我也不清楚,我只了解了使用簡(jiǎn)單工具做一個(gè)簡(jiǎn)單的實(shí)驗(yàn)。只有去專(zhuān)研才能在嵌入式的領(lǐng)域站住腳,只有知道的比別人多才會(huì)更有競(jìng)爭(zhēng)力。通過(guò)網(wǎng)上了解,我查詢了嵌入式的入門(mén)和所需要的知識(shí),其中c語(yǔ)言尤為重要,不管是做嵌入式軟件還是硬件開(kāi)發(fā)的人員,對(duì)c語(yǔ)言的掌握這個(gè)是必需的,特別是對(duì)于以后致力于嵌入式軟件開(kāi)發(fā)的人,現(xiàn)在絕大部分都是用c語(yǔ)言。其次,應(yīng)該對(duì)操作系統(tǒng)有所了解,這對(duì)你對(duì)硬件和軟件的理解,絕對(duì)有很大的幫助。應(yīng)該把系統(tǒng)的管理理解一下,比如進(jìn)程、線程,系統(tǒng)如何來(lái)分配資源的,系統(tǒng)如何來(lái)管理硬件的;知道了c語(yǔ)言和操作系統(tǒng)之后,再來(lái)看看嵌入式系統(tǒng),我們主要學(xué)的是arm,用的是arm7,深入理解arm不是件容易的事,只有在知道arm相關(guān)知識(shí)之后才能稱(chēng)得上嵌入式已經(jīng)入門(mén)了。與嵌入式有關(guān)的知識(shí)我也學(xué)了不少就是不能夠綜合在一起運(yùn)用,組成原理,數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),c++,這3門(mén)與嵌入式密切相關(guān)的學(xué)科都系統(tǒng)的學(xué)了一遍,但由于長(zhǎng)時(shí)間沒(méi)用到都有點(diǎn)忘記了,從網(wǎng)上得知嵌入式的學(xué)習(xí)與這些書(shū)有很大關(guān)系之后,我把嵌入式與以前學(xué)過(guò)的知識(shí)結(jié)合起來(lái)發(fā)現(xiàn)嵌入式的實(shí)驗(yàn)中很多都是共通的,我對(duì)嵌入式有了初步的理解。
我以為學(xué)習(xí)嵌入式應(yīng)該分為2個(gè)部分:軟件和硬件。關(guān)于硬件方面我接觸到了數(shù)字電路教材和模擬電路方面的知識(shí),但由于沒(méi)有嵌入式cpu很難親自動(dòng)手來(lái)實(shí)現(xiàn)嵌入式的相關(guān)理論;嵌入式入門(mén)則需要不斷地實(shí)驗(yàn)與分析,我只在實(shí)驗(yàn)課時(shí)做幾個(gè)與所給的程序相關(guān)的小程序來(lái)實(shí)現(xiàn)一下;而軟件方面則學(xué)過(guò)c語(yǔ)言,里面通常的語(yǔ)法曾今熟悉過(guò);我通過(guò)下列方法來(lái)適應(yīng)c語(yǔ)言在嵌入式中應(yīng)用:首先重新翻看了下c的教材,看了些常見(jiàn)的語(yǔ)法,接著在編譯器的角度來(lái)看待c,編譯原理我剛學(xué)過(guò),其中將高級(jí)語(yǔ)言與低級(jí)語(yǔ)言的翻譯感覺(jué)在嵌入式中用到了很多;最后沖硬件的角度來(lái)看待c。嵌入式的核心包括嵌入式操作系統(tǒng),嵌入式軟件開(kāi)發(fā)平臺(tái)及工具以及嵌入式應(yīng)用軟件。這些決定怎樣才能開(kāi)發(fā)一個(gè)好的嵌入式系統(tǒng)。下面談?wù)勎伊私獾那度胧降南嚓P(guān)知識(shí)與應(yīng)用:
首先,嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),且軟硬件可裁減,適應(yīng)應(yīng)
用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。嵌入式有如下幾個(gè)突出的有點(diǎn)1.系統(tǒng)內(nèi)核小,2專(zhuān)用性強(qiáng),3系統(tǒng)精簡(jiǎn)4高實(shí)時(shí)性os5嵌入式系統(tǒng)的應(yīng)用程序可以沒(méi)有操作系統(tǒng)直接在芯片上運(yùn)行,6嵌入式系統(tǒng)需要開(kāi)發(fā)工具和環(huán)境。
嵌入式系統(tǒng)是近幾年才風(fēng)靡起來(lái)的,但是這個(gè)概念并非新近才出現(xiàn)。從20世紀(jì)七十年代單片機(jī)(最早的單片機(jī)是intel公司的 8048,出現(xiàn)在1976年)的出現(xiàn)到今天各式各樣的嵌入式微處理器,微控制器的大規(guī)模應(yīng)用,嵌入式系統(tǒng)已經(jīng)有了近30年的發(fā)展歷史。經(jīng)過(guò)30年的發(fā)展,嵌入式技術(shù)已經(jīng)日趨成熟,在中國(guó)嵌入式機(jī)一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及用戶的應(yīng)用程序等四個(gè)部分組成,用于實(shí)現(xiàn)對(duì)其他設(shè)備的控制、監(jiān)視或管理等功能。
其次,嵌入式系統(tǒng)無(wú)疑是當(dāng)前最熱門(mén)最有發(fā)展前途的it應(yīng)用領(lǐng)域之一。嵌入式系統(tǒng)用在一些特定專(zhuān)用設(shè)備上,通常這些設(shè)備的硬件資源(如處理器、存儲(chǔ)器等)非常有限,并且對(duì)成本很敏感,有時(shí)對(duì)實(shí)時(shí)響應(yīng)要求很高等。特別是隨著消費(fèi)家電的智能化,嵌入式更顯重要。嵌入式系統(tǒng)是軟硬結(jié)合的學(xué)科,通常有兩類(lèi)人會(huì)去專(zhuān)研嵌入式:一類(lèi)是學(xué)電子工程、通信工程等偏硬件專(zhuān)業(yè)的,另一類(lèi)是學(xué)軟件、計(jì)算機(jī)專(zhuān)業(yè)出身的人,主要從事嵌入式操作系統(tǒng)和應(yīng)用軟件的開(kāi)發(fā)。我是軟件專(zhuān)業(yè)的學(xué)習(xí)嵌入式,越是智能設(shè)備越是復(fù)雜系統(tǒng),軟件越起關(guān)鍵作用,而且這是目前的趨勢(shì)。嵌入式應(yīng)用在很多方面,具體的可以分為工業(yè)控制,交通管理,信息家電,家庭智能管理系統(tǒng),pos網(wǎng)絡(luò)及電子商務(wù),環(huán)境工程與自然,機(jī)器人,機(jī)電產(chǎn)品方面應(yīng)用等方面。其中目前在服務(wù)領(lǐng)域,如遠(yuǎn)程點(diǎn)菜器等已經(jīng)體現(xiàn)了嵌入式系統(tǒng)的優(yōu)勢(shì)。例外還有很多地方用到了嵌入式系統(tǒng),最近飛利浦和arm共同推出32位risc嵌入式控制器,適用于工業(yè)控制,采用最先進(jìn)的0.18微米cmos嵌入式閃存處理技術(shù),操作電壓可以低至1.2伏,它還能降低25%到30%的制造成本,在工業(yè)領(lǐng)域中對(duì)最終用戶而言是一套極具成本效益的解決方案。
那么該如何學(xué)好嵌入式我覺(jué)得應(yīng)該從以下幾點(diǎn)入手:
首先c語(yǔ)言,這個(gè)是毋庸置疑的,不管是做嵌入式軟件還是硬件開(kāi)發(fā)的人員,對(duì)c語(yǔ)言的掌握這個(gè)是必需的,特別是對(duì)于以后致力于嵌入式軟件開(kāi)發(fā)的人,現(xiàn)在絕大部分都是用c語(yǔ)言,你說(shuō)不掌握它可以嗎?至于如何學(xué)習(xí)c語(yǔ)言,我想這些基礎(chǔ)的知識(shí)每個(gè)人都有自己的方法,關(guān)鍵要去學(xué)習(xí),看書(shū)也好,網(wǎng)上找些視頻看也好。很多人會(huì)問(wèn),c語(yǔ)言要學(xué)到怎么樣,我覺(jué)得這沒(méi)有標(biāo)準(zhǔn)的答案。我想至少你在明白了一些基礎(chǔ)的概念后,就該寫(xiě)代碼了,動(dòng)手才是最重要的,當(dāng)你動(dòng)手了,遇到問(wèn)題了,再反過(guò)來(lái)學(xué)習(xí),反過(guò)來(lái)查查課本,那時(shí)的收獲就不是你死看書(shū)能得到的。
其次,應(yīng)該對(duì)操作系統(tǒng)有所了解,這對(duì)你對(duì)硬件和軟件的理解,絕對(duì)有很大的幫助。應(yīng)該把系統(tǒng)的管理理解一下,比如進(jìn)程、線程,系統(tǒng)如何來(lái)分配資源的,系統(tǒng)如何來(lái)管理硬件的,當(dāng)然,不是看書(shū)就能把這些理解透,如果不是一時(shí)能理解,沒(méi)關(guān)系,多看看,結(jié)合以后的項(xiàng)目經(jīng)驗(yàn),會(huì)有更好的理解的。
還有應(yīng)該學(xué)習(xí)下linux或者wince下的編程,這些對(duì)以后做應(yīng)用的編程很有幫助,當(dāng)然,如果做手機(jī)的話,那可以學(xué)習(xí)mtk、塞班、android等操作系統(tǒng),android是以后發(fā)展的趨勢(shì),現(xiàn)在很熱門(mén),android也是基于linux系統(tǒng)封裝的,所以建議先學(xué)習(xí)下linux。
還有,應(yīng)該學(xué)習(xí)下單片機(jī)或者arm或者mips,很多人說(shuō)我沒(méi)有單片機(jī)的經(jīng)驗(yàn),直接學(xué)arm可以嗎?我覺(jué)得那完全沒(méi)有問(wèn)題的,當(dāng)然如果你學(xué)習(xí)過(guò)單片機(jī),那最好不過(guò)了,以后學(xué)習(xí)arm就更簡(jiǎn)單了。
最后如果你把以上的知識(shí)都有所了解后,就該去閱讀閱讀一些優(yōu)秀的代碼,比如結(jié)合arm芯片手冊(cè)學(xué)習(xí)去學(xué)習(xí)下uboot的源代碼,了解下最小的系統(tǒng)開(kāi)發(fā),那對(duì)你整個(gè)嵌入式開(kāi)發(fā)的非常有幫助的,可以的話,還可以學(xué)習(xí)下linux的源代碼,當(dāng)然如果你直接閱讀2.6的代碼,我想你會(huì)很痛苦的,可以先看看linux 代碼早期的版本,比如0.12 的代碼等等,麻雀雖
小,五臟俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程師。
以上就是我在本學(xué)期學(xué)習(xí)嵌入式后的心得及感想。篇二:嵌入式學(xué)習(xí)總結(jié)
一.為什么學(xué)習(xí)嵌入式?
1.就業(yè)前景
近幾年,嵌入式系統(tǒng)產(chǎn)品日臻完善,并在全世界各行業(yè)得到廣泛應(yīng)用。嵌入式系統(tǒng)產(chǎn)品的研制和應(yīng)用已經(jīng)成為我國(guó)信息化帶動(dòng)工業(yè)化、工業(yè)化促進(jìn)信息化發(fā)展的新的國(guó)民經(jīng)濟(jì)增長(zhǎng)點(diǎn)。
隨著消費(fèi)家電的智能化,嵌入式更顯重要。像我們平常見(jiàn)到的手機(jī)、pda、電子字典、可視電話、vcd/dvd/mp3player、數(shù)字相機(jī)(dc)、數(shù)字?jǐn)z像機(jī)(dv)、u-disk、機(jī)頂盒(set top box)、高清電視(hdtv)、游戲機(jī)、智能玩具、交換機(jī)、路由器、數(shù)控設(shè)備或儀表、汽車(chē)電子、家電控制系統(tǒng)、醫(yī)療儀器、航天航空設(shè)備等等,都是典型的嵌入式系統(tǒng)。據(jù)預(yù)測(cè),隨著internet的迅速發(fā)展和廉價(jià)微處理器的出現(xiàn),嵌入式系統(tǒng)將在日常生活里形成更大的應(yīng)用領(lǐng)域。
在中國(guó),嵌入式軟件發(fā)展過(guò)程中,政府已充分認(rèn)識(shí)到它的重要作用,并在政策、資金等方面給予了大力支持。2004 年國(guó)家發(fā)改委、科技部、商務(wù)部聯(lián)合頒布的《當(dāng)前優(yōu)先發(fā)展的高技術(shù)產(chǎn)業(yè)化重點(diǎn)領(lǐng)域指南》,把嵌入式軟件產(chǎn)業(yè)作為國(guó)家發(fā)展的一個(gè)重要領(lǐng)域。
最近幾年來(lái),中國(guó)的嵌入式軟件發(fā)展速度一直高于中國(guó)軟件產(chǎn)業(yè)的發(fā)展速度和全球嵌入式軟件的發(fā)展速度,在中國(guó)軟件產(chǎn)業(yè)和全球嵌入式軟件產(chǎn)業(yè)中所占的比重越來(lái)越大。目前,中國(guó)嵌入式軟件產(chǎn)業(yè)在整個(gè)軟件產(chǎn)業(yè)中的比重已經(jīng)超過(guò)了三分之一強(qiáng)。從2006年至2010年,中國(guó)嵌入式軟件產(chǎn)業(yè)規(guī)模仍將保持快速增長(zhǎng)態(tài)勢(shì),年均復(fù)合增長(zhǎng)率為25.8%,到2010年將達(dá)到3339.6億元的規(guī)模。
中國(guó)嵌入式軟件產(chǎn)業(yè)的發(fā)展面臨著良好的發(fā)展環(huán)境與機(jī)遇,這包括政府的重視與扶植、信息產(chǎn)業(yè)與傳統(tǒng)產(chǎn)業(yè)的融合機(jī)遇、壟斷局面尚未形成、中國(guó)制造的良好基礎(chǔ)、自由軟件運(yùn)動(dòng)的興起等等。
同時(shí),不可否認(rèn)的是長(zhǎng)期以來(lái),由于人才、宣傳、資金等諸多問(wèn)題以及嵌入式本身所特有的軟硬結(jié)合特性,使嵌入式軟件人才一直處于供不應(yīng)求的狀態(tài)。
2.自身發(fā)展
嵌入式系統(tǒng)是軟硬結(jié)合的東西,搞嵌入式開(kāi)發(fā)的人有兩類(lèi)。
一類(lèi)是學(xué)電子工程、通信工程等偏硬件專(zhuān)業(yè)出身的人,他們主要是搞硬件設(shè)計(jì),有時(shí)要開(kāi)發(fā)一些與硬件關(guān)系最密切的最底層軟件,如bootloader、board support package(像pc的bios一樣,往下驅(qū)動(dòng)硬件,往上支持操作系統(tǒng)),最初級(jí)的硬件驅(qū)動(dòng)程序等。他們的優(yōu)勢(shì)是對(duì)硬件原理非常清楚,不足是他們更擅長(zhǎng)定義各種硬件接口,但對(duì)復(fù)雜軟件系統(tǒng)往往力不從心(例如嵌入式操作系統(tǒng)原理和復(fù)雜應(yīng)用軟件等)。
另一類(lèi)是學(xué)軟件、計(jì)算機(jī)專(zhuān)業(yè)出身的人,主要從事嵌入式操作系統(tǒng)和應(yīng)用軟件的開(kāi)發(fā)。如果我們學(xué)軟件的人對(duì)硬件原理和接口有較好的掌握,我們完全也可寫(xiě)bsp和硬件驅(qū)動(dòng)程序。嵌入式硬件設(shè)計(jì)完后,各種功能就全靠軟件來(lái)實(shí)現(xiàn)了,嵌入式設(shè)備的增值很大程度上取決于嵌入式軟件,這占了嵌入式系統(tǒng)的最主要工作(目前有很多公司將硬件設(shè)計(jì)包給了專(zhuān)門(mén)的硬件公司,稍復(fù)雜的硬件都交給臺(tái)灣或國(guó)外公司設(shè)計(jì),國(guó)內(nèi)的硬件設(shè)計(jì)力量很弱,很多嵌入式公司自己只負(fù)責(zé)
開(kāi)發(fā)軟件,因?yàn)楣径贾溃度胧疆a(chǎn)品的差異很大程度在軟件上,在軟件方面是最有“花頭“可做的),所以我們搞軟件的人完全不用擔(dān)心我們?cè)谇度胧绞袌?chǎng)上的用武之地,越是智能設(shè)備越是復(fù)雜系統(tǒng),軟件越起關(guān)鍵作用,而且這是目前的趨勢(shì)。
二.怎樣學(xué)習(xí)嵌入式?
1.arm嵌入式開(kāi)發(fā)領(lǐng)域
包括什么?
軟件開(kāi)發(fā)
操作系統(tǒng)以下的底層偏硬件驅(qū)動(dòng)
在簡(jiǎn)單操作系統(tǒng)如uc/os-ii之上的程序開(kāi)發(fā)
不包括什么?
硬件設(shè)計(jì)
類(lèi)似linux這樣操作系統(tǒng)以上的純應(yīng)用開(kāi)發(fā)
2.arm基礎(chǔ)知識(shí)
#1.arm體系結(jié)構(gòu):
load/store體系,big/little endian大小端格式,risc/cisc指令集,pipeline流水線
#2.arm工作模式: 7種工作模式:usr,sys,svc,irq,fiq,und,abt;其中5種異常模式 #3.arm寄存器:
37個(gè)寄存器:r0-r12, r13(sp),r14(lr),r15(pc),cpsr(spsr)#4.arm異常: 7種異常,異常向量表,異常優(yōu)先級(jí),異常處理程序,處理器現(xiàn)場(chǎng),現(xiàn)場(chǎng)的保存和恢復(fù)
#5.amba總線: ahb(高性能總線),asb(系統(tǒng)總線),apb(外設(shè)總線)#6.arm內(nèi)核技術(shù): trustzone,jazelle,neon,thumb-2,simd,mmu,mpu #7.jtag標(biāo)準(zhǔn): ieee1149.1,tdi,tdo,tck,tms,trst,邊界掃描鏈,h-jtag,banyan,giveio #8.arm內(nèi)核分類(lèi): 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內(nèi)存管理單元: va/pa,i-cache/d-cache,write buffer,context switch,cp15,tlb,ap,domain access control,cache coherence #11.arm芯片外設(shè)控制器:
memory controller(內(nèi)存控制器),watchdog(看門(mén)狗),gpio(通用io),uart(串口),timer(定時(shí)器),interrupt controller(中斷控制器),nand flash controller,clock & power management(時(shí)鐘和電源管理),dma(直接存儲(chǔ)訪問(wèn)),usb controller,lcd controller,adc,iic,iis,spi,ac97,camera,mmc/sd #12.最小系統(tǒng):
處理器,時(shí)鐘,電源,pll鎖相環(huán),存儲(chǔ)器,通訊端口,外設(shè)接口
存儲(chǔ)器件
sram,sdram,nor flash,nand flash #13.arm處理器: samsung: s3c4510,s3c44b0,s3c2410,s3c2440,s3c6410,#14.soc設(shè)計(jì): fpga,cpld,vhdl,verilog #15.arm開(kāi)發(fā)調(diào)試工具: sdt,ads1.2,axd,realview,keil mdk 4.11(rvmdk4.11)#16.arm命令行工具: armcc,armasm,armlink,fromelf #17.嵌入式操作系統(tǒng): vxworks,rtlinux,uc/os-ii,wince/wm #18.外設(shè)驅(qū)動(dòng)程序: volatile關(guān)鍵字,位操作bit,時(shí)序圖timing,管腳功能pin function,外設(shè)控制/數(shù)據(jù)/狀態(tài)寄存器
#19.程序的存儲(chǔ),加載和運(yùn)行: ro段,rw段,zi段,ro-base/rw-base,??臻g,堆空間,位置無(wú)關(guān)代碼pic,啟動(dòng)搬移代碼
3.核心概念
#1.寄存器:
arm內(nèi)核寄存器
r0-r12 r13(sp)r14(lr)r15(pc)cpsr, spsr arm soc 特殊功能寄存器
sfr(special function register)#2.地址
c程序中變量的“地址” :&a soc 特殊功能寄存器的“地址” :0x48000000 尋址方式里面的“地址” :ldr r0, [r1] 二進(jìn)制指令里面的“地址” :0xe59ff018 存儲(chǔ)芯片內(nèi)部的“地址” :0x4h 操作系統(tǒng)之上應(yīng)用程序的“(虛)地址”
cpld器件對(duì)應(yīng)的“(假)地址”
#3.異常和中斷
異常是屬于arm內(nèi)核體系結(jié)構(gòu)的概念
中斷是屬于arm soc處理器的概念
了解軟件中斷(swi)是實(shí)現(xiàn)操作系統(tǒng)提供系統(tǒng)調(diào)用的重要手段
了解硬件中斷(例如timer定時(shí)器)是實(shí)現(xiàn)操作系統(tǒng)時(shí)間片的重要手段
三.三個(gè)問(wèn)題。
#1.為什么要編寫(xiě)一個(gè)bootloader?
從根本上掌握一個(gè)嵌入式開(kāi)發(fā)板底層的軟硬件系統(tǒng)是怎樣運(yùn)轉(zhuǎn)起來(lái)的
時(shí)鐘頻率如何設(shè)置;看門(mén)狗所起作用,串口如何工作;通訊協(xié)議如何實(shí)現(xiàn);庫(kù)函數(shù);反匯編;函數(shù)??臻g。
#2.為什么要移植一個(gè)操作系統(tǒng)?
了解操作系統(tǒng)和底層硬件之間的依賴(lài)關(guān)系,知道哪些是移植相關(guān)的部分(即接口)定時(shí)器中斷(時(shí)鐘節(jié)拍);異常處理和現(xiàn)場(chǎng)保存恢復(fù);進(jìn)程,進(jìn)程控制塊;處理器現(xiàn)場(chǎng);進(jìn)程的上下文切換;中斷級(jí)別的進(jìn)程切換。
#3.為什么要實(shí)現(xiàn)一個(gè)用戶應(yīng)用?
一個(gè)音頻播放器;dma控制器,interrupt中斷控制器;iis 總線;uda1341聲卡芯片驅(qū)動(dòng);wav/mp3 音頻文件格式;lcd液晶顯示驅(qū)動(dòng);一個(gè)u盤(pán);usb協(xié)議;fat文件系統(tǒng)格式;scsi命令集;nandflash存儲(chǔ)芯片驅(qū)動(dòng)。
四.經(jīng)典語(yǔ)段
經(jīng)典語(yǔ)段一:
嵌入式技術(shù)的掌握是需要一個(gè)過(guò)程的
實(shí)事求是的說(shuō),嵌入式技術(shù)的全面掌握是有相當(dāng)難度的??梢暂p輕松松學(xué)會(huì)嵌入式技術(shù)的說(shuō)法是夸大其詞了。這個(gè)就像學(xué)英語(yǔ)一樣,學(xué)英語(yǔ)無(wú)論怎樣學(xué),不管是“瘋狂學(xué)”還是用新理念來(lái)學(xué),真正掌握的話還是需要一步步積累才能熟練掌握。在此,我建議大家不要想在幾天內(nèi)學(xué)會(huì)嵌入式,成為這方面的高手。這些想法本身是不太現(xiàn)實(shí)的。
現(xiàn)在我們需要做的是:
第一:把心踏實(shí)下來(lái),做好打硬仗的準(zhǔn)備。
第二:注意學(xué)習(xí)方法。盡量不要走彎路,爭(zhēng)取一鼓作氣入門(mén)。一旦入門(mén)了以后呢就好辦了。嵌入式技術(shù)的掌握,本身呢就比較難,要是再走些彎路,時(shí)間上會(huì)浪費(fèi),甚至?xí)绊憣W(xué)習(xí)的信心。
經(jīng)典語(yǔ)段二:
最好的學(xué)習(xí)方法:
做項(xiàng)目。如果有機(jī)會(huì)大家跟著做一個(gè)難度適中的嵌入式項(xiàng)目,相信大家會(huì)很快入
門(mén)的。也就是說(shuō)從實(shí)戰(zhàn)之中來(lái)獲得進(jìn)步。但是,在我們沒(méi)有嵌入式基礎(chǔ)之前,不容易獲得這樣的機(jī)會(huì)。也就是說(shuō),在能力沒(méi)有到之前,找個(gè)這樣的工作很難。很顯然呢,如果我們具備了獲得這樣一份工作的能力就好辦了。但是,恰恰是這個(gè)階段最難。這個(gè)就是搞嵌入式系統(tǒng)的門(mén)檻。這個(gè)門(mén)檻的跨越,我覺(jué)得是需要引導(dǎo)的。
比如有的人買(mǎi)了塊開(kāi)發(fā)板自學(xué),上來(lái)就分析linux源碼,結(jié)果折騰了幾個(gè)月呢都沒(méi)有什么收獲。有的人只是掩飾了幾個(gè)基本的功能,放了個(gè)mp3,玩了下如何來(lái)瀏覽網(wǎng)頁(yè),下不就不知道該怎么做了。實(shí)際上呢,學(xué)習(xí)一門(mén)技術(shù)是需要一個(gè)過(guò)程的,期間也會(huì)有一定的規(guī)律。我們具體來(lái)看。
五.學(xué)習(xí)心得
#1.嵌入式系統(tǒng)的范圍很廣,指具有計(jì)算能力的非pc系統(tǒng),即具有通常使用的個(gè)人電腦的全部或部分特質(zhì)的專(zhuān)用計(jì)算機(jī)系統(tǒng)。如生活中的pda、手機(jī)、電視機(jī)頂盒、數(shù)字電視、數(shù)碼相機(jī)以及工業(yè)自動(dòng)化儀表、醫(yī)療儀器等。它分硬件和軟件兩部分,硬件以嵌入式處理器(相當(dāng)于pc的cpu)為核心,外擴(kuò)rom、ram(相當(dāng)于pc的硬盤(pán)、內(nèi)存條)、輸入/輸出設(shè)備(pc的鍵盤(pán)/顯示器)、各種通信接口(串口、usb、網(wǎng)絡(luò))等。軟件由引導(dǎo)程序(pc的bios)、嵌入式操作系統(tǒng)(相當(dāng)于pc機(jī)的windows xp)和應(yīng)用程序(相當(dāng)于在windows xp上運(yùn)行的程序,如金山詞霸、word等)3部分組成,或只有其中的某部分。
#2.目標(biāo)要明確,不要得過(guò)且過(guò),不要追逐熱門(mén)的東西。不管在什么時(shí)候,心里都要有自己的信念和理想,不要被其他東西左右了自己。
#3要從興趣和競(jìng)爭(zhēng)出發(fā),因?yàn)檫@才是你產(chǎn)生動(dòng)力源的地方。學(xué)東西時(shí),要讓自己先喜歡上它,要學(xué)會(huì)享受學(xué)習(xí)它的時(shí)間,喜歡喬***的都知道,喬老爺子最常說(shuō)的一句就是要享受比賽的時(shí)間。因?yàn)橹挥心阆矚g上了它,享受了它,才不會(huì)被它所產(chǎn)生的壓力壓倒自己,不要產(chǎn)生一種厭惡的心理。而且心態(tài)要調(diào)整,不要一味的蠻學(xué),死學(xué),在沒(méi)有什么興趣學(xué)的時(shí)候可以先玩幾天,在回過(guò)頭來(lái),或者用其他的方式來(lái)轉(zhuǎn)換。
#4要抱著一種十年方能磨一劍的心理,扎扎實(shí)實(shí)從基礎(chǔ)開(kāi)始,不要為高速開(kāi)發(fā)的一些現(xiàn)象所迷惑,那些都只是軟件的功勞。我個(gè)人認(rèn)為搞編程,英語(yǔ)和數(shù)學(xué)很重要,大家一定要時(shí)時(shí)的抓,至于怎么抓那就是另外一回事了,當(dāng)然其他的知識(shí)也要汲取,可以多接觸點(diǎn)天文,地理,人文方面的東西來(lái)補(bǔ)充自己。篇三:學(xué)習(xí)嵌入式系統(tǒng)感言
個(gè)人覺(jué)得培訓(xùn)學(xué)校都是差不多,所學(xué)的內(nèi)容都是一樣的。您不妨自己找?guī)讉€(gè)學(xué)校的課程對(duì)比下,你就知道大同小異了,培訓(xùn)主要就是c、linux和arm課程。
我原來(lái)也想去培訓(xùn),可是家里條件不允許,我沒(méi)有那么多錢(qián),后來(lái)我只好自學(xué)了,不懂的就上論壇問(wèn),我自己學(xué)了四個(gè)月,差不多也入門(mén)了,現(xiàn)在也是在做嵌入式開(kāi)發(fā)。想想我自己走過(guò)的路,其實(shí)我發(fā)現(xiàn),其實(shí)嵌入式并沒(méi)有想象的難,關(guān)鍵是要花時(shí)間去學(xué),要堅(jiān)持幾個(gè)月就可以了。
如果樓主還有時(shí)間,不妨自己學(xué)下。實(shí)在覺(jué)得困難的話再去培訓(xùn)吧。當(dāng)然,樓主如果家里經(jīng)濟(jì)不錯(cuò)的話,也可以去培訓(xùn)吧。但是如果真的下決心要學(xué)的話,其實(shí)可以去找找自學(xué)的方法。
我把我前階段看到的一篇一個(gè)專(zhuān)科生如何自學(xué)嵌入式,里面有介紹了他的學(xué)習(xí)方法和學(xué)習(xí)過(guò)程的文章,給樓主看看,希望對(duì)你有幫助。
專(zhuān)科生學(xué)嵌入式到找到工作的前前后后--學(xué)習(xí)的榜樣
退學(xué)后我也迷茫,大專(zhuān)都沒(méi)有畢業(yè),我真的不知道我能干什么,我在糾結(jié)著我能做什么。所以輟學(xué)后我一段時(shí)間,我想去找工作,因?yàn)槲冶容^沉默寡言,不是很會(huì)說(shuō)話,我不適合去應(yīng)聘做業(yè)務(wù)。我想應(yīng)聘做技術(shù)的,可是處處碰壁。
一次偶然的機(jī)會(huì),我才聽(tīng)到嵌入式這個(gè)行業(yè)。那天我去新華書(shū)店,在計(jì)算機(jī)分類(lèi)那邊想找本書(shū)學(xué)習(xí)。后來(lái)有個(gè)女孩子走過(guò)來(lái),問(wèn)我是不是讀計(jì)算機(jī)的,有沒(méi)有興趣學(xué)習(xí)嵌入式,然后給我介紹了一下嵌入式現(xiàn)在的火熱情況,告訴我學(xué)嵌入式多么的有前景,給我了一份傳單,嵌入式培訓(xùn)的廣告。聽(tīng)了她的介紹,我心里癢癢的,確實(shí)我很想去學(xué)會(huì)一門(mén)自己的技術(shù),靠自己的雙手吃飯。
回家后,我就上網(wǎng)查了下嵌入式,確實(shí)是當(dāng)今比較熱門(mén)的行業(yè),也是比較好找工作的,工資也是相對(duì)比較高。我就下決心想學(xué)嵌入式了。于是我去找嵌入式培訓(xùn)的相關(guān)信息,說(shuō)真的,我也很迷茫,我不知道培訓(xùn)是否真的能像他們宣傳的那樣好,所以我就想了解一段時(shí)間再做打算。
后來(lái),我在百度知道看到一篇讓我很鼓舞的文章《如何學(xué)習(xí)嵌入式》,是一個(gè)嵌入式高手介紹沒(méi)有基礎(chǔ)的朋友怎么自學(xué)入門(mén)學(xué)嵌入式,文章寫(xiě)的很好,包含了如何學(xué)習(xí),該怎么學(xué)習(xí)。他提到一個(gè)方法就是看視頻,因?yàn)榭磿?shū)實(shí)在太枯燥和費(fèi)解的,很多我們也看不懂。這點(diǎn)我真的很認(rèn)同,我自己看書(shū)往往看不了幾頁(yè)。
我在想,為什么別人都能自學(xué)成才,我也可以的!我要相信自己,所以我就想自學(xué),如果實(shí)在學(xué)不會(huì)我再去培訓(xùn)。主意一定,我就去搜索嵌入式的視頻,雖然零星找到一些嵌入式的視頻,但是都不系統(tǒng),我是想找一個(gè)能夠告訴我該怎么學(xué)的視頻,一套從入門(mén)到精通的視頻,一個(gè)比較完整的資料,最好能有老師教,不懂可以請(qǐng)教的。
下面介紹下我的學(xué)習(xí)流程,希望對(duì)和我一樣完全沒(méi)有基礎(chǔ)的朋友有所幫助。
收到他們寄過(guò)來(lái)的光盤(pán)后,我就開(kāi)始學(xué)習(xí)了,由于我沒(méi)有什么基礎(chǔ),我就從最簡(jiǎn)單的c語(yǔ)言視頻教程學(xué)起,話說(shuō)簡(jiǎn)單,其實(shí)我還是很多不懂的,我只好請(qǐng)教他們,他們還是很熱心的,都幫我解決了。c語(yǔ)言我差不多學(xué)了一個(gè)禮拜,接下來(lái)我就學(xué)了linux的基本命令,我在他們提供linux虛擬機(jī)上都有做練習(xí),敲linux的基本命令,寫(xiě)簡(jiǎn)單的c語(yǔ)言代碼,差不多也就三個(gè)禮拜。我每天都在不停的寫(xiě)一些簡(jiǎn)單的代碼,這樣一月后我基本掌握了c和linux的基本操作。
接下來(lái)我就去學(xué)習(xí)了人家的視頻的培訓(xùn)教程,是整套的,和去參加培訓(xùn)沒(méi)有多大的區(qū)別,這一看就是兩個(gè)月,學(xué)習(xí)了arm的基本原理,學(xué)習(xí)嵌入式系統(tǒng)的概念,也掌握了嵌入式的環(huán)境的一些搭建,對(duì)linux也有更深層次的理解了,明白了嵌入式應(yīng)用到底是怎么做的,但是驅(qū)動(dòng)我只是有一點(diǎn)點(diǎn)的了解,這個(gè)相對(duì)難一點(diǎn),我想以后再慢慢啃。
這兩個(gè)月,除了吃飯睡覺(jué),我?guī)缀醵荚趯W(xué)習(xí)。因?yàn)槲抑缼缀鯖](méi)有基礎(chǔ),比別人差勁,我只能堅(jiān)持努力著,我不能放棄,我必要要靠自己來(lái)養(yǎng)活自己,必須學(xué)好這門(mén)技術(shù),同時(shí)我不懂的就問(wèn),這里真的很感謝他們的技術(shù)客服對(duì)我的任何問(wèn)題都是耐心的解答,每天都我?guī)缀醵加泻脦讉€(gè)問(wèn)題問(wèn)他們,然后我就把不懂的問(wèn)題總結(jié)記下來(lái),這樣慢慢積累了一段時(shí)間,我發(fā)現(xiàn)自己真的有點(diǎn)入門(mén)了。
最后的一個(gè)月,我就去看關(guān)于實(shí)踐部分的內(nèi)容,了解嵌入式項(xiàng)目具體的開(kāi)發(fā)流程,需要什么樣的知識(shí),我就開(kāi)始準(zhǔn)備這方面的知識(shí),也就是學(xué)習(xí)這方面的視頻,同時(shí)他們建議我去找了找一些嵌入式面試的題目,為自己以后找工作做準(zhǔn)備。我就到網(wǎng)上找了很多嵌入式的題目,把他們理解的記下來(lái),這樣差不多準(zhǔn)備了20天左右
我覺(jué)得自己差不多入門(mén)了,會(huì)做一些簡(jiǎn)單的東西了。我就想去找工作看看,于是我就到51job瘋狂的投簡(jiǎn)歷,因?yàn)槲覍W(xué)歷的問(wèn)題,專(zhuān)科沒(méi)有畢業(yè),說(shuō)真的,大公司沒(méi)有人會(huì)要我,所以我投的都是民營(yíng)的小公司,我希望自己的努力有所回報(bào)。沒(méi)有想過(guò)幾天過(guò)后,就有面試了,但是第一次面試我失敗了,雖然我自認(rèn)為筆試很好,因?yàn)槲抑白隽藴?zhǔn)備,但是他們的要求比較嚴(yán)格,需要有一年的項(xiàng)目經(jīng)驗(yàn),所以我沒(méi)有被選中。
把本文寫(xiě)出來(lái),希望能讓和我一樣的沒(méi)有基礎(chǔ)的朋友有信心,其實(shí)我們沒(méi)有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會(huì)成功。
在大學(xué)生如則的身上,我們看到了一種精神,就是對(duì)認(rèn)準(zhǔn)的事情,不管多困難,多曲折,都不放棄,而且要堅(jiān)定地、執(zhí)著地做下去。這是在許多成功者身上我們看到的共同的東西。搞發(fā)明創(chuàng)造是寂寞的、艱苦的,但當(dāng)一個(gè)人將它視作自己的事業(yè)和理想,它就是快樂(lè)的、充實(shí)的,堅(jiān)持下去,必將看到成功的果實(shí),世界上的許多事情亦是同理。(完)篇四:學(xué)習(xí)嵌入式心得
實(shí)驗(yàn)報(bào)告書(shū)
課程名: 《嵌入式系統(tǒng)及應(yīng)用》 題 目: 學(xué)習(xí)嵌入式心得
班 級(jí):
姓 名:
學(xué) 號(hào):
這學(xué)期才接觸嵌入式系統(tǒng)學(xué)了8周了感覺(jué)還稱(chēng)不上入門(mén),我通過(guò)了解知道了嵌入式的發(fā)展前景很大,各個(gè)領(lǐng)域都用到了嵌入式,學(xué)好嵌入式不愁沒(méi)飯吃。
廣義上講,凡是帶有微處理器的專(zhuān)用軟硬件系統(tǒng)都是嵌入式系統(tǒng)。如各類(lèi)單片機(jī)和dsp系統(tǒng)。從狹義上講,那些使用嵌入式微處理器構(gòu)成獨(dú)立系統(tǒng),具有自己操作系統(tǒng),具有特定功能,用于特定場(chǎng)合的專(zhuān)用軟硬件系統(tǒng)稱(chēng)為嵌入式系統(tǒng)。嵌入式系統(tǒng)由嵌入式硬件與嵌入式軟件組成;嵌入式硬件以芯片、模板、組件、控制器形式埋藏于設(shè)備內(nèi)部。
大體的嵌入式可以用下圖來(lái)表示:
通過(guò)網(wǎng)上查詢我發(fā)現(xiàn)目前國(guó)內(nèi)外這方面的人都很稀缺。一方面,是因?yàn)檫@一領(lǐng)域入門(mén)門(mén)檻較高,不僅要懂較底層軟件(例如操作系統(tǒng)級(jí)、驅(qū)動(dòng)程序級(jí)軟件),對(duì)軟件專(zhuān)業(yè)水平要求較高(嵌入式系統(tǒng)對(duì)軟件設(shè)計(jì)的時(shí)間和空間效率要求較高),而且必須懂得硬件的工作原理,所以非專(zhuān)業(yè)it人員很難切入這一領(lǐng)域;另一方面,是因?yàn)檫@一領(lǐng)域較新,目前發(fā)展太快,很多軟硬件技術(shù)出現(xiàn)時(shí)間不長(zhǎng)或正在出現(xiàn)(如arm處理器、嵌入式操作系統(tǒng)等),掌握這些新技術(shù)的人當(dāng)然很少。嵌入式人才稀缺,身價(jià)自然就高,越有經(jīng)驗(yàn)價(jià)格就越高。其實(shí)嵌入式人才稀少,根本原因可能是大多數(shù)人無(wú)條件接觸,這需要相應(yīng)的嵌入式開(kāi)發(fā)板和軟件,另外需要有經(jīng)驗(yàn)的人進(jìn)行指導(dǎo)開(kāi)發(fā)流程。我們軟件系的人學(xué)習(xí)嵌入式,顯然應(yīng)偏重于嵌入式軟件,特別是嵌入式操作系統(tǒng)方面。對(duì)于搞嵌入式軟件的人,最重要的技術(shù)顯然是掌握主流嵌入式微處理器的結(jié)構(gòu)與原理,必須掌握一個(gè)嵌入式操作系統(tǒng),必須熟悉嵌入式軟件開(kāi)發(fā)流程并至少做過(guò)一個(gè)嵌入式軟件項(xiàng)目。
然而我們都沒(méi)有做過(guò)一個(gè)嵌入式軟件項(xiàng)目,甚至連嵌入式的開(kāi)發(fā)流程我也不清楚,我只了解了使用簡(jiǎn)單工具做一個(gè)簡(jiǎn)單的實(shí)驗(yàn)。只有去專(zhuān)研才能在嵌入式的領(lǐng)域站住腳,只有知道的比別人多才會(huì)更有競(jìng)爭(zhēng)力。通過(guò)網(wǎng)上了解,我查詢了嵌入式的入門(mén)和所需要的知識(shí),其中c語(yǔ)言尤為重要,不管是做嵌入式軟件還是硬件開(kāi)發(fā)的人員,對(duì)c語(yǔ)言的掌握這個(gè)是必需的,特別是對(duì)于以后致力于嵌入式軟件開(kāi)發(fā)的人,現(xiàn)在絕大部分都是用c語(yǔ)言。其次,應(yīng)該對(duì)操作系統(tǒng)有所
了解,這對(duì)你對(duì)硬件和軟件的理解,絕對(duì)有很大的幫助。應(yīng)該把系統(tǒng)的管理理解一下,比如進(jìn)程、線程,系統(tǒng)如何來(lái)分配資源的,系統(tǒng)如何來(lái)管理硬件的;知道了c語(yǔ)言和操作系統(tǒng)之后,再來(lái)看看嵌入式系統(tǒng),我們主要學(xué)的是arm,用的是arm7,深入理解arm不是件容易的事,只有在知道arm相關(guān)知識(shí)之后才能稱(chēng)得上嵌入式已經(jīng)入門(mén)了。
與嵌入式有關(guān)的知識(shí)我也學(xué)了不少就是不能夠綜合在一起運(yùn)用,組成原理,數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),c++,這3門(mén)與嵌入式密切相關(guān)的學(xué)科都系統(tǒng)的學(xué)了一遍,但由于長(zhǎng)時(shí)間沒(méi)用到都有點(diǎn)忘記了,從網(wǎng)上得知嵌入式的學(xué)習(xí)與這些書(shū)有很大關(guān)系之后,我把嵌入式與以前學(xué)過(guò)的知識(shí)結(jié)合起來(lái)發(fā)現(xiàn)嵌入式的實(shí)驗(yàn)中很多都是共通的,我對(duì)嵌入式有了初步的理解。我們這學(xué)期的嵌入式課本名為《嵌入式系統(tǒng)開(kāi)發(fā)與應(yīng)用教材》由北京航空航天大學(xué)出版社出版,其中講到了嵌入式系統(tǒng)的開(kāi)發(fā)基礎(chǔ),arm相關(guān)技術(shù)以及基于arm的嵌入式軟件開(kāi)發(fā)基礎(chǔ),還提到了基于s3c44b0x嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)實(shí)例,這些書(shū)上都提到但卻不是很全,并沒(méi)有叫我們?cè)趺慈W(xué)好嵌入式系統(tǒng)相關(guān)開(kāi)發(fā)實(shí)例或過(guò)程。
我以為學(xué)習(xí)嵌入式應(yīng)該分為2個(gè)部分:軟件和硬件。關(guān)于硬件方面我接觸到了數(shù)字電路教材和模擬電路方面的知識(shí),但由于沒(méi)有嵌入式cpu很難親自動(dòng)手來(lái)實(shí)現(xiàn)嵌入式的相關(guān)理論;嵌入式入門(mén)則需要不斷地實(shí)驗(yàn)與分析,我只在實(shí)驗(yàn)課時(shí)做幾個(gè)與所給的程序相關(guān)的小程序來(lái)實(shí)現(xiàn)一下;而軟件方面則學(xué)過(guò)c語(yǔ)言,里面通常的語(yǔ)法曾今熟悉過(guò);我通過(guò)下列方法來(lái)適應(yīng)c語(yǔ)言在嵌入式中應(yīng)用:首先重新翻看了下c的教材,看了些常見(jiàn)的語(yǔ)法,接著在編譯器的角度來(lái)看待c,編譯原理我剛學(xué)過(guò),其中將高級(jí)語(yǔ)言與低級(jí)語(yǔ)言的翻譯感覺(jué)在嵌入式中用到了很多;最后沖硬件的角度來(lái)看待c。嵌入式的核心包括嵌入式操作系統(tǒng),嵌入式軟件開(kāi)發(fā)平臺(tái)及工具以及嵌入式應(yīng)用軟件。這些決定怎樣才能開(kāi)發(fā)一個(gè)好的嵌入式系統(tǒng)。
我們上課學(xué)的都是怎么樣調(diào)試嵌入式系統(tǒng)可以通過(guò)下面的圖來(lái)演示:
下面談?wù)勎伊私獾那度胧降南嚓P(guān)知識(shí)與應(yīng)用:
首先,嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),且軟硬件可裁減,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。嵌入式有如下幾個(gè)突出的有點(diǎn)1.系統(tǒng)內(nèi)核小,2專(zhuān)用性強(qiáng),3系統(tǒng)精簡(jiǎn)4高實(shí)時(shí)性os5嵌入式系統(tǒng)的應(yīng)用程序可以沒(méi)有操作系統(tǒng)直接在芯片上運(yùn)行,6嵌入式系統(tǒng)需要開(kāi)發(fā)工具和環(huán)境。
嵌入式系統(tǒng)是近幾年才風(fēng)靡起來(lái)的,但是這個(gè)概念并非新近才出現(xiàn)。從20世紀(jì)七十年代單片機(jī)(最早的單片機(jī)是intel公司的 8048,出現(xiàn)在1976年)的出現(xiàn)到今天各式各樣的嵌
入式微處理器,微控制器的大規(guī)模應(yīng)用,嵌入式系統(tǒng)已經(jīng)有了近30年的發(fā)展歷史。經(jīng)過(guò)30年的發(fā)展,嵌入式技術(shù)已經(jīng)日趨成熟,在中國(guó)嵌入式機(jī)一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及用戶的應(yīng)用程序等四個(gè)部分組成,用于實(shí)現(xiàn)對(duì)其他設(shè)備的控制、監(jiān)視或管理等功能。
其次,嵌入式系統(tǒng)無(wú)疑是當(dāng)前最熱門(mén)最有發(fā)展前途的it應(yīng)用領(lǐng)域之一。嵌入式系統(tǒng)用在一些特定專(zhuān)用設(shè)備上,通常這些設(shè)備的硬件資源(如處理器、存儲(chǔ)器等)非常有限,并且對(duì)成本很敏感,有時(shí)對(duì)實(shí)時(shí)響應(yīng)要求很高等。特別是隨著消費(fèi)家電的智能化,嵌入式更顯重要。嵌入式系統(tǒng)是軟硬結(jié)合的學(xué)科,通常有兩類(lèi)人會(huì)去專(zhuān)研嵌入式:一類(lèi)是學(xué)電子工程、通信工程等偏硬件專(zhuān)業(yè)的,另一類(lèi)是學(xué)軟件、計(jì)算機(jī)專(zhuān)業(yè)出身的人,主要從事嵌入式操作系統(tǒng)和應(yīng)用軟件的開(kāi)發(fā)。我是軟件專(zhuān)業(yè)的學(xué)習(xí)嵌入式,越是智能設(shè)備越是復(fù)雜系統(tǒng),軟件越起關(guān)鍵作用,而且這是目前的趨勢(shì)。嵌入式應(yīng)用在很多方面,具體的可以分為工業(yè)控制,交通管理,信息家電,家庭智能管理系統(tǒng),pos網(wǎng)絡(luò)及電子商務(wù),環(huán)境工程與自然,機(jī)器人,機(jī)電產(chǎn)品方面應(yīng)用等方面。其中目前在服務(wù)領(lǐng)域,如遠(yuǎn)程點(diǎn)菜器等已經(jīng)體現(xiàn)了嵌入式系統(tǒng)的優(yōu)勢(shì)。例外還有很多地方用到了嵌入式系統(tǒng),最近飛利浦和arm共同推出32位risc嵌入式控制器,適用于工業(yè)控制,采用最先進(jìn)的0.18微米cmos嵌入式閃存處理技術(shù),操作電壓可以低至1.2伏,它還能降低25%到30%的制造成本,在工業(yè)領(lǐng)域中對(duì)最終用戶而言是一套極具成本效益的解決方案。下圖為一個(gè)真實(shí)的嵌入式系統(tǒng)實(shí)例,全套采用嵌入式系統(tǒng)制作的污水管理系統(tǒng): 其實(shí)用到嵌入式的地方還有很多,隨著計(jì)算機(jī)的飛速發(fā)展嵌入式的價(jià)格越來(lái)越便宜也將更加普及,嵌入式是一門(mén)前途光明的學(xué)科。
通過(guò)8周的學(xué)習(xí)學(xué)到的并不是很多,要想在這個(gè)領(lǐng)域中有所作為還需深入研究,我要走的路還有很多但我會(huì)一步一步走下去的。
篇五:學(xué)習(xí)嵌入式的心得
嵌入式學(xué)習(xí)[轉(zhuǎn)貼] 怎樣做才能快速的嵌入式了? 其實(shí),做工程是沒(méi)有捷徑可走的
先說(shuō)做硬件: 把你的數(shù)字電路教材和模擬電路的教材讀熟,暫時(shí)先把重點(diǎn)放在數(shù)字電路上面,接著把微機(jī)原理和接口技術(shù)讀熟悉了,最好能用匯編寫(xiě)幾個(gè)簡(jiǎn)單的程序上機(jī)調(diào)試一下,這是很重要的。
完成上面的工作大概需要半年,不管你有多么的聰明,除非你以前這個(gè)基礎(chǔ)就打的不錯(cuò),否則,還是老老實(shí)實(shí)花上至少半年的時(shí)間!還是那句話,沒(méi)有捷徑可走,如果你相信那些什么“21天學(xué)通xx”什么的,那么我告訴你,放棄做工程吧!再說(shuō),你這么容易就學(xué)會(huì)了,別人也能的,你確定能拿到高薪嗎?
下一步,就是選擇一個(gè)dsp(或其它的嵌入式cpu)平臺(tái)作為你的目標(biāo)平臺(tái),先熟悉它的架構(gòu)和與外圍電路的接口,然后學(xué)習(xí)她的指令集,也要寫(xiě)一些小程序去跑一下。這個(gè)時(shí)候,你應(yīng)該去買(mǎi)一個(gè)開(kāi)發(fā)板了,一般的廠家附帶會(huì)給你一些demo程序,看懂它,理解它,修改它,在你的板子上跑一跑。完成上面兩步,說(shuō)明你已經(jīng)入了這個(gè)行業(yè)的門(mén)了,下一步,想成為高手的話,就是自己去設(shè)計(jì)一些項(xiàng)目了,這個(gè)階段所花的時(shí)間每個(gè)人都是不同的,要看你的造化(主要是前面的基礎(chǔ)是否牢固)了。
再說(shuō)說(shuō)軟件:
在嵌入式行業(yè),你想做軟件開(kāi)發(fā)的話,沒(méi)別的,那就深入理解c語(yǔ)言,尤其是c的指針,如果你以前學(xué)過(guò)c,但是沒(méi)有意識(shí)到c相比其它的高級(jí)語(yǔ)言的優(yōu)點(diǎn)的話(不是聽(tīng)別人說(shuō)的,你自己的體會(huì)),你可以按下面步驟來(lái)理解c:
1、重新翻一遍c的教材,記住一些常用的c語(yǔ)法,但不要死摳語(yǔ)法;
2、從編譯器的角度來(lái)理解c;
從編譯原理的角度來(lái)理解你工作中使用的高級(jí)語(yǔ)言,如果你做到這一點(diǎn),至少有兩個(gè)好處: 第一個(gè)好處是避免一大堆低水平重復(fù)出現(xiàn)的編譯錯(cuò)誤。一名優(yōu)秀的coder平均在一個(gè)工作日中應(yīng)該完成200行以上的源碼,其編譯錯(cuò)誤應(yīng)該控制在5個(gè)以下,要知道這200行源碼不是一次完成的,所以大多數(shù)情況下你都要追求一次編譯通過(guò);
第二個(gè)好處是可以提高源碼的可讀性和效率。規(guī)范地編寫(xiě)你的代碼使你自己的邏輯清晰,因?yàn)槟忝靼锥嗉訋讉€(gè)括號(hào)和空行、多換行對(duì)齊、多注釋?zhuān)幾g器是會(huì)自動(dòng)識(shí)別的,不影響程序執(zhí)行的效率,反過(guò)來(lái),控制好遞歸調(diào)用和循環(huán)內(nèi)的if語(yǔ)句才是提高程序效率的關(guān)鍵,要全力避免遞歸,但要深刻理解遞歸,能通過(guò)自己建立堆棧來(lái)把遞歸程序轉(zhuǎn)換成非遞歸程序,要求還是較高的哦!
3、從硬件的角度來(lái)理解c。
完成上面3步,你就是c的高手了,接下來(lái)應(yīng)該去看看軟件工程方面的書(shū)了,這個(gè)我還不太懂,不敢妄言。
另外說(shuō)說(shuō)教材的選擇:學(xué)一門(mén)東西,選好你的教材,只要一本就可以了。堅(jiān)決防止這種情況的出現(xiàn):去圖書(shū)館借很多本書(shū),像搶劫似的,而只是每一本都翻翻,就又還給圖書(shū)館了的!注意上面我把匯編語(yǔ)言放在硬件學(xué)習(xí)的板塊里面,是由于匯編跟硬件的關(guān)系太緊密了,以至于是先學(xué)匯編還是先學(xué)習(xí)硬件電路和cpu架構(gòu)成了要分清到底是“先有雞還是先有蛋”的千年哲學(xué)難題了。
嵌入式操作系統(tǒng)一覽
其實(shí),嵌入式系統(tǒng)并不是一個(gè)新生的事物,從八十年代起,國(guó)際上就有一些it組織、公司,開(kāi)始進(jìn)行商用嵌入式系統(tǒng)和專(zhuān)用操作系統(tǒng)的研發(fā)。這其中涌現(xiàn)了一些著名的嵌入式系統(tǒng): windows ce microsoft windows ce是從整體上為有限資源的平臺(tái)設(shè)計(jì)的多線程、完整優(yōu)先權(quán)、多任務(wù)的操作系統(tǒng)。它的模塊化設(shè)計(jì)允許它對(duì)于從掌上電腦到專(zhuān)用的工業(yè)控制器的用戶電子設(shè)備進(jìn)行定制。操作系統(tǒng)的基本內(nèi)核需要至少200k的rom。
vxworks vxworks是目前嵌入式系統(tǒng)領(lǐng)域中使用最廣泛、市場(chǎng)占有率最高的系統(tǒng)。它支持多種處理器,如x8
6、i960、sun sparc、motorola mc68xxx、mips rx000、power pc等等。大多數(shù)的vxworks api是專(zhuān)有的。采用gnu的編譯和調(diào)試器。
psos isi公司已經(jīng)被winriver公司兼并,現(xiàn)在psos屬于windriver公司的產(chǎn)品。這個(gè)系統(tǒng)是一個(gè)模塊化、高性能的實(shí)時(shí)操作系統(tǒng),專(zhuān)為嵌入式微處理器設(shè)計(jì),提供一個(gè)完全多任務(wù)環(huán)境,在定制的或是商業(yè)化的硬件上提供高性能和高可靠性??梢宰岄_(kāi)發(fā)者根據(jù)操作系統(tǒng)的功能和內(nèi)存需求定制成每一個(gè)應(yīng)用所需的系統(tǒng)。開(kāi)發(fā)者可以利用它來(lái)實(shí)現(xiàn)從簡(jiǎn)單的單個(gè)獨(dú)立設(shè)備到復(fù)雜的、網(wǎng)絡(luò)化的多處理器系統(tǒng)。
qnx qnx是一個(gè)實(shí)時(shí)的、可擴(kuò)充的操作系統(tǒng),它部分遵循posix相關(guān)標(biāo)準(zhǔn),如:posix.1b實(shí)時(shí)擴(kuò)展。它提供了一個(gè)很小的微內(nèi)核以及一些可選的配合進(jìn)程。其內(nèi)核僅提供4種服務(wù):進(jìn)程調(diào)度、進(jìn)程間通信、底層網(wǎng)絡(luò)通信和中斷處理,其進(jìn)程在獨(dú)立的地址空間運(yùn)行。所有其它os服務(wù),都實(shí)現(xiàn)為協(xié)作的用戶進(jìn)程,因此qnx內(nèi)核非常小巧(qnx4.x大約為12kb)而且運(yùn)行速度極快。這個(gè)靈活的結(jié)構(gòu)可以使用戶根據(jù)實(shí)際的需求,將系統(tǒng)配置成微小的嵌入式操作系統(tǒng)或是包括幾百個(gè)處理器的超級(jí)虛擬機(jī)操作系統(tǒng)。
palm os os-9 microwave的os-9是為微處理器的關(guān)鍵實(shí)時(shí)任務(wù)而設(shè)計(jì)的操作系統(tǒng),廣泛應(yīng)用于高科技產(chǎn)品中,包括消費(fèi)電子產(chǎn)品、工業(yè)自動(dòng)化、無(wú)線通訊產(chǎn)品、醫(yī)療儀器、數(shù)字電視/多媒體設(shè)備。它提供了很好的安全性和容錯(cuò)性。與其他的嵌入式系統(tǒng)相比,它的靈活性和可升級(jí)性非常突出。lynxos lynx real-time systems的lynxos是一個(gè)分布式、嵌入式、可規(guī)模擴(kuò)展的實(shí)時(shí)操作系統(tǒng),它遵循posix.1a、posix.1b和posix.1c標(biāo)準(zhǔn)。lynxos支持線程概念,提供256個(gè)全局用戶線程優(yōu)先級(jí);提供一些傳統(tǒng)的、非實(shí)時(shí)系統(tǒng)的服務(wù)特征;包括基于調(diào)用需求的虛擬內(nèi)存,一個(gè)基于motif的用戶圖形界面,與工業(yè)標(biāo)準(zhǔn)兼容的網(wǎng)絡(luò)系統(tǒng)以及應(yīng)用開(kāi)發(fā)工具。
目前,世面上有很多商業(yè)性嵌入式系統(tǒng)都在努力地為自己爭(zhēng)取著嵌入式市場(chǎng)的份額。但是,這些專(zhuān)用操作系統(tǒng)均屬于商業(yè)化產(chǎn)品,價(jià)格昂貴;而且,由于它們各自的源代碼不公開(kāi),使得每個(gè)系統(tǒng)上的應(yīng)用軟件與其它系統(tǒng)都無(wú)法兼容。并且,由于這種封閉性還導(dǎo)致了商業(yè)嵌入式系統(tǒng)在對(duì)各種設(shè)備的支持
方面存在很大的問(wèn)題,使得對(duì)它們的軟件移植變得很困難。在嵌入式這個(gè)it產(chǎn)業(yè)的新的關(guān)鍵領(lǐng)域,linux操作系統(tǒng)適時(shí)地出現(xiàn)在了國(guó)家和國(guó)內(nèi)各嵌入式廠商面前,由于linux自身諸多優(yōu)勢(shì),吸引了許多開(kāi)發(fā)商的目光,成為嵌入式操作系統(tǒng)的新寵。它的出現(xiàn)無(wú)疑為國(guó)家發(fā)展嵌入式操作系統(tǒng)事業(yè)提供了一個(gè)極有吸引力的機(jī)會(huì)。
前言
這個(gè)題目很大,給人一種感覺(jué)我好像很成功,其實(shí)不然。實(shí)際上自己水平不高,甚至很低,但是做過(guò)了一些曲折的學(xué)習(xí)道路,同時(shí)把自己真實(shí)的學(xué)習(xí)歷程表達(dá)出來(lái),希望對(duì)后來(lái)者有借鑒的意義,甚幸!
工作三年、幾成廢人!
我2000年畢業(yè)于華中地區(qū)的一個(gè)理工科大學(xué),專(zhuān)業(yè)是機(jī)械電子,我當(dāng)時(shí)已經(jīng)簽了一家內(nèi)陸某個(gè)省級(jí)機(jī)關(guān)工作,家里八輩是農(nóng)民,并且很偏遠(yuǎn),能夠進(jìn)入這樣的地方是祖墳有風(fēng)水。但在畢業(yè)前夕有個(gè)進(jìn)入it的機(jī)會(huì),我本想進(jìn)去的,家里人極力反對(duì),阻力可想而知。同時(shí)要交4000元的違約金,對(duì)我來(lái)說(shuō)是天文數(shù)字。大學(xué)里的費(fèi)用很多是借的,幾乎將近一半的費(fèi)用是在大學(xué)勤工儉學(xué)掙的,為了省錢(qián),高中一個(gè)學(xué)期回家一次,大學(xué)一年回去一次。并且我個(gè)人也有特殊的人生背景(悲景更確切),這里不多說(shuō)了,寫(xiě)十篇也寫(xiě)不完,同時(shí)偏離主題。這樣我就參加了工作。一張報(bào)紙一杯茶的日子,幾乎下班后有種很空虛和恐慌的感覺(jué)。在工作中雖然是與自己專(zhuān)業(yè)有點(diǎn)關(guān)系,但是很少。專(zhuān)業(yè)幾乎荒廢。我自己也思考,如果再不出去,自己將會(huì)成廢人,只好讓國(guó)家養(yǎng)了。兩年后決定出去,但是幾成廢人,誰(shuí)要呢,只好到學(xué)校去鍍金。這是中國(guó)教育和社會(huì)的悲哀!
至于專(zhuān)業(yè)就改為計(jì)算機(jī)方面,聽(tīng)說(shuō)好找工作,我說(shuō)實(shí)話不是很對(duì)計(jì)算機(jī)特別感興趣,生存第一需要。不要笑我,哈哈!
考研成績(jī)出來(lái),超過(guò)了國(guó)家線幾十分。那個(gè)方向要兩個(gè),我第三,但是那年非碘,不面試就按分?jǐn)?shù)來(lái)排,自然我落選了。其實(shí)給我面試機(jī)會(huì)也不一定要我,哈哈,自己幾斤幾兩很清楚。
最后調(diào)劑到另外一個(gè)學(xué)校,交錢(qián),咬咬牙,交吧!現(xiàn)在仍然債臺(tái)高筑!
進(jìn)入學(xué)校前夕
為什么要把這段列出,看后就知道了。
單位有網(wǎng)絡(luò),經(jīng)常上網(wǎng)查些英語(yǔ)資料,在那里唯獨(dú)英語(yǔ)沒(méi)有丟很多。于是我就在網(wǎng)上查資料,學(xué)什么好呢,最后確定學(xué)嵌入式把,聽(tīng)說(shuō)跟硬件相對(duì)比較緊密!而我在大學(xué)里多少學(xué)習(xí)了數(shù)字電路,單片機(jī)等,所以多少也有所利用,不會(huì)真的一無(wú)所知。當(dāng)然在這之前也自學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu),計(jì)算機(jī)組成原理等。
c 語(yǔ)言在大學(xué)就學(xué)了。哈哈這就是我的家底。
我知道自己的基礎(chǔ)差,于是我就拿操作系統(tǒng),數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)、c++來(lái)看,機(jī)關(guān)有這個(gè)好處,空余時(shí)間多,于是平常就看書(shū),很痛苦,沒(méi)有人請(qǐng)教。
另外就上網(wǎng)到論壇上去,我就到各個(gè)專(zhuān)業(yè)的技術(shù)論壇,其實(shí)是電子論壇和嵌入式論壇。我?guī)缀鯖](méi)有發(fā)帖,幾乎把幾個(gè)大型的出名的論壇的帖子翻遍了,雖然有很多重復(fù)的,我才知道嵌入式是個(gè)什么東東。這些帖子對(duì)我以后的學(xué)習(xí)產(chǎn)生了極大的影響。
最關(guān)鍵兩點(diǎn):
1、嵌入式是什么?
2、嵌入式需要哪些知識(shí)?
知道了這兩點(diǎn),好辦!我就開(kāi)始規(guī)劃學(xué)習(xí)路線。計(jì)算機(jī)的基本理論不能丟,于是重點(diǎn)看組成原理,數(shù)據(jù)機(jī)構(gòu),操作系統(tǒng)、c++。同時(shí)論壇上了解到,實(shí)時(shí)操作系統(tǒng)ucos是一個(gè)很好的嵌入式操作系統(tǒng),對(duì)初學(xué)者很好。于是我就買(mǎi)了一本書(shū),但是代碼在電腦里調(diào)不通,網(wǎng)上也有很多相同的問(wèn)題,我就看書(shū),分析代碼,一遍不行就兩遍,三遍,這樣才看了入了門(mén),才知道什么是進(jìn)程。原來(lái)看操作系統(tǒng)書(shū)時(shí),根本就不知道進(jìn)程是個(gè)什么東西。
在這段時(shí)間掌握的東西不多,但是,對(duì)我以后的影響很大,我想起了大學(xué)時(shí)一個(gè)同學(xué)跟我說(shuō)過(guò)了一句話:大學(xué)里最重要的不是學(xué)到了什么,最重要的是學(xué)會(huì)怎么學(xué)!大概是這個(gè)意思。
進(jìn)入我的避難所
對(duì)我來(lái)講,再次進(jìn)入大學(xué)不再是大學(xué),而是避難所。希望這次進(jìn)入給我喘氣和養(yǎng)精蓄銳的機(jī)會(huì)和時(shí)間。我是這樣認(rèn)為和實(shí)踐的。
在學(xué)校我有三件事:上課,上圖書(shū)館,上網(wǎng)。
對(duì)于上課,學(xué)校開(kāi)了很多課程,非常好,很多是名人名師講解,于是很多同學(xué)都想學(xué),都去聽(tīng)。我也考慮過(guò),最后放棄。我是這樣認(rèn)為的,時(shí)間是有限的,什么都想學(xué),什么都學(xué)不成。于是我把我自己學(xué)的課進(jìn)行了分化,一般的課程通過(guò)就行,重要的一定好好學(xué)。我希望不要什么爭(zhēng)論學(xué)習(xí)課程多和少的問(wèn)題,這僅僅是我的看法。所以我的成績(jī)應(yīng)該是很差的。分?jǐn)?shù)低。好在后來(lái)的單位沒(méi)有要我的成績(jī)單,否則就慘了。
我個(gè)人感覺(jué)是上圖書(shū)館的效率比在寢室里高多了,這是我的經(jīng)驗(yàn)。
有人會(huì)問(wèn),您下了那么多資料,怎么看的完和消化的了呢?
我是這樣對(duì)待這個(gè)問(wèn)題的:
1、網(wǎng)上資料比較零散,不系統(tǒng),但是如果把差不多的東西收集起來(lái)看就相對(duì)完整了,(嵌入式的圖書(shū)就是這兩年特別多,特別是2004年,簡(jiǎn)直是向外涌!2003年想買(mǎi)本嵌入式,特別是嵌入式linux的不多。)
2、對(duì)于像我這種入門(mén)的來(lái)說(shuō),很多看不懂,沒(méi)關(guān)系,反復(fù)看,我個(gè)人對(duì)學(xué)習(xí)方法的一個(gè)總結(jié)是:重復(fù)是最好的老師!
3、即使有的用不上,也可以收集以后用的上時(shí)查閱。
但是我并非什么都要,目前我的技術(shù)路線是嵌入式linux,所以像wince之類(lèi)基本上不
收集。
總之,我在學(xué)校里我充分利用時(shí)間來(lái)學(xué)習(xí),我看到一些同學(xué)整天的掛在網(wǎng)上打游戲,發(fā)
些無(wú)關(guān)痛癢的帖子,浪費(fèi)時(shí)間呀!我真的很痛心!
學(xué)習(xí)嵌入式
在這里我把它單獨(dú)列出,文章有點(diǎn)紊亂,但是內(nèi)容希望有益。
1、學(xué)習(xí)linux 根據(jù)我在論壇的了解,我選擇學(xué)習(xí)嵌入式linux,剛好我們學(xué)校也重視嵌入式linux,從實(shí)驗(yàn)室到課程安排都是關(guān)于嵌入式linux方面,天時(shí)地利!這里我把學(xué)習(xí)linux的經(jīng)驗(yàn)和教訓(xùn)說(shuō)說(shuō)。
可以這樣說(shuō),在論壇里說(shuō)道學(xué)習(xí)linux差不多就學(xué)習(xí)linux內(nèi)核。于是我電腦里安裝了linux就開(kāi)始看linux內(nèi)核方面的書(shū)了。我記得來(lái)學(xué)校以前就買(mǎi)到一本陳莉君的講linux內(nèi)核的第一版,現(xiàn)在有第二版了。我就開(kāi)始看那本說(shuō),大家說(shuō)linux內(nèi)核情景分析不錯(cuò),我就買(mǎi)了上下冊(cè),后來(lái)又買(mǎi)了 《深入理解linux內(nèi)核》,最后也買(mǎi)了毛德操的《嵌入式系統(tǒng)》也是分析linux內(nèi)核代碼的,主要講arm相關(guān)的。
看內(nèi)核期間是個(gè)非常痛苦的過(guò)程,看情景分析有種在森林中找出路,其間我組織了一些同學(xué)學(xué)習(xí)內(nèi)核,幾乎沒(méi)有幾個(gè)能堅(jiān)持下來(lái)的。我認(rèn)為我是堅(jiān)持下來(lái)了。情景分析在看第一、第二遍是幾乎沒(méi)有摸到門(mén)道,我分析有三個(gè)方面的原因:
1、自己的基礎(chǔ)差,這是最關(guān)鍵的。
2、內(nèi)核本身很難。
3、沒(méi)有交流和高人指點(diǎn)。到了第三遍時(shí)我才摸到門(mén),才差不多知道個(gè)linux的大概脈絡(luò),很多細(xì)節(jié)也是稀里糊涂。
學(xué)習(xí)linux總結(jié),這里聲明一下,我指的嵌入式主要是偏向軟件的嵌入式。學(xué)習(xí)嵌入式的重點(diǎn)和難點(diǎn)關(guān)鍵在操作系統(tǒng),如果沒(méi)有掌握操作系統(tǒng),我認(rèn)為很難把握一個(gè)嵌入式系統(tǒng)。即使在做嵌入式開(kāi)發(fā)中,作應(yīng)有層的開(kāi)發(fā)幾乎可以不知道操作系統(tǒng)也可以開(kāi)發(fā),我認(rèn)為那是浮在表面的。很難深入和提高自己的層次。聲明:一孔之見(jiàn)!不可深究!
在學(xué)習(xí)linux內(nèi)核過(guò)程中犯了一個(gè)極其嚴(yán)重路線錯(cuò)誤:對(duì)linux幾乎不懂就開(kāi)始學(xué)習(xí)內(nèi)核。我個(gè)人推薦一個(gè)學(xué)習(xí)路線是:使用linux—〉linxu系統(tǒng)編程開(kāi)發(fā)---〉驅(qū)動(dòng)開(kāi)發(fā)和分析linux內(nèi)核。而我差不多相反,實(shí)際上你不會(huì)使用linux也可以學(xué)習(xí)內(nèi)核,但是如果你懂了這些東西學(xué)習(xí)更有效率。
關(guān)于要不要學(xué)習(xí)內(nèi)核的問(wèn)題,我的回答如下:不一定。如果你是喜歡鉆研的那你進(jìn)入內(nèi)核會(huì)滿足你的欲望。同時(shí)對(duì)你以后的嵌入式系統(tǒng)的開(kāi)發(fā)有很好的影響。如果你想從事嵌入式linux系統(tǒng)開(kāi)發(fā),最好對(duì)內(nèi)核有所了解。如果僅僅是做應(yīng)用開(kāi)發(fā)沒(méi)有必要。我打個(gè)比喻:c、c++、java等語(yǔ)言是武林中的某個(gè)武林派別的話,如什么拳法,什么刀法等,那么linux 內(nèi)核應(yīng)該是一個(gè)人的內(nèi)功的反應(yīng)。怎么開(kāi)始學(xué)linux內(nèi)核:最好有三件寶物:《深入理解linux內(nèi)核》《情景分析》和源代碼。
先看《深》,那主要講原理,好像市場(chǎng)上有本講原理性并且更淺,《linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》聽(tīng)說(shuō)不錯(cuò)。如果沒(méi)有學(xué)習(xí)操作系統(tǒng)的,像我這樣的,最好先看看操作系統(tǒng)原理的書(shū)??戳藥妆楹?,就看情景分析,最好對(duì)著《深》看。兩本交叉看,《深》是綱,《情》是目。最后深入代碼。
2、學(xué)習(xí)嵌入式linux 學(xué)習(xí)嵌入式,我認(rèn)為兩個(gè)重點(diǎn),cpu和操作系統(tǒng),目前市場(chǎng)是比較流行arm,所以推薦大家學(xué)習(xí)arm。操作系統(tǒng)很多,我個(gè)人對(duì)開(kāi)始學(xué)習(xí)的人,特別不是計(jì)算機(jī)專(zhuān)業(yè)的,推薦學(xué)習(xí)ucos。那是開(kāi)源的,同時(shí)很小。學(xué)習(xí)很好。為什么選linux,我不想講太多,網(wǎng)上這方面的太多,但是我在工作中發(fā)現(xiàn),做linux的技術(shù)路線很難,在windows幾乎不會(huì)有的問(wèn)題,在linux開(kāi)發(fā)中幾乎遍地陷阱。一掉進(jìn)去劃很長(zhǎng)時(shí)間出來(lái),一旦解決自己又長(zhǎng)進(jìn)了!相對(duì)來(lái)說(shuō)開(kāi)發(fā)周期長(zhǎng),難度大?,F(xiàn)在資料也逐漸豐富起來(lái),難度也降低了些!
至于怎么學(xué)習(xí),這是他的特色地方,必須有塊開(kāi)發(fā)板,我是同學(xué)里最早買(mǎi)學(xué)習(xí)板的,雖然化錢(qián),我認(rèn)為值。對(duì)我實(shí)習(xí)和工作產(chǎn)生了很大的影響。
如果沒(méi)有開(kāi)發(fā)板,那是紙上談兵。有人說(shuō),那要1000-2000亞,的確是,兄弟,看長(zhǎng)遠(yuǎn)的,對(duì)您的職業(yè)和發(fā)展那點(diǎn)錢(qián)不算什么!有的人說(shuō)我站著說(shuō)話不腰痛,好吧,錢(qián)這東西對(duì)我影響很大,我在大學(xué)里掃廁所,掃的不錯(cuò),獎(jiǎng)5元/月。兄弟你有過(guò)嗎?我認(rèn)為教育投資是效益最有保障的!我實(shí)習(xí)拿3k,很多同學(xué)拿1-2k,當(dāng)然比我高的也有。雖然我現(xiàn)在沒(méi)有畢業(yè),但一家公司就簽了。從事目前流行的高檔的消費(fèi)電子的研發(fā)。對(duì)于我兩年前一無(wú)所知的我,應(yīng)該有質(zhì)的變化,我感謝學(xué)校收了我這個(gè)廢品。當(dāng)然我也非常的努力。說(shuō)這么多并不是要炫耀我什么,實(shí)際上根本不值得炫耀,雖然現(xiàn)在工作環(huán)境和待遇比較滿意,但是,我發(fā)現(xiàn)我很差,特別是代碼能力,我希望平常大家少玩游戲,多編程。編程才是硬道理!
3、學(xué)習(xí)板和培訓(xùn) 你可以不接受培訓(xùn),但是不能不買(mǎi)開(kāi)發(fā)板。如果你想學(xué)習(xí)嵌入式一定要買(mǎi)塊學(xué)習(xí)板,最好買(mǎi)塊arm9的,貴些也值。可以跑高級(jí)操作系統(tǒng)。這個(gè)不要什么品牌公司的,一般不會(huì)出什么問(wèn)題,市場(chǎng)上的板子一般是三星的2410,基本上是抄的。如果是做產(chǎn)品那要注意些。一般的公司一般要2000,加lcd要3000甚至更多。我接觸到有的板只要1200,加lcd也就2000,差別比較大,我認(rèn)為學(xué)習(xí)都?jí)蚶病?/p>
對(duì)于培訓(xùn),如果有條件最好參加,主要是嵌入式相對(duì)別的不同,自己摸索很費(fèi)時(shí),如果有高手指點(diǎn)非常的好,進(jìn)步快。特別是認(rèn)識(shí)做這些的朋友。我接受過(guò)培訓(xùn),認(rèn)識(shí)個(gè)朋友。在以后的工作中幫我很多,在這里謝謝他!我記得哈佛的一個(gè)mba的學(xué)生這樣說(shuō),大意是:在哈佛學(xué)到什么不重要,最重要的是這些未來(lái)各大公司的高級(jí)管理人員是我的同學(xué)!真是有遠(yuǎn)見(jiàn)!
目前市場(chǎng)是培訓(xùn)比較貴,一個(gè)星期兩三千,真正算起來(lái)也要,那些講師待遇絕對(duì)不會(huì)低。但是有個(gè)致命的問(wèn)題是連續(xù)上課,一連幾天,效果不佳。我希望社會(huì)上多出些1000元左右,并且時(shí)間長(zhǎng)些,如一個(gè)月,一周一到兩次課。如果沒(méi)人做,我來(lái)做,哈哈!
沒(méi)有想到,一下寫(xiě)了這么多,其實(shí)還想寫(xiě)的,比如在中科院的一位老兄是怎樣學(xué)習(xí)linux內(nèi)核和看書(shū)的,真的很感動(dòng)。他的為人我很欽佩。
第五篇:嵌入式系統(tǒng)實(shí)驗(yàn)報(bào)告
嵌入式系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告
班 級(jí):學(xué) 號(hào):姓 名:成 績(jī):指導(dǎo)教師:
20110612 2011061208 李曉虹 武俊鵬、劉書(shū)勇
1.實(shí)驗(yàn)一
1.1 實(shí)驗(yàn)名稱(chēng)
博創(chuàng)UP-3000實(shí)驗(yàn)臺(tái)基本結(jié)構(gòu)使用方法
1.2 實(shí)驗(yàn)?zāi)康?/p>
1.熟悉嵌入式系統(tǒng)開(kāi)發(fā)式流程概述。
2.熟悉UP-net3000實(shí)驗(yàn)平臺(tái)的核心硬件電路和外設(shè)。3.熟悉ARM JTAG的安裝與使用。
1.3 實(shí)驗(yàn)環(huán)境
硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。
軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開(kāi)發(fā)
環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。
1.4 實(shí)驗(yàn)內(nèi)容及要求
1.熟悉嵌入式系統(tǒng)開(kāi)發(fā)式流程概述。
2.熟悉UP-net3000實(shí)驗(yàn)平臺(tái)的核心硬件電路和外設(shè)。3.熟悉ARM JTAG的安裝與使用。
1.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟
1.新建超級(jí)終端
2.選擇ARM 開(kāi)發(fā)實(shí)驗(yàn)臺(tái)串口。
完成新建超級(jí)終端的設(shè)置以后,可以選擇超級(jí)終端文件菜單中的保存,將當(dāng)前設(shè)置 3.保存為一個(gè)特定超級(jí)終端到桌面上,以備后用。用串口線將PC 機(jī)串口和平臺(tái)UART0 正確連接后,就可以在超級(jí)終端上看到程序輸出的信息了。4.啟動(dòng)開(kāi)發(fā)板,按住任意鍵,使開(kāi)發(fā)板進(jìn)入BIOS設(shè)置狀態(tài)。
5.在超級(jí)終端的界面上,顯示BIOS版本信息,以及相應(yīng)的測(cè)試指令。操作時(shí),要在PC機(jī)上輸入小寫(xiě)的字母快捷鍵,進(jìn)入到相應(yīng)的功能中去。6.按照超級(jí)終端上的提示信息,進(jìn)行功能的測(cè)試。
1.6 實(shí)驗(yàn)過(guò)程與分析
本次實(shí)驗(yàn)操作起來(lái)并不困難,因?yàn)榇舜螌?shí)驗(yàn)屬于驗(yàn)證型實(shí)驗(yàn),按照實(shí)驗(yàn)資料所給的提示信息,以上面的步驟,即可得到實(shí)驗(yàn)的結(jié)果。進(jìn)入到BIOS界面后,按照超級(jí)終端上的提示信息來(lái)進(jìn)行功能
1.7 實(shí)驗(yàn)結(jié)果總結(jié)
在實(shí)驗(yàn)過(guò)程中,我們進(jìn)行的很順利,沒(méi)有遇到什么問(wèn)題,在超級(jí)終端界面,按提示的快
捷鍵來(lái)測(cè)試對(duì)應(yīng)的功能。如
e:測(cè)試由ZLG7289 驅(qū)動(dòng)的LED 顯示,共分3 步,請(qǐng)看超級(jí)終端提示按任意鍵繼續(xù),同 時(shí)觀察LED 的變化,最后返回主菜單。
b:引導(dǎo)FLASH 中的應(yīng)用程序system.bin。執(zhí)行該功能將退出BIOS 狀態(tài),把控制交給應(yīng) 用程序,等。
1.8 心得體會(huì)
通過(guò)此次實(shí)驗(yàn),我對(duì)于實(shí)驗(yàn)環(huán)境有了初步的了解與認(rèn)識(shí),對(duì)于嵌入式也有了更深一步的認(rèn)識(shí)。同時(shí)實(shí)驗(yàn)過(guò)程中,我學(xué)會(huì)了第一次接觸的超級(jí)終端的使用方法,并能夠熟練掌握,知道其工作的原理。
2.實(shí)驗(yàn)二
2.1 實(shí)驗(yàn)名稱(chēng)
ADS1.2軟件開(kāi)發(fā)環(huán)境使用方法
2.2 實(shí)驗(yàn)?zāi)康?/p>
1.熟悉ADS1.2 開(kāi)發(fā)環(huán)境,學(xué)會(huì)ARM 仿真器的使用。
2.使用ADS 編譯、下載、調(diào)試并跟蹤一段已有的程序,了解嵌入式開(kāi)發(fā)的基本思想和過(guò)程。
2.3 實(shí)驗(yàn)環(huán)境
硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。
軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開(kāi)發(fā)
環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。
2.4 實(shí)驗(yàn)內(nèi)容及要求
掌握AXD Debugger的使用方法,學(xué)習(xí)串行通訊原理,了解串行通訊控制器,閱讀ARM 芯片文檔,掌握ARM 的UART相關(guān)寄存器的功能,熟悉ARM 系統(tǒng)硬件的UART 相關(guān)接口。編程實(shí)現(xiàn)ARM 和計(jì)算機(jī)之間的串行通訊:ARM 監(jiān)視串行口;將接收到的字符再發(fā)送給串口(計(jì)算機(jī)與開(kāi)發(fā)板是通過(guò)超級(jí)終端通訊的);即按PC 鍵盤(pán)通過(guò)超級(jí)終端發(fā)送數(shù)據(jù),開(kāi)發(fā)板將接收到的數(shù)據(jù)再返送給PC,在超級(jí)終端上顯示。
2.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟
(1)新建工程,選擇菜單中的Project | Add Files 把和工程相關(guān)的所有文件包括init和startup 子目錄加入到工程中。ADS1.2 不能自動(dòng)按文件類(lèi)別對(duì)這些文件進(jìn)行分類(lèi),需要的話可以執(zhí)行菜單Project | Create Group 創(chuàng)建文件組,然后分別將不同類(lèi)的文件加入到不同的組,以方便管理。(另一種辦法是,在新建工程時(shí)ADS 創(chuàng)建了和工程同名的目錄,在該目錄下按類(lèi)別創(chuàng)建子目錄并存放工程文件。選中所有目錄拖動(dòng)到任務(wù)欄上的ADS 任務(wù)條上,不要松
開(kāi)鼠標(biāo)當(dāng)ADS 窗口恢復(fù)后再拖動(dòng)到工程文件窗口,松開(kāi)鼠標(biāo)。這樣ADS 將以子目錄名建立同名文件組并以此對(duì)文件分類(lèi)。)
(2)雙擊Main.c 打開(kāi)該文件,可以看到Main()函數(shù)的內(nèi)容如下所示。int main(void){ ARMTargetInit();//開(kāi)發(fā)版初始化 LCD_Init();LCD_ChangeMode(DspTxtMode);//轉(zhuǎn)換LCD 顯示模式為文本顯示模式 LCD_Cls();//文本模式下清屏命令
LCD_printf(“Hello world!n”);//向液晶屏輸出 Uart_Printf(“nHello world!n”);//向串口輸出 while(1);}(3)利用上個(gè)實(shí)驗(yàn)中的通訊軟件超級(jí)終端來(lái)將生成的文件放到嵌入式開(kāi)發(fā)平臺(tái)中。(4)重啟實(shí)驗(yàn)臺(tái)即可看到LCD上顯示的“Hello world!” 2.6 實(shí)驗(yàn)過(guò)程與分析
新建工程,然后將所需的工程文件加載打工程目錄下,編譯生成system.bin文件,將文件導(dǎo)入到實(shí)驗(yàn)臺(tái)中,然后重啟實(shí)驗(yàn)臺(tái),即可得到實(shí)驗(yàn)結(jié)果。
2.7 實(shí)驗(yàn)結(jié)果總結(jié)
超級(jí)終端輸出一些相對(duì)應(yīng)的代碼的執(zhí)行結(jié)果。熟悉了ADS1.2 開(kāi)發(fā)環(huán)境以及學(xué)會(huì)了ARM 仿真器的基本使用。使用ADS 編譯、下載、調(diào)試并跟蹤一段已有的程序,并大致了解了嵌入式開(kāi)發(fā)的基本思想和過(guò)程。
2.8 心得體會(huì)
通過(guò)此次實(shí)驗(yàn),我對(duì)于嵌入式開(kāi)發(fā)的基本思想有了一定的了解,嵌入式開(kāi)發(fā)采用的是交叉編譯環(huán)境,所以在一些方面會(huì)有所限制。對(duì)于初學(xué)者來(lái)說(shuō),通過(guò)一兩次實(shí)驗(yàn)結(jié)果的演示就能夠?qū)?shí)驗(yàn)臺(tái)有深入的了解不可能的,所以在后續(xù)的實(shí)驗(yàn)中,我要好好努力,認(rèn)真做好課程實(shí)驗(yàn)為后續(xù)的課程設(shè)計(jì)實(shí)驗(yàn)打下基礎(chǔ)。
3.實(shí)驗(yàn)三
3.1 實(shí)驗(yàn)名稱(chēng)
鍵盤(pán)及LED實(shí)驗(yàn)
3.2 實(shí)驗(yàn)?zāi)康?/p>
1.學(xué)習(xí)鍵盤(pán)及LED 驅(qū)動(dòng)原理。
2.掌握Z(yǔ)LG7289芯片串行接口的使用方法,用ZLG7289芯片驅(qū)動(dòng)17鍵的鍵盤(pán)和8個(gè)共陰極LED。
3.3 實(shí)驗(yàn)環(huán)境
硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。
軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開(kāi)
發(fā)
環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。
3.4 實(shí)驗(yàn)內(nèi)容及要求
編寫(xiě)出一段程序,要求能在LED上顯示出小鍵盤(pán)上按下的4位數(shù)字。
3.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟
1.新建工程,將“Exp3 鍵盤(pán)及LED 驅(qū)動(dòng)實(shí)驗(yàn)”中的文件添加到工程。2.定義ZLG7289 寄存器(ZLG7289.h)。3.編寫(xiě)ZLG7289 驅(qū)動(dòng)函數(shù)(ZLG7289.c)。4.定義鍵盤(pán)映射表:(Keyboard16.c)。5.定義鍵值讀取函數(shù)。
6.編寫(xiě)主函數(shù),將按鍵值在數(shù)碼管上顯示。
3.6 實(shí)驗(yàn)過(guò)程與分析
此次實(shí)驗(yàn)中,我們根據(jù)已有實(shí)驗(yàn),進(jìn)行調(diào)試,查看程序的運(yùn)行效果。根據(jù)效果,我們又回到實(shí)驗(yàn)代碼中,然后對(duì)代碼進(jìn)行深入的研究,查看每部分功能所對(duì)應(yīng)的代碼,通過(guò)不斷的調(diào)試編譯,我們最終對(duì)該實(shí)驗(yàn)用到的代碼有了更深的認(rèn)識(shí)。從而能夠按照要求,完成我們自己實(shí)驗(yàn)。
3.7 實(shí)驗(yàn)結(jié)果總結(jié)
通過(guò)小鍵盤(pán)的按鍵,鍵值可以在LED上顯示出來(lái)。并學(xué)習(xí)了鍵盤(pán)及LED 驅(qū)動(dòng)原理以及掌握了ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驅(qū)動(dòng)17鍵的鍵盤(pán)和8個(gè)共陰極LED。
3.8 心得體會(huì)
在這次實(shí)驗(yàn)中讓我對(duì)嵌入式的實(shí)驗(yàn)箱有了進(jìn)一步的認(rèn)識(shí),并且進(jìn)一步了解的ARM實(shí)驗(yàn)的原理和實(shí)驗(yàn)情況,能夠?qū)υ创a進(jìn)行正確了理解。并且能修改這些源代碼能夠使其工作在自己的預(yù)期的工作狀態(tài)和輸出自己想要的結(jié)果
4.實(shí)驗(yàn)四
4.1 實(shí)驗(yàn)名稱(chēng)
電機(jī)轉(zhuǎn)動(dòng)控制及中斷實(shí)驗(yàn)
4.2 實(shí)驗(yàn)?zāi)康?/p>
1.熟悉ARM本身自帶的六路即三對(duì)PWM,掌握相應(yīng)寄存器的配置。
2.編程實(shí)現(xiàn)ARM系統(tǒng)的PWM輸出和I/O輸出,前者用于控制直流電機(jī),后者用于控制步進(jìn)電機(jī)。
3.了解直流電機(jī)和步進(jìn)電機(jī)的工作原理,學(xué)會(huì)用軟件的方法實(shí)現(xiàn)步進(jìn)電機(jī)的脈沖分配,即用軟件的方法代替硬件的脈沖分配器。
4.了解44B0處理器上中斷的應(yīng)用。
5.學(xué)習(xí)在44B0處理器上中斷的應(yīng)用。
6.進(jìn)一步熟悉平臺(tái)外圍硬件及其驅(qū)動(dòng)程序的編寫(xiě)。
4.3 實(shí)驗(yàn)環(huán)境
硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。
軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。
4.4 實(shí)驗(yàn)內(nèi)容及要求
1.編程實(shí)現(xiàn)ARM芯片的一對(duì)PWM輸出用于控制直流電機(jī)的轉(zhuǎn)動(dòng),通過(guò)A/D旋鈕控制其轉(zhuǎn)動(dòng)方式。
2.編程實(shí)現(xiàn)ARM的四路I/O通道,實(shí)現(xiàn)環(huán)形脈沖分配用于控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng),通過(guò)A/D旋鈕控制步進(jìn)電機(jī)的轉(zhuǎn)角。
3.通過(guò)鍵盤(pán)控制直流電機(jī)與步進(jìn)電機(jī)的切換。4.設(shè)置并啟動(dòng)定時(shí)器。
5.設(shè)置中斷,編寫(xiě)定時(shí)器中斷服務(wù)程序,對(duì)中斷次數(shù)進(jìn)行計(jì)數(shù)并在LED上顯示結(jié)果。
4.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟
1.添加并打開(kāi)工程。
2.進(jìn)行直流電機(jī)初始化設(shè)置和代碼編寫(xiě)。3.進(jìn)行步進(jìn)電機(jī)初始化設(shè)置和代碼編寫(xiě)。
4.對(duì)Timer3編程,編寫(xiě)定時(shí)器中斷服務(wù)程序,完成對(duì)中斷次數(shù)的計(jì)數(shù)。5.編寫(xiě)LED計(jì)數(shù)顯示函數(shù),使LED能正確計(jì)數(shù)并顯示0-9999。6.編寫(xiě)中斷初始化函數(shù)和中斷響應(yīng)函數(shù)。7.終端下載測(cè)試。
4.6 實(shí)驗(yàn)過(guò)程與分析
1.對(duì)直流電機(jī)進(jìn)行編程和測(cè)試,掌握轉(zhuǎn)速和旋轉(zhuǎn)方向的設(shè)定方法。2.對(duì)步進(jìn)電機(jī)進(jìn)行編程和測(cè)試,掌握ARM的四路I/O通道,實(shí)現(xiàn)環(huán)形脈沖分配用于控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng),通過(guò)A/D旋鈕控制步進(jìn)電機(jī)的轉(zhuǎn)角。
3.對(duì)主函數(shù)進(jìn)行編程,用鍵盤(pán)響應(yīng)直流電機(jī)與步進(jìn)電機(jī)的切換控制。
4.掌握中斷相關(guān)語(yǔ)句的應(yīng)用,弄清定義的中斷向量、中斷向量號(hào),編寫(xiě)中斷響應(yīng)函數(shù),并完成中斷響應(yīng)控制。
4.7 實(shí)驗(yàn)結(jié)果總結(jié)
實(shí)現(xiàn)了直流電機(jī)與步進(jìn)電機(jī)的基本設(shè)置和控制,可以通過(guò)鍵盤(pán)控制電機(jī)之間的切換。完成了中斷的響應(yīng)和定時(shí)中斷。
在通過(guò)本次實(shí)驗(yàn),我初步了解的實(shí)驗(yàn)的目的所在,并且利用所給的源代碼能夠,調(diào)試出所預(yù)期的結(jié)果,而且能夠根據(jù)已給的源代碼修改得到所需的結(jié)果。
4.8 心得體會(huì)
通過(guò)本次實(shí)驗(yàn),掌握了電機(jī)工作原理,了解了中斷的意義和實(shí)現(xiàn)方法,實(shí)現(xiàn)了簡(jiǎn)單了中
斷處理程序,更加了解了中斷的意義。
5.實(shí)驗(yàn)五
5.1 實(shí)驗(yàn)名稱(chēng)
LCD驅(qū)動(dòng)控制實(shí)驗(yàn)及觸摸屏驅(qū)動(dòng)實(shí)驗(yàn)
5.2 實(shí)驗(yàn)?zāi)康?/p>
1.了解觸摸屏的基本概念與原理。
2.理解觸摸屏與LCD的關(guān)系。3.編程實(shí)現(xiàn)對(duì)觸摸屏的控制。
5.3 實(shí)驗(yàn)環(huán)境
硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。
軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。
5.4 實(shí)驗(yàn)內(nèi)容及要求
1.了解觸摸屏基本原理,理解對(duì)觸摸屏進(jìn)行輸出標(biāo)定、與LCD顯示器配合的過(guò)程。2.通過(guò)編程實(shí)現(xiàn)觸摸兩點(diǎn)自動(dòng)在兩點(diǎn)間劃直線。3.通過(guò)編程實(shí)現(xiàn)在觸摸屏上動(dòng)態(tài)畫(huà)出曲線。
5.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟
1.添加并打開(kāi)工程。
2.在頭文件中定義宏和常量及驅(qū)動(dòng)函數(shù)。3.校準(zhǔn)觸摸屏坐標(biāo),進(jìn)行坐標(biāo)轉(zhuǎn)換。4.實(shí)現(xiàn)觸屏取點(diǎn)并顯示功能。5.實(shí)現(xiàn)兩點(diǎn)間自動(dòng)劃線功能。6.實(shí)現(xiàn)觸摸屏動(dòng)態(tài)劃線功能。
5.6 實(shí)驗(yàn)過(guò)程與分析
1.在定義觸屏響應(yīng)功能的函數(shù)中對(duì)點(diǎn)擊觸屏進(jìn)行響應(yīng)函數(shù)的修改,在其中添加修改點(diǎn)顏色的函數(shù),修改得到的觸摸點(diǎn)的顏色,并顯示在LCD上。
2.獲取第一個(gè)點(diǎn)坐標(biāo)并儲(chǔ)存,獲取第二個(gè)點(diǎn)坐標(biāo)并儲(chǔ)存,編寫(xiě)劃線函數(shù),取得兩點(diǎn)間直線上所有點(diǎn)的坐標(biāo),并對(duì)其改變顏色,顯示在LCD上,即完成劃直線功能。
3.將劃線函數(shù)應(yīng)用到響應(yīng)觸屏移動(dòng)消息的函數(shù)下,即可對(duì)連續(xù)獲得的觸摸坐標(biāo)進(jìn)行連續(xù)的畫(huà)短直線,連接成曲線,完成動(dòng)態(tài)劃線功能。
5.7 實(shí)驗(yàn)結(jié)果總結(jié)
了解了觸摸屏響應(yīng)動(dòng)作消息的函數(shù)的工作原理,通過(guò)修改實(shí)現(xiàn)了觸摸屏響應(yīng)不同動(dòng)作進(jìn)行畫(huà)點(diǎn)、劃線、動(dòng)態(tài)劃線的功能。
5.8 心得體會(huì)
通過(guò)本次實(shí)驗(yàn),使我了解了怎么在一塊嵌入式實(shí)驗(yàn)箱 通過(guò)編程控制實(shí)驗(yàn)箱上得硬件,比如在本次實(shí)驗(yàn)中的控制LCD屏幕就是,在屏幕上點(diǎn)擊,然后得到在LCD屏上點(diǎn)擊的位置。本次實(shí)驗(yàn)初步完成了實(shí)驗(yàn)結(jié)果。
6.實(shí)驗(yàn)六
6.1 實(shí)驗(yàn)名稱(chēng)
UCOS-Ⅱ在ARM微處理器上的裁剪
6.2 實(shí)驗(yàn)?zāi)康?/p>
1.了解UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu)。
2.掌握UCOS-Ⅱ裁剪的基本原理與嵌入式編程實(shí)現(xiàn)方法。3.學(xué)習(xí)如何根據(jù)具體情況對(duì)UCOS-Ⅱ操作系統(tǒng)進(jìn)行裁剪。
4.通過(guò)對(duì)UCOS-Ⅱ配置文件(OS_CFG.H)中相關(guān)的配置常量進(jìn)行設(shè)置,實(shí)現(xiàn)對(duì)UCOS-Ⅱ的裁剪。
6.3 實(shí)驗(yàn)環(huán)境
硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。
軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。
6.4 實(shí)驗(yàn)內(nèi)容及要求
對(duì)UCOS-Ⅱ內(nèi)核進(jìn)行裁剪并移植到ARM7微處理器上。
6.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟
編輯OS_CFG.H文件。OS_CFG.H文件中的內(nèi)容可分為兩大類(lèi):服務(wù)功能的配置和數(shù)據(jù)結(jié)構(gòu)的配置。
一.服務(wù)功能的配置:
根據(jù)程序中的實(shí)際情況,保留自己要用的系統(tǒng)服務(wù)功能,刪除自己不需要的服務(wù)功能。進(jìn)行合理配置后,是我們自己系統(tǒng)的目標(biāo)代碼比較緊湊,從而降低了對(duì)程序代碼存儲(chǔ)空間的要求。如果代碼存儲(chǔ)空間足夠大的話,那就將全部系統(tǒng)服務(wù)功能全部配置為1。不需要考慮功能裁剪。
二.?dāng)?shù)據(jù)結(jié)構(gòu)功能的配置: 與任務(wù)有關(guān)的數(shù)據(jù)結(jié)構(gòu) 1.OS_MAX_TASKS 作用:設(shè)置用戶程序中可以使用的最多任務(wù)數(shù)。說(shuō)明:該值不能超過(guò)62.舉例: 若程序中用到了三個(gè)任務(wù),則該值的最小值 2.OS_LOWEST_PRIO 作用:設(shè)置程序中最低任務(wù)的優(yōu)先級(jí)。
說(shuō)明: 設(shè)定該值可以節(jié)省操作系統(tǒng)使用RAM的空間。任務(wù)的最低優(yōu)先級(jí)和最大任務(wù)數(shù)是沒(méi)有直接關(guān)系的。
6.6 實(shí)驗(yàn)過(guò)程與分析
按照實(shí)驗(yàn)指導(dǎo)書(shū)上的步驟進(jìn)行,得到了要求的系統(tǒng)。
6.7 實(shí)驗(yàn)結(jié)果總結(jié)
按照要求進(jìn)行了裁剪,得到了滿足需要又緊湊的應(yīng)用軟件系統(tǒng)。
6.8 心得體會(huì)
了解了UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu),掌握了UCOS-Ⅱ裁剪的基本原理與嵌入式編程實(shí)現(xiàn)方法,學(xué)會(huì)了如何根據(jù)具體情況對(duì)UCOS-Ⅱ操作系統(tǒng)進(jìn)行裁剪
7.實(shí)驗(yàn)七
7.1 實(shí)驗(yàn)名稱(chēng)
ucos-II移植實(shí)驗(yàn)
7.2 實(shí)驗(yàn)?zāi)康?/p>
1.了解UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu)。
2.掌握將UCOS-Ⅱ內(nèi)核移植到ARM7處理器上的基本方法。
7.3 實(shí)驗(yàn)環(huán)境
硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。
軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。
7.4 實(shí)驗(yàn)內(nèi)容及要求
1.將UCOS-Ⅱ內(nèi)核進(jìn)行移植到ARM7微處理器上。
2.編寫(xiě)兩個(gè)簡(jiǎn)單任務(wù),在超級(jí)終端上觀察兩個(gè)任務(wù)的切換。
7.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟
1.該實(shí)驗(yàn)的文件分為兩類(lèi),其一是STARTUP 目錄下的系統(tǒng)初始化、配置等文件,其二是uCOS-II 的全部源碼,arch 目錄下的3 個(gè)文件是和處理器架構(gòu)相關(guān)的。
2.設(shè)置os_cpu.h 中與處理器和編譯器相關(guān)的代碼
3.用C 語(yǔ)言編寫(xiě)6 個(gè)操作系統(tǒng)相關(guān)的函數(shù)(OS_CPU_C.C)4.用匯編語(yǔ)言編寫(xiě)4 個(gè)與處理器相關(guān)的函數(shù)(OS_CPU.ASM)5.編寫(xiě)一個(gè)簡(jiǎn)單的多任務(wù)程序來(lái)測(cè)試一下移植是否成功。
為了使 uCOS-II 可以正常運(yùn)行,除了上述必須的移植工作外,硬件初始化和配置文件也是必須的。STARTUP 目錄下的文件還包括中斷處理,時(shí)鐘,串口通信等基本功能函數(shù)。在文件 main.c 中給出了應(yīng)用程序的基本框架,包括初始化和多任務(wù)的創(chuàng)建,啟動(dòng)等。任務(wù)
創(chuàng)建方法如下:
①在程序開(kāi)頭定義任務(wù)堆棧,任務(wù)函數(shù)聲明和任務(wù)優(yōu)先級(jí) ②在main()函數(shù)中調(diào)用OSStart()函數(shù)之前用下列語(yǔ)句創(chuàng)建任務(wù) ③編寫(xiě)任務(wù)函數(shù)內(nèi)容
6.編譯并下載移植后的uCOS-II 所有的源代碼都準(zhǔn)備好后就可以進(jìn)行編譯了。在ADS 環(huán)境下需要設(shè)置工程的訪問(wèn)路徑。從菜單Edit | Debug Settings 進(jìn)入設(shè)置對(duì)話框,在Target | Access Paths 中選擇User Paths 并選上Always search user paths。然后點(diǎn)Add 按鈕添加路徑ucos-ii 和arch。這主要是設(shè)置編譯器處理文件包含時(shí)的搜索范圍。按照實(shí)驗(yàn)一的方法可以對(duì)編譯后的代碼進(jìn)行調(diào)試或下載到平臺(tái)的電子硬盤(pán)中。這個(gè)實(shí)驗(yàn)從結(jié)構(gòu)上看和其他的實(shí)驗(yàn)沒(méi)有多大區(qū)別,同樣生成可執(zhí)行文件system.bin。可以在平臺(tái)BIOS中激活電子硬盤(pán),然后把system.bin 拷貝進(jìn)去,重啟平臺(tái),然后在超級(jí)終端上觀察結(jié)果。
7.6 實(shí)驗(yàn)過(guò)程與分析
操作系統(tǒng)相關(guān)的函數(shù):(1)OSTaskStkInit OSTaskCreate()和OSTaskCreateExt()通過(guò)調(diào)用OSTaskStkInit()來(lái)初始化任務(wù)的堆棧結(jié)構(gòu)。因此,堆棧看起來(lái)就像剛發(fā)生過(guò)中斷并將所有的寄存器保存到堆棧中的情形一樣。圖12A-2 顯示了OSTaskStkInt()放到正被建立的任務(wù)堆棧中的東西。這里我們定義了堆棧是從上往下 長(zhǎng)的。在用戶建立任務(wù)的時(shí)候,用戶傳遞任務(wù)的地址,pdata 指針,任務(wù)的堆棧棧頂和任務(wù)的優(yōu)先級(jí)給OSTaskCreate()和OSTaskCreateExt()。一旦用戶初始化了堆棧,OSTaskStkInit()就需要返回堆棧指針?biāo)傅牡刂?。OSTaskCreate()和OSTaskCreateExt()會(huì)獲得該地址并將它保存到任務(wù)控制塊(OS_TCB)中。
(2)OSTaskCreateHook 當(dāng)用OSTaskCreate()和OSTaskCreateExt()建立任務(wù)的時(shí)候就會(huì)調(diào)用OSTaskCreateHook()。該函數(shù)允許用戶或使用移植實(shí)例的用戶擴(kuò)展uCOS-II 功能。當(dāng)uCOS-II 設(shè)置完了自己的內(nèi)部結(jié)構(gòu)后,會(huì)在調(diào)用任務(wù)調(diào)度程序之前調(diào)用OSTaskCreateHook()。該函數(shù)被調(diào)用的時(shí)候中斷是禁止的。因此用戶應(yīng)盡量減少該函數(shù)中的代碼以縮短中斷的響應(yīng)時(shí)間。當(dāng) OSTaskCreateHook()被調(diào)用的時(shí)候,它會(huì)收到指向已建立任務(wù)的OS_TCB 的指針,這 樣它就可以訪問(wèn)所有的結(jié)構(gòu)成員了。函數(shù)原型:void OSTaskCreateHook(OS_TCB *ptcb)
(3)OSTaskDelHook 當(dāng)任務(wù)被刪除的時(shí)候就會(huì)調(diào)用OSTaskDelHook()。該函數(shù)在把任務(wù)從uCOS-II 的內(nèi)部任 務(wù)鏈表中解開(kāi)之前被調(diào)用。當(dāng)OSTaskDelHook()被調(diào)用的時(shí)候,它會(huì)收到指向正被刪除任務(wù) 的OS_TCB 的指針,這樣它就可以訪問(wèn)所有的結(jié)構(gòu)成員了。OSTaskDelHook()可以來(lái)檢驗(yàn)TCB擴(kuò)展是否被建立(一個(gè)非空指針)并進(jìn)行一些清除操作。函數(shù)原型:void OSTaskDelHook(OS_TCB *ptcb)(4)OSTaskSwHook 當(dāng)發(fā)生任務(wù)切換的時(shí)候就會(huì)調(diào)用OSTaskSwHook()。OSTaskSwHook()可以直接訪問(wèn) OSTCBCur 和OSTCBHighRdy,因?yàn)樗鼈兪侨肿兞?。OSTCBCur 指向被切換出去的任務(wù) OS_TCB,而OSTCBHighRdy 指向新任務(wù)OS_TCB。注意在調(diào)用OSTaskSwHook()期間中斷 一直是被禁止的。因此用戶應(yīng)盡量減少該函數(shù)中的代碼以縮短中斷的響應(yīng)時(shí)間。函數(shù)原型:void OSTaskSwHook(void)
(5)OSTaskStatHook OSTaskStatHook()每秒鐘都會(huì)被OSTaskStat()調(diào)用一次。用戶可以用OSTaskStatHook()
來(lái)擴(kuò)展統(tǒng)計(jì)功能。例如,用戶可以保持并顯示每個(gè)任務(wù)的執(zhí)行時(shí)間,每個(gè)任務(wù)所用的CPU 份額,以及每個(gè)任務(wù)執(zhí)行的頻率等。函數(shù)原型:void OSTaskStatHook(void)(6)OSTimeTickHook OSTimeTickHook()在每個(gè)時(shí)鐘節(jié)拍都會(huì)被OSTaskTick()調(diào)用。實(shí)際上OSTimeTickHook()是在節(jié)拍被uCOS-II 真正處理,并通知用戶的移植實(shí)例或應(yīng)用程序之前被調(diào)用的。函數(shù)原型:void OSTimeTickHook(void)
7.7 實(shí)驗(yàn)結(jié)果總結(jié)
在超級(jí)終端上輸出輪流交替run task1和run task2,表明系統(tǒng)正在不斷交替運(yùn)行2個(gè)任務(wù)。
7.8 心得體會(huì)
在這個(gè)實(shí)驗(yàn)中我們初步了解和測(cè)試了實(shí)驗(yàn)的內(nèi)容和源代碼實(shí)驗(yàn)結(jié)果基本上符合預(yù)期的要求。了解了μC/OS-II 內(nèi)核的主要結(jié)構(gòu)和ARM7處理器結(jié)構(gòu),掌握了將μC/OS-II 內(nèi)核移植到ARM 7 處理器上的基本原理與嵌入式編程實(shí)現(xiàn)方法。
8.實(shí)驗(yàn)八
8.1 實(shí)驗(yàn)名稱(chēng)
各接口模塊相互銜接綜合實(shí)驗(yàn)
8.2 實(shí)驗(yàn)?zāi)康?/p>
利用前7次實(shí)驗(yàn)所學(xué)的知識(shí),綜合設(shè)計(jì)一個(gè)至少含有5個(gè)模塊的實(shí)驗(yàn)。
8.3 實(shí)驗(yàn)環(huán)境
硬件:ARM 嵌入式開(kāi)發(fā)平臺(tái)、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以 上、串口線。
軟件:PC 機(jī)操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序。
8.4 實(shí)驗(yàn)內(nèi)容及要求
1.回顧串口、鍵盤(pán)、LED接口、A/D、電機(jī)轉(zhuǎn)動(dòng)、定時(shí)器中斷、LCD接口及觸摸屏驅(qū)動(dòng)控制接口模塊驅(qū)動(dòng)設(shè)計(jì)及開(kāi)發(fā)方法。
2.綜合應(yīng)用以上全部或者部分模塊,實(shí)現(xiàn)一個(gè)嵌入式綜合應(yīng)用系統(tǒng),要求至少5個(gè)模塊。
3.盡量使綜合應(yīng)用具有合理功能。
8.5 實(shí)驗(yàn)設(shè)計(jì)與實(shí)驗(yàn)步驟
1.新建工程,添加所需的文件。
2.編寫(xiě)計(jì)算器的計(jì)算程序caculator.c以及caculator.h文件。3.編寫(xiě)音樂(lè)播放文件play.c以及play.h文件。
4.修改鍵盤(pán)映射表讓鍵盤(pán)上的數(shù)字與LCD與LED屏幕上顯示的數(shù)字相對(duì)應(yīng)。5.對(duì)輸出在LCD屏幕上的顯示結(jié)構(gòu)進(jìn)行設(shè)計(jì)
6.進(jìn)行裁剪和移植功能設(shè)計(jì)和完成。編譯生成system.bin文件,將文件拷貝至實(shí)驗(yàn)臺(tái)內(nèi),重啟實(shí)驗(yàn)臺(tái)即可看到實(shí)驗(yàn)效果
8.6 實(shí)驗(yàn)過(guò)程與分析
1.完成10以內(nèi)的加減乘除的計(jì)算功能,通過(guò)鍵盤(pán)輸入,可在LCD屏幕上顯示輸入的表達(dá)式以及得到的輸出結(jié)果。如“2+3=5”。
2.按任務(wù)切換鍵,實(shí)現(xiàn)任務(wù)的切換。3.任務(wù)被切換到播放音樂(lè)的任務(wù)中去。
4.任務(wù)切換過(guò)程將會(huì)在串口的超級(jí)終端界面有所顯示,同時(shí)我們?cè)O(shè)置的將LCD上顯示的結(jié)果同步到超級(jí)終端上。實(shí)現(xiàn)串口通信。
5.利用到了直流電機(jī),如果運(yùn)算范圍超出我們規(guī)定的運(yùn)算范圍,則電機(jī)轉(zhuǎn)動(dòng),來(lái)提示錯(cuò)誤。
6.實(shí)現(xiàn)裁剪與移植功能。
8.7 實(shí)驗(yàn)結(jié)果總結(jié)
在這次實(shí)驗(yàn)中,我們利用前面所學(xué)習(xí)的知識(shí),綜合利用在此次實(shí)驗(yàn)中,我們利用了前面好所學(xué)知識(shí)中的6個(gè)模塊,分別是串口通訊,鍵盤(pán)控制,LED與LCD的輸出,電機(jī)控制,以及裁剪與移植的功能。通過(guò)這些功能的結(jié)合,我們實(shí)現(xiàn)自己所設(shè)計(jì)的實(shí)驗(yàn)的功能。
8.8 心得體會(huì)
在此次實(shí)驗(yàn)中,我們遇到了一些問(wèn)題但是過(guò)程中遇到了不少問(wèn)題,說(shuō)明對(duì)實(shí)驗(yàn)原理和語(yǔ)句編寫(xiě)還不是很熟悉??偟膩?lái)說(shuō),通過(guò)這段時(shí)間的訓(xùn)練,我也學(xué)會(huì)了不少東西,了解了ARM的基本結(jié)構(gòu),功能等。
9.實(shí)驗(yàn)總結(jié)與心得體會(huì)
通過(guò)這次為期一周的嵌入式課程實(shí)驗(yàn),我對(duì)于嵌入式有了更加深刻的了解與認(rèn)識(shí)。我是第一次接觸嵌入式,以前對(duì)于嵌入式的知識(shí)了解甚少,但是通過(guò)此次實(shí)驗(yàn),我不僅了解了嵌入式,也學(xué)會(huì)了許多關(guān)于嵌入式方面的知識(shí)。
通過(guò)前面的基礎(chǔ)實(shí)驗(yàn),我們對(duì)于ARM環(huán)境有了更深的了解,掌握了博創(chuàng)平臺(tái)的使用方法,例如如何使用小鍵盤(pán),如何使用LCD、LED屏幕,如何控制終端,如何進(jìn)行多任務(wù)之間的切換等等。通過(guò)這幾次的基礎(chǔ)課程實(shí)驗(yàn),我們最后出了計(jì)算器,能夠?qū)崿F(xiàn)10以內(nèi)的加減乘除,在此基礎(chǔ)上我們利用多任務(wù),實(shí)現(xiàn)播放音樂(lè)與計(jì)算的切換,還利用點(diǎn)擊的轉(zhuǎn)動(dòng)來(lái)提示運(yùn)算過(guò)程中出現(xiàn)的問(wèn)題。
通過(guò)這幾次實(shí)驗(yàn),為我們以后的課程設(shè)計(jì)實(shí)驗(yàn)打下了堅(jiān)實(shí)的基礎(chǔ),相信有了這幾天系統(tǒng)實(shí)驗(yàn)的培訓(xùn),我們的課程設(shè)計(jì)實(shí)驗(yàn)做起來(lái)會(huì)更加輕松。