<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/wak0da1/">
    <title>電子工作 忘備録</title>
    <link>http://w.atwiki.jp/wak0da1/</link>
    <atom:link href="https://w.atwiki.jp/wak0da1/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>電子工作 忘備録</description>

    <dc:language>ja</dc:language>
    <dc:date>2016-08-28T22:21:29+09:00</dc:date>
    <utime>1472390489</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/wak0da1/pages/22.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/wak0da1/pages/25.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/wak0da1/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/wak0da1/pages/24.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/wak0da1/pages/23.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/wak0da1/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/wak0da1/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/wak0da1/pages/21.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/wak0da1/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/wak0da1/pages/20.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/wak0da1/pages/22.html">
    <title>HOS-V4</title>
    <link>https://w.atwiki.jp/wak0da1/pages/22.html</link>
    <description>
      *** HOSの入手
h4_102.tgz.
https://sourceforge.jp/projects/hos

*** 転送ソフト[h8write.exe]
kz_h8write を使用。

*** μITRON ver4の仕様書
次のURLから入手できます．
http://www.assoc.tron.org/jpn/document.html#uITRON4.02

*** コンフィグレータのビルド
HOSをダウンロードし解凍するとフォルダhos-v4が得られます。
hos-v4\documentのhos4cfg.txtを参考にし，コンフィギュレータのmakeを行ってください．
g++が必要になるため、g++がない場合、apt-getでインストールする。
$ apt-get install gcc3*

$ cd hos-v4/config
$ make -f gcc.mak

*** カーネルライブラリのビルド
HOSのカーネルをライブラリとして生成しておき、このライブラリをリンカから呼び出す方法を取る。
そのため、ここでカーネルライブラリのビルドを行う。
hos-v4/document/h83.txtを参考にし，ライブラリのmakeを行ってください．
h4h83.makの修正が必要。
「hms」を「elf」に書き換え
「メモリヒープ」の部分だけ、「/」が「＼」になっていたので「/」に書き換え

*** gcc4のアンインストール
後述する　h8300-hms-gcc　のrpmパッケージインストールでファイル競合するため
こうするとgcc3が残る

***サンプルプログラムのビルド
hos-v4/sample/h83　へ移動。
h83048.x をコピー＆リネームして、適当に h83048_elf.x などとする。
これを開き、先頭部分の「OUTPUT_FORMAT(&quot;coff-h8300&quot;)」を、「OUTPUT_FORMAT(&quot;elf32-h8300)&quot;」
に書き換える。
次にgcc.makをelf用に改造。
・中身のhmsをelfに書き換える
・中身の「リンカスクリプト」部分の「h83048.x」を「h83048_elf.x」
に書き換え、gcc_elf.makとする。

このあとで、
make -f gcc_elf.mak
これでsample.motが生成できるようになった。しかし、、

&amp;bold(){今後！}
リンカスクリプト(.x)もやヘッダファイル(.h)等も、サンプルでは3048ターゲットのようなので、
3069用に修正しなければならない、と思う。現在情報集め中。
これら、makeを通す過程で使用するファイルたちで3069用に変更しなければならないものは
http://www.xstech.co.jp/hosv4/H4_index.htm
http://tokyo-ct.net/usr/kosaka/for_students/RTOS/iguchi3052/RTOS/RTOS.htm
を参考にして用意するしかない。ネット調べてみたが3069用に用意されているものは見つからない（どっかにあるとは思うんだが。。）
うまく修正できて、makeが通れば、ROMで動作する.motが生成できるはず、と思う。


***　参考情報
リンカスクリプトについて
http://hijiri3.s65.xrea.com/sorekore/develop/h8/00_aki-h8-usb.htm
&gt;リンカスクリプトとスタートアップルーチン
&gt;
&gt;リンカスクリプトとはメモリーマップ上にデータは何処に置けるか、プログラムは何処に置けるか等を定義したロケート情報が入っている&gt;ld(リンカ)のスクリプトです。オブジェクトにアドレスを振る（リンクする）際に必要となります。メモリマップはターゲットのCPUのプログラムメモリやワークメモリや外部メモリのアドレスやサイズによって変化するので、リンカスクリプトはターゲットのハード構成ごとに、作成する必要があります。
&gt;GCCではロケート情報をリンカスクリプトにすることでリンカがアドレスを解決します。GCCのリンカスクリプトの詳細な内容は以下の資料を参考にしてください。
&gt;↓Redhatの 組込みトップ &gt; 組込み・ダウンロードのリンカスクリプト
&gt;http://www.jp.redhat.com/download/cygnus/doc/linker-scripts.pdf
&gt;
&gt;スタートアップルーチンはCPUがプログラムを動かす上で最初に必要な動作が記述されているアセンブラソースです。具体的には、スタックポインタの初期化とかROMのデータをRAMに再配置とかmain関数の呼び出し等です。Cのプログラムはmain関数から始まりますが、プログラムはプログラムカウンタのリセット値(0である場合が多い)から始まるわけですから、プログラムカウンタの値をmain関数の位置にとばすプログラムも必要になります。main関数はさらに引数があるので、スタックが必要になります。だからmain関数を呼ぶ前にスタックポインタを初期化する必要があるわけです。
&gt;
&gt;実はこの2つのどちらを使っても割り込みベクタを記述することが可能です。どちらに書くかはプログラマ次第です。gccコマンドはオプション-vを追加して[[コンパイル]]するとコンパイルの各動作が表示されるので、コレを見ながら正しくコンパイルされているか確認します。

*** OSを用いる場合と用いない場合の比較
http://tokyo-ct.net/usr/kosaka/for_students/RTOS/uITRON3069/uITRON3069.html　（ページ下部）

★最終的にここ↑の通りにやって, 3069f用のsample.motをビルドすることができた。
makeの時にリンカに怒られるので、ここのとおりにする
http://thru.jugem.jp/?eid=3

minicom の通信設定は以下？
38400 8N1

しかし、結局、シリアル通信まではできたが、00000:Task1を表示してとまってしまう問題が解決できず、hos-v4の使用をあきらめた(16.8.26)    </description>
    <dc:date>2016-08-28T22:21:29+09:00</dc:date>
    <utime>1472390489</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/wak0da1/pages/25.html">
    <title>processing</title>
    <link>https://w.atwiki.jp/wak0da1/pages/25.html</link>
    <description>
      * ProcessingをLinuxにインストールする方法

http://kunikazutayama.blogspot.jp/2014/04/processinglinux.html

ソースコードはPerlin Sine Waves- OpenProcessing

ProcessingをLinuxにインストールする方法を紹介します
参考にしたサイト
	Tutorial for Linux | How-to Install driver manager kdeProcessing on Ubuntu and Getting-Started Step-by-Step Guide

まずはJavaが入っていることを確認
java -version
で確認できます。
コマンドの解説は
java - Java アプリケーション起動コマンド 
 
なかったら
sudo apt-get install openjdk-7-jdk 
などでインストールしましょう
コマンドの解説は 
Linuxコマンド集 - 【 sudo 】指定したユーザーでコマンドを実行する：ITpro
Linuxコマンド集 - 【 apt-get 】 パッケージを取得してインストール/アップデートする：ITpro 
 
 
Download  Processing.orgより自分のOSに合ったものを選択してダウンロードします

解凍したら元のtgzは削除して、例えば/tmp/に解凍した場合は
sudo mv /tmp/processing* /opt/processing
 で/opt/processingに移動させます。
コマンドの解説は
Linuxコマンド集 - 【 mv 】 ファイルやディレクトリの移動・名前の変更をする：ITpro

端末から起動できるように 
sudo ln -s /opt/processing/processing /usr/local/bin/processing
を実行してシンボリックリンクを作成する
コマンドの解説は
Linuxコマンド集 - 【 ln 】 ファイルやディレクトリにリンクを張る：ITpro 

以上の操作で、端末から「processing」と入力すれば起動できるようになります 

* その他参考サイト
http://ap.kakoku.net    </description>
    <dc:date>2015-01-29T22:24:49+09:00</dc:date>
    <utime>1422537889</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/wak0da1/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/wak0da1/pages/2.html</link>
    <description>
      &amp;counter()
**メニュー
-[[トップページ]]
-[[環境構築 (hms)]]
-[[環境構築 (elf)]]
-[[ハード構築]]
-[[コンパイル]]
-[[Linuxコマンドめも]]
-[[VNC設定メモ]]
-[[HOS-V4]]
-[[C言語LED点滅]]
-[[toppers]]
-[[processing]]

-[[その他]]

----


