2020年8月24日月曜日

[Linux] closeしても、プロセス実行が発生してしまう対策

こんにちは


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


少し前になりますが「[Linux] スレッド内で使用していたメモリがSIGINTによって壊されていた為でした。」


で進展がありましたので以下記載します。


今までの変更分


1.SIGINT処理ではprintf()は行ってはいけない

2. SIGINT処理で使用する変数型を変える

        [変更前]

            static int 型

        [変更後]

            #include <signal.h>

           

            static volatile sig_atomic_t 型

3.ポインタで渡ってくるデータはローカル変数にコピーして使う。


Segmentation fault


のエラーが3日目に発生していました。


色々調べてみたところ、


プロセスをcloseしても、プロセスが一瞬入ってくるケースがありました。

これにより、openしている時に使用するapiがclose状態で実行されていたため、

想定外な動作の結果Segmentation faultのエラーになって表れていました。


対策としては以下を行うことで解決できました。


[対策]

1. close直前に"終了したことを表すフラグ"= 1にする。

2. close実行。

3. プロセス側で"終了したことを表すフラグ"を監視し1が立っていたら何もせずに抜ける。



2020年8月4日火曜日

[NORTiv4] 本番機が無い時の進め方(GPIO)

こんにちは


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


現在、現行機に変わる後継機を作成しています。


OSはNORTi V4を使用しています。


まだ、後継機(ハード)は作成中です。


センサーに反応したらある処理を行う。といった処理を実装しています。


センサーはGPIOで反応するのですが、現行機は筐体に入っていて、


他のGPIOを使って確認するすべがない状態です。


この為、現行機のある時点における、使っていないボタンを代用して


実装していこうと思います。


[今日のひとこと]

からあげの天才をよく利用するのですが


美味しすぎます。周りはサクサク、中はジューシー


一体どんな方法で実現しているのでしょうか。


揚げ方?下ごしらえの方法?教えてほしいです。

(ワタミに就職すれば分かりますか?)


ファミリーパックをネット予約にすれば、


10個→ 12個になります。


また、備考として赤、白、黒のから揚げを指定すれば


チューニングも可能でした。


また来週食べよう。


2020年7月28日火曜日

[NORTiv4] タスク生成されない

こんにちは


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


現在、現行機に変わる後継機を作成しています。


OSはNORTi V4を使用しています。


追加でタスク生成を行おうとしていましたがどうもタスク生成されても動作していないようでした。


他のタスク生成を参考にしても動作していないようでした。


(printf()で埋め込んでも表示されませんでした。)


調べたところ、以下のような指針で進めれば、比較的早く解決できそうです。


1.複数タスク生成しているなら少なくしてみる。

    → 私の場合は20タスクありましたので、2タスクだけcre_tsk()、sta_tsk()するようにしました。


2.メモリ関連の定義(私のケースでは「スタック領域先頭番地」の定義)を

    既存で動作していたものにしてみる。


これによってタスク生成されることを確認出来たら、


全体を戻して、必要分だけ入れ込めば動作するようになります。


[今日のひとこと]

「から揚げの天才」というお店が近場に出来ました。


そこに、テリー伊藤さんが宣伝の為に来ていました。


かなりの人だかりでしたが、


皆さん、密なのを感じていたようで、静かでした。


素晴らしいですね。

2020年7月25日土曜日

[実機到着前] 評価ボードにて行うこと

こんにちは


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


今日は、本番用のハードウェアボードが手元になく、

評価ボードだけあった際、何をどうしていけばよいのか分からずに途方にくれないように

する為にメモします。


1. 全体の処理を作成する。

   ハードに影響しない箇所のコーディングを行います。


2. ハードウェア制御実施した結果は正常終了のものをダミーで返す。

   ハードウェアへの制御は動いている風に記載する。

   ハードウェアへのアクセス関数を呼び出すが、中身の制御部分は空で、呼び出し元に返す値を正常終了用に作り出す。(スタブのようなもの)


3. ハードウェア制御は”1””2”とは独立して開通、制御できるところまでを行う。


4. gitにてバージョン管理する際は、1機能入れたらコミットしていくようにする。


[今日のひとこと]

世間は7/23(木)、7/24(金)はお休みですが、

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

