新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM菜鳥成長記——之一

        ARM菜鳥成長記——之一

        作者: 時間:2016-11-23 來源:網絡 收藏
        從開始搞ARM到現在將近半年多了,第一個項目搞得有些眉目了,終于感覺像是入門了,半年來,有開始的新鮮,中間的苦悶,到最后的欣喜。其中過程可謂曲折離奇,遇到了很到前人沒有遇到過的疑難雜癥,當然很多時候是因為我的粗心釀成的。曾經也有過放棄的念頭,那個焦慮,像得了狂躁癥一樣。后來下定決心即使績效沒了,工作丟了也要搞完它。其實在這個過程中,看到跟我一樣的很多新人在論壇上發帖求助,可是很多時候回者寥寥無幾,可能問題太幼稚,也可能問題描述的不清楚。我發過很多帖子,甚至直接騷擾了網上很多的牛人,他們都給了我很大的幫助,但是我當時的想法太簡單了,總想著某個牛人能夠解決掉這個問題,現在想想,即使是牛人,沒有看到具體的問題也很難給你一個解決方法,遇到困難不能把希望完全寄托在別人身上,要挖掘自身潛力,一遍遍仔細看手冊,反復試驗,不斷思考,問題肯定能解決掉,只是時間問題而已。再次要感謝公司對我的容忍,一個這么簡單的東東允許我搞了這么久。

        其實,在前面的過程中,一直有寫點什么的沖動,但是當時困難重重、前途未卜,也沒了這個心情。現在可以坐下來仔細總結下前面的問題,有現在都沒搞明白的,特向大家請教了;有解決掉的,那就說說經驗教訓,給其他人一些參考。首先聲明本人腦瓜笨,邏輯思維差,點一個燈點了一個多月,最后還發現沒點對。所以提到的問題可能很幼稚,說話也好像前言不搭后語,有興趣看的那就受累了哈。

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

        先說說我們的這個塊板子,裸奔的at91sam9260,外擴Norflash、SRAM,實現程序既可以跑在Norflash中,也可以拷貝到Sram中跑。任務就一個:控制一個片外AD,讀出數據然后通過串口發出。很簡單的吧,這我都搞了幾個月呢,你說菜不菜吧。以下我將回想整個的ARM學習過程,涉及到的知識都是很簡單的基礎知識,老鳥就不用看了,希望可以幫助到像我一樣的菜鳥。

        前三個月主要是熟悉的過程,當時完全沒有想到后面程序的調試會如此的困難,想當然地認為又不上系統,無非是32位的單片機嘛。板子做回來一大段時間內,元器件都沒有湊齊,當時傻了呀,應該先熟悉熟悉編程環境,每天就為幾個破元件折騰,什么都沒干。

        后來板子焊接好了,才發現只會用H-JTAG識別芯片,其他的什么都不懂。然后開始看例程,只玩過51的我,初次接觸32位的單片機,當時看到AT91C_BASE_PMC->PMC_PCER=(0x1<<3)這樣的語句,竟然不知道是什么意思,一是困惑->代表個啥?二是為啥寫成0x1<<3的樣子?后來不知過了多久才明白,AT91C_BASE_PMC是個基地址,PMC_PCER是相對這個基地址的偏移,移位賦值是為了給32位寄存器賦值的方便。

        先說說開發ARM要用到的軟件以及工具吧,這段時間我接連使用了IAR、KEIL、h-jtag、JLink,都會用但是都不精通。最后是在KEIL+Jlink下完成的。

        開發工具的選擇:
        1、編譯環境:IAR、KEIL、GCC、……

        開始我想也沒想就選擇了IAR,原因很簡單:ATMEL的例程很都是基于IAR的,而KEIL安裝目錄下的例程很少。匆忙安裝了IAR當時的最新版IAR5.20,完全沒有考慮可用的資源和交流的方便。然后才發現IAR5.X跟4.X有很大的不同,主要就是其中的鏈接器從XLINK換成了ILINK,所以配置文件也由XCL文件換成了ICF文件,初看后者好像比前者更簡單更易懂了,但是由于是新版,使用的人還不多,網上上的參考資料大部分還是基于4.X的,對于新手哪幾條語句還是很費解。

        不過一根筋的我還是硬著頭皮堅持使用IAR5.20,直到遇到IAR的殺招:系統從慢時鐘想快時鐘切換時就跑飛了,都是死在lowlevelinit()中的這一句上:AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;然后將這一句放在主程序中,照死不誤。使用過程中,總彈出一個警告,大致意思就是說:IAR安裝目錄下,bin文件夾下的armlibsupport.dll may be missing or corrupt.重新裝后還是老樣子。在LED閃爍程序上折騰一個多月未果后,才痛下決心轉向KEIL。

        用上KEIL才發現這玩意不是傳說中的弱智,相反特別適合我等菜鳥,感覺主要有三個方面特別好:啟動代碼的圖形化配置;在Flash跑不需要什么配置文件,直接在option中添兩個地址值就可以了;只需點擊鼠標就可以實現將代碼從Flash自動拷貝到RAM中執行,不需要再寫什么代碼拷貝程序了。
        GCC,沒用過,不懂。
        2、調試工具:JLINK、H-JTAG、ULINK、……
        開始使用h-jtag,配合Wiggler使用,小巧且便宜,不得不佩服Twentyone前輩,在RAM中調試很方便,也可以通過H-Flasher將程序下載到Flash跑,使用h-flasher時要一個初始化文件,主要是初始化Flash相關寄存器。
        后來看到DB的JLINK都白菜價了,就從淘寶買了一個JLINK,主要是不用再用并口了,現在百元以內的JLINK大把,用JLINK是個不錯的選擇,但是調試片外的flash好像還不能無限斷點。
        ULINK,不太清楚,好像只支持KEIL,不過沒用過。



        關鍵詞: ARM菜鳥成長

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 美姑县| 佛山市| 卢龙县| 凉城县| 景德镇市| 屏东市| 开封县| 水城县| 双柏县| 屯门区| 张家港市| 胶州市| 玉山县| 明溪县| 九江县| 岳西县| 灵璧县| 舞钢市| 海兴县| 高雄县| 桂平市| 岳西县| 军事| 隆化县| 屏东县| 邵东县| 关岭| 凭祥市| 怀安县| 英德市| 凉山| 新安县| 镇安县| 锡林浩特市| 甘南县| 黄梅县| 武鸣县| 湘西| 台中县| 手游| 股票|