2023年4月28日金曜日

[Linux][ドライバ]inodeの意味がやっと分かった

どうもこんにちは


今日もソフトウェアについてほのぼのと記載します。


現在は、以下の書籍を読んでいます。


・Linuxデバイスドライバプログラミング


10日ほどで140ページまで進みました。

約600ページあるのでまだまだです。

(技術書というのは速読できないものなのでしょうか。。。)


サンプルソースがしっかりとあるのはよいですね。


さて、ドライバソースを見ていてinodeというのがあり、よく分かっていなかったのですが、


本書を読み進めていくことで理解することが出来ました。


・inodeはメジャー番号とマイナー番号で構成されている。


・メジャー番号は、ドライバの種類を識別する番号

    spiドライバやら、tty(uart)のドライバ、i2cのドライバを識別するイメージです。


・マイナー番号は、1つのドライバ種類に設けられた識別番号

    ttyで言うと、CPUのピンにuartの機能が割り振られている。同じ機能のものが複数の端子についている。その識別番号です。

    →uart0,uart1のように識別出来る番号です。


出版された年が古いとはいえ、概念的なところではまだまだ使えそうです。

good


今回は以上です。

2023年4月8日土曜日

[zenfone] [容量なし] SDカードに内部データを移動できなかったのを解決しました

どうもこんにちは


今日もソフトウェアについてほのぼのと記載します。


最近、zenfone max m2を使用しているのですが、


アプリが殆ど入れられない状況に陥りました。


(残り容量が1GBを切りました。)


昔の端末だったら移動とかできたのに、なんでだろう。


ということで、移動できる方法を調べていましたら、以下が


参考になりました。


https://recoverit.wondershare.jp/sd-format-recovery/convert-sd-card-to-internal-storage-in-android.html


こちらを実行することで、アプリケーションを参照した時に、移動出来るボタンが発生しました。


設定アイコン→”アプリと通知”→”すべてのアプリ表示”

→何かのアプリ→”ストレージ”

で”変更”が出てきました。

これによって、内部共有ストレージからSDカードに移動できるようになりました。


以下は参考になればと思います。

(システムをいじるので、自己責任でお願いします)

  1. 作業前にzenfone max m2をパソコンとつないで、

sdカード内のデータをコピーしておきます。

  1. SDK Platform-Tools for Windows をgoogle検索してダウンロード

(私はwindows環境の為、こちらをダウンロードしました。)

  1. 解凍したディレクトリごと、ごっそり、

C:\Program Files\Android\Android Studio\platform-tools_r34.0.1-windows

としていれました。(ここは適当でいいのですが、今後も使えると思ってここにしてます。)

  1. ユーザの環境変数を開きます。(PC画面左下の検索で”環境変数”で検索すると出てきます。)

  2. Pathを選択して”編集”します

  3. “新規”→3のパス(”C:\Program Files\Android\Android Studio\platform-tools_r34.0.1-windows\platform-tools”)を登録します。これで、adbコマンドが実行できるようになる。

  4. zenfone max m2の”設定”アイコン→”端末情報”→”ビルド番号”

を10回くらい連打でデベロッパーモードにする。

  1. ”設定”アイコン→”システム”→”開発者向けオプション”を有効にする。USBデバッグを有効にする

  2. zenfone max m2とパソコンをUSB接続する。

  3. コマンドプロンプトを開く

  4. 先のリンク先にあるadbコマンドを実行していきます。

  5. しばらく待ちます。


これを行うことで、SDカードの容量は出なくなりますが、

移動できるようになりました。

お疲れさまでした。

2023年2月15日水曜日

[関数]関数ポインタの使い道

こんにちは


今日もソフトウェアについてほのぼのと記載します。


今回の案件は、


デバイスを制御する処理を

専用の一つのファイルで行い、

デバイスが変わったら他のファイルに差し替えて対応出来るようにしてください。

といった内容です。


こういった場合には、

ポインタ関数が有効です。


正直、この関数の使い道が今までよく分かっていませんでした。。


