読者です 読者をやめる 読者になる 読者になる

zynqでlinuxをブートするために必要なファイルは何か

はじめに

zyboやzedboardに載ったzynq上でlinuxを動かす際に必要なファイルについて,各ファイルがどんな意味を持つのか簡単にまとめていこうと思います。

zynqでlinuxを動かす

zynqでlinuxを動かす方法についてはいろいろなサイトで紹介されているのでそちらを参考にしてください。
1. Zynq LinuxからFPGAを利用するって? – yuki-sato.com
zybo でlinux - ippeiの日記

必要なファイルについて

zynqでlinuxを動かすためには,
・boot.bin
・devicetree.dtb
・uimage
・uramdisk.image.gz
の4つが最低限必要なようです。
今回はこれらの4つをSDカードに入れて,zynq上でlinuxを起動するとします。

ブートプロセス

zynqをSDカードからのブートモードにした場合,まずPS側でSDカードを読み込みboot.binを探すようです。boot.binにはSDKで作成したFSBL(First Stage Boot Loader)とvivadoやISEなどで作成したbitstream,ブートローダu-boot.elf入っています。PS側でFSBLを読み込み,その後PS側がPL側をコンフィギュレーションします。

次にu-boot.elfが読み込まれ,Linuxカーネルイメージ,デバイスツリーが読み込まれます。

バイスツリー(devicetree.dtb)

devicetree.debはARM Linux向けにデバイスのアドレスやクロックなどの設定が書かれたファイルのことです。AXIバスを通して自作のデバイスを接続した場合にはアドレスやデバイス名を書き加える必要があります。CPUのクロックなども設定することができます。

Linuxカーネル(uimage)

uimageはLinuxカーネルで,第2ステージでu-bootが起動したあとに起動します。

RAMディスク(uramdisk.image.gz)

Linuxカーネル起動後,uramdisk.image.gzがRAMに展開されマウントされます。uramdiskにはLinuxファイルシステムが入っています。

raspberry pi zero の購入方法とかインストール方法とか

先日、はやりの$5パソコンraspberry pi zeroを入手しました.
購入方法やOSのインストール方法などを簡単に紹介します.

1.購入方法

raspberry pi zeroはまだ日本では売っていないようですので海外の通販で買います.

続きを読む

ESP-WROOM-02を赤外線リモコンに(2.解析編)

前回、ESP-WROOM-02で赤外線通信を行うための準備をしました.
taltalp.hatenablog.jp

今回は実際に回路を組んで、赤外線リモコンのコードを解析してみようと思います。
(といってもサンプルプログラムを動かすだけです)

続きを読む

ESP-WROOM-02を赤外線リモコンに

今回はESP-WROOM-02で赤外線通信をする方法について書きます。

ESP-WROOM-02の基本的な使い方についてはこちらをご覧ください。
taltalp.hatenablog.jp

1.今回の目標

ESP-WROOM-02で赤外線通信を出来るようにする。
時間があればスマホなどからブラウザで操作できる「IoTリモコン」的なものを作りたい。(そのうち作ります)

2.ライブラリの用意

Arduinoの赤外線ライブラリはKen Shirriff氏が作成したArduino-IRremoteが有名ですが、これをそのままESP-WROOM-02で動かそうとしてもうまく行きません。
ESP8266用に書き換えられたライブラリがあるのでそちらを使います。
github.com
こちらからリポジトリをダウンロードして展開してください。
展開したディレクトリの名前を「IRremoteESP8266」に変更して、(Arduinoがあるディレクトリ)/librariesにそのディレクトリを移動します。

3.実際に使ってみる

ArduinoIDEを開いてファイル > スケッチブックの例 > IRremoteESP8266 にデモがいくつかあります。
これを編集していけば良さそうです。

4.今後の予定

次回はこのライブラリを使ってIoTリモコンを作ってみようかと思います。
今回は赤外線受光モジュールが手元に無かったためサボリ気味な記事になってしまいましたので、次回はちゃんと作例を紹介しようかと思います(笑)

4.余談

・ESP-WROOM-02で赤外線通信をする際、delayなどを用いて信号を生成しようとするとWDTによって本体にリセットがかかりうまく行きませんでした。
どうやらdelayは長過ぎるとダメなようで、定期的に何かしら命令を実行してあげないとリセットされてしまうようです。
・ESP-WROOM-02に載っているESP8266EXにはIrDAインターフェースが載っているらしいのですが、そこにどうやってデータを送ればいいのか、SDKのソースを見てもそれらしいものが見つかりませんでした。
最初、IrDAインターフェースが載っているから簡単に赤外線通信が出来るだろうと思って買ったのですが、結局よくわからないままライブラリを使うことにしました。

ESP-WROOM-02をArduinoで開発する

ESP-WROOM-02Arduinoで使う手順です。

1.使用した環境

Windows7
Arduino 1.6.5
ESP-WROOM-02(秋月電子)

2.Arduinoの設定

こちらのリポジトリを参考にArduinoIDEの環境を作って行きます。
github.com

