国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

零基礎(chǔ)arm裸板編程入門

2013-08-20 05:58:36劉光然
關(guān)鍵詞:匯編語言管腳寄存器

劉光然

(湖北經(jīng)濟學(xué)院 電子工程系,湖北 武漢430205)

1.初識 arm

學(xué)習(xí)ARM,首先要清楚ARM為何物。

ARM的全稱Advanced RISC Machines。ARM是微處理器行業(yè)的一家知名企業(yè),設(shè)計了大量高性能、廉價、耗能低的RISC處理器、相關(guān)技術(shù)及軟件。技術(shù)具有性能高、成本低和能耗省的特點。適用于多種領(lǐng)域,比如嵌入控制、消費/教育類多媒體、DSP和移動式應(yīng)用等。ARM公司是專門從事基于RISC技術(shù)芯片設(shè)計開發(fā)的公司,作為知識產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計許可由合作公司生產(chǎn)各具特色的芯片,世界各大半導(dǎo)體生產(chǎn)商從ARM公司購買其設(shè)計的ARM微處理器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當?shù)耐鈬娐?,從而形成自己的ARM微處理器芯片進入市場。目前,全世界有幾十家大的半導(dǎo)體公司都使用ARM公司的授權(quán),因此既使得 ARM技術(shù)獲得更多的第三方工具、制造、軟件的支持,又使整個系統(tǒng)成本降低,使產(chǎn)品更容易進入市場被消費者所接受,更具有競爭力。

說這么多,只用記住ARM是一個公司名字,也是一種處理器的通稱(運用ARM公司技術(shù),生產(chǎn)的處理器,統(tǒng)稱為ARM處理器)。

其次弄清楚ARM與單片機的聯(lián)系與區(qū)別。

單片機是屬于微控制器,ARM是微處理器,單片機更多的是強調(diào)在控制領(lǐng)域的使用,可以使用匯編語言或者c語言編程。而ARM在某種意義上來說它是一種高級的單片機,其各項功能更加強大,編程使用arm匯編語言或者arm匯編語言與c語言混合編程,也就是必須使用匯編語言,增加了開發(fā)難度。

2.Arm裸板編程

2.1 Arm裸板編程步驟

(1)看電路原理圖,確定硬件電路模塊的連接方式;

(2)查看電路中各個芯片的芯片手冊,了解芯片的工作原理;

(3)編寫代碼。

2.2 Arm硬件電路原理圖

為了讓初學(xué)者能夠順利入門,本文選取了一個簡單的硬件電路,采用ARM芯片點亮三盞LED燈,如圖1所示,3個發(fā)光二極管分別通過3個限流電阻連接到了arm9芯片上的3個管腳,分別是GPF4,GPF5,GPF6。

發(fā)光二極管的工作原理(只看GPF4這一路):電源VCC(3.3V)到發(fā)光二極管D1,再通過限流電阻,接到arm芯片“GPF4”這個管腳上。只要“GPF4”輸出低電平,D1兩端才會有電流流過,這樣 D1 才會亮。即“GPF4=0”時,D1 亮;“GPF4=1”時,由于LED1兩端電壓一樣,沒有壓差,所以沒電流,則不會亮。

圖1 :ARM與發(fā)光二極管硬件原理圖

2.3 查看芯片手冊

上小節(jié)討論的電路的工作原理,那么如何來控制GPF4管腳的電平呢?這就需要查閱電路中芯片的說明書——芯片手冊,打開芯片手冊s3c2440芯片手冊,搜索GPF4。通過定位找到第九章I/O port,發(fā)現(xiàn)需要配置“配置寄存器”(GPFCON)和“數(shù)據(jù)寄存器”(GPFDAT)這兩個寄存器來達到控制引腳的目的。

配置寄存器GPFCON:ARM芯片的同一個管腳可以實現(xiàn)不同的功能,即你給它配置的參數(shù)不一樣,它所對應(yīng)的功能也就不一樣,可以是“輸出”也可以是“輸入”,再或者是其他功能(中斷等)。而芯片手冊告訴我們GPFCON的具體用法如圖2所示:

圖2 :GPFCON功能表

如果我們想要GPF4具有輸出功能,以便接下來給管腳輸出高低電平的話,我們就要配置“GPFCON[9:8]”這兩位,使其等于“01”,這樣GPF4功能就是“Output”,也就是輸出功能。

數(shù)據(jù)寄存器GPFDAT:此寄存器的功能就是讓我們設(shè)置GPF各個管腳的電平,通過查芯片手冊如圖3所示:

圖3 :GPFDATE寄存器

芯片手冊上說,當引腳被設(shè)置成“輸出引腳”時,“GPFDAT”中的比特0就對應(yīng)于“GPF0”,比特1就對應(yīng)GPF1,比特2就對應(yīng)GPF2…比特7對應(yīng)GPF7。

假如想GPF4上接的二極管亮的話,我們就要配置比特4,對比特4置數(shù)0。

