どこからプログラムをロードする?

新しいシステムの開発に向け、評価ボードで試してほしいことがあると依頼され、

開発環境の立ち上げでのたうち回っていたが、とりあえずサンプルプログラムを元にある程度動くようになってきた。

かなり簡略化した形ではあるのだが……


このマイコン……という言い方がよいのか。

基本的には内蔵のSRAMか、外付けのDRAMにプログラムを置いて動かすが、

少量のフラッシュROMを内蔵しており、そこにプログラムを格納できる。

基本的にはブートローダーを置いて使うらしい。

簡略化した形というのは、今は実行するプログラムは全てここに置いているから。

ごく少量のプログラムなら入りますからね。

この形であればワンチップマイコンを動かすのとあまり変わらないので楽。


とはいえ、この形では拡張性がないのでゆくゆくは外部のROMからRAMに展開する仕組みが必要になる。

この評価ボードにはeMMCが搭載されていて、これを使って起動するサンプルが入っていた。

eMMCというのは組み込み用のマルチメディアカード(MMC)である。

MMCはSDカードの元になったストレージの規格で、一部に互換性がある。

カードというけどチップ部品として実装されているので、

やや乱暴な言い方だが「基板に貼られたSDカード」という感じである。

まぁ基板に貼られているからカードリーダーに刺すようなことはできないが。

内蔵ROMにはeMMCからRAMに展開するプログラムが最初入っていた。


ただ、おそらく今回のシステムはそこまでの容量は必要ないので、

例えばSPI接続のNOR型のフラッシュROMを外付けするなどの方法になるんじゃないか。

FPGAのコンフィグROMで使っているのと同じ部品を使えばいいわけだし。

既存のブートローダーも設定次第ではそういう使い方ができそうだが、

いろいろな兼ね合いを考えると自分で書くことになるのかなぁ。

eMMCからのロードはもっと複雑ですから、手で作ると大変そうだが、

SPI接続のフラッシュROMはそんなに難しくないんじゃないとか思うけど。

プログラムの書き換え方法とか考えることはいろいろありそうですけどね。

既存のブートローダーもそのあたりはイマイチですけど。


とはいえ、まだそれは先の話である。

直近の課題はそことは違うところにあって、サンプルプログラムやドキュメントをいろいろ掘りながら調査を進めている。

ドキュメントが全体的に不親切でいったいどうやったらできんだよと。

サンプルプログラムが比較的読みやすいので、そっちを見た方がよいが、

どのサンプルプログラムを見るのかなどそれはそれで面倒である。


率直な感想を言えば、このチップでよいのかという不安はなんぼでもある。

でもいろいろな事情からこれが最善だという決定があって、

これを覆せないほどよい条件が揃っているので仕方ないなという実情よね。

まぁBlogに書けることと書けないことはあるけどさ。