1.Arduino IDEの「ファイル」→「環境設定」を開く
2.Additional Boards Manager URLs に
http://arduino.esp8266.com/stable/package_esp8266com_index.json
を入力して「OK」
3.「ツール」→「ボード」→「Boards Managers」から「esp8266 platform」を検索してインストール
4.「ツール」→「ボード」→「Generic ESP8266 Module」を選択

3.回路の作成

今回の回路は下図のようにしました。
f:id:taltalp:20160318202800p:plain
※回路図が間違っていたため修正しました.
注意するのは+3.3Vの電源電流です。
ESP-WROOM-02Wi-Fiモジュールですので、Wi-Fiの電波を飛ばすときにかなりの電流を消費(数百mA程度)するようです。電源電流が足りないとESP-WROOM-02にスケッチを書き込むことが出来ません。今回は3.3V/1.5AのNJM2396F33を使用しています。また、書き込みにはシリアル通信を使用しますので、TXD,RXDには115200Hz対応のUSBシリアル変換基板を接続しました。

4.サンプルスケッチの書き込み

1.ArduinoIDEの「ファイル」→「スケッチの例」→「esp8266」→「Blink」を開く。
2.ソースコードの「BUILTIN_LED」を「13」などに書き換える。(ESP-WROOM-02のIOxxピンのxxが対応)
3.ESP-WROOM-02のIO13にLEDを接続する。
4.「ツール」の各項目を以下のように設定

項目y
Flash Mode QIO
Flash Frequency 40 MHz
Upload Using Serial
CPU Frequency 80 MHz
Flash Size 4M(3M SPIFFS)
Upload Speed 115200
ポート 適当なポート

5.RSTスイッチとIO0のスイッチを同時押ししてから、リセットスイッチを先に話すと書き込みモードになります。
この作業をしてからでないと書き込みに失敗します。

6.「マイコンボードに書き込む」ボタンを押す

ここで接続がうまくいくとコンソールに「・・・・・・・・・」と表示されて書き込みを行っていることがわかります。
「warning: espcomm_sync failed」などが表示された場合は回路が間違っているか、電源の電流不足が考えられますのでそのあたりをもう一度確認してみてください。


ここまででLEDが点滅すればESP-WROOM-02Arduinoとして使う実験は成功です。

ST7735メモ

aitendoで販売されているTFT液晶ST7735を使ってみました。
使用方法について簡単に紹介します。

f:id:taltalp:20151107223021j:plain

1.概要

今回使用したTFT液晶はaitendoのキャリーボード付き液晶ZY-FGD1442701V1-PCBです。
128px×128pxの1.44インチ液晶で、MPU搭載ですのでマイコンからでも簡単に制御することが出来ます。

2.ピン配置

液晶キャリーボードのピン配置は液晶モジュールのピン配置とは異なっているようです。
キャリーボードの方のピン配置を下記に載せます。

続きを読む

ニキシー管時計の制作

前回、ニキシー管を点灯させる実験をしました。taltalp.hatenablog.jp

前回実験で登場した回路を用いて「ニキシー管時計」を制作しました。

f:id:taltalp:20150928030047j:plain

ハンダ付けが下手くそだったり、実験中に焦がした抵抗をそのまま使っていたりだとか、いろいろとひどいですがなんとか動きます。

今回作った回路はなんの面白みもない時刻表示をするだけの回路です。
PICマイコンを用いて6このニキシー管をダイナミック点灯させて表示しています。
ダイナミック点灯なので、すべてのニキシー管が点いているように見えますが、実際には1つずつしか点いていません。
なのでニキシー管の電源回路から取り出す電流は前回のニキシー管実験の時とほぼ変わりません。

また、今回はRTCに時刻をカウントさせているため、PIC側はダイナミック点灯をしながら、一定時間ごとにRTCから時刻データをもらっているだけです。

写真には写っていませんが、中央の3ピンの端子に押しボタンスイッチが2つ接続されます。
これは時刻設定用です。

回路図

電源回路
f:id:taltalp:20151009011401p:plain
上の記事で説明したとおりです。
半固定抵抗で170Vあたりが出るように調整します。

表示部
f:id:taltalp:20151009011421p:plain
ニキシー管6つ分です。フォトカプラを使って桁を選択して、IC74141で数字を選択します。
R3の20kΩ抵抗は必ず入れてください。これがないとニキシー管に過剰に電流が流れて、数字の切替時に管内で火花が飛び散りました。

メインボード
f:id:taltalp:20151009011432p:plain
マイコンは自宅にたくさんあったのでPIC18F14K50を使いました。RTCを使っているので回路はとても簡単です。
2つの押しボタンスイッチで時刻を設定します。

PICに書き込むソースコードはあまりにも汚いので公開できません。



基板がむき出しだと時計として使いにくいですし、なにより170Vの電圧が出ているため危険ですので、後日ケースを作成する予定です。

高電圧を用いますので、制作する場合は自己責任でお願いします。