受託案件だと、一つのデバイスの対応がほとんどの為仕方ないということで。。。


呼び出し元は、飛ぼうとしている関数の先頭を知っていれば良く


呼び出し先は最後に呼び出し元に戻れるようにリターン命令があればよい


あとは、

デバイスが変わって関数名が変わっても飛び先を配列(テーブル)をにライトしておけば、飛べます。


2023年2月8日水曜日

[関数][重複]同じ機能なのに二カ所に存在

こんにちは


今日もソフトウェアについてほのぼのと記載します。


現在、他社が書いていたコードを見ているところです。


同じ関数名が別ファイルにstatic型で使われているのですが。。。


何故でしょうか?


C言語なので、同じに見えるクラスなだけ。


と言った概念はない筈なのですが。。


処理は一行あるかないかの違いでした。


意図しているのかたまたまなのか


これは、私を試していると言うことなのか。

2023年2月3日金曜日

[仕様書][設計書] 設計書の効果とは

こんにちは


今日もソフトウェアについてほのぼのと記載します。


現在、他社が書いていてエンドユーザが指摘していたソースを、私が所属している

会社がメンテナンスしている状況です。


1つのcソースファイルで、通信、フラッシュアクセス、ユーザインタフェースとして公開しているやらで、


3000行近いソースとなっていました。。。


それに対して今行っているのは


・ファイルを機能毎に分ける

・レイヤに分けてそれぞれの役割を割り振る


です。


現在、変更仕様書なるものを書いています

が、恥ずかしながら


在職中、書いたことがなかったです。


大手と中小の違いはこういうところなのでしょうか。


また、イメージをソースに書く前に


設計書としてエクセルシートにフローチャートを


書いていくのは必須のようで、


設計書レビューの時に認識を合わせやすくするのによいそうです。


納期があるのに時間がかかってしまうのは仕方ないのかしら。


どうすれば早く書けるのでしょう。




2023年1月29日日曜日

[仕様書] ヘッダファイルの使い方

こんにちは


今日もソフトウェアについてほのぼのと記載します。


現在、他社が書いていてエンドユーザが指摘していたソースを、私が所属している

会社がメンテナンスしている状況です。


指摘事項のうち、ヘッダファイルの扱いが参考になりました。


・ヘッダファイルはユーザに公開している仕様書のようなものです。


ということです。


お客さんはこのヘッダファイルだけ見てくださいね。

といった使い方を想定しているそうで、


内部処理は、ユーザーに意識させない造りにする必要があるとのことです。


仕様書にも、お客さんはこの章だけみてくださいね。


ということのようです。


基本的といえば基本的ですが、為になります。


2023年1月18日水曜日

[実装] 1つの戻り値のみならvoid型


こんにちは


今日もソフトウェアについてほのぼのと記載します。


現在、納品したソフトに対して、


量産版の為に設計をカスタマイズしています。


ソースの書き方で指摘を受けたのでメモします。



  • 関数の戻り値が1つしかないならvoid型にしてください。



残念ながら、今まで戻り値はvoidで定義することは殆どありませんでした。


エラーコードを必ず返すように作り込んでいて、


後々ソースを変更した時にエラーコードが追加されるかも。


と言ったことを意識していた為です。


ユーザに伺ったところ、以下のような意図があるようです。


  • 可読性で見ると、戻り値がvoidなら中身を見ずに済む


確かに、関数の中を追うのを考えると


手間かもしれませんね。

2023年1月14日土曜日

[実装] ソースコードレビューにて


こんにちは


今日もソフトウェアについてほのぼのと記載します。


今は、納品したソフトに対して、


量産版の為に設計をカスタマイズしています。


ソースコードレビューをお客さんと行ったのですが、


可読性を特に意識されていて、


それぞれの処理にコメントを入れてくださいとのことでした。


これ、結構衝撃的でして、、、、


私の所属しているソフトの人たちはソースを見て


分からない人が悪い!


そんなのも分からないのか。と言う伝統があったので、


新鮮でした。


