有些技術(shù)確實(shí)可以在兩、三個(gè)月內學(xué)通,嵌入式開(kāi)發(fā)經(jīng)驗總結

發(fā)布時(shí)間:2017-7-26 14:45    發(fā)布者:技術(shù)小白
關(guān)鍵詞: 嵌入式開(kāi)發(fā) , arm
有些技術(shù)確實(shí)可以在兩、三個(gè)月內學(xué)通,嵌入式開(kāi)發(fā)經(jīng)驗總結

讀大學(xué)時(shí)學(xué)過(guò)計算機組成原理、操作系統、計算機網(wǎng)絡(luò )等等課程,但是大學(xué)生都知道,上完那些課只是懂一點(diǎn)皮毛而已,打打醬油就過(guò)去了。特別是對于軟件工程師,一定要多實(shí)踐、多思考才行。理論知識顯得并沒(méi)有搞硬件或者偏硬件開(kāi)發(fā)的那么重要,因為軟件的重點(diǎn)在于邏輯和算法。

個(gè)人認為,在中、高級階段,偏硬莫非就是一種知識活兒,而偏軟莫非就是一種體力活兒……只有到達專(zhuān)家階段才能夠有所突破。對比一下培訓機構的軟件開(kāi)發(fā)和硬件開(kāi)發(fā)的培訓費用就知道了,一般的軟件培訓(Java/C++/PHP/C#),收費大概是一個(gè)月3000,強調是“一個(gè)月”,一般的培訓都是2~6個(gè)月,所以總費用少則幾千,多則上萬(wàn)。而嵌入式的培訓費則是按天計算,1天大概500,強調是“1天”,一般的培訓是一周,也有培訓半年的,但是費用也相當高!由此可見(jiàn),嵌入式的課程含金量很高。軟件開(kāi)發(fā),特別是網(wǎng)站開(kāi)發(fā),比嵌入式辛苦多了。

如果硬件和軟件兩者皆不了解,那么推薦你選擇偏硬件的方向,實(shí)惠很多。綜合其他前輩的經(jīng)驗,嵌入式開(kāi)發(fā)是個(gè)不錯的工作,應該比公務(wù)員都還好,但要學(xué)好大學(xué)里面的課程,比如數字邏輯、電路分析、微機原理、單片機等等,理論很重要。理論面前,男女平等。

靜下心來(lái)看書(shū)、做項目,你會(huì )發(fā)現有些東西確實(shí)可以在短短兩、三個(gè)月內學(xué)通,即使說(shuō)你今年做LinuxC/C++開(kāi)發(fā),明年做JavaEE、Android開(kāi)發(fā),后年去做硬件開(kāi)發(fā)、驅動(dòng)開(kāi)發(fā),那都是沒(méi)問(wèn)題的。問(wèn)題是,你喜歡做什么?你想要達到哪種境界?

嵌入式開(kāi)發(fā)知識總結

一、基礎知識


目前流行的嵌入式操作系統有:linux、uC/OS、WindowsCE、VxWorks、PalmOS和QNX。其中VxWorks實(shí)時(shí)性很強,最穩定、可靠,但價(jià)格昂貴,而其他的都有各自的優(yōu)點(diǎn)。

ARM公司(原名Advanced RISC Machine),主要是研發(fā)ARM系列微處理器(出售IP,即知識產(chǎn)權),目前全世界有幾十家著(zhù)名的半導體公司都使用ARM公司的授權,包括IBM、Intel、SONY、LG等。ARM微處理器已成為RISC標準。目前基于A(yíng)RM核的處理器有以下幾種:

ARM7/9 Thumb家族
ARM9/10E家族
ARM 11家族
ARM Cortex家族
SecurCore家族
OptimoDE Data Engine家族
MPCore Multiprocessors家族
Intel公司的StrongARM(相當于A(yíng)RM8)和Xscale。

ARM7處理器采用了ARMV4T(馮諾依曼)體系結構。目前主流的ARM7內核是ARM7TDMI(最常用)、ARM7TDMI-S、ARM720T和ARM7EJ-S。T代表支持Thumb指令集,D代表支持片上調試,M代表內嵌硬件乘法器,I代表支持片上斷點(diǎn)和調試點(diǎn)。

ARM9處理器采用改進(jìn)型哈佛體系結構。采用五級流水處理及分離的Cache結構。常見(jiàn)的系列有:ARM920T、ARM922T和ARM940T。

Xscale是基于A(yíng)RMv5TE體系結構,是一款性能全、性?xún)r(jià)比高、功耗低的處理器。支持16位的Thumb指令和DSP指令集。

