Mini210S 開発キットOSなしのプログラム開発手順連載(2)

Mini210S/Tiny210等開発ボード関連のフォラーム

Mini210S 開発キットOSなしのプログラム開発手順連載(2)

投稿記事by dwtechadm » 水 4 10, 2013 2:09 pm

Mini210S 開発キット詳細URL

第II章 ASM言語でLEDを点灯

第一節 回路図確認

Mini210Sボードには4つのユーザプログラマブルLEDを提供しています。下記の回路図をご覧下さい。
1-1.jpg
1-1
1-1.jpg (35.31 KiB) 表示数: 2296 回

LEDの回路図

回路図ピン ゛LED1゛を検索して、結果は:
1-2.jpg
1-2
1-2.jpg (34.59 KiB) 表示数: 2296 回

LED1、2、3、4はCPUポートリソース GPJ2_0、1、2、3を使用します。


第二節 プログラム説明


完全なコードは、ディレクトリ1.led_sを参照してください。 (注:このチュートリアルでは、ユーザーの分かり易い習得するために、すべてのコードが詳細なコメントを含みます。)

1. start.S
 概略から見て、Mini210Sの4つの LEDを点灯するには次の2のステップがあります。:
 ステップ1:レジスタGPJ2CONを設定して、GPJ2_0/1/2/3 4ピンを出力機能に調整します。
 ステップ2:レジスタGPJ2DATに0を書き込み、GPJ2_0/1/2/3 4ピンはロー出力にしで、4つのLEDランプが点灯します;逆に、登録するGPJ2DATに0を書き込むと、GPJ2_0/1/2/3 4はハイ出力にしで、4つのLEDランプが消します。
 上記の2つの手順は、start.Sのメイン内容であります、もっと詳しいコアアセンブリ命令はGNUアセンブラ命令セットをご参照ください。

2. Makefile
 コード:
led.bin: start.o
arm-linux-ld -Ttext 0x0 -o led.elf $^
arm-linux-objcopy -O binary led.elf led.bin
arm-linux-objdump -D led.elf > led_elf.dis
gcc mkv210_image.c -o mkmini210
./mkmini210 led.bin 210.bin
%.o : %.S
arm-linux-gcc -o $@ $< -c
%.o : %.c
arm-linux-gcc -o $@ $< -c
clean:
rm *.o *.elf *.bin *.dis –f
 次はMakefileについて説明します。ユーザーはMakefileのディレクトリ下でmakeコマンドを実行すると、システムは次のように操作を実行します:
 ステップ1 arm-linux-gcc -o $@ $< -cを実行し、当ディレクトリ内のアセンブリファイルとCファイルを.oファイルにコンパイルします。
 ステップ2 arm-linux-ld -Ttext 0x0 -o led.elf $^を実行し、.oファイルをelfファイルとコンパイルします、-Ttext 0x0はプログラムが0x0で実行するため、現在編集するコードがアドレスと関係がないため、任意的なアドレスでも実行できます;

 ステップ3 arm-linux-objcopy -O binary led.elf led.binを実行し、elfファイルを抽出し、開発ボードで実行できるbinファイルに変更します;
 ステップ4 arm-linux-objdump -D led.elf > led_elf.dis を実行し、elfファイルを逆アセンブルしてDISファイルに保存し、デバッガの時は使用できます;
 ステップ5 mkmini210 で led.bin ファイルを処理して、mkmini210 はmkv210_image.c で編成します。詳しい情報はmkv210_image.c関連説明をご参照下さい;

3. mkv210_image.c

 サムスン提供するS5PV210文書《S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf》とチップのマニュアル 《S5PV210_UM_REV1.1.pdf》を参照し、S5PV210起動後は先に内部IROM中のコードを実行して必要な初期化を行います;完了後自動的ハードウェアのNAND FlashまたはSDカードのブートデバイスの最初の16KのデータをIRAM中に読み取ります、この16Kのデータの初位16バイトで一つのチェックサム値があります、データをコピーする時S5PV210はbinファイル中の'1 'の数を統計し、次にチェックと比較します。等しい場合はプログラムを実行し続け、それ以外の場合は停止します。そのために、S5PV210で実行するbinファイルは全部16バイトの頭を持ちます、初位16バイトははチェックサム情報が含まれます。mkv210_image.c はARM9フォーラムのファンが提供する工具で、binファイルに16バイトの頭を添付すると使用します。 mkv210_image.cコア機能は次のようになります:
 ステップ1  16Kバッファの配置;
 ステップ2 led.binをbufferの始まりの16バイトまで読み込みます;
 ステップ3 チェックサムを計算し、チェックサムをbufferの8~11に保存します;
 ステップ4 16kのbufferを210.binにコピーします;

 16Kバッファー(buffer)(210.bin)
 16byteヘッド led.bin

チェックサムと統計キーコードは下記の通りです:
a = Buf + SPL_HEADER_SIZE;
for(i = 0、 checksum = 0; i < IMG_SIZE - SPL_HEADER_SIZE; i++)
checksum += (0x000000FF) & *a++;
コードmkv210_image.cには既に非常に豊富な解釈が含めます、ユーザー自習で簡単に読み取ることができます。




---続く
dwtechadm
 
記事: 60
登録日時: 月 2 25, 2013 1:35 pm

Return to Cortex-A8関連

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[0人]

cron