PIC開発でMPLAB X IDEでのフォルダツリー構成。

最近個人用のメモ的記事が多くてちょっとアレなんですが、MicrochipのPIC16Fを使った開発で、MPLAB X IDEを4.20から5.10にアップグレード、かつXC8コンパイラも1.45から2.05にアップグレードしたのに伴って、既存のプロジェクトを再度初めからやり直してみようと思いまして。

というのも、コードには引っかかるようなところはないのですが、どうも不具合が隠れ潜んでいるっぽく、動いているときは何日でも動いてるんですが止まることもある。もしかしたらハードウェア系(電源ノイズなど)かもしれないのですが、オシロスコープで長時間追いかけても、現象が出ないことには捕まえようがありません。電源ノイズならキャパシタ追加すれば、とかフィルタ入れれば、とかありますが、電源ノイズかどうかもわからないので、無駄な対策は打ちたくありません。
なのでとりあえずはコードをリファクタリング…というかスクラッチしてしまおうかと思い立ちました。大きいプロジェクトではないので、サイズ的には問題ありませんし。

なので、これまでのプロジェクトは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 件のコメント:

コメントを投稿

WesternDigitalこわれた。

たぶん寿命を過ぎてるのでクレームとまではいかないのだけれど。 WesternDigitalのWD60EFRXが壊れました。モノは2014年11月に購入。ところが3年で壊れ、RMAにより2017年11月に交換したものです。BlackBlazeでも故障率がそれなりに高かったので、そう...