というのも、コードには引っかかるようなところはないのですが、どうも不具合が隠れ潜んでいるっぽく、動いているときは何日でも動いてるんですが止まることもある。もしかしたらハードウェア系(電源ノイズなど)かもしれないのですが、オシロスコープで長時間追いかけても、現象が出ないことには捕まえようがありません。電源ノイズならキャパシタ追加すれば、とかフィルタ入れれば、とかありますが、電源ノイズかどうかもわからないので、無駄な対策は打ちたくありません。
なのでとりあえずはコードをリファクタリング…というかスクラッチしてしまおうかと思い立ちました。大きいプロジェクトではないので、サイズ的には問題ありませんし。
なので、これまでのプロジェクトはhgリポジトリに置いといて、新しくディレクトリを作ってそこで始めることにします。
まず、プロジェクトディレクトリに "Firmware" というディレクトリを作成します。ちなみにWindowsやMacでは「フォルダ」と呼びますが、MS-DOSやUNIXではディレクトリと呼んでいたので、自分はわりとディレクトリ派です。コマンドプロンプトでも "dir" コマンドを使いますし。もっとも最近ではLinuxなどはGUI環境が当たり前になり、名前もフォルダに変わってきているようです。GUIのアイコンが「書類ばさみ(フォルダ)」を想起させるものなので、時代の流れなんでしょうか。でもやっぱり「ルートフォルダ」とは呼ばないだろうし、「カレントフォルダ」という呼び方もないような気がします。あるのかもしれませんが。
閑話休題。
新しくプロジェクトを開始するにあたって、C言語のソースファイルとヘッダファイルを物理的にどこに格納するか、というのが気になったのでググってみました。
過去にUNIXでのツールのtar ballをほどくと、srcディレクトリとincludeディレクトリだったり、展開したところにベターっと置かれていたり、いろいろなケースがあったんですが、一応こんなのを見つけました。
MPLAB X Project Directory Structure。
これをちょっと引っ張ってくると、およそ以下のような感じです。
project_top - ProjectName.X -+- build -+- default -+- debug | +- production +- dist -+- default -+- debug | +- production +- nbproject - private
いやこれじゃわからんじゃん、*.cと*.hはどこよ、という感じです。build以下には *.oや*.o.dの中間ファイルが、dist以下には*.elfや*.hexファイルが生成されます。それぞれdebugビルドとproductionビルド用にディレクトリが別れています。
一方、IDEのほうでは論理フォルダも管理されています。Logical Foldersとして説明されていますが、ここでは "Header Files" や "Source Files" の名称があります。このページの図では、"Source Files" の下に "libLCD24" というフォルダを作ってそこに個別のソースを収めています。しかしながらこれは論理フォルダで、実際のディレクトリツリーとの関連付けは個別に行うことになります。
ただ、このページには「ものすごく柔軟性があるんでフォルダはいくつ作ってもいいよ」的なことが書いてあり、プログラマのスタイルでどうとでもなるような感じ。早い話が物理的にはべたーっと置こうが src / include に分けようが好きにしてね、という感じなんでしょうか。
だとすれば、自分的に見通しよさそうなのはメインろループや割り込み、ロジック系は src に置いて、putch()みたいな独自のユーティリティ関数なんかは lib とかに置いて、ヘッダファイルは include に置いて、という感じでいいかなと思いました。まる。
0 件のコメント:
コメントを投稿