通過上面的敘述,我們已經(jīng)明確了在ARM上點亮LED燈的具體操作方法,那我們?nèi)绾斡贸绦驅(qū)崿F(xiàn)上面的操作呢。由于程序是arm匯編語言和c語言混合編程,因此在下一節(jié)詳細介紹程序代碼。

3.程序代碼及釋義

程序包括crt0.S,leds.c,makefile三個文件。

由于makefile關(guān)于編譯生成二進制文件。對于理解arm裸板編程原理暫時忽略。

首先分析crt0.S.

1-3行是匯編語言的語法格式,表示匯編的開始。

第4行把地址0x53000000裝入r0寄存器中,第5行把數(shù)值0裝入寄存器r1中,第6行,把數(shù)值0裝入到地址0x53000000。地址0x53000000是arm處理器中的看門狗寄存器地址,通過給這個寄存器賦值0,關(guān)閉看門狗功能。

第7行設(shè)置堆棧地址的值為4k,堆棧是向下生長的。

第8行匯編程序跳至c語言中的main函數(shù)。

第9-10行表示匯編中的死循環(huán)。

這個匯編程序的作用就是關(guān)看門狗,設(shè)置堆棧,然后跳到c中的main函數(shù)。

再來分析leds.c:

程序解釋如下:

1-2行是宏定義將GPFCON定義為物理地址0x56000050里面的內(nèi)容。將GPFDAT定義為物理地址0x56000054里面的內(nèi)容。

3-5行宏定義GPF4_out,GPF5_out,GPF6_out為GPFCON中分別對應(yīng)GPF4,GPF5,GPF6引腳所對應(yīng)的比特位。

6-9行為一個延時程序。

10-22行為主函數(shù)。

第12行定義一個無符號的長整型變量i,為下面輸入GPFDAT中的數(shù)據(jù)服務(wù)。

第13行用GPFCON這個寄存器配置引腳功能,使得GPF4,GPF5,GPF6引腳的功能為輸出。

14-18行是一個while循環(huán)。

第16行,通過設(shè)置GPFDAT,使 GPF4,GPF5,GPF6引腳輸出高電平1,發(fā)光二極管燈滅。

第17行,通過設(shè)置GPFDAT,使 GPF4,GPF5,GPF6引腳輸出高電平0,發(fā)光二極管燈亮。

4.結(jié)語

目前的教材和出版文獻對于講授arm裸板編程入門并沒有一個很好的解決辦法,本文通過一個簡單實例發(fā)光二極管的裸板程序?qū)崿F(xiàn),實現(xiàn)了零基礎(chǔ)的arm裸板編程,降低了學(xué)習(xí)門檻,便于初學(xué)者入門。

附錄A

Makefile程序代碼:

[1]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊[M].北京:人民郵電出版社,2008,(8).

[2]杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003.

[3]詹榮開.嵌入式系統(tǒng)BootLoader技術(shù)內(nèi)幕[OL].http://www.ibm.com/developerworks/cn/linux/l-btloader/.

[4]徐海兵.GNU make中文手冊[Z].

[5]Samsung electronics.S3C2440A USER’S MANUAL[Z].

[6]GNU Make.Richard M.Stallman,Roland McGrath,Paul D.Smith.

[7]Arthur Griffith.GCC:The Complete Reference.McGraw-Hill/Osborne.

[8]葛中海,尤新芳.Protel Dxp2004簡明教程與考證指南[M].北京:電子工業(yè)出版社,2010,(2).

猜你喜歡
匯編語言管腳寄存器
高等學(xué)校計算機專業(yè)課程教學(xué)改革實踐——以匯編語言與接口技術(shù)課程為例
計算機教育(2020年5期)2020-07-24 08:52:50
Lite寄存器模型的設(shè)計與實現(xiàn)
匯編語言與C語言的混合程序設(shè)計技術(shù)研究
電子制作(2019年10期)2019-06-17 11:45:16
提高《匯編語言程序設(shè)計》教學(xué)效率的思考與實踐
分簇結(jié)構(gòu)向量寄存器分配策略研究*
基于圖像處理的異型電子元器件管腳偏移誤差檢測方法研究
CMOS數(shù)字IC管腳電容的估算與測量
HC08芯片JVT測試方法的探究
電子測試(2013年22期)2013-09-26 06:03:52
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
一種可重構(gòu)線性反饋移位寄存器設(shè)計
深州市| 和平区| 盱眙县| 西和县| 射阳县| 宁都县| 阳东县| 永靖县| 九龙坡区| 眉山市| 安阳市| 黑龙江省| 武鸣县| 怀集县| 广州市| 怀仁县| 黄陵县| 双辽市| 剑川县| 政和县| 芦山县| 怀来县| 桐梓县| 平利县| 河东区| 常州市| 竹山县| 日照市| 德阳市| 开远市| 延安市| 刚察县| 余庆县| 昂仁县| 美姑县| 杂多县| 泸定县| 奉新县| 育儿| 阜阳市| 金川县|