2023年8月12日土曜日

BlackFinを使ってみるなり(11) UARTのライブラリ関数バグってない?

詩羽先輩、好きだから付き合ってください.直球勝負のひらりんです.

今日はBlackFin BF706のUARTを動かそうとするも動かなくてヤバイ感じがしてるとこです.

症状:
adi_uart_SetBaudRate()で9600bpsに設定しても、実動作が1530bpsというイミフな値になってしまう.9600bps以外を与えても1530bpsになってしまう.UART0でもUART1でも同じ.

netを検索しても本件でハマってる人は居ないみたいです.

自分で調べたら、adi_uart_SetBaudRate()がバグってるんじゃないかなぁ?

同関数の中では、registerを調べています.
・prescaler 1 or 16
・システムクロック周波数 100MHz
これらから、ボーレート分周比=100MHz÷16÷9600=651 などと計算されるはずです.

adi_uart_SetBaudRate()の最後の方で、UARTの分周registerに651を直接書くと9600bpsが出力され正しく動作します.
    pDevice->pUARTRegs->UART_CLK   =   651;
しかし、元のcodeに戻すと1530bpsになっちまう.
    pDevice->pUARTRegs->UART_CLK   =   UARTClkValue;
UARTClkValueの算出がバグってるぞこれ.

もーマジ?

このUARTの関数はなぜかdebuggerが動かないという問題もあって厄介だったりする.

今日はもう寝るです.

10へ      12へ

かしこ

7 件のコメント:

  1. >netを検索しても本件でハマってる人は居ない
    どうも、Analog Devices って、
    ・隠ぺい体質
    が、あるみたいですね。(良いデバイスをつくってるのに、ちょっと残念。)
    多分、これは「どこかで認識」は、されてると思いますが、「アマチュアレベル」で、ここまでやってる人はいなくって、プロの設計者が、
    「NDAを交わした、正式ライセンス」の下に、個別対応されてんじゃないかな?
    ADも、「対応済みライブラリ」を、しれっと提供して、開発者も(よくわかんないけど)「それで解決でOK」(プロの開発現場ではよくあることです。まぁ「時間をカネで買ってる」ということですね。開発者は「原因究明が仕事」ではないですから。)
    ※報告件数も、あんまり多くないから、「元の開発環境」のfixまでには至らず。(次期バージョンで、対応されるかどうか?)
    な、感じではないかと思います。
    ※そう思うと、Analog Devices って、ガチガチ「ハード」の会社ですね。あんまり「ソフトウエアに力を入れていない」というか、「ソフトのハード化」を、目論んでいるというか。まぁ、これは「いい悪いでは無くて、会社の方針」なんだろうけど。

    返信削除
    返信
    1. 企業向けのサポートはそんな感じでしょうなぁ.
      個別対応というおしごと.

      公開系でしかアクセスできない下々の者にとっては困ったちゃんであります.

      なんか変なのが、ボーレートやパリティ設定の関数が、なぜか関数名から変更されているみたいなんです.で、新しい関数で不具合が起きています.旧関数はもうライブラリに存在しません.なんでかなぁという妙な雰囲気です.

      解析を続けます.

      削除
    2. ココで是非、
      ・Analog Devices と NDA 結んで、対応ライブラリ
      を、貰って来てください(笑)
      ※あ、NDA 結ぶと、ココにイロイロ書けなくなりますね・・・
      やっぱり自力で解決するしかないのか。

      削除
    3. >なぜか関数名から変更されている
      あ、それ、多分、
      ・仕様変更途中のライブラリ
      を、提供しちゃったんじゃないかな。なので、「ライブラリ全体の整合性」が、とれてないってやつ。
      ※引数の意味変えたけど、型があってるから「コンパイルエラーには成らない」けど、動かなくなる奴。(一番厄介なバグ)
      マイクロソフトとかだと、そういうのは、「XXXXex」とか、新しい関数作るんだけどね(これもどうかと思うが、動かないよりはマシ)
      やっぱり、ADは「ソフト(互換性)重視」じゃないなー
      (ICの「ピン配置」とかは、互換性を考えるんだろうけど、ソフトではそういう配慮をしない、と言うか。)

      削除
    4. いろんな型番への対応をしくじっちゃってとかかしら。ちなみに問題のcodeのfile名はBF6XXなんです。BF706対応はどうなんだろう?
      あと、IDEがシリコンversionを聞いてくるのも初体験でした。

      削除
    5. >いろんな型番への対応をしくじっちゃって
      あー、ありそうですね。対応機種増やしたら、昔のが動かなくなったとか。
      (増やした機種でしかテストしてないとか・・・
      古いライブラリ(か、開発環境)なら動くとかね。)
      いずれにせよ、開発環境の問題ですね。
      しっかりしてください > AD

      削除
    6. アナデバって、縁が濃い人はアナデバのICばっかり使ってるってなイメージがあるんですが、何故かわたしは疎遠でした。今回はいきなり縁が濃くなりました。

      削除