ベアメタル版MicroPythonのRaspberry Pi2対応に着手

ベアメタル版MicroPythonのRaspberry Pi2対応を、ちょっと始めてみました。
ペリフェラルのベースアドレスが変わっていること、起動時にスーパーバイザモードではなくハイパバイザモードになっていること、コンパイルオプションの違い、などの修正で、REPLを出すところまでは割と簡単に進みました。

ただ、USBドライバについてはコンパイルは通ったものの動作に至っていません。
(12/13追記:偶然の一致なのか神の助けなのか、そのものズバリの回答がRaspberry Pi Forumのこのスレッドに出ました。DMAに使うバッファは非キャッシュ領域にしないといけないとのこと。これで問題なく動作するようになりました)

デバッグするのにはJTAGが使えたほうが良いなあと思うのですが、こちらも動いたり動かなかったりで大分時間を費やしてしまいました。
それではQEMUで・・・と思ったのですが、こちらもなぜか起動には至っていません。

とりあえずの目標としては、Raspberry Pi2単体でUSBキーボードとHDMIディスプレイをつないで動作させられるところまで持っていきたいのですが、意外と手こずりそうです。

現状、REPLが動いたところまでは別ブランチとして以下にアップロードしてあります。

boochow/micropython-raspberrypi at rpi2

ちょっと気が早いですが、今年ももうすぐ終わりということで、ベアメタルRaspberry Pi版MicroPythonについて5月ごろに「やりたい」と思っていたこと(年内に、というわけではありませんでしたが)を振り返ってみると

○対応済み
・I2C
・SPI
・PWM
・SDカード
・スクリーンコンソール
・test suiteへの対応
・サーボモータドライバ(試していませんが、PWMができたので多分達成)

○進行中
・I2S
・USBホストクラス
・チュートリアルの整備
・NeoPixelドライバ
・RPi2や3への対応

○やればできそう
・Pin AFクラス
・UARTクラス

○手付かず
・USBデバイスクラス
・グラフィックスライブラリの整備
・WizNetドライバ
・Raspbianへの移植

という感じで、意外と進んだかなあという気がします。

明日から怒涛の連続忘年会になりますので、年内はあまり更新できないと思いますが、マイペースで進みたいと思います。

コメント