12ステップで作る組込みOS自作入門(続き)

先日購入して読んでる「12ステップで作る組込みOS自作入門」の件。

今後の勉強については別ブログでやろうとしてるんだけど、その前にどうしてもボードの動作確認がしたくていろいろいじっていた。

 

現在のUbuntuマシンで別のOS自作入門をやってるので、それと被るのが嫌でWindowsマシンで開発環境を構築していた。

当初、Visual Boxをインストールしてその中に作者の準備した環境をダウンロードして、インポートしていじろうと思っていた。

ここ↓で配布されてるやつですね。

 http://kozos.jp/books/makeos/index.html

最初だけ起動できたのに、次はなぜかエラーが出て起動できなくなってしまった。

よくわからないので、あっさりと諦めた。

 

というわけで、今度はCygwinを使うことにした。こちら↓を参照して、環境を作成。

 https://qiita.com/Shohei_miyasako/items/6e0e1a9f298bd8db3369

すごくわかりやすかった。感謝です。

 

ビルドやmakeに時間がかかったけど、binutilsとgccのインストールは成功。

自分の環境では、最初のHello worldは

 C:¥cygwin¥home¥ユーザ名¥osbook¥src¥01¥bootload¥

書き込みツールは

 C:¥cygwin¥home¥ユーザ名¥osbook¥src¥tools¥kz_h8write.exe

に置いた。

それに合わせてMakefileも編集。

 

Hello worldのプログラムをビルドした後ボードを接続して、kz_h8writeで書き込み…が、できなかった。

ちなみに接続するために購入したケーブルはエレコムのやつ。

実際に購入したのはヨドバシからだったけど。

 

どうしてもエラーになるので悩んでたんだけど、ふと、ケーブルをACアダプタに接続してもLEDが点灯しない、という書き込みを見つけた。

が、自分のボードは点灯してる。

おかしいと思ったら、トランスの一部端子と水晶発振器の端子が半田付けされてなかった。

よく壊れなかったなあ。(他人事)

 

半田付けし直して書き込みしたところ、普通に成功した。原因はホントにこれだけだった。

その後TeratermでHello Worldが出ることを確認。動作は問題なさそうだ。

なんかまた苦労しちゃったから、また別のPCに開発環境を作るのめんどくさそう。このまま使い続けることになるかも。

今後のやったことメモは別ブログに書いていきます。

Sponsered Link

Sipeed MAix GO(その3)

カメラを裏面にしました。

しかし樹脂ケースの穴と合わなくて、ねじ止めできない…。
しかたないので、両面テープで仮止めしてます。

 

そして続き。よくわからなかったところは、だいたい公式のドキュメントを読めば書いてありました。
 https://maixpy.sipeed.com/en/
いや…事前に読んだと思ってたんだけどなあ。英語わからないけど。

 

まず、USBシリアルが二つ出てきちゃう件。

ファームウェアのアップデートの項目で、GOのところを読むとわかった。
 https://maixpy.sipeed.com/en/get_started/upgrade_firmware.html#for-maix-go
MAix GOではPCと接続した際にUSBシリアルが二つ出てくるのは正しくて、Linuxなら/dev/ttyUSB0と/dev/ttyUSB1が出てくるけど、/dev/ttyUSB1を使う。
Macだと名称が違ったけど、後に出てくるほうを使うのが正解、ということでいいのかな。
それとSTM32のことをいろいろ書いてあるけど、結局めったにアップデートすることはないから、STM32についてはほっといていいようだ。
なら書くなよ、と思うけど、何かあったときには助かるんだろう。

 

改めて電源を入れて、問題ないことを確認。
ただ、ターミナル側で以前は表示がおかしかったけど、リセットでちゃんとアスキーアートが表示されるようになった。

特に何もやってないんだけど、あんまり動作が安定してないのかな。
これはやっぱりファームウェアをアップデートするほうがよさそう。

 

というわけで、今回のところはMac上で作業。手順はドキュメント通り。
アップデート用のツールをダウンロード。
 https://github.com/sipeed/kflash_gui/releases
プレリリース版は怖いので、現在の最新V1.3.2をダウンロードした。

Macなのでファイルはkflash_gui_v1.3.2_macOS.dmg。

マウントされたフォルダを開いてkflash_gui.appをアプリケーションフォルダに移動。

ファームウェアはV0.3.2。どれがいいのかわからなかったので、フルバージョンにした。(maixpy_v0.3.2_full.bin)
 https://github.com/sipeed/MaixPy/releases
ファイルがいろいろあるけど、とりあえずmaixpy_v0.3.2_full.binをダウンロード。

ファームウェアパッケージについては、ドキュメントにリンクがあった以下も参考になる。
 http://blog.sipeed.com/p/390.html

 