Cortex,按傳統的命名方法,Cortex可以看做ARM12。ARM公司推出了Cortex-A/R/M三個(gè)系列。

還有ARM9E、ARM11、MPCore、StrongARM等,略。

比較經(jīng)典的是基于三星ARM9的S3C2440的開(kāi)發(fā)板,這個(gè)系列的資料很多。還有基于三星ARM11的S3C6410開(kāi)發(fā)板,可以跑android。

ARM體系結構的變種

Thumb指令集(T變種)是將ARM指令集重新編碼形成的一個(gè)子集。常見(jiàn)的ARMv5T使用v2版的Thumb指令集。

此外,還有長(cháng)乘法指令(M變種),增強型DSP指令(E變種),Java加速器Jazelle(J變種)和ARM媒體功能擴展(SIMD變種)。

二、開(kāi)發(fā)流程


不管系統多么復雜,一般都是以最小系統為基礎,通過(guò)加入所需的功能模塊構成的。最小系統大概包括電源電路、時(shí)鐘電路、復位電路、外擴的存儲系統和調試接口。

1、硬件設計

首先要進(jìn)行實(shí)驗板硬件資源規劃,例如在最小系統的基礎上擴充I2C存儲器、串行接口、網(wǎng)絡(luò )接口、USB接口、觸摸屏接口,以及按鍵、蜂鳴器等。

然后設計硬件電路,包括電源電路、復位電路、時(shí)鐘微處理器電路、外部存儲器電路電路、網(wǎng)絡(luò )接口電路等等,這一部分貌似比較有難度。許多公司也都是出售組裝好的開(kāi)發(fā)板。

PCB的設計,要考慮到抗高頻干擾、信號完整性、差分布線(xiàn)等。焊接好元件之后還要調試電路。

2、軟件的移植與開(kāi)發(fā)

軟件系統的移植主要包括Bootloader的移植、Linux操作系統的移植(包括內核和文件系統的移植)以及針對實(shí)驗板的驅動(dòng)程序的編寫(xiě)等。

1)準備交叉編譯工具
2)引導加載程序的移植(例如vivi、U-Boot)
3)內核的移植
4)根文件系統的移植
5)驅動(dòng)程序的編寫(xiě)
6)其他,例如JTAG測試。

三、移植Linux內核


基本步驟為:

1)獲取某一版本的Linux內核源碼,根據具體目標平臺對內核源碼進(jìn)行必要的改寫(xiě),主要是修改體系結構相關(guān)的部分。

PS:顯然,對內核源碼的修改很有難度,它既要求開(kāi)發(fā)者對Linux內核結構非常熟悉,對目標平臺的硬件結構也非常熟悉,而且要有良好的匯編基礎。這一部分的工作一般都是目標平臺提供商完成的,而且主要的東西是ARM公司的工程師來(lái)完成,由他們提供相關(guān)版本的Linux內核的補丁,然后把補丁打到我們所用的Linux內核上,經(jīng)過(guò)必要的配置和交叉編譯就行了。所以說(shuō),內核的定制和改寫(xiě)難度很大,一般的軟件工程師和硬件工程師都很難勝任。

2)打補丁,然后配置內核,調出內核配置界面,選上某些選項或者去掉某些選項,配置選項非常多,而且某些選項之間有關(guān)聯(lián),所以說(shuō)這一步比較有難度。下面列出一些配置項,每個(gè)配置項都可以選擇Y(將該功能編譯進(jìn)內核)、N、M(編譯成可以在需要時(shí)動(dòng)態(tài)加載的模塊)。