確かに、処理を追う際にコメントが一言書いてあるだけでも


不具合があった場合、問題の箇所を探しやすくなりますね。




2022年12月20日火曜日

[設計][量産] 設計に使えるフローチャート

こんにちは


今日もソフトウェアについてほのぼのと記載します。


今は、納品したソフトに対して、


量産版の為に設計をカスタマイズしています。


量産における、ユーザの視点としては以下のようです。

ここで云うユーザはソフトメーカです。


  • タスク間のメッセージは少なくしたい。オーバーヘッドが大きくなるので(リアルタイムOSを使用)

  • エラー動作を明確にしたい

  • データ管理テーブルはなるべく行わない。データを管理するソースファイルを追加しその中で行う。


今まで、シーケンス図を使って図を書いていましたが、


それだと内部設計が分かりづらかったので、


以下のような図を作成するように依頼されました。


  • フローチャートとシーケンス図を組み合わせたオリジナル図


どんな感じかというと、以下の通りで、フローチャートに毛が生えたような感じです。


  1. シーケンス図を記載する

  2. シーケンス図の各タスクにフローチャートを描いていく。


効果としては、意外と絶大で、

ユーザとの認識違いがすぐに分かって早期に修正できるようになります。



2022年12月12日月曜日

[Python] [認定試験] Python3エンジニア認定試験次なる目標

こんにちは


今日もソフトウェアについてほのぼのと記載します。


先日、Python3エンジニア認定基礎試験をパスするまでの間に


ソースコードを色々作成していきました。


その中で、以下のようなPythonの良さに気付かされました。


  • 簡単に開発環境が構築できる

  • デバッグするのにワンポチ

  • 組み込み技術者を泣かせるハード要因もなし


次回は折角なので

Python 3 エンジニア認定データ分析試験


を目指そうと思います。


書店で第2版を見かけたので、即買いしました。


さぁ、楽しくなってきた

2022年12月4日日曜日

[Python] [認定試験] Python3エンジニア認定基礎試験直前と本番

こんにちは


今日もソフトウェアについてほのぼのと記載します。


Python3エンジニア認定基礎試験勉強ですが、


12月1日から3日間は第一回、二回の模擬試験の復習を行いました。


(あらかじめプリントアウトしておいたので

復習は楽ですね。)

https://study.prime-strategy.co.jp/


そして、本日12月04日、本番を迎えました。


結果として、1000点中900点で合格でした。

余裕でしょ、と受ける前は思っていたのですが、

意外と同じ問題は数問しかなく、

もしかして落ちたかも、と思いましたが

何とかなりました。

模擬試験はやっておくのは必要で、


類似問題は必ず得点することができれば、何とかなると思いました。


というわけで疲れました。自分へお疲れさまーした!

1万円越えるので、落ちなくて良かった。


2022年12月1日木曜日

[Python] [認定試験] チュートリアルを必要なところを読みました

こんにちは

今日もソフトウェアについてほのぼのと記載します。

Python3エンジニア認定基礎試験の勉強中です。
(12月4日に受験します。)

11月28,29,30日でチュートリアルのモジュールやら仮想環境やらを勉強しました。
やはり、頭に入ってこないので、
整理と問題集化して覚えました。 皮財布

2022年11月26日土曜日

[Python] [認定試験] 模擬試験第2回2巡完了

こんにちは

今日もソフトウェアについてほのぼのと記載します。

Python3エンジニア認定基礎試験の勉強中です。
(12月4日に受験します。)

11月24日,25日で第2回の2巡目を完了しました。

1回目よりも素早く解けていますね。

模擬試験ですが、これがそのまま出るわけではありませんが
https://study.prime-strategy.co.jp/
模擬試験内容をまずは覚えて、それ以外のところは自力で解けるようにしておけば

何とかなるのではないかと思ってます。

とりあえず、第三回をプリントアウトしようかな。
それとも、もう一度頭に入ってこないチュートリアル本を一読するか。

満点合格目指して頑張ります。

2022年11月24日木曜日

[Python] [認定試験] 模擬試験第2回1巡完了

