2020年9月22日火曜日

[デバッグ] イベントの上書き

こんにちは、針山散策を今日もほのぼのと行います。


今回は、RTOSリアルタイムOSで扱うイベント生成について注意点について記載します。


イベントというのは、ソフトウェアだと”きっかけ”で言い換えることができると思います。


モータ制御で言うと、原点にあるセンサーに反応したら原点到達のイベントを

自分タスク以外の他タスク投げる。


みたいに使います。


よく企業で状態遷移表を作成しますが、その際、イベントと状態の関係が表示されていると思います。


そのイベントのことです。


このイベントを立てるのはソースによりますが、今回の場合はイベント用の変数に代入する方式だったので

イベントが同時に2つ発生することは想定していませんでした。


仮に複数イベントサポートする場合は


1 ビット単位でイベントを持たせる。

2 優先度を設計しておく


などしておく必要があります。


さて、イベントについてですが、ユーザソースで、イベントを立てる(起床する)のにif()~if()を連発していました。


これだと、1番目のif内でイベントを立てていたりすると、その後のifで、もしイベントが立てるようなことがあると、


上書きされてしまいます。

(実際にセンサの情報が上がったよイベントを立てていたのに他のイベントで上書きされていました。)


if()~else if()~…などでイベントが発生していないことを条件に加えるようにしましょう。


[今日のひとこと]

9/21、9/22は世間はお休みなのに

私の所属する会社は営業していました。

休日扱いではないのでお金は追加でもらえるわけでもなく、

残業規制で月10時間しか働けません。


副業解禁を期待して登録者数増やせるようにしたいです。


管首相様、どうか副業規制強制解除お願いします。


それにより、ブラック企業から抜け出せる人が多く出てきます。

2020年9月16日水曜日

[デバッグ] LCDに32bit16進データ表示をできるようにした場合の幸せデバッグ

こんにちは、針山散策を今日もほのぼのと行います。


今回は、LCDに32bit16進データ表示をできるようにした場合の幸せなデバッグ


について考えてみたいと思います。


LCD(画面)には一般的には文字、画像等が表示されると思います。


LCDドライバ開発時には何とかして目的の画像を表示させようと努力するはずです。


(LCDに表示するだけでも大変な作業なんです!)


いつもゴールとしてLCDに表示することを考えていました。


しかしながら、このLCDを道具として(プログラムデバッグ)活用ができると


効率が格段に上がると思います。


最近の案件では、モータを複雑に制御するようなことがありました。


モータ制御の機能としては、スピードと回転方向があります。


------------------

スピード: 15段階

回転:順回転、逆回転、停止

------------------


これらの制御

bit0~bit3をスピードに割り当てて

bit5,6を回転に割り当てると


わざわざデバッガ上でモータの状態を監視しなくても

ある程度LCDで確認が出来るので効率的です。


[今日のひとこと]

復習は1日、3日、7日にすると記憶が効率的に身につくと

ありました。

ということは、

今日の勉強は

本日分

7日前分

3日前分

1日前分

をするということか。。。。


2020年9月8日火曜日

[テスト] 検査シートをユーザに出す前にスリムにしましょう

こんにちは


ソフトな道を今日もほのぼのと歩きます。


今回は、検査シートをユーザに提出する際にスリム化しておきましょう。


という内容です。


まず、検査シートについてですが、


こちらは主に検査項目をエクセル表にツラツラ書いている内容になります。


初回は特にボリュームが出ていたりするので


検査におけるリファクタリングを行って無駄を省きましょう。


以下、思いつくところです。


[確認事項]

1. 重複している内容は削ってあるか。

2. 名前は誤解がないようになっているか

3. 検査はソフト用の検査になっているか。ハード用なら削除。(ハード担当なら逆)

4. 変更が予想されるところはTBDになっているか。

5. 検査は意図通りの内容になっているか。

(特に、繰り返す操作の意図は明確になっているか。)

6. 誰が行っても同じ操作になる検査か。


そしてユーザに提出します。


ユーザは基本的に検査を削除する要望はありません。


なので、最低限行うべきものからスタートした方が良いです。


連続運転をしだすと月単位でずれ込んでいくので気を付けましょう。


[今日のひとこと]

10年前と違って今は非常に新入社員に対して冷めている気がします。

 居酒屋に行けなくなったから

飲みミニケーションがとりずらいからかもしれません。

いや、新入社員自体、飲みに行きたがらないからかもしれません。

早くこの状況が改善すると良いですね。

2020年9月3日木曜日

[全般] #ifdef を使用してデバッグコードをON/OFFすることについて

こんにちは


ソフトな道を今日もほのぼのと歩きます。


今回は、"#ifdef を使用してデバッグコードをON/OFFすることについて"


について記載します。


#ifdefですがいたるところに定義していて、本番用が0と1が


混ざっていた場合、混乱を起こしてしまいます。


なので、以下のようにすると、混乱がなくなると思います。


#ifdef 0    // ここは"0"で現在実施しているハードにて動作する状態にする。

            // "1"でデバッグ用とする。

#define DEBUG_SW


#endif



#ifdef DEBUG_SW   

    処理1'

#else

    //original

    処理1

#endif


混乱すると、調べるのに時間がかかってしまうし、


作業のオーバーヘッドが大きくなってしまいますので、整理する上でも


やっておいて損はしないと思います。

2020年9月1日火曜日

[テスト] 評価用にprintfをつけることによる影響

こんにちは


ソフトな道を今日もほのぼのと歩きます。


今回は、ソフトウェアのテストにおいてprintf()出力させたものを


評価対象にしていた箇所がかなりありました。


ただ、これは製品版の時にはprintf()処理は取り除くとのことなので、


大丈夫かな?と思いました。


というのも、printf()は十分なウェイトになってしまうので


タイミングによっては動作しないケースもあるのかと思いました。


ハードウェアが専用のものなので


たまたま動作している可能性があります。


組み込み系ソフトウェアでは、ハードのステータス待ちとかで


早すぎると期待した動きにならずに


最悪の場合、動かなくなってしまいます。