祝日はほぼ無しなので、

案件を発注する側はその分早く成果物が出来るので

出しやすいのかもしれません

2020年7月18日土曜日

[Linux] SIGINTによってメモリ破壊をしていた箇所は意外にも3

こんにちは


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


今日は、前回「[Linux] スレッド内で使用していたメモリがSIGINTによって壊されていた為でした。」


で進展がありましたので以下記載します。


結論からいうと、


1.SIGINT処理ではprintf()は行ってはいけない

2. SIGINT処理で使用する変数型を変える

        [変更前]

            static int 型

        [変更後]

            #include <signal.h>

           

            static volatile sig_atomic_t 型

3.ポインタで渡ってくるデータはローカル変数にコピーして使う。


です。


Segmentation fault


のエラーが3日目に発生していました。


調べたところ、SIGINT内にポインタで渡ってきたデータを


そのまま音声関連の関数の引数に渡していました。


SIGINTの関数を呼び出している上位のブラックボックスの処理で


何をしているかもわからない状況なので、


書き換わる可能性がありそうでした。

(上位側のプログラムでSIGINTの関数が別スレッドとして呼ばれていた場合は

私の知らないところでメモリが書き換わる可能性がある)


ですので、データをローカルな構造体に入れて、(メモリ確保している状態で)


上記の音声関連の関数に入れるようにしました。


今回、”3”を実装して連続運転を行しはじめました。


[今日のひとこと]

JAVAプログラミング能力認定試験 というものに興味が出てきました。


というのも、Android Studioにてアプリを仕事で作ったりしていたのですが、

(Kotlin言語です。)

そもそも、お作法が体系だって習っていないことに気付いた為です。


基本から実践へという流れではなく、


実践から基本にという流れですが、おさらいも含めて資格取得してみます。


3級、2級、1級とあるみたいですが、まずは3級からでしょうか。



2020年7月9日木曜日

[Linux] SIGINTによってメモリ破壊をしていた箇所は意外にも2

こんにちは


ソフトな道を急ぎ足で今日は歩きます。


今日は、前回「[Linux] スレッド内で使用していたメモリがSIGINTによって壊されていた為でした。」


で進展がありましたので以下記載します。


結論からいうと、


1.SIGINT処理ではprintf()は行ってはいけない

2. SIGINT処理で使用する変数型を変える

        [変更前]

            static int 型

        [変更後]

            #include <signal.h>

           

            static volatile sig_atomic_t 型


こちらは、以下のリンクが大変参考になりました。

https://codezine.jp/article/detail/4700


”1”を実装して連続運転を行っていますが、20時間で


Segmentation fault


のエラーが発生していました。


今回、”2”を実装して連続運転を行っていますが、24時間

動作し続けています。(継続中)


この対応は排他制御の強力版のように思います。


動いてくれることを期待!!


[今日のひとこと]


オリエンタルラジオ 中田さんの

youtube大学でチャップリンとヒトラ(大野 裕之 (著))

を拝聴しました。

 いつもながら分かりやすい授業で

思わず書籍を読んでみました。

当時と今の情勢を見比べてみると、当時のドイツと中国が同じ状態で

占領されたフランスが今回の香港のような気がしました。

今後も、喜劇でヒトラに相当するギャグを行えば

同じように終わるのではないかと思います。


髪はポマードで「がちがち固め」で、目は線でお願いします。



2020年7月6日月曜日

[Linux] SIGINTによってメモリ破壊をしていた箇所は意外にも

こんにちは


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


今日は、前回「[Linux] スレッド内で使用していたメモリがSIGINTによって壊されていた為でした。」


で進展がありましたので以下記載します。


結論からいうと、


SIGINT処理ではprintf()は行ってはいけない。。。

です。


こちらは、以下のリンクが大変参考になりました。

https://codezine.jp/article/detail/4700


連続運転を行っていますが、1分で

Segmentation fault


のエラーが発生していたのが、1時間動作しています。

(継続中)


[今日のひとこと]


東京都知事選で、小池百合子さんが当選しました。


他の候補者とは雲泥の差でした。


強かった。


ただ、個人的にもう一つの競り合いが気になりました。


桜井さんの方が立花さんよりも票を取っていたことです。

(皆さんきちんと見てるのですね。)