LPC4300はFlash ROMを内蔵しない
昼休みにLPC Zoneを覗いていてLPC4300の情報がアップデートされていることに気付きました。Users Manualが公開され、Data Sheetが更新されています。さて、その後の経緯はいいでしょう。えらいものを見つけてしまいました。
LPC4300からFlash ROMが消えている
データシートからは完全に内蔵Flash ROMの記述が消えています。UMにはかろうじてメモリーマップにFlashの記述があるだけで、章としての記述はありませんし、ブートモードにもFlashはありません。
なにが起きているのか
以下、根拠のない憶測です。
LPC4300シリーズはFlashの設計に深刻な問題があって、選別や短時間での改良では手当てできないのではないかと思われます*1。おそらくは速度の問題でしょう。
NXPはもともとARM7コアのCPUでも、遅いFlash ROMを高速にアクセスする技術が自慢でした。LPC2388ではFlash Acceleratorをオンにしないと性能がでませんし、CORTEX-M3はデフォルトでオンです。
今回、Flashまわりに問題があって所定の速度を出せないのではないかと憶測しています。なぜそう思うかというと、データシートの速度が180MHzになっているからです。当初このシリーズは150MHzと発表されていました。競争の激しい世界ですから、こんなことを伏せておく必要はありません。
もともと、150MHzで設計したものが、何らかの理由で180MHzでも性能保証を通るようになったのではないでしょうか。では、なぜ?たぶん、遅いFlashをあきらめたから。
LPC4300は大容量のFlashを搭載していました。メモリはプロセス一定で大規模化すると高速に動かすのが難しくなります。もともと遅いFlashを高速化のために大並列化し、それもデュアル・バンク化していたLPC4300ですが、設計者の意に反して速度が上がらなかったのかもしれません。
そして、Flashをあきらめたことで、妥協していたコア速度を抑える必要がなくなったと。
以上、全部根拠のない憶測です。
なにが起きるのか
今後、LPC4300には何が起きるのでしょうか。ありそうな話としては、1年後くらいにFlash搭載のピン互換な新シリーズが出るといったことが考えられえます*2。その場合、LPC4300は次第にフェードアウトしていくでしょう。このクラスのマイコンで外つけブートROMが許されるほど市場は甘くありません。おまけに、LPC4300は機能を殺しているとはいえ、大容量フラッシュを持ったままだと思われます。これはコスト構造を圧迫します。
当面、LPC4300を使うとなると外部ROMからのブートが必要になります。幸い、SPI Flashからのブートは可能です。問題は、SPI Flashへの書き込みです。
CodeRed IDEがLPC-Link経由でサードパーティー製SPI FLashへ書き込めるのなら何も問題はありません。そうでないとしたら、たとえばUzumeプロジェクトでは何らかの手軽な書き込み手段を模索しなければなりません。
かつて私はADSP-BF533用の外部SPI FLASHプログラマを組んだことがありますが、あれはWindowsでしか動きませんし、BSDLファイルのコンバートが必要です。手軽とは言えません。