ツールの詳細は以下。

 https://github.com/sipeed/kflash_gui

でもあんまり上記は参照せず、あんまりいじらずに書き込みしたら大丈夫だった。その時の設定は以下。

fastモードで書き込みしたらエラーになったので、slowを選択。これで成功。

 

これだけではちゃんと動作するかどうかわからないので、今度は簡単に顔認識のサンプルスクリプトを動かす。

スクリプトは以下。

 https://github.com/sipeed/MaixPy_scripts/blob/898a941ffb7a9d90856dcb69d5b4f012babd0951/machine_vision/demo_find_face.py

その前に、上にあったファームウェア置き場から、face_model_at_0x300000.kfpkgをダウンロードしてファームウェアと同じように書き込み。

そのあとでscreenを起動し、スクリプトをコピペ。

一気にコピーするとうまくいかなかったので、数行ずつコピーした。めんどくさい。

でも起動したらちゃんと顔認識らしきモードになった。

顔のサンプルをググって表示させた画面を見せると、ところどころ四角い枠で囲んで認識してるのがわかる。

これで一応使える、ということかな。別のスクリプトでも遊んでみたいところ。

ついでに、カメラはレンズが回せるので、ピント調節できるんだな。

(別のモジュールについて呟いてるツイッターで知った)

なんかぼやけて使いにくいと思ったんだ…。ちゃんと撮影できるようになってくれて良かった。

Sponsered Link

Sipeed MAix GO(その2)

Sipeed MAix GOを組み立てた後、簡単なチュートリアル。

外観上は完成したのでとりあえず動作を確認する。

今回のところは Linux ではなくマック OS 上でターミナルを起動する。

まず USB を接続して状態を確認。

 $ ls -l /dev/tty.*

 crw-rw-rw-  1 root  wheel   18,   0  7 17 18:11 /dev/tty.Bluetooth-Incoming-Port

 crw-rw-rw-  1 root  wheel   18,  14  7 18 21:51 /dev/tty.usbserial-00004014A

 crw-rw-rw-  1 root  wheel   18,  16  7 18 21:51 /dev/tty.usbserial-00004014B

なぜかシリアルポートが二つ出てくる。

