新聞中心

        EEPW首頁 > 嵌入式系統 > 牛人業話 > 嵌入式學習的正確步驟

        嵌入式學習的正確步驟

        作者:寂寞的褲衩 時間:2013-12-03 來源:電子產品世界 收藏

          門檻雖然較高,但也跟其他事物一樣,并不是牢不可破。只要我們用心去對待,冬雪終將化去,春風定會吹來。

        本文引用地址:http://www.104case.com/article/198141.htm

        具體步驟如下:

          1、《》第二版 譚浩強 ; 《C程序設計語言》第二版 徐寶文譯 機械工業出版社
          你能區分開指針數組和數組指針嗎?你知道函數指針嗎?
          你能區分開定義一個變量時系統給它分配的空間與用malloc()函數給一個變量分配的空間有什么不一樣嗎?

          2、《數據結構》版  黃國愉、葉乃青編 清華大學出版社
          你能合上書本,用實現書中的單鏈表、雙鏈表數據結構嗎?

          3、《實用C++程序設計》第二板 中國電力出版社 Steve_Oualline著
          此階段主要是學習其面向對象的編程思想,加深對C語言和數據結構的理解。

          4、學習,最好能找個前輩帶一帶。
          你能用51做出一樣實際的東西嗎?即使它再簡單!
          要注意加深對中斷的理解。

          5、學習
          (1)、細讀《微控制器基礎與實戰》周立工編寫(注:即使你不用書中的開發板)
          (2)、細讀相關芯片的原版英文文檔。如:arm920TE.pdf  S3C2410_1.2.pdf

          6、學習uCOS!!操作系統。
          (1)、細讀《實時操作系統uC/OS-!!》第二版 召貝貝譯
          你能把uCOS!!移植到自己的平臺上嗎?
          (2)、能編寫在uCOS!!操作系統環境下運行的針對具體硬件的驅動程序

          7、熟悉環境,學習環境編程,學習交叉編程
          (1)、細讀《linux命令大全.pdf》
          (2)、細讀《GNU Make 使用手冊(中譯版).pdf》
          (3)、學習創建交叉編程環境.

          8、學習操作系統。
          (1)、《UNIX環境高級編程》
          (2)、可以到一些好的網站下載一些比較好的書籍
          (3)、細讀《linux內核完全注釋》
          (4)、細讀《understanding the linux kernel 2》
          (5)、利用源代碼閱讀利器工具"Source Insight"進行真正的linux內核原碼刨析
          (6)、最后進行內核移植,并能編寫在linux操作系統環境下運行的針對具體硬件的驅動程序

          9、學習Linux設備驅動編寫。可參考《Linux設備驅動程序》

          10、復習C++,學習用QT進行圖形界面編程
          (1)、細讀《QT編程寶典》
          (2)、學會通過查看QT電子文檔進行QT GUI實地編程
          (3)、學習交叉編程.(其實就是把命令qmake變為tmake)

          11、當然,你也可學習一下PCB的制作和設計一個自己的CPU(即軟殼)

        軟件方面最重要的課程包括:

          (1) 嵌入式微處理器結構與應用:

          這是一門嵌入式硬件基礎課程,我們說過,嵌入式是軟硬件結合的技術,搞嵌入式軟件的人應對處理器工作原理和接口技術有充分了解,包括ARM的匯編指令系統。若不了解處理器原理,怎么能控制硬件工作,怎么能寫出節省內存又運行高速的最優代碼(嵌入式軟件設計特別講究時空效率),怎么能寫出驅動程序(驅動程序都是與硬件打交道的)?很多公司招聘嵌入式軟件人員時都要求熟悉ARM處理器,將來若同學到公司中從事嵌入式軟件開發,公司都會給你一本該設備的硬件規格說明書 (xxx Specification),你必須能看懂其中的內存分布和端口使用等最基本的說明(就像x86匯編一樣),否則怎么設計軟件。有些同學覺得嵌入式處理 器課程較枯燥,這主要是硬件課程都較抽象的原因。還有同學對ARM匯編不感興趣,以為嵌入式開發用C語言就足夠了。其實不應僅是將匯編語言當成一個程序設計語言,學匯編主要是為了掌握處理器工作原理的。一個不熟悉匯編語言的人,怎么能在該處理器寫出最優的C語言代碼。在嵌入式開發的一些關鍵部分,有時還必須寫匯編,如Bootloader等(可能還包括BSP)。特別是在對速度有極高要求的場合(如DSP處理器的高速圖像采集和圖像解壓縮),目前還會用到匯編寫程序的,盡管用到的機會相對C要小得多。當你在一個嵌入式公司工作時,在查看描述原理的手冊時,可能很多都是用匯編描述的,這是因為很多硬件設計人員只會寫或者喜歡用匯編描述,此時你就必須看懂匯編程序,否則軟硬件人員可能就無法交流。很多嵌入式職位招聘時都要求熟悉匯編。

          [小知識] 目前嵌入式處理器常見的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire (冷火)等,但ARM占據了絕對主流(有資料說手機中幾乎90%都是ARM處理器)。ARM是一個只賣知識產權的公司,目前獲得購買了ARM CPU核授權許可的大公司很多,包括Intel、Samsung、Amstel、Motorola、Philip等,他們都在ARM CPU核的基礎上進行了一些外圍擴展,形成自己的處理器(如Samsung S3C2410,Motorola i.MXL9328等處理器都是采用ARM 9內核,指令一級是相同的)。而眾多中小公司又購買了這些處理器,設計了各種各樣的開發板,如華恒等國內很多著名嵌入式公司都生產基于SamsungS3C2410的開發板,供最終用戶使用或供教學實驗。在ARM這個食物鏈上,ARM公司是大魚,Intel、Samsung等公司是小魚,而華恒等則是蝦米,最終用戶(我們這些要采購嵌入式開發板的)則是喂蝦米的。Intel早期生產的是低端ARM(Strong ARM,相當于ARM 7),現在轉向主要生產高端ARM(即Intel Xscale處理器,屬于ARMv5家族,主要用在高端PDA上,如HP和DELL生產的PDA都采用Intel Xscale,價格較高)。目前應用最多的是ARM 7和ARM 9兩類處理器。 ARM 7較便宜,可跑uclinux(是一個不支持高級內存管理功能的嵌入式Linux系統統)、Vxworks、uc/os II等實時操作系統,但因處理器不帶內存管理單元MMU(無內存分頁和地址映射機制,所以不能使用虛擬內存),所以不能跑Windows CE,另外通用Linux中的某些內存管理功能也不能用在ARM 7上。ARM 9大都是一個帶MMU功能的高端處理器,可跑WinCE或通用Linux的大多數功能。ARM7和ARM9的區別是在與體系結構上,前者是馮?諾伊曼結 構,后者是哈佛結構——指令和數據總線是分開的。以上是我的一點了解,可能有不對的地方。我們學院有十幾套ARM 7開發系統(采用Samsung S3C44b0x開發板,主要用于嵌入式處理器結構、實時操作系統等課程實驗用),ARM 9的系統好象也已經到了(采用的芯片我不知道也沒去問),還有以前的十幾套MPC860開發板(聽說價格都很貴,很容易損壞),同學應愛護使用和珍惜這樣 的實驗機會。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        可控硅相關文章:可控硅工作原理


        51單片機相關文章:51單片機教程


        c語言相關文章:c語言教程


        linux相關文章:linux教程


        比較器相關文章:比較器工作原理


        c++相關文章:c++教程



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 蓝田县| 宜良县| 木里| 绵竹市| 綦江县| 灌云县| 惠东县| 和平区| 北安市| 高青县| 綦江县| 商水县| 萍乡市| 闵行区| 海门市| 固安县| 西充县| 南丰县| 满洲里市| 长治县| 都兰县| 轮台县| 威信县| 柘城县| 和静县| 江门市| 鹿泉市| 简阳市| 曲沃县| 文登市| 合川市| 丰镇市| 永城市| 湄潭县| 西和县| 凉城县| 上栗县| 宿松县| 云和县| 启东市| 海林市|