こんにちは

今日もソフトウェアについてほのぼのと記載します。

Python3エンジニア認定基礎試験の勉強中です。
(12月4日に受験します。)

11月14日から以下の模擬試験をプリントアウトして

勉強しています。

模擬試験は以下を使用しています。
https://study.prime-strategy.co.jp/
1週間で1回分を2巡するペースで勉強中です。

家と電車内で行い、以下のように分けて作業をしています。

電車内:問題を解く。間違えたところは、何がわかっていないからかを記載。
家:わからなかったところを調べる。

チュートリアルの本は読んでいても、ポイントが頭に入ってこないので

以下のサイトで学ぶようにしてから読んだほうが
良いです。

https://qiita.com/Wakii/items/be7065faf917d7881610
11/21から第二回を行い、11/23で一巡したところです。

モジュールの部分を上記サイトから理解しています。

満点合格目指して頑張ります。


2022年11月15日火曜日

[Python] ダックタイピングやっと理解

こんにちは


今日もソフトウェアについてほのぼのと記載します。


Python3の勉強中です。


Udemyで、酒井さんのダックタイピングのレッスンを受けて、


サラッと終わってしまったのですが、


これの意味やら、利点が分かりませんでした。


そして、調べてみたところ、


以下が参考になりました。


キーワードはポリもーフィズムだったのですね。


理解できました。


https://code-graffiti.com/duck-typing-in-python/?amp=1


2022年11月8日火曜日

[Python] Python3エンジニア認定基礎試験受験申し込み

こんにちは


今日もソフトウェアについてほのぼのと記載します。


Python3エンジニア認定基礎試験の申し込みをしました。


受験するには


Odyssey CBTのIDとパスワードの登録が必要になるようです。


料金は11000円で、少しお高い!


Java受験の時が安かっただけかもしれませんが。。


受かるために、取りあえず、


https://study.prime-strategy.co.jp/study/py3ba1/


にある模試を受けてみて出来ないところを丸っと暗記します。


この手の模試は大体同じ問題がでるのよね。


2022年11月4日金曜日

[ドライバ][ソース変更] ソフトの影響が少ない移植の方法

こんにちは

今日もソフトウェアについてほのぼのと記載します。

現在、組み込み機器内の基板に載っている通信用モジュールが変更になるため、

ソフトウェアのうち、どこら辺が変わるのかを調査しています。

ソースと、LANデバイスのマニュアルを照らし合わせながら見ているところですが、

実にわかりにくい。

汎用的にするようにEthernetの上位層プログラムは作られているので致し方ないですが、

下位側の初期化、deinit、リード、ライトなどの関数をテーブル登録していたりします。

(そこまで追うのが大変でした。)

制御register関連の操作をまずは抑えていこうと思います。

registerの構造は、操作を見ながら見ていったほうが効率は良いです。

20年前は、registerの構造を理解してから操作を見て行っていましたが

構造理解中に眠気が。。。



2022年10月27日木曜日

[ドライバ][ソース変更] ソフトの影響が少ないハードウェアデバイス選定は?

こんにちは、今日もソフトウェアについてほのぼのと記載します。


現在、基板に載っている通信用モジュールが変更になるため、


そのソフトウェアを検討しています。


といいましても、どのようなものになるのか


まだ分かっていませんので、


どのようなケースがあるのか考えてみたいと思います。


ハードウェアデバイスを選ぶ担当次第で幸不幸が決まります。


ざっくりと、以下のケースが考えられると思います。


1.既存品に近いデバイスを選ぶ人(影響が少ない方を好む人)


2.ハイスペックを選ぶ人(他社に負けたくない人)


3.ロースペックを選ぶ人(コストを気にする人)


ソフトの影響度を考えると、


”1”がコストを抑えられて、不具合が少ない選択になります。

レジスタ構成が同じならそれが一番良いですね。


”2.”の場合、ハイスペックなのは良いのですが、他のデバイスとの相性やドライバソースが提供されていることを確認したほうが良いです。

