嵌入式arm開發學習

2021-06-17 21:10:03 字數 2130 閱讀 7761

今天是學習arm的第二天.感覺又懂了一點.記錄下來,以便以後不時之需.

今天先是看了一些linux應用開發的東西,由於之前自己對linux程式設計還算是有過了解,這部分看得很快,基本沒有什麼閱讀障礙.個人建議想學嵌入式linux的人,最好先把unix環境高階程式設計看一遍.你會發現一切都會順其自然.

之後到了arm系統開發高階部分,但是由於坑爹的是,由於教程是windows 的,在加上那些ads之類的東西,也全都是windows的,所以這部分就先粗略看了一下.就跳過去了,先標記一下,日後再回來重新看.主要是還沒找到linux下替代ads的工具,等找到了,再來複習這部分知識.再加上,我們軟體工程,沒有開過模電,也沒有開過電路分析課.所以這部分相對來說,對我比較難以理解,我目前能看懂的部分,還是依靠我高中所學的物理電學的知識.實在是可憐.

後來看了一下核心驅動的移植部分.剛看到u-boot移植,自己也試著做了一下,成功了.要做u-boot移植,需要建立arm-linux-gcc的交叉編譯環境.在這裡說一下方法,以免以後自己忘了,可以回來再看看.

在終端鍵入以下命令 :   sudo tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tar.gz  -c / 

這裡用-c 指定解壓目錄,這裡,我解壓到了 /  這裡.

可以測試一下,是否安裝正確,進入到改目錄之後,輸入arm-linux-gcc -v, 會有版本號以及一些資訊出現,這個時候,表示已經可以使用這些工具鏈了。但是在ubuntu下,如果每次 都要到該目錄下去執行這個程式,那是相當麻煩的。這裡提供乙個相對安全的方法。我們知道,每乙個終端啟動的時候,bashrc 會完成相應的配置。這裡,我們修改一下bashrc。開啟終端 輸入 vim ~/.bashrc,編輯一下這個文字檔案,這裡有一大堆東西. 我們在最後加上這一句話.

export path="/opt/frednly/??/:$path"這裡加上剛才解壓的路徑,我忘了.英語不好,有點記不住名字.可以用linux終端的自動補全命令就行了.之後我們輸入source ~/.bashrc ,讓它起作用.

這裡常用的三個程式是  arm-linux-gcc, 編譯,用法和gcc一樣.

arm-linux-objdump  反彙編工具,  用法:arm-linux-objdump -d -s 程式名 

arm-linux-readelf elf檔案檢視工具,

arm-linux-readelf -a 程式名 .可以用這個來看cpu的大小端模式.(這個很重要).   

arm-linux-readelf -d 程式名,  可以用這個來看程式執行所以來的動態庫.

2.這個時候交叉編譯工具鏈就已經安裝結束了,可以向開發板寫程式了.(當然了,在之前要先燒乙個系統進來,這裡我燒的是linux核心2.6版本的).這裡有幾種方法可以把程式寫入到開發板的.

(1)可以使用jlink,但是由於我是在linux下做的,jlink基本毫無意義.linux裡面是可以單步除錯的,不需要依靠jlink除錯.

(2)可以使用sd卡,複製你的程式到sd卡,之後sd卡插入開發板,就可以使用了.但是相對來說比較麻煩

(4).還可以使用ftp去弄,但是我沒有去研究過,目前還不需要.因為我相當喜歡第三種方法.

今天最後做的事情是製作了乙個u-boot,成功了.首先下了乙個u-boot的源**.解壓進入該資料夾之後,這裡有許多資料夾,重要的貌似就只有,cpu,board,comond,fs等幾個資料夾.這裡我們進入了u-boot解壓後的資料夾,先做乙個  make clean的工作.之後,開啟makefile,由於自己用的是tiny6410的arm開發板,我們搜尋6410.找到乙個.nand-ran256的標記.輸入make 剛才找到的標記.之後會有乙個提示.只有一句話具體忘了.反正看得懂英語就知道成功了.最後一步工作,交叉編譯一下u-boot.

這裡我們輸入命令   make cross_compile=arm-linux-,然後回車,就開始編譯了.這裡需要配置要交叉編譯環境,要不然不成功的.這裡我自己遇到了乙個錯誤.因為在啟動開發板的時候,沒有撥到nand flash啟動,.於是在minicom沒有看到內容.今天修改了一下,可以了.

最後將uboot.bin這個檔案燒入sd卡,通過minicom(windows下的話通過超級終端)可以看到這個成功了.吧

今天的工作就這些,明天繼續加油.最後還剛好研究了一下union在記憶體中的情況,這個快退出江湖的關鍵字,又溫習了一遍.不錯不錯.~~德瑪西亞人,從不退縮.

嵌入式開發學習

始於興趣,因興趣而精緻 對於很多人聽到嵌入式這個詞的時候,會感覺到有些迷茫,嵌入式到底和常見的硬體電路學習,軟體程式設計,物聯網等有什麼區別?學習嵌入式到底按照怎樣的乙個思路才能最快的進入狀態,領略嵌入式之美,怎樣才能正確進行興趣匹配實現自己的學習目標。接下來,就讓我簡單的介紹一下我對嵌入式學習的理...

嵌入式,ARM掃盲

炮製了一篇,基本是拿來主義,不算技術,只能算雜談。注 此處正常模式和普通模式是我生造的術語,沒有確定是否存在,各位請暫且忽略。arm異常處理過程 arm的異常,包括復位 未定義指令 軟體中斷 資料訪問中止 外部中斷請求 快 速中斷請求。處理過程 1 儲存現場,包括處理器當前狀態 中斷遮蔽位 cpsr...

ARM嵌入式實驗

問題 在startup.s中增加函式,由c程式呼叫,以此取得彙編中相關引數的設定值。獲取pll中m,p值,c程式呼叫彙編函式 在c語言中,要extern 乙個函式宣告即可,然後這個函式在彙編裡面實現。在彙編裡面,用export 把c語言定義的函式名引進來,再開始編寫函式名開始的段 實現 c程式呼叫 ...