在操作ARM開發板時候如何正確的操作ADS

2021-05-17 13:59:34 字數 1879 閱讀 7140

在操作arm開發板時候如何正確的操作ads

1、ads是由arm公司提供的編譯和除錯環境,非常好,不容質疑!搞arm開發的人員,不能不用ads,例如要開發乙個驅動,首先是在ads中編譯、除錯通過,才會加入作業系統中,這是開發過程。

2、ads中codewarria是編譯環境,在這個環境中,應正確設定程式工作或除錯的位址,這兩個位址不一定同址,每次只能設定一種,除非它們相同。設定是通過選單項edit->target setting完成的。編譯環境中的這個位址是由鏈結器標記在程式上的(暫且這樣說吧,因為這部分實際涉及的是編譯原理中的鏈結定位問題,它主要涉及的是程式中的跳轉位址,這是與軟體相關的)。這兩個位址都必須與硬體位址配合,程式才能正常工作。因為mcu(arm)是硬體定址的,比如4510在正常初始化後,flash被定位在0x0位址,這時如果mcu有一條指令是跳轉到0x0位址,那麼mcu一定會將pc指向flash的0x0位址,mcu卻是由軟體控制的。如果這時remap了,flash被定位在0x1000000位址,但寫在flash中的程式仍然控制mcu跳轉到0x0位址,那麼pc就指向了sdram的0x0位址,那裡寫著什麼是你的事情了。

3、工作位址是指編譯好的程式(一般是*.bin檔案)寫入flash的位址,如軟體程式工作位址從0x0開始,flash也應該定位在0x0位址開始,軟體與硬體位址要相同,才能正常工作。當然,如果做remap,把程式拷貝到新的0x0位址處,也就是sdram中,程式也可以正常工作的。

4、如果用axd除錯,則是另外一種情況:程式必須寫在sdram中,而不是flash中。sdram的位址在那裡呢?4510上電後,一般設定在0x1000000,而把flash設定在0x0位址。如果codewarria編譯時把程式設定在0x0位址,除錯時就會把軟體載入在乙個「虛」位置,這個位置(位址)是flash的位址,mcu是無法把程式寫入flash中,程式就成為空中飄盪的幽靈,這時如果用反彙編,可以看到有些內容已經變質了,不是你的程式了,明白是為什麼嗎?而執行的話,mcu讀取flash中的內容,它們並非你的程式,結果是跑飛了。解決辦法是remap(對4510。如是44b0,請在codewarria編譯環境中把程式定位在 sdram段,如需中斷,請在flash中0x0位址先寫入相關中斷向量,並跳轉到sdram中),把sdram設定在0x0位址,再引導程式。

5、remap時,請用axd中的命令列方式,程式是實現不了的。即:system view->command line inte***ce。只有先把硬體位址設定的與程式相同了、程式段可以被裝入sdram中時,才可引導程式。

7、0x8000這個位址是怎麼來的呢?原來:0x0位址是中斷向量位址,這要占用幾十個位元組,有些作業系統利用中斷向量之後、0x8000位址之前的部分做點事情,linux就是其一。所以,程式設計人員預設的把0x8000這個位址作為一般程式的開始位址。除錯程式時,可以把程式起始位址定在0x8000,這個位址一定要是sdram覆蓋的位址(我再強調一次吧),mcu執行時,仍然是從0x0開始的,是誰把pc挪到0x8000的,是ads在編譯的時候,聯結器加進的**實現的。如果不是除錯程式,是工作程式,要寫入flash的,程式應該定位在0x0位址,而不是0x8000。

8、有一本書《arm應用開發系統祥解--s3c4510b》寫的非常好,我讀過有7、8遍了。但有一點是錯的。書中寫到:「針對本書所介紹的目標板,就可以使用這個預設位址值(0x8000)。」實際上,只要是4510的板子,不做remap,0x8000位址就是flash,是不能引導程式的。

9、在axd中,注意選單options->configure processor選項,如果不會用,就把它們都關了。帶中斷的程式和有跳轉到0x0位址的程式執行不了,多是由這項引起的。其實它們非常有用,不提了。

10、所有我以上提到的,均是有程式重定位和跳轉情況的,象簡單的跑馬燈實驗,不需要中斷、跳轉的,把程式直接定位在高位sdram中,remap也不用做,就可以跑的不錯了。

11、順便提一下banyan的界麵包非常好,支援ads,不用懷疑它。

ARM開發板配置rzsz

toc 這裡說的rzsz並不是真的是rzsz庫,發現並不好用,而確實好用。rzsz 3.48.tar.gz 不好用,建議別下了 用這個這裡用的是lrzsz 0.12.20.tar.gz wget tar zxvf lrzsz 0.12.20.tar.gz至於arm hisiv300 linux gc...

讓QT跑在ARM開發板上

前幾個星期為了搭建乙個android跑qt的編譯環境,由於不熟悉android開發的環境,什麼jdk,ndk,sdk,ant一大堆全沒聽過的名詞開始出現,即使有大神的書做參考,花了兩天的時間還是沒能在windows上面搭建出來,最後在linux上quest花了不到兩個小時就搞定,也不知道是什麼原因。...

如何選擇開發板和保護開發板

1.開發板分為入門學習用的和評估用的。學習用的,對於新手入門用的。首先資料得多,比如三星s3c2440,這款晶元雖然已經停產了,但是作為入門來說,非常好。也有中文資料手冊,相關資料很多。當初我買開發板以看晶元效能來買的,結果到手後,資料很少,學不進去,最後只好又買了個2440的開發板。一般而言,ti...