・仮に提供されていても、それを現ソースに組み込むのは必要な作業になります

(簡単に実装出来ると思っているハード担当がいますが、そんな簡単には出来ません。最近では、開発環境でチェックを入れれば対応可能品があるので、そちらなら楽です。)

・ハイスペック製品選んでも、

実際に必要な機能は、その製品機能の1/10にも満たないことはよくある話です。


”3.”の場合、製品性能が満たせなくなる可能性があります。

ソフトでは性能アップに限界があり、ドライバソースに手を加えると、サポート対象外に陥るケースもあるので

現デバイス以上の性能のものを選ぶようにしましょう。


2022年10月20日木曜日

[linux][ディスク容量]Gparted使用したら起動しなくなった問題

こんにちは


今日もほのぼのとソフトウェアについて


記載していきたいと思います。


Vmware Player Ubuntu14_04上で作業していたところ、


仮想ディスク容量が足りなくなってしまいました。。


そのため、Vmware Playerの仮想マシン設定から


ハードディスクを追加で200GB増やして


パーティションを増やすように試してみました。


一度バックアップをとった後、


Gparted アプリを使ってパーティションを


変更して、再起動を行ってみました。

(バックアップは必須です。)


・・・

起動してきませんでした。


(パスワード入力まではいくのですが、その後数時間経過してもデスクトップ画面になりませんでした。)


試行錯誤して、結果的に以下を行うことで


現象は解消出来ました。


1.Gparted アプリで、使用しているパーティション以外を削除する。

(私の環境だと、”/dev/sda1”だけ使用して直後にSWAP用のメモリがあったので、それを削除)


2.使用しているパーティションをリサイズして増やす。”/dev/sda1”だけパーティションとしては有効な状態。


3.Vmware Playerの仮想マシン設定からハードディスク→”デフラグ”を実行

(これは試しにやってみただけで、もしかしたら不要かもしれません)


以上です。


ハードディスクは仮想環境を作成する時点で300GBくらいを設定しておいた方が良いです。

かなりハマりました。


<a href="https://px.a8.net/svt/ejp?a8mat=3HE3NL+M125U+3L4M+6PZF5" rel="nofollow">

<img border="0" width="300" height="250" alt="" src="https://www22.a8.net/svt/bgt?aid=210609921037&wid=001&eno=01&mid=s00000016735001129000&mc=1"></a>

<img border="0" width="1" height="1" src="https://www10.a8.net/0.gif?a8mat=3HE3NL+M125U+3L4M+6PZF5" alt="">

<br>


<a href="https://rpx.a8.net/svt/ejp?a8mat=3HE0IY+3DGG6Q+2HOM+699KH&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb.afl.rakuten.co.jp%2Fhgc%2F0ea62065.34400275.0ea62066.204f04c0%2Fa21060505431_3HE0IY_3DGG6Q_2HOM_699KH%3Fpc%3Dhttp%253A%252F%252Fwww.rakuten.co.jp%252F%26m%3Dhttp%253A%252F%252Fm.rakuten.co.jp%252F" rel="nofollow">

<img src="http://hbb.afl.rakuten.co.jp/hsb/0eb4bbc5.1222aa2a.0eb4bbaa.95151395/" border="0"></a>

<img border="0" width="1" height="1" src="https://www11.a8.net/0.gif?a8mat=3HE0IY+3DGG6Q+2HOM+699KH" alt="">

<br>


2022年10月19日水曜日

[Yocto] 回路図の効果

こんにちは、今日もソフトウェアについてほのぼのと記載します。


現在、ルネサス社製CPU RZ/G1E用の載っているボードのgpioの設定を調べていました。


今までの案件では、評価ボードには回路図がついていて、


それぞれのgpioはどこのモジュールに接続されていて、pinmuxの設定は何なのかを


この回路図を参考にしてgpioの機能割り当てを推測しながら解析出来ていたのですが、


今回のSKRZG1Eのボードには


どういうわけか、回路図が見つかりませんでした。


まさか、無いというオチはあるまいか。