Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Tiny4412アセンブリウォーターライトコード、Tiny4412ベアメタルLED操作

Tiny4412アセンブリウォーターライトコード、Tiny4412ベアメタルLED操作

  
 

主に、今日見て、正式tiny4412を学ぶの開発に入った今日起動とプロセスのメモリマップとExynos4412データシートTiny4412を開始し、コンパイルはマーキープログラム(C言語のバージョンが続くでした私の開発環境についてお話ししましょう:

開発ボード:Tiny4412拡張版(底板はTiny4412ADK 1312です)

開発ツール:UltraEdit

ホスト:VmWare Ubuntu12.04(64bit)

編集ツール:arm-linux-gcc4.5.1

分類管理を容易にするために、私たちはTiny4412学習エリアを特別にオープンしました。皆さんのお役に立てばと思います、下に入力してくださいトピックは、マーキープログラムについて話します。

1.制御原理の説明
tiny4412コアボード

まず概略図を見てください:
tiny4412-led概略図
tiny4412-led概略図

上図に示すように、Tiny4412には4つのユーザLEDがあり、4つのピンはGPM4_0〜GPM4_3で、IOピンがハイのときはLEDがオフ、IOピンがローのときはLEDが消灯します。 LEDは明るいです。私たちがしなければならない仕事は、出力機能としてGPM4_0〜GPM4_3を設定することです、そして、制御と出力レベルは高いか低いことができます。

2番目に、プログラムの説明

1.led.S

概略図から、プログラムは2つのステップしか実行しないことがわかります。

最初のステップ: GPM4_0〜GPM4_3に対応するコントロールレジスタGPM4CONを設定し、4本のピンGPM4_0〜GPM4_3が出力機能になるようにします。
Tiny4412-GPM4CON

ステップ2:対応するデータレジスタGPM4DATの対応する4ビットを0に設定し、GPM4_0〜GPM4_3をローにし、4つのLEDをすべて点灯させ、しばらく待ちますTimeは、最初のライトだけが点灯するように0番目のビットを0に設定し、残りのビットを1に設定し、2番目のライトだけが点灯するように残りのビットを1に設定します。第2のビットが0に設定されている唯一の第三の光ように、残りのビットは、1に設定され、がGPM4_0ためにいくつかの時間を待つ〜、ビット3が0に設定された時間の期間を待つだけ第四の光がそのよう、残りのビットは、1に設定しますGPM4_3はすべてハイレベルで、4つのLEDライトはすべて消灯しています。これはマーキー効果を達成する。

プログラムコードには、ここに関連する説明もあります。
.text.globl _start_start:/**出力としてGPM4を設定する* /LDR R0、= 0x110002E0 //GPM4CONアドレス0x110002E0ldr R1であり、[R0] //最初の元の値のBICを読み取るR1、R1、#は0xFF00 //クリアビット[15:8] BIC R1、R1は、#1は0xFF //クリアビット[7:0] ORR R1、R1、#は0x1100 //設定ビット[15:8]は0b00010001orr R1、R1、#0x11を//設定ビット[7:0] [R0] //書き込みGPM4CON /** LEDの低さGPM4DATを設定する* /LDR R0、= 0x110002E4 //GPM4DATアドレス0x110002E0ldr R1、[R0] //読み出され、0b00010001str R1であります元の値のleds_loop:BIC R1、R1、#0xFの//クリアビット[0-3]は0フル明るいSTR r1のある、[R0] //書き込みGPM4DATldr R2、= 0xffffffbl delayorr R1、R1、#から0xE //セットビット[0]が0 LED1用のSTR R1を点灯し、[R0] //書き込みGPM4DATldr R2、= 0xffffffbl delaybic R1、R1、#を0x3 //設定ビット[1] 0 LED2光であるORR R1、R1、#1str R1、 [R0] //書き込みGPM4DATldr R2、= 0xffffffbl delaybic R1、R1、#//設定ビット0x6に[2] 0 LED3光であるORR R1、R1、#2str R1、[R0] //書き込みGPM4DATldr R2、= 0xffffffbl delaybic R1、R1、#から0xC //設定ビット[3] 0 LED4明るいORR R1、R1、#4str R1、[R0] //書き込みGPM4DATldr R2、= 0xffffffbl delayorr R1、R1、 #0xfstr R1、[R0] //はGPM4DAT Quanmie LDR R2、= 0xffffffbl DELAYB leds_loophalt_loopを書き込む:Bのhalt_loopdelay://マーキー遅延プロシージャサブR2、R2、#1 //サブ減算のCMP R2、#1は0x0 //r0と0を比較するbne delay //bジャンプが等しくない、等しくない、delaymovにジャンプする、関数を呼び出すときに次の命令に格納されているlr /lr、lrを指すポインタを関数lcに任せるReturn

2. MakeFile説明
led.bin:led.Sarm-linux-gcc -c -o led.o led.Sarm-linux-ld -Tled.lds -N led.o -o led。 elfarm-Linuxの-objcopyを-Oバイナリ-S led.elf led.binarm-Linuxの-objdumpは-D -mアームled.elf> led.disclean:RM -f * .DISの.bin *で.elf *の.o

Makefileがあるディレクトリでmakeコマンドを実行すると、システムは次のことを行います。

Copyright © Windowsの知識 All Rights Reserved