Code maturity level options(代碼成熟度選項)
General setup(通用設置)
Networkong deveices(包括很多子選項dummy net driver support,PLIP support,SCSI device support等)

3)編譯內核,用幾個(gè)命令就可以編譯內核了。#make clean,#make dep,#make zImage。

4)移植根文件系統,內核編譯完之后,可以運行各種命令并支持各種功能的中央處理器,但是如果缺少了內存、硬盤(pán)等設備也不能正常運行。根文件系統中存放了Linux系統所需要得各種程序文件,沒(méi)有這些文件內核無(wú)法正常工作。同樣,要移植根文件系統需要清楚Linux的運行機制,比較麻煩。所以一般都使用Busybox這個(gè)工具。安裝配置Busybox,向Busybox添加命令,構造根文件系統,制作根文件系統映像文件(形如initrd.gz)。

5)使用U-Boot制作、下載內核。U-Boot支持uImage格式的內核文件。啟動(dòng)內核,然后使用U-Boot加載根文件系統映像。

四、開(kāi)發(fā)環(huán)境的建立


一般宿主機推薦用Red Hat9.0,需要宿主機在硬件上有標準串口、并口、網(wǎng)口;軟件上具有目標板的Linux內核、ramdisk文件系統映像以及Bootloader。軟件的更新通常使用串口或網(wǎng)口,最初的Bootloader燒寫(xiě)是通過(guò)JTAG進(jìn)行的。

首先要在宿主機上建立交叉編譯調試的開(kāi)發(fā)環(huán)境,許多開(kāi)發(fā)板配有光盤(pán)能實(shí)現自動(dòng)安裝。用minicom作為被開(kāi)發(fā)目標板的終端,開(kāi)發(fā)前要正確的配置minicom。然后配置TFTP(簡(jiǎn)單文件傳輸協(xié)議),用于在目標板和宿主機之間傳輸文件。配置NFS,以便終端機能共享宿主機的文件。
實(shí)驗1 編譯Bootloader
很簡(jiǎn)單。一種常見(jiàn)的Bootloader是PPCBoot,另一種是vivi。
實(shí)驗2 編譯Linux內核
用幾個(gè)命令就可以編譯內核文件,編譯后就要配置,配置稍微繁瑣一點(diǎn)。但是每個(gè)選項在網(wǎng)上都可以找到相應的配置方法。
實(shí)驗3 制作文件系統及程序的燒寫(xiě)
實(shí)驗4 燒寫(xiě)各部分到目標板
實(shí)驗5 交叉編譯并運行簡(jiǎn)單程序
打開(kāi)minicom開(kāi)啟實(shí)驗板電源,掛載實(shí)驗板。編譯C語(yǔ)言的命令形如:
/opt/host/armv4l/bin/armv4l-unknown-linux-gcc -o HelloWorld HelloWorld.c
實(shí)驗6 簡(jiǎn)單驅動(dòng)程序的編寫(xiě)

編寫(xiě)一個(gè)簡(jiǎn)單字符設備的驅動(dòng)程序。該程序非常簡(jiǎn)單,但是涉及到很多系統硬件的知識。if,for,switch,static,define這些關(guān)鍵字用得很多,也涉及到結構體,涉及到直接對地址的操作、位運算。涉及到物理設備,中斷等一些知識。

其實(shí),顯而易見(jiàn),驅動(dòng)開(kāi)發(fā)更靠近硬件一些,程序方面主要是熟練c語(yǔ)言就可以了。驅動(dòng)開(kāi)發(fā)的最大喜悅就是把物理設備給驅動(dòng)起來(lái)的,并盡量使驅動(dòng)不出問(wèn)題,物理設備能夠正常運行。


想學(xué)習的你和我聯(lián)系預約就可以免費聽(tīng)課了。
以下課程可免費試聽(tīng)C語(yǔ)言、電子、PCB、STM32、Linux、FPGA、JAVA、安卓等。
宋工企鵝號:3524-6590-88   Tel/WX:173--1795--1908



本文地址:http://selenalain.com/thread-453813-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页