【PINE64】パイン64 part2【ROCK64】 (821レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

311
(5): 2018/08/19(日)16:34 ID:Zxn/Gs53(1/3) AAS
長文のわりに一般性がないので、読みたくない人はスルーしてくれ

>あくまでも kernel 側の不具合
>そして極めつけは、コードを追って該当箇所を直したらRock64(RAM-4G)でも問題無し

大昔にATAカード(SDとかのフラッシュメディアの先祖)のドライバ開発をしたことがある
前任者のドライバが非常に出来が悪いということで、こちらに回ってきて(ATA仕様見た後
ドライバコード見て眩暈がして思わずゴミ箱に叩き込んで)ゼロから完全改修した

この時の解析結果を当てはめると、上記引用は納得がいく

SDみたいなデバイスは大抵ミリ秒単位でコマンドのキャッチボールをしなければならない
この際の時間調停にnanosleep()の類(OSにより微妙に異なる)のウエイト命令を使う
だがコレが曲者で、私がやった時は、OS標準関数内がただの空ループだった
OSのデフォルトがその状態で、恐らく開発に際してハードウェアクロックに接続するべきなのだろう
だがそこまでの開発権限がなくハード設計ももらえなかったんで、当時のハードでスペック計測して
ソフトでできるタイミングを限界いっぱいまで合わせた

勘が鋭い人はわかると思うけど、これってマルチタスクが干渉するだけでもタイミングが狂う
カーネルが変わったりすると、本来はその計測をやり直さなければならない

たとえばstretch(Debian9)の母体は汎用OSなので、タイミング調停関数が初期状態である可能性がある
また安いSBCは、クロックに関するハードAPIをそもそも持っていないかもしれない
そんな設計思想だと、仕様通りでも本体側のマージンができてしまい、SDのマージンに収まらないと不動

そんな感じで、どうしても相性というものがあり動かないものが発生してしまう
手間かけたくない人は、妥協して動くSDを探すしかないと思う
314: 2018/08/19(日)20:22 ID:Zxn/Gs53(2/3) AAS
>>312
実は>>311はものすごい古い技術で、PCのATAではDMA(SATA専用の小さいCPUみたいなもん)
が常識になってる

ボルテージの切り替えの可能性を否定するわけではないが、それだと>>306のカーネル変更の
相性の有無や、モデルでコンフィグレーション変更程度で動いちゃう説明がつかない気がする

ともかくソースいじる意思や時間のない一般人は、動くSDを探して使うぐらいしか手がない
ちなみに私のrock64に刺さってるのはtoshibaの30MB/sで16GBという極端に古いもの
当時rock64なんかなく、ラズパイで動くMicroSDを大量にかき集めたものの残骸
ラズパイ、rock64、nanopiNeoあたりで使いまわしてるが、寿命が来ない限り相性は出ない
相性が出るものと比較して、恐らくSD側のマージンが広く汎用性が高いんだと思う
316: 2018/08/19(日)21:32 ID:Zxn/Gs53(3/3) AAS
>ハード設計者が決めた手順通りにレジスタを叩いてないってだけでしょ
って話とついでにOS側の初期状況を>>311に長々と書いてる

どちらにしても、相性のいいSD探すぐらいしか手がないと思う
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 2.749s*