Linux以外の自作のプログラムを実行したい場合

774 views
Skip to first unread message

cevrza1l-board

unread,
Aug 14, 2013, 2:09:59 AM8/14/13
to
このボードにあるSDRAMでLinux以外のプログラムを実行するには以下のようにします。
 
このボードには以下のメモリが存在します。
SPIシリアルフラッシュが2Mバイトあります。(0x18000000 - 0x0x181FFFFF番地)
SDRAMが32Mバイトあります。(0x0C000000 - 0x0DFFFFFF番地)
 
U-Bootが使用するメモリを避けてプログラムを作成します。
U-Boot (0x18000000-0x1803FFFF)
 
実行手順としては、以下のようになります。
 
1.ARM用コンパイラ(ARM-C, IAR-C等)で、SDRAMのアドレス(0x0C000000番地)で実行可能なプログラムを作成してUSBメモリにコピーします。
2.USBメモリをこのボードに挿します。
3.USBケーブルをパソコンと接続してターミナルソフトでCOMポートを開きます。(Bardrate=115200bps)
4.U-Bootのコマンド待ちを確認します。
  Enterキーを押してU-Bootのプロンプト(==>)が出てくればOK
 
・ コンパイルされた実行バイナリをUSBメモリからSDRAMに転送して実行する場合は以下のようにU-Bootのコマンドを実行します。
  ==> usb start
  ==> fatload usb 0 c000000 /program.bin
  ==> go c000000
 
Linuxのブートで使ったbootmコマンドの代わりにgoコマンドを使用します。
goコマンドは指定のアドレスにジャンプするコマンドです。
 

h.amaya

unread,
Oct 28, 2013, 4:00:00 AM10/28/13
to cevrza1...@googlegroups.com, cevrza1...@googlegroups.com
同様の手順で内蔵RAM(0x20000000 - 0x202FFFFF番地)にバイナリを転送して実行することも可能と思いますが、その場合に使用可能なアドレス範囲を教えてください。(U-Bootの予約領域等ありますか?)

cevrza1l-board

unread,
Oct 28, 2013, 4:57:18 AM10/28/13
to cevrza1...@googlegroups.com

CEV-RZ/A1LはデフォルトでSPIブートなので、リセット時にSPIシリアルフラッシュ(0x18000000番地以降)から実行されますが、SPIフラッシュの先頭で内蔵RAMにU-Boot自身をコピーして内蔵RAMで実行しています。(SPIフラッシュの書き換えが必要なため)


内蔵RAMで動作中のU-Bootは以下のアドレス範囲を使っています。
0x20020000 - 0x200FFFFF (text, bss, stack)

作成したプログラムは0x20100000番地以降にコピーしてジャンプすれば大丈夫かと思います。
Reply all
Reply to author
Forward
0 new messages