fc2ブログ

[KOZOS]gdbインストール

http://ftp.gnu.org/gnu/gdb/
ここからgdb-7.8.tar.gzをダウンロード。

解凍後、configure実行。

./configure --target=h8300-elf --disable-nls
  :
checking where to find the target windres... pre-installed
checking where to find the target windmc... pre-installed
checking whether to enable maintainer-specific portions of Makefiles... no
configure: creating ./config.status
./config.status: line 1040: syntax error: unexpected end of file



こんなエラーが出た。
unexpected end of file って改行コードが違うとかで見るメッセージ。

改行コードをLinuxに直すために、gdb-7.8の中で、dos2unixを実行してみる。
dos2unix *.*
dos2unix configure
その後、再度configure実行。

./configure --target=h8300-elf --disable-nls
 :
checking where to find the target windmc... pre-installed
checking whether to enable maintainer-specific portions of Makefiles... no
configure: creating ./config.status
config.status: creating Makefile



続いてmake実行。

make
 :
configure: updating cache ./config.cache
configure: creating ./config.status
./config.status: line 1134: syntax error: unexpected end of file
make[1]: *** [configure-intl] Error 1
make[1]: Leaving directory `/mnt/hgfs/vm_share/kozos/tools/gdb-7.8'
make: *** [all] Error 2



何かでまた改行コード問題がある模様。

find gdb-7.8/ -type f | xargs dos2unix




これは、もしかして、WindowsのFirefoxでダウンロードしたtar.gzを
VMware上のCentOSで扱ってるから問題になる??

っと思い立って、CentOS@VMware上のFirefoxで入手したgdb-7.8.tar.gzを比較してみた。
バイナリ比較のためにcmpを使用して

cmp (Winで入手した)gdb-7.8.tar.gz (CentOSで入手した)gdb-7.8.tar.gz


結果、一致した。まあ、そうだよね。tar.gzで固めたファイルだから、中身をいじらないよね。

次に気になったのはtar.gzの展開場所。
Windows上の共有フォルダ上で作業したら、syntax error: unexpected end of fileが出た。
作業場所を以下のCentOS上に変更した。
/usr/local/bin/gdb-7.8
(ここは、仮想OS内の仮想HDD上。ここはCentOSで採用されてるファイルシステムext4上)

そうすると、configure -> make --> make install までエラー無く成功。

[root@localhost gdb-7.8]# which gdb
/usr/bin/gdb




■補足
インストール直後は、/usr/bin/gdbが実行される。
これだと、KOZOSで

gdb kzload.elf
(gdb) target sim → targetコマンドのオプションでsmが無い!とのエラー


となる。

http://kozos.jp/kozos/h8_sim_01.html

ここ見てて気づいたが、以下を使ったらsimが指定出来た。

/usr/local/bin/gdb-7.2/gdb/gdb

[KOZOS]最初から環境立上げ

久しぶりにいじるにあたり、手順まとめ。詳しくは書籍を見ながら。

■手順
http://kozos.jp/books/makeos/index.html#gnu_tools
ここからbinutilsとgccをダウンロード。

VMware上のCentOSで両方解凍。両方共にビルド実行。
./configure -> make -> make install

/usr/local/h8300-elf/binに実行ファイルが生成されるから.bashrcへPATH設定。

gcc h8write.c -o h8write -Wall > こちらもPATHへ追加。

bootload/内でmake image > kzload.motが生成される。

H8/3069のDIPスイッチ=ON,ON,OFF,ON > ROM書き込みモード

bootload/Makefile を修正。 USBシリアル変換だからデバイス名は以下。
H8WRITE_SERDEV = /dev/ttyUSB0

bootload/内でmake write > H8へ書き込みされる。(rootで実行)

[root@localhost bootload]# make write
../../tools/h8write/h8write -3069 -f20 kzload.mot /dev/ttyUSB0
H8/3069F is ready! 2002/5/20 Yukio Mituiwa.
writing
WARNING:This Line dosen't start with"S".
Address Size seems wrong
WARNING:This Line dosen't start with"S".
Address Size seems wrong
......................
EEPROM Writing is successed.



H8/3069のDIPスイッチ=ON,OFF,ON,OFF > 動作モード

minicom -s -o を実行。serial portの設定で9600bpsにする。
Exisで待機状態にすると、Welcome to minicom 2.3等と出て、待機状態になる。

H8ボードのリセットボタンを押すと、プロンプトが出る。

load > Ctrl-A -> s > xmodem選択
  > /rootフォルダにいるがPrevでminicom起動フォルダへ行ける
  > os/kozosやos/kozos.elfを転送しても途中で止まる。
http://kozos.jp/kozos/h8_2_20.html
サポートページでは、elfを転送と書いてあるが、途中で止まる。
本書であった、elfだと余計なデータがあってサイズ大きいからバッファがFULLになるとかいう症状と同じ。
bootloadもosもダウンロードしたデータ使ってるのだが・・・

Ctrl-A -> x でminicomを終了。


(2015.2.11追記)
h8writeすらも失敗するようになったので、
 ・kz_h8writeの使用。
 ・H8/3069Fボードを新しいものに交換。
をやったら、
http://kozos.jp/kozos/h8_2_03.html
に関してはbootload/kzload.motの焼き込み、そして、os/kozos.elfのxmodem転送が成功した。

h8_20


..../kz_h8write -3069 -f20 kzload.mot /dev/ttyUSB0
=================================================
H8/3069F Flash Writer for KOZOS (Version 0.2.1)
Copyright(C) 2011-2012 Shinichiro Nakamura
=================================================
Bitrate sequence failed. (code=0x03)
make: *** [write] Error 1


こんな症状も出たが、二度目やってみると成功した。

[KOZOS]H8/3069FのDCプラグは外形5.5mm/内径2.1mm/プラグ長さ9.5mm/内芯+

http://akizukidenshi.com/catalog/g/gM-00029/

H8/3069F用のACアダプタがどっかに行ってしまったので、
発見したこのアダプタを使おうとしてる。
久しぶりに使うので、このアダプタで使えてたか記憶無し。

問題は、このボードで遊ぶのに、ACコンセントが必要になってしまう事。
だから、USB to DCプラグ(外径5.5mm/内径2.1mm/長さ9.5mm/内芯+)変換コネクタがあれば
この前買ったSANWA 700-BTL017のポートから供給出来るのでは?と思ってる。

それが出来れば、DE0 nanoのようにノートPCとモバイルバッテリだけでどこでも遊べる。

これを発見したので買ってみよう。
http://www.amazon.co.jp/COMON-%E3%82%AB%E3%83%A2%E3%83%B3-USB%E2%86%92DC-%E5%A4%96%E5%BE%845-5mm%E5%86%85%E5%BE%842-1mm-%E9%9B%BB%E6%BA%90%E4%BE%9B%E7%B5%A6%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB/dp/B0040P9D4K/ref=sr_1_1?s=computers&ie=UTF8&qid=1423357723&sr=1-1&keywords=usb-dc+%E5%A4%89%E6%8F%9B%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB
それにしても、なんでかAmazon直販でないもの?は、コンビニ受取が指定出来ない。
サイズは問題ないのに。非常に面倒だ。何とかならないものか。

[KOZOS]Step11(p401): タスク間通信を実装する

面白そうと思って買った技術書でもすぐに飽きて、次の本に行ってしまう。
そんな積ん読的な本が何冊続いた事か・・

この本はもう400ページも読んでしまった。坂井さん素晴らしい本書くなぁ。


組み込みOSではカーネルは必要最低限の機能にしぼり、デバイスドライバなど付加機能はスレッドとして実装という考えが主流だそうだ。
 組込OS: 高速性、リアルタイム性を重視し、ファイルシステム、ネットワーク通信でもカーネル外へ。
 汎用OS: ファイルシステム、ネットワーク通信機能はカーネル内部に組み込まれる事あり。

シリアルへの文字出力を例として以下の違いがある。
 汎用OS: カーネル内部にデバイスドライバを内臓し、デバイスファイルへ書き込めば文字が出力される。
 組込OS: デバイス管理用のスレッドを作成し、そのスレッドに対してタスク間通信で出力依頼する。
そのため組込OSで動作するアプリは、単体で動作できるものは少なく、様々な他スレッドとタスク間通信でやりとりしながら動くものが多い。

[KOZOS]Step10(p367): OSのメモリ管理

OSの役割を考える。
役割の1つは、処理をタスクとして分割する手段を提供している。
この方法としてKOZOSではスレッドとして実装してる。
スレッドを実装する事でそれぞれのアプリは自分だけ動作してるかのように
独立してプログラムを書ける。

OSの仕事はコンピュータの資源管理、コンピュータの定義はCPU&メモリ&I/Oがあること。

コンピュータ資源の1つであるメモリについて考える。
みんなが勝手にメモリを使えば衝突するため、管理する必要が出てくる。

C言語標準ライブラリのmallocやfreeを使って、メモリを動的に獲得/開放し、
さらにそれらの関数の内部でメモリ管理を行えば、衝突の問題は回避できる。



とか何とか説明があり、p377~394までの修正をソースに加える。
いやいやC言語を読んでいったからか、この章の説明は分かり易く、何をやってるか大体理解。

■プログラムの実行 ※ 久しぶりにやると手順忘れるのでまたメモ。
・USBシリアル変換ケーブルを接続し、ホストOSではなく、VMwareに接続させる。

・minicom -s -o > Exitでメニューから抜ける。(minicomの表示になってる)

・H8ボードのリセットを押すと、プロンプトが出てくる。

・まず、load と実行。これでxmodem転送の待ちうけになる。

・Ctrl-A -> S と押すと、メニューが出て、そこからxmodemを選択。

・Prevで現DIRへ移動し、Okayにカーソルを合わせてkozos(※)をファイル選択すると転送がスタート。

  ※ 前章で失敗したように、.elfだとサイズオーバーで転送失敗する。

・転送完了したら何かキーを打ってH8プロンプト画面へ戻る。runを実行すると以下。

kzload> run
starting from entry point: ffffc020
kozos boot succeed!
test10_1 started.
00ffd1b0 aaa
00ffd1c0 bbb
00ffd1c0 aaaaaaa
00ffd1b0 bbbbbbb
00ffd230 aaaaaaaaaaa
00ffd250 bbbbbbbbbbb
00ffd250 aaaaaaaaaaaaaaa
00ffd230 bbbbbbbbbbbbbbb
00ffd230 aaaaaaaaaaaaaaaaaaa
00ffd250 bbbbbbbbbbbbbbbbbbb
00ffd250 aaaaaaaaaaaaaaaaaaaaaaa
00ffd230 bbbbbbbbbbbbbbbbbbbbbbb
00ffd330 aaaaaaaaaaaaaaaaaaaaaaaaaaa
00ffd370 bbbbbbbbbbbbbbbbbbbbbbbbbbb
00ffd370 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
00ffd330 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
00ffd330 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
00ffd370 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
00ffd370 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
00ffd330 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
00ffd330 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
00ffd370 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
00ffd370 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
00ffd330 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
00ffd330 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
00ffd370 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
00ffd370 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
00ffd330 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
test10_1 exit.
test10_1 EXIT.



カレンダー
01 | 2024/02 | 03
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 - -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード