H8マイコン(第一回)

まったくマイコンに触れたことのない初心者向けにマイコンの動かし方を説明する

 

とは言ってもC言語でパソコンのソフトやマイコンが動いているのを知っていて電子工作が得意な奇人変人さんを対象にしています

 

日立製作所製のH8という商品名のマイコンを使用しC言語マシン語に変換するソフトであるHEW(ヒュー)でマイコンを動かしてみる

 

必要なもの

①パソコン

windowsがインストールされたパソコン。OSのバージョンやパソコンのスペックは何でも良い

②HEW

C言語のプログラムをマシン語に変換するパソコンのソフトのこと。このソフトはマイコン製造メーカのルネサスエレクトロニクスのホームページからかつては無料でダウンロードできていたのだが今はダウンロード出来ない。次の本に付属するCD-ROMにHEWが収められている。「C言語によるR8C/Tinyマイコン活用技法、CQ出版社」絶版になっているのでamazonでお早めに購入してください

マイコンボード

マイコンを基板にはんだ付けしたボードのこと。ネット通販や店頭で購入する。H8マイコンを搭載したボードは各社から販売されている。このブログでは使用するのは秋月電子通商マイコンボードを使用する。価格は1500円ほど。URLはここ

http://akizukidenshi.com/catalog/g/gK-00159/

 

④デバッガ

→パソコンから作成したプログラムが思い通り動いているか確認するための電子機器。マイコン上でプログラムの実行状況を確認できる。価格は約10,000円ほど。購入先は秋月電子通商amazonヤフオク等で購入できる。もちろん個人向けのユーザとして購入できる

 

必要なものが揃ったら次の手順に進む 

手順1

パソコンにHEWのダウンロードとインストール

→本の付属のCD-ROMからHEWをパソコンにインストールする。インストールの詳細なやり方は簡単なので省きます

 

手順2

マイコンボードにピンヘッダもしくはピンソケットをはんだ付けする

f:id:raspberrypi1:20200227232812j:plain

 

つづく(今後作成予定、2020.2.27)

次回はLチカのプログラムをHEWで作成しE8aでマイコンに書き込みデバッガでソフトのデバッグを行う予定である

 

 

 

 

 

 

ラズパイマガジン2017年10月号の拡張ボードHATを作ろうをやってみた

 

ラズパイマガジンの2017年10月号の「拡張ボードHATを作ろう」の記事をやってみた

本の通りにやると図23の通りデバイスツリーソースをコンパイルしても図24のようにならなかった。spiが認識されていない

このことを出版社に問い合わせた。しかし返事は来たがわからないとのことだった

そのため自分で対策を立てることにした

3週間に渡るトライアンドエラーの結果ついに出来た

バイスツリーソースを以下のようにするとspiが認識されdhtカーネルドライバが動くように出来た

 

/dts-v1/;/dts-v1/;
/ { compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
fragment@0 { target-path = [2f 00];
__overlay__ {
dht11@0 { compatible = "dht11"; pinctrl-names = "default"; pinctrl-0 = <0x1>; gpios = <0xdeadbeef 0x4 0x0>; status = "okay"; phandle = <0x2>; }; }; };
fragment@1 { target = <0xdeadbeef>;
__overlay__ {
dht11_pins { brcm,pins = <0x4>; brcm,function = <0x0>; brcm,pull = <0x0>; phandle = <0x1>; }; }; };
fragment@2 { target = <0xdeadbeef>;
__overlay__ { cs-gpios = <0x0 0x0>; status = "okay"; }; };
fragment@3 { target = <0xdeadbeef>;
__overlay__ { brcm,pins = <0x8 0x7>; brcm,function = <0x4>; }; };
__overrides__ { gpiopin = <0x1 0x6272636d 0x2c70696e 0x733a3000 0x2 0x6770696f 0x733a3400>; };
__symbols__ { dht11 = "/fragment@0/__overlay__/dht11@0"; dht11_pins = "/fragment@1/__overlay__/dht11_pins"; };
__local_fixups__ {
fragment@0 {
__overlay__ {
dht11@0 { pinctrl-0 = <0x0>; }; }; };
__overrides__ { gpiopin = <0x0 0x10>; }; };
__fixups__ { gpio = "/fragment@0/__overlay__/dht11@0:gpios:0", "/fragment@1:target:0"; spi0 = "/fragment@2:target:0"; spi0_cs_pins = "/fragment@3:target:0"; };};

