キャッシュを有効活用するためのMMU設定
「システムが暴走してRESETしなければいけなくなった」という経験は誰にでもあるかと思いますが、組み込みシステムでは、そのリスクを限りなく0にする必要があります。WDTなど周辺機能がサポートしてくれることもありますが、その時点で中核となるソフトウェアが停止してしまっている状況は、誰にとってもメリットは少ないものです。
「システムが暴走してRESETしなければいけなくなった」という経験は誰にでもあるかと思いますが、組み込みシステムでは、そのリスクを限りなく0にする必要があります。WDTなど周辺機能がサポートしてくれることもありますが、その時点で中核となるソフトウェアが停止してしまっている状況は、誰にとってもメリットは少ないものです。
タスク設計といっても、難しい作業ではありません。機能ごとに分ける作業は誰でも一度は経験があることです。それに、万人に対する正解があるわけではなく、1番念頭に置いておくべきことは、作りやすいか?メンテナンスしやすいか?です。
Arm Cortex-AとRTOSを使って、組み込みシステムのアプリケーションを開発するステップを、動画とテキストを使ってわかりやすく紹介しています。使用するハードウェアは、京都マイクロコンピュータ社からリリースされた「SOLID」を使用します。
Cyclone V SoCの最大の特徴であるFPGAは、Linux動作中に動的にコンフィグレーションすることができます。カーネルのコンフィグとビルドをして、FPGAのコンフィグレーションをしてみましょう!
Cyclone V SoCのカーネルは、すぐにPreempt RTが利用できるようになっているので、動かしてみましょう!まずは、カーネルのコンフィグレーションとビルドを行います。Linuxカーネル ソースをPreempt RTのブランチに切り替えて、コンフィグレーションを有効にして、再ビルドします。
Linuxはperfやftrace等、プロファイルやトレースを採取するツールが揃っています。TRACE32を使ったプロファイルやトレースはArmコアの機能を使って本番に近い環境で実施することができるので、Linuxで精度の高い情報を得ることができます。
linuxカーネルをコンパイルして、デバッグする方法を紹介します。Linuxカーネルは、必要な機能を選択するコンフィグを行ってから、コンパイルします。カーネル本体はzImage、カーネルが読み込むボード毎の設定がdtbです。
今回はLinuxのデバッグをツールでやってみます。使用するツールは、Lauterbach TRACE32です。組み込みシステムの開発で世界で最も使われているデバッガです。Linuxのデバッグを行う前に、まずはカーネルをビルドします。
SystemdはLinuxシステムを管理するフレームワークです。Red Hat Enterprise Linux, Ubuntuを始め、AtlasボードにプリインストールされているAngstrom等多くのLinuxディストリビューションがSystemdを採用しています。