
このコースでどのようなことを、どのように進めていくのか説明します。
無くても理解できるよう配慮するつもりですが、手を動かしながら学ぶ方が効率的です。少しお金はかかりますが、ArduinoやPICなどにも流用できるので、投資だと思って用意できる方は、実際に購入してみてください。構築した開発環境にはシミュレーターも入っています。ボードやICEが購入できない方は、目に見えるような動作は確認しにくいですが、やらないよりはマシですので、開発環境だけでも構築して試してみてください。
Microchip studioを使って実際にプロジェクトを作ってみましょう。
一気に全セクションを終える方は少ないと思いますので、一度区切ったときの再開方法を補足として説明いたします。
プログラムをせずにLチカできることを解説します。これがCPUの動作原理の一つです。評価ボードがない方は実感できませんので、知識としてだけ吸収していただければと思います。
Lチカは、ポートからの出力を見てみるという実験でした。では入力はどうなるのでしょうか。ON、OFFの動作でわかりやすいスイッチを使って入力をICEで見てみましょう。もちろん、ノーコードです。
CPUの動作は実はそれほど複雑ではありません(PCに使われているレベルの物でも、根本的な考え方は一緒です)。まずは対峙する相手の素性を知りましょう。
コンパイラによって最適化されていると、C言語の行とアセンブラ(機械語)の位置が一致しないことがあります。このコースでは一致させた方がわかりやすいので、最適化をしないように設定します。このレクチャーでは、補足説明としてコンパイラの最適化をOFFにする方法について説明します。
CPUはレジスタを使って演算します。簡単なC言語プログラムでレジスタの動きを見てみましょう。
スタックとは何か?どのような動作をするのかを見てみましょう。簡単なC言語プログラムで見てみることができます。このレクチャーから発展して、もっと関数のネストを深くするとどうなるか等、いろいろ遊びながらスタックの動きを見ると、さらに理解が深まると思います。
C言語におけるコンパイラの役割について解説します。後のリンカの説明と併せて理解してください。
C言語におけるリンカの役割について解説します。CPUや環境によって設定内容は変化しますが、最低限必要な部分だけでも知っておいてください。
リンカが生成するmapファイル。実は非常に重要です。見方を覚えておきましょう。
C言語はコンパイラやリンカに対し、「こうしてくれ」という"指示をする言語"という解釈をするとわかりやすくなると思います。多元配列やポインタも、そのためにある単なる「記述方式」です。そのあたりを詳しく解説します。評価ボードのCPUの資料や回路図をダウンロードできます。LEDやスイッチに、なぜPB4を割り当てていたのかを回路図を見て理解してみてもいいかもしれません。
組み込み開発入門者向けのコースです。CPUが実際にどのような動作をしているのか。ICEを接続してモニタリングしながら動作を見てみましょう。
※本コースを効果的に学習していただくためには、購入していただく必要がある物があります。ご注意ください。
・Atmel ICE
・ATTINY3217-XPRO(評価ボード。PROとありますが大したものではありません)
これらは購入後、ご自身で様々な実験に使用できます。ICEはArduinoにも流用できます。決して無駄な出費ではないと思いますので、この機会に是非、自分への投資をしてくださいますようお勧めいたします。(今後の別コースでも使用する予定です)
・まずは開発環境の整備
このコースではMicrochip Studioという、旧Atmel社のCPUに対応したIDE(統合開発環境)をセットアップします。ダウンロード用ファイルを用意していますので、そちらを解凍し、インストールしてください。セットアップ方法は解説します。
・CPUとつないで実際にモニタソフト(デバッグソフト)でCPUを覗いてみましょう
CPUは数値しか扱えません。ではアドレスはどのように扱うのでしょうか。このあたりは後にC言語、特にポインタのところにリンクしてきます。I/O空間を理解し、簡単な制御を体験しましょう。
・CPUのレジスタやスタックの役割を知りましょう
C言語がコンパイラを通してどのようなコードを作るのか、そしてその動作を見ることでレジスタやスタックの役割がわかります。C言語をメインで説明はしませんが、C言語を通じてどのような作用をもたらすのかを見て、感じましょう。
・IDE(開発環境)の各部の役割を知りましょう
1つのIDEについて覚えれば、他のIDEでも共通の項目は多いです。このコースでは単純なCPUを使いますが、設定や、どのウィンドウに何が表示されるかというような役割はあまり変わりません。今後のためにもIDEを使い込ましましょう。
一見、ソフトウェアではなくハードウェアの話に見えますが、実はC言語をマスターする上で避けて通れない知識です(特に組み込みでは)。
このコースは、CPUが単純な動きしかしていないことを知ってもらい、なんでポインタが必要なのかを知るきっかけを作ることも目的としています。C言語についてはまた別コースを作る予定ですのでどちらが先でも構いませんが、ポインタを知るにはCPU動作を知るのが一番だと思っています。C言語に難儀していた方の一助となれば幸いです。