あとは本の通りにコンパイルしeepromに書き込みrebootすれば図24のようになる

 f:id:raspberrypi1:20180106033031j:plain

 

Raspberry Pi 1のデバイスドライバ開発

組み込みlinuxで必要となるデバイスドライバを作るため『ARMデバイスドライバープログラミング』という本を見て勉強しようと思った

2017.7.2現在では本の通り進めてもエラーが出て進むことが出来ない。エラーを解決するために行ったことを記録する。

本の通りに行うと100ページのinsmodでエラーが出る。内容は
root@raspberrypi:/home/pi# insmod ssegled.ko
insmod: ERROR: could not insert module ssegled.ko: Device or resource busy
root@raspberrypi:/home/pi# dmesg | tail
[ 1045.453728] ssegled loading...
[ 1045.453773] request_mem_region failed.
[ 1045.457656] Can not use GPIO registers. 
である。

エラーの内容を出版社に問い合わせたところエラーの原因はlinuxカーネルのバージョンが新しくなっているためであるとの回答があった。解決策として旧カーネルソースを使うことでエラーが発生しないとの回答であった。旧カーネルソースは「Raspberry Pi 1 model B+」でしか起動できない。さらに付け加えると実はこのボードには2種類あってsocがsamsungELPIDAの2種類が存在する。通販サイトでは「Raspberry Pi 1 model B+」としか表示されていないので注意すること

条件
ボード:Raspberry Pi 1 model B+(SOCがSamusungのもの)
raspbianバージョン:2015-01-31-raspbian.img

上でも書いたがraspberry Pi 1 model B+ は種類が2種類存在する。種類というのはsocがSamsungのタイプとELPIDAのタイプである。ここで使うボードはSamsungのsoc を搭載したraspberry Pi 1 model B+ である。ELPIDAraspberry Pi 1 model B+は使うことが出来ないので注意すること。理由はfirmware が新しくなったためである。
ついでに現在発売されているraspberry Pi 1はELPIDAのタイプしか手に入らない。欲しい場合はオークション等でSamsungのsocのraspberry Pi 1を入手すること

それでは実際の手順を紹介する

カーネルコンパイルはセルフコンパイルすることとする(raspberry Pi 上でコンパイルする)

まずは旧バージョンのraspbianをPCでダウンロードしmicro sdに焼きraspberry Pi 1で起動する。旧バージョンの理由は最新のraspbianはカーネルがdevice treeを採用しているためである。パソコンで旧バージョンのraspbianをダウンロードする。ここでは2015-01-31-raspbian.imgをダウンロードしmicro sdカードに焼く
Raspberry Pi 1に差して起動する。上でも書いたがsocがELPIDAraspberry Pi 1 ではraspbian が起動しないので注意すること

raspbianが起動したら$startxでxwindowを起動し端末を起動する

以下の通りコマンドを入力する
$sudo wget https://github.com/raspberrypi/linux/archive/rpi-3.18.y.tar.gz //旧カーネルバージョンのカーネルソースをダウンロードする
$tar xfvz rpi-3.18.y.tar.gz //展開する
$cd rpi-3.18.y
$sudo apt-get install bc //makeに必要なbcをインストールする
$sudo make bcmrpi_defconfig
$sudo make //makeに14時間くらい掛かった
$sudo make modules_install
$sudo cp arch/arm/boot/Image /boot/kernel.img //ビルドしたカーネルをコピーする
$sudo reboot //再起動する

あとは本の100ページのinsmodでエラーが起きないことを確認する