よく分からないのでとりあえず A の方で 接続されているかどうかを見てみる。

 $ cu -l /dev/tty.usbserial-00004014A

 cu: creat during lock (/var/spool/uucp/TMP00000026b2 in /Users/*** as uid 501): Permission denied

 cu: /dev/tty.usbserial-00004014A: Line in use

接続できない?

おかしいと思ったら、sudoが足りなかった。スーパーユーザー権限なのね。

しかしsudoをつけても、今度はパスワードが入力できないと出てくる。

 Mac の OS がバージョンアップしたために、いつの間にかパスワードがリセットされていたらしい。

なのでまず、スーパーユーザーのパスワードを設定しておいた。

 $ sudo passwd root

 Changing password for root.

 New password:

 Retype new password:

やれやれ。

 

ということで、ここで再度接続を確認。

 $ sudo cu -l /dev/tty.usbserial-00004014A

 Connected.

今度は大丈夫だったらしい。

次はscreenというコマンドを使って動作を確認していく。 

screenは通常既にインストールされていると思うけど、一応確認した方がいいかも。

 $ screen /dev/tty.usbserial-00004014A 115200

しかしマニュアルにあるような画面が出てこない。空白のまま。

 

一旦マニュアルを確認。

 https://maixpy.sipeed.com/en/get_started/power_on.html

これにもsudoが必要だった…。しかしやはり空白しか出てこない。

ここで試しにもう一方のポートを入力してみた。すると…

 $ sudo screen /dev/tty.usbserial-00004014B 115200

 

[MAIXPY]Pll0:freq:806000000

[MAIXPY]Pll1:freq:398666666

[MAIXPY]Pll2:freq:45066666

[MAIXPY]cpu:freq:403000000

[MAIXPY]kpu:freq:398666666

[MAIXPY]Flash:0xc8:0x17

heap0=8012b6b8

[MaixPy] sd_init | SD_CMD0 is FF

 

 __  __              _____  __   __

これがビンゴだったらしい。

多少画面は違うけど、一応反応したようだ。

ctrl+Cを入力して、コマンドプロンプトが出てくる。

 >>>

この状態から、ctrl+Eを押して以下のページにある

 https://github.com/sipeed/MaixPy/

簡単に、カメラとして使うだけのスクリプトをコピペする。

import sensor
import image
import lcd

lcd.init()
  sensor.reset()
  sensor.set_pixformat(sensor.RGB565)
  sensor.set_framesize(sensor.QVGA)
  sensor.run(1)
  while True:
      img=sensor.snapshot()
      lcd.display(img)

 

ctrl-D で実行。無事に画像が表示された。

あ、右上に写ってるのは鏡像で、でっかく薄く写ってるのが撮影してる映像。

カメラは背面にあったほうが良かったなと反省した。

とにかくなんか暗いけど、一応動いたということでいいのかな。

デフォルトでとりあえず確認できたので、このあとはファームウェアを書き換えて他のスクリプトも動くようにしないと。

まだ先は長いです。

Sponsered Link

Sipeed MAix GO(その1)

先日購入したSipeed MAix GOをいじる。

STM8ばかり遊んでて放置しとくのもかわいそうだったので、とりあえず箱を開けて中身を確認。

そしたら元に戻せなくなった。なんでだ。

 

しかたないのでとりあえず組み立ててみることにする。
が、マニュアルも何も入ってない。
M5Stackはあんなに小さくても入ってたのに…。

どっかにマニュアルないかなと探したら、ありがたいことにブログに書いている方がいた。感謝。
 http://msyksphinz.hatenablog.com/entry/2019/05/30/040000
Youtubeにも組み立てマニュアル(?)があったようだ。

 https://www.youtube.com/watch?v=q8CuhPeN-lk
でも自分にはブログの画像がとても参考になった。

 

自分のを開けて組み立ててみて、気になった点。

  • ステッカーが付属してない(別にいいけど)
  • ケースに貼ってあるシールがむちゃくちゃ剥がしにくい。後で思ったけど、剥がさなくても問題ない。
  • 必要なネジは長いやつ9本とカメラ用2本。それ以外は予備。
  • カメラはネジが緩い時は、片方だけでもタップのあるネジを使うと固定できる。
  • スピーカーのワイヤーが参考にした画像の倍以上長くて邪魔。

…と、個人的に問題は多かったけど無事に完成。

組み立て直後に最後の黒いカバーが裏表逆だったことに気づいたりと、いろいろ問題はあったけどなんとかなった。

で、USB接続してみたけど、LEDが点灯するだけで画面が付かない。

もう壊したか!?と思ったけど、電源スイッチ入れてなかっただけだった…。

 

ちなみに電源はUSB端子隣のちっちゃいスライドスイッチ。

組み立ててる間、その存在に気が付いてなかった。

スイッチを入れてちゃんと起動も確認できて、やっと一安心。

参考画像とは違い、赤い画面。バージョンがどうも違うらしい。

ファームウェア焼いたりとかはまた後日やることにする。疲れたんで。

Sponsered Link

Lichee Pi (その1)

買ったものの、積みボードとなっているけどそろそろ使おうかと情報収集中、というメモ。

その1と付けたので、たぶん続く。

 

だいぶ前にLichee Piっぽいものを二点購入したものの、放置状態。

というのも、いろんな種類が出ている上にバージョンも多いので、手に負えなかった。

それに2,3年前には発売されてたようなんだけど、マニアック過ぎて(?)情報があまりない。

ボードが入ってたケースに書いてあるURL先を見ても、購入したものと同じのがないし。

 https://www.sipeed.com/#/

 

でもLichee Pi zeroということで良いのかな?ということで、公式の参照先は以下。

 https://licheepizero.us

しかし上記の中には購入したボードは無さそうに見える。

というより、シルクが微妙に違うのが気になる。

購入したものはライチの絵がない。(購入先のお店の商品画像にはあった)

もしかしてLichee Pi zeroだけどバージョン違いかな?と考えている。

 

ドキュメントも見つけたが、これだとわかりにくい。

 http://en.zero.lichee.pro

上記は英語版で、中国語の方が詳細に書かれている。

なので公式の方を参照。

以下の方法でファームウェアをSDカードに書き込みできるらしい。

 https://licheepizero.us/create-bootable-sdcard-for-licheepi-zero

やっぱりRaspberry Piのように簡単にはいかないか。

 

それと接続するLCDは40pinのものならだいたいカバーしてるらしい。

フォーラムの投稿に同じような疑問を書いてる人がいた。

 https://bbs.sipeed.com/t/connecting-lcd-display-at050tn33/62

これも手元にあるディスプレイで試してみる予定。

 

そもそも最初の企画はクラウドファンディングでお手軽なミニPCを作ることだったようなので、組み込みで何かハードを接続して動かすものではないようだ。

 https://www.indiegogo.com/projects/licheepi-zero-6-extensible-linux-module-on-finger#/

でももうちょっと調べたら、何か作ってる人いるんじゃないかなーと思っているところ。

ただ、検索してるとLichee Pi については2、3年前の情報しか出てこないことが多くって、なかなか難しいです。

Sponsered Link