**リンク
-[[@wiki&gt;&gt;http://atwiki.jp]]
-[[@wikiご利用ガイド&gt;&gt;http://atwiki.jp/guide/]]
-[[プラグイン紹介&gt;プラグイン]]
-[[まとめサイト作成支援ツール]]


// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります


//**更新履歴
//#recent(20)

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2015-01-29T22:23:13+09:00</dc:date>
    <utime>1422537793</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/wak0da1/pages/24.html">
    <title>toppers</title>
    <link>https://w.atwiki.jp/wak0da1/pages/24.html</link>
    <description>
      * toppers 稼働

 http://www.mtc.pref.kyoto.lg.jp/kenkyukai/embedded/seminar/jsp00.html

結局、ここのおかげで、この通りやればできた。
（開発環境ができている前提）
自分のLinux内のディレクトリは/home/***/topperes

ただし、tera term ではなく、minicom を使用。
「Paste file」でサンプルプログラムが転送できた。が、転送がすごく遅い。

* ROM化
デフォルトの状態だとモニタプログラム上で実行するようになっています。 今回、モニタプログラムは使わずにROMから実行するのでROM実行に変更します。 jsp/config/h8/akih8_3069f/Makefile.configの内容を修正します。 DBGENV := TNCT_MONITORの項目をコメントアウトして、 DBGENV := ROMを有効にします。

* LED点滅
h8 3069f用のI/Oレジスタ定義ファイルとして、みついわさんのところから reg3067.h を入手しインクルード。
P4DDR = 0xff;　にしポート4を出力。
P4DR = 0xff &lt;-&gt; 0x00 を交互に出力しLEDを点滅。    </description>
    <dc:date>2015-01-25T20:27:10+09:00</dc:date>
    <utime>1422185230</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/wak0da1/pages/23.html">
    <title>C言語LED点滅</title>
    <link>https://w.atwiki.jp/wak0da1/pages/23.html</link>
    <description>
      * 1. LED点滅ソースコード（blink.c）

 #define P4DDR   (*(volatile unsigned char *)0xfee003)
 #define P4DR    (*(volatile unsigned char *)0xffffd3)
 
 int main(void){
         int i;
         P4DDR = 0xc0;           // Set bit 6 and 7 of port No.4 for Output
         while(1){
                 P4DR = 0x80;    // Write bit 7 to turn on Green LED
                 i=1000000;
                 while(i&gt;0) i--; // Wait for a moment
                 P4DR = 0x40;    // Write bit 6 to turn on Red LED
                 i=1000000;
                 while(i&gt;0) i--; // Wait for a moment
         }
 }

* 2. RAM用スタートアップスクリプト(ramcrt0.S)

 	.h8300h 
 	.section .text
 	.global	_start
 _start: 
 	jsr	@_main
 	rts

* 3. RAM用リンカスクリプト(ram3069F.x)

 OUTPUT_FORMAT(&quot;elf32-h8300&quot;)
 OUTPUT_ARCH(h8300h)
 ENTRY(&quot;_start&quot;)
 MEMORY
 {
 	syscall(r) : o = 0x000100, l = 0x0200
 	ram(rwx)   : o = 0xffbf20, l = 0x1800
 }
 SECTIONS
 { 
 .text :	{
 	*(.text)
 	*(.strings)
 	*(.rodata)
   	 _etext = . ; 
 	}  &gt; ram
 .tors : {
 	___ctors = . ;
 	*(.ctors)
 	___ctors_end = . ;
 	___dtors = . ;
 	*(.dtors)
 	___dtors_end = . ;
 	}  &gt; ram
 .data : {
 	*(.data)
 	 _edata = . ; 
 	}  &gt; ram
 .bss : {
 	 _bss_start = . ;
 	*(.bss)
 	*(COMMON)
 	 _end = . ;  
 	}  &gt;ram
 }


* 4. コンパイル、リンク。各オプションの意味は以下の通り。

 -g            : デバッグ情報を付加する
 -mh           : H8/300Hシリーズのプロセッサ向けにコンパイルを行う
 -mint32       : 32bitのint型を使用する（デフォルトは16bit）
 -nostartfiles : 標準のスタートアップスクリプト(crt0.S)を使用しない。
 -T            : リンカスクリプトを指定
 -o            : 出力ファイル名の指定

 $ export PATH=/usr/local/gnu/bin:$PATH
 $ h8300-elf-gcc -g -mh -mint32 -nostartfiles -Tram3069f.x -o blink.elf ramcrt0.S blink.c

これで blink.elf が完成。


* 5. ROM用スタートアップスクリプト(30xxcrt0.S)

 	.h8300h
 	.section .text
 	.global	_start
 _start:
 	mov.l	#_stack,sp
 	mov.l	#___dtors_end,er0
 	mov.l	#___data,er1
 	mov.l	#_edata,er2
 .mvdata:
 	mov.w	@er0,r3
 	mov.w	r3,@er1
 	adds	#2,er0
 	adds	#2,er1
 	cmp.l	er2,er1
 	blo	.mvdata
 	jsr	@_main
 	bra	_start
 
 	.section .stack
 _stack:	.long 	1

* 5. ROM用リンカスクリプト(rom3069f.x)

 OUTPUT_FORMAT(&quot;elf32-h8300&quot;)
 OUTPUT_ARCH(h8300h)
 ENTRY(&quot;_start&quot;)
 MEMORY
 {
 	rom(rx)    : o = 0x00b000, l = 0x055000
 	ram(rwx)   : o = 0xffdd20, l = 0x001800
 	stack(rw)  : o = 0xffff1c, l = 0x000004
 }
 SECTIONS 				
 { 					
 .text : {
 	*(.text)		
 	*(.strings)
 	*(.rodata)
   	 _etext = . ; 
 	} &gt; rom
 .tors : {
 	___ctors = . ;
 	*(.ctors)
 	___ctors_end = . ;
 	___dtors = . ;
 	*(.dtors)
 	___dtors_end = . ;
 	}  &gt; rom
 .data : AT ( ADDR(.tors) + SIZEOF(.tors) ){
 	___data = . ;
 	*(.data)
 	*(.tiny)
 	 _edata = .;
 	} &gt; ram
 .bss : {
 	 _bss_start = . ;
 	*(.bss)
 	*(COMMON)
 	 _end = . ;  
 	}  &gt;ram
 .stack : {
 	 _stack = . ; 
 	*(.stack)
 	}  &gt; stack
 }

* 6. ROM化のためのコンパイル、リンク

 $ h8300-elf-gcc -O -mh -mint32 -nostartfiles -Trom3069f.x -o blink.elf 30xxcrt0.S blink.c

* 7. Sレコード型式への変換

Sレコード形式と呼ばれるファイル形式に変換する。Sレコード形式とは、米モトローラ社によって開発されたテキスト形式のファイルで、ROMアドレスとバイナリコードが規則正しく並んでいる。また、ほとんどのROMライタがこのSレコード形式に対応している。
変換が出来たら、GDBスタブやRedBootを焼いたときと同じようにフラッシュROMに焼きます。もちろん、

 $ h8300-elf-objcopy -O srec blink.elf blink.mot

ROM用Sレコード(blink.mot)

 S00C0000626C696E6B2E6D6F7465
 S113B0007A0700FFFF1C7A000000B0607A0100FF9D
 S113B010DD207A0200FFDD20690369930B800B8138
 S113B0201FA145F45E00B02A40D601006DF60FF66C
 S113B030FAC06AAA00FEE0037A0300FFFFD3FA8095
 S113B04068BA7A02000F42401B020FA24EFAFA407D
 S113B05068BA7A02000F42401B020FA24EFA40DE89
 S903B0004C

* 8. H8へ焼く

H8をフラッシュROM書き込みモードにして、電源を入れ以下コマンドを実行
 # kz_h8write -3069 -f20 blink.mot /dev/ttyUSB0

H8の電源を切り、通常モードにして再度電源をONするとLEDが点滅する。



* 参考ページ
http://www.embedded.jp/article/cross.html    </description>
    <dc:date>2015-01-15T21:59:57+09:00</dc:date>
    <utime>1421326797</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/wak0da1/pages/17.html">
    <title>Linuxコマンドめも</title>
    <link>https://w.atwiki.jp/wak0da1/pages/17.html</link>
    <description>
      ***wifi環境のLinuxとMac間でPingが通らなかった件
「ネットワーク隔離機能」が原因。
wifi環境下のLinuxがgw(WEP)、Macがg(AES)で、gw側のみ隔離機能(インターネット以外の通信を通さない機能)により
sshが通らない(port22が遮断？)事態になっていた。
隔離機能をOFFにすることで解決。
（参考）
http://monokurotamago.hatenablog.com/entry/2014/06/29/150404



*** ファイル検索
&gt; $ find / -name hoge.txt

*** apt-get update
 # apt-get install hoge
するまえに、Updateする必要あり

*** CapsをCtrlに変更
[[ここ&gt;http://daily.belltail.jp/?p=480]]を参考にさせていただく。
コピペさせていただく。

xmodmapというのを使います．
ググってもらうとわかるんですが，CapsLockと左Ctrlの「交換」ばっかりですね．CapsLockなんてまっっったくいらない子なので，どっちも「左Ctrl」にしてしまいます．
「交換」だと，2回適用しちゃって元に戻ってあれれってなりますしね．
で，ホーム直下あたりに”.Xmodmap”とでも名前つけたファイルを作成し，次の内容を記述します．
 remove Lock = Caps_Lock
 keysym Caps_Lock = Control_L
 add Control = Control_L
コマンドから設定を適用するには，シェルから
 % xmodmap ~/.Xmodmap
でよいのですが，どうせならログイン時に自動でしてほしいです．
なので，
 xmodmap ~/.Xmodmap
を，ホーム直下の.profileとか.bash_profileに記述(追記)します．

これでログインしなおすことで設定が反映されているか確認できます．

*** Linux起動時のアプリケーション自動起動
デスクトップ上のメニューから
システム-&gt;設定-&gt;ユーザ向け-&gt;自動起動するアプリケーション　を選択    </description>
    <dc:date>2015-01-11T22:23:18+09:00</dc:date>
    <utime>1420982598</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/wak0da1/pages/15.html">
    <title>環境構築 (elf)</title>
    <link>https://w.atwiki.jp/wak0da1/pages/15.html</link>
    <description>
      &amp;counter()

* H8ライタ
***h8write
ソースおよび[[コンパイル]]後の実行形式は以下
/home/***/H8_dev/
実行形式は/usr/local/bin にコピーしパスが通るように設定

ただしh8writeはバグがあるらしくkz_h8writeを使用する。

***kz_h8write
ソースおよびコンパイルの実行形式は以下
/home/***/H8_dev/kz_h8write/src
実行形式は/usr/local/bin にコピーしパスが通るように設定

* クロス開発環境
*** GCC のダウングレード
Vine Linux 6.2 を入れたので、デフォルトのGCCは4。
4でもいいらしいが色々と上手くいかないことが多いようなので、ダウングレードする
まず、既存のGCCを消す
 # apt-get remove gcc
そしてGCC3.xをインストールする
さきにUpdateしておく
 # apt-get update
 # apt-get install gcc3

*** ソースファイルのダウンロード
[[GNUのリンク&gt;http://www.ring.gr.jp/archives/GNU/]]から「binutils-2.17.tar.bz2」と「gcc-core-3.4.6.tar.bz2」をダウンロードする

***binutilsのコンパイルとインストール
binutilsからはじめる。次のコマンドを入力。
 $ cd /usr/local/src/binutils-2.17/
 $ mkdir build-h8300-elf
 $ cd build-h8300-elf/ 
ここでは、binutilsディレクトリに移動し、その中に作業用の「build-h8300-elf」ディレクトリを作っています。
続いて次のコマンドを入力してください。
 $ ../configure --target=h8300-elf --prefix=/usr/local 
&gt;–target=h8300-hmsにすると以下のように失敗します→–target=h8300-elfにする
&gt;checking whether to build static libraries... yes
&gt;Setting warning flags = -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror
&gt;checking whether byte ordering is bigendian... no
&gt;This target is no longer supported in gas
&gt;make[1]: *** [configure-gas] Error 1
&gt;make[1]: Leaving directory `/usr/local/bin/binutils-2.20/build&#039;
&gt;make: *** [all] Error 2
クロス開発環境の構築では、コンフィグレーションといって、最初に環境を決める設定行います。コンフィグレータはソフトの動作環境やオプション設定に合わせて、Makefikeを生成します。
結果を「ls」コマンドで確認すると、次のようなファイルが作られているのが分かります。
 $ ls
 Makefileconfig.cacheconfig.logconfig.statusserdep.tmp 
次に「make」コマンドでbinutilsパッケージをコンパイルします。コンパイルにはしばらく時間がかかります。
 $ make 
コンパイルが終了したら、次の「make」コマンドでパッケージをインストールします。インストールにもしばらく時間がかかります。
 $ make install 
インストールが終了したら、binutilsを確認しましょう。ここでアセンブラのバージョンを表示します。次のコマンドを入力してください。
 $ h8300-elf-as --version
 GNU assembler 2.17
 Copyright 2005 Free Software Foundation, Inc.
 This program is free software; you may redistribute it under the terms of
 the GNU General Public License.This program has absolutely no warranty.
 This assembler was configured for a target of `h8300-elf&#039;.
 H8マイコン用binutilsは、コンフィグレーションの「prefix」オプションで指定した「/usr/local」にインストールされます。binutilsの各種コマンドは、「bin」ディレクトリに置かれます。

*** gcc-coreのコンパイルとインストール
binutilsに続き、gcc-coreをコンパイル・インストールします。手順はbinutilsと変わりません。
以下のようにディレクトリを移動し、作業ディレクトリを作ります。
 $ cd /usr/local/src/gcc-3.4.6/
 $ mkdir build-h8300-elf
 $ cd build-h8300-elf/ 
さらに、コンフィグレーションします。
 $ ../configure --target=h8300-elf --prefix=/usr/local/ --with-newlib --with-headers=/usr/local/src/newlib-1.17.0/newlib/libc/include/ --enable-languages=c 
そして、「make」コマンドでコンパイルします。
 $ make 
コンパイルが完了したらインストールします。
 $ make install 
それでは確認してみましょう。以下のコマンドを入力してください。
 $ h8300-elf-gcc --version
 h8300-elf-gcc (GCC) 3.4.6
 Copyright (C) 2006 Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 $ 
上記のようなメッセージが表示されれば問題ありません。

*** newlibのコンパイルとインストール
最後にnewlibをコンパイル・インストールします。
以下のコマンドでディレクトリを移動し、作業ディレクトリを作ります。
 $ cd /usr/local/src/newlib-1.17.0/
 $ mkdir build-h8300-elf
 $ cd build-h8300-elf/ 
さらに、以下のようにコンフィグレーションします。
 $ ../configure --target=h8300-elf --prefix=/usr/local/ 
続いて、「make」コマンドでコンパイルします。
 $ make 
コンパイルが完了したら最後に、インストールを行います。
 $ make install 
以上で標準Cライブラリがインストールされました。



----
...いろいろやったが、[[みついわさんのところ&gt;http://mes.sourceforge.jp/h8/index-j.html]]から、rpmパッケージを持ってきてインストール。。
[[ここ&gt;http://akita-nct.jp/~yamamoto/comp/H8/setting_linux/settings_linux.html]]も参考。
&gt;開発環境はクロスコンパイラーを使うことになります．Linuxでのクロスコンパイラーの環境構築の方法は，いろいろあるようです．ここでは，インストールが簡単なrpmパッケージを使うことにします．rpmパッケージは，みついわゆきおさんのLinuxによるマイコンプログラミングのページの「GCC for SuperH,H8/300,AVR」から，H8/300H用バイナリパッケージ(Linux version)をダウンロードします．
&gt;    h8-binutils-2.13-1.i386.rpm
&gt;    h8-gcc-3.2-1.i386.rpm
&gt;    h8-newlib-1.10.0-1.i386.rpm
&gt;rpmパッケージなので，インストールは簡単で，rootになり，
&gt;    # rpm -ivh h8-binutils-2.13-1.i386.rpm
&gt;    # rpm -ivh h8-gcc-3.2-1.i386.rpm
&gt;    # rpm -ivh h8-newlib-1.10.0-1.i386.rpm

----

*** configure, make, makeinstall のこと
[[参考：ITmedia&gt;http://www.itmedia.co.jp/help/tips/linux/l0302.html]]
&gt;Linuxには，Red Hat系のRPM，Debianのdeb形式のようにディストリビュートに依存したバイナリ形式のパッケージがある。
&gt;しかしMIPS/LinuxやSlackwareなど，RPMもdebも利用できない場合には，ソフトのインストールにはtarballと呼ばれるtarコマンドでソースがアーカイブされたものを使用しなければならない。
&gt;バイナリパッケージには手軽にインストールできるという魅力があるが，tarballには常に最新バージョンを手に入れられるという安心感がある。
&gt;現在スタンダードなtarballは拡張子に「xxxxxxxx.tar.gz」と付けられているものがほとんどだ。この形式のファイルは，次のような手順でインストールを行う。
&gt;$ tar zxfv xxxxxxxx.tar.gz
&gt;$ cd xxxxxxxx
&gt;$ ./configure
&gt;$ make
&gt;# make install
&gt;ここでの， configure
&gt;make
&gt;make install
&gt;には，それぞれ次のような意味合いがある。
&gt;　「configure」は，これからインストールを行うOSのCPUやバージョンを調べたり，必要な関連ツールを調査する。そして，これらの状況を記述したMakefileファイルを作成する。
&gt;　「make」は，configureで作成されたMakefileを基にしてソースコードをコンパイルする。ここでエラーが起こる場合には，configureで環境に沿ったパラメータを付加させなければならない。
&gt;　「make install」は，makeで生成されたバイナリファイルなどを規定のディレクトリにコピー（インストール）を行う。インストール先のディレクトリは，自分で設定したい場合にはconfigureで「--prefix=/usr/xxxxxx」などとパラメータを付加させる必要がある。

&gt;一般的に、一度 configure を実行した後に配布時の状態に戻したい場合は
&gt;% make distclean
&gt;とすると実行ファイル・オブジェクトファイル・Makefile などが消去される。

[[参考：Configureオプション&gt;http://www.itmedia.co.jp/help/tips/linux/l0371.html]]
[[参考：H8マイコンのソフトウェア開発環境を整備しよう(MONOist)&gt;http://monoist.atmarkit.co.jp/mn/articles/0910/23/news102_2.html]]

* h8/osをROMに焼く
*** h8/osの入手
[[みついわさんのところ&gt;http://mes.sourceforge.jp/h8/index-j.html]]から、h8/os（コマンドインタープリタ付き）をDL (H8/OS ver3.51)
h8writeで書き込み
# h8write -3069 -f20 plus3068.mot /dev/ttyUSB0

*** h8/osとの通信
シリアルターミナルをインストール
kermitをインストールしたかったが、apt-getで見つからなかったのと、時間がなかったのとで、
minicomをインストール
# apt-get install minicom
[[minicomインストールと設定&gt;http://www.inthttp://www.interface.co.jp/cpu/sh240_howto/howto06.asp]]
上記参考に設定まで完了。
&gt;「通信パラメータ P」で以下を設定
&gt; 57600bps
&gt; 8ビット長
&gt; パリティなし
&gt; 1ストップビット
&gt; ハードウェアフロー
&gt; ※これは毎回やらないといけないっぽい。保存できないかなぁ？

&gt;「設定 O」で以下を設定
&gt; シリアルポート　→　シリアルデバイス　→　/dev/ttyUSB0
&gt; &quot;dfl&quot;に設定を保存（わからんけど一応）
 

設定完了後、minicomを一旦終了、H8電源オフ、H8を通常モード(ON,OFF,ON,OFF)に設定、
minicom を再び起動し、H8の電源オン
&gt;Welcome to the H8 Monitor !!
と出ればOK
終了する時は、ctrl+a -&gt; q

次は、h8/osの上位版？の、MESを入れてみるか。
（MESで開発をすすめるかどうするか。マルチタスクである必要もあまりなさそうだし、キュメントが多い方が良さそうかな）

[[次はここを読んで、やる&gt;http://monoist.atmarkit.co.jp/mn/articles/1103/31/news004.html]]    </description>
    <dc:date>2014-11-11T20:10:59+09:00</dc:date>
    <utime>1415704259</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/wak0da1/pages/21.html">
    <title>VNC設定メモ</title>
    <link>https://w.atwiki.jp/wak0da1/pages/21.html</link>
    <description>
      * VNC で Mac と Linux を共有（MacからLinuxを操作）
** Linux 側の設定
*** リモートデスクトップの設定
システム→設定→インターネットとネットワーク→リモート・デスクトップ
「共有」
 他のユーザが自分のデスクトップを表示できる、にチェック
 他のユーザがデスクトップを操作できる、にチェック
「セキュリティ」「通知領域」は必要に応じて設定
*** ファイヤウォールの設定
システム→システム管理→セキュリティレベルとファイヤーウォールの設定
[[その他]]のポート→追加
 5900 tcp, 5900 udp, 5901 tcp 5901 udp 
を追加する
（VNCは上記のポートを使うらしい）
** Mac 側の設定（というか操作）
Finder→移動→サーバへ接続（Finderで ⌘k でもOK）
vnc://(Linux側のIPアドレス)　を入力    </description>
    <dc:date>2014-04-06T22:04:18+09:00</dc:date>
    <utime>1396789458</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/wak0da1/pages/18.html">
    <title>コンパイル</title>
    <link>https://w.atwiki.jp/wak0da1/pages/18.html</link>
    <description>
      &amp;counter()

*** 【覚え（あとで清書）】
これでコンパイル通って exec ffd940 で実行までできた
 $ h8300-hms-gcc -O -mh -mint32 -T ram3068_ffd940.x -o blilk.coff -nostartfiles ramcrt0.S blink.c -lc
 $ h8300-hms-objcopy -O srec blink.coff blink.mot
&gt;ram3068_ffd940.x (ram3068.xを修正)
&gt; OUTPUT_FORMAT(&quot;coff-h8300&quot;)。
&gt; OUTPUT_ARCH(h8300h)
&gt; ENTRY(&quot;_start&quot;)
&gt; MEMORY
&gt; {
&gt; 	syscall(r) : o = 0x000100, l = 0x0200
&gt; 	ram(rwx)   : o = 0xffd940, l = 0x1800
&gt; }

&gt;編集予定
&gt;みついわさんのところから h8300-hms-gcc の開発環境のrpmパッケージを持ってきてもできた。
&gt;今までできなかったのは、exec ffd940 をしてなかったからってだけ。
&gt;それなのにいろいろなところを調べまくった。。
&gt;最終的にはelf形式もcoff形式もどっちもコンパイルできるような環境にはなったが。。
&gt;elf版、coff版で、後日両方まとめておくことにする。

[[【覚え】ここを読む&gt;http://www.embedded.jp/article/cross-8.html]]
[[【覚え】ここを読む&gt;http://nsa.kpu-m.ac.jp/gijutu/h8/use/use.txt]]
[[【覚え】ここを読む&gt;http://wave2.iobb.net/doc/h8/2.html#_Toc99442962]]
[[【覚え】ここを読む&gt;http://miqn.net/introduction/96.html]]

*** ヘッダ類
-reg3067.h
-syscall.h
を、
 /usr/local/h8300-elf/include
に、h8 というフォルダを作って入れておく。
念のためパーミッションを 777 にする。
（上記フォルダに入れないと「見つかりません」と言われる）

*** メモリ定義ファイルの修正
[[ここを参照&gt;http://thru.jugem.jp/?eid=3]]
iv. リンカスクリプトを修正する　の部分を参照し、
今回 h8300-elf-gcc をインストールしたので対応したリンカを使うようにしなければならない
ram3068.x を emacs で開き、先頭部分を変更する
 OUTPUT_FORMAT(&quot;coff-h8300&quot;)
を、
 OUTPUT_FORMAT(&quot;elf32-h8300&quot;)
に変える。



*** コンパイル
みついわさんのところからもってきたram3068.xは、コンパイラがh8300-hms-gccを対象にしているため、さっき作った ram3068elf.xを使用してコンパイル＆リンクする。
 $ h8300-elf-gcc -O -mh -mint32 -T ram3068elf.x -o blink.coff -nostartfiles ramcrt0.S blink.c -lc
ここで、最初の&amp;bold(){&quot;-O&quot; は大文字}であることに注意する！
大文字にせず、小文字にしてしまうと以下のようにエラーがでる！
（ここでだいぶはまった。。）
 &gt;/usr/local/lib/gcc-lib/h8300-elf/3.2.3/../../../../h8300-elf/bin/ld: unrecognised emulation mode: h 
 &gt;Supported emulations: h8300elf h8300helf h8300self
 &gt;collect2: ld はステータス 1 で終了しました

次に中間ファイル(.coff)をモトローラS形式へ変換する
 # h8300-elf-objcopy -O srec blink.coff blink.mot

*** 転送
みついわさんのところから put コマンドを入手して、以下のようにして put する。
 # put -e blink.mot /dev/ttyUSB0
みついわさんによるとこれで自動的にRAM上に転送されたプログラムが実行されるとあるが、
これがどうやらそうでもない。
これを信じてずっと「動かん動かん」と言っていたが、試しに minicom を開いて
 H8/OS &gt; exec ffd940
として実行してやることで初めて作動。ここでもはめられた。


ちなみにソースはこれ。
&gt;#include &lt;h8/reg3067.h&gt;
&gt;#include &lt;h8/syscall.h&gt;
&gt;
&gt;int main(){
&gt;  P4DDR = 0x01;
&gt;  while(1){
&gt;    P4DR = 0x00;
&gt;    sleep(5);
&gt;    P4DR = 0x01;
&gt;    sleep(5);
&gt;  }
&gt;}
----
syscall.h, reg3067.h が、どーこにおいても「見つかりません」と言われた時もあったので、
そういう時はソース blink.c と同じフォルダにおいて、ソースのインクルード行を
 #include &quot;syscall.h&quot;
 #include &quot;reg3067.h&quot;
にしてやればとりあえず見つけてもらうことはできる。

***     </description>
    <dc:date>2014-03-27T22:38:59+09:00</dc:date>
    <utime>1395927539</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/wak0da1/pages/20.html">
    <title>環境構築 (hms)</title>
    <link>https://w.atwiki.jp/wak0da1/pages/20.html</link>
    <description>
      &amp;counter()

みついわさんのところから、rpmパッケージを持ってきてインストールするだけでもできた。
こっちのほうがはるかにラク。

*** rpmパッケージのダウンロード
[[みついわさん&gt;http://mes.sourceforge.jp/h8/index-j.html]]のところへ飛び、「GCC for SuperH/H8/AVR」をクリック。
以下の３つを適当なフォルダにダウンロード
&gt;H8/300H用バイナリパッケージのダウンロード(Linux version)
&gt;binutils rpm バイナリパッケージ : h8-binutils-2.13-1.i386.rpm
&gt;gcc rpm バイナリパッケージ : h8-gcc-3.2-1.i386.rpm
&gt;newlib rpm バイナリパッケージ : h8-newlib-1.10.0-1.i386.rpm
 # rpm -ivh ***.rpm
で、3つのパッケージをインストール。完了。    </description>
    <dc:date>2014-03-25T12:50:57+09:00</dc:date>
    <utime>1395719457</utime>
  </item>
  </rdf:RDF>
