[Armadillo:07496] Re: Armadillo-440のUART動作クロック

Singo SAKAI email@hidden
2011年 8月 30日 (火) 20:02:22 JST


竹之下様

返信が遅くなってしまいましたが、ツールのご紹介ありがとうございました。
おかげ様で、クロックへの理解も深まり、設定内容の確認もできました。


最初の質問とは内容が異なるのですが、クロックと関連があるかも知れないの
で、続けて質問させてください。

ポーティングしているOSでは、ICEを介してPCと通信するモジュールがあり、
そこではDCCレジスタ(CP14)にアクセスしています。

このモジュールが、ICEを接続してデバッグしている時は正常に動作するので
すが、ICEを外してボードだけで動かそうとすると、DCCレジスタにアクセスす
る命令(MRC/MCR)で、未定義例外が発生してしまうようです。

こうなってしまう原因について、何か分かることはありますでしょうか。


よろしくお願いいたします。

酒井

Tue, 16 Aug 2011 11:08:17 +0900, Takenoshita Koyo wrote:
>竹之下です。
>
>遅ればせながら、コメントします。
>Armadillo-400シリーズ(i.MX25)へのOSポーティングの際には、クロック
>の設定が一つの鬼門ですよね。
>
>各モジュールへのクロックをどのクロックソースから生成できるかは、
>以下のページの「Tool For Calculating i.MX25 Clock Settings」を
>使うと分かりやすいです。
>http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX25_SW&fsrch
>=1
>
>Armadillo-400シリーズで実際どのように設定されているかは、Linuxを起動して
>/proc/cpu/clocksを見てみることで分かります。
>
>[email@hidden (ttymxc1) ~]# cat /proc/cpu/clocks | grep uart
>uart_ipg_clk-4:         66500000, 1, ipg_clk-0
>uart_clk-4:             120000000, 1, per_uart_clk-15
>uart_ipg_clk-3:         66500000, 0, ipg_clk-0
>uart_clk-3:             120000000, 0, per_uart_clk-15
>uart_ipg_clk-2:         66500000, 1, ipg_clk-0
>uart_clk-2:             120000000, 1, per_uart_clk-15
>uart_ipg_clk-1:         66500000, 1, ipg_clk-0
>uart_clk-1:             120000000, 3, per_uart_clk-15
>uart_ipg_clk-0:         66500000, 0, ipg_clk-0
>uart_clk-0:             120000000, 0, per_uart_clk-15
>per_uart_clk-15:        120000000, 3, upll-0
>
>フォーマットは以下の通りです。
>クロック名:             実際のクロック数, 使用カウント, 親クロック名
>
>uart_clk-2 は 120MHzで、親クロックは per_uart_clk-15 となっています。
>(シリアルインターフェース1には、UART2が繋がっています。)
>per_uart_clk-15 の親クロックは、upll-0 です。
>さらにたどっていくと、upll-0 の親は、osc24m-0(24MHz)ということも分かります。
>
>(2011年08月11日 09:54), Singo SAKAI wrote:
>> 古賀様
>> 
>> 分かりやすい説明ありがとうございました。
>> やはりCCMの設定が間違っていました。
>> 
>> 教えていただいたフィールドの設定を見なおしたところ、ターミナルに正しく
>> 表示されるようになりました。
>> 
>> 
>> どうもありがとうございました。
>> 
>> 酒井
>> 
>> 
>>> サムシングプレシャスの古賀と申します。
>>>
>>> SAKAIさん([Armadillo:07464]):
>>>> とあるOSをArmadillo-440へ移植しています。
>>>> UARTのドライバを作成しているのですが、ArmadilloからPCへ文字列を送って
>>>> も文字化けしてしまうため、ボーレートがうまく設定できていないように見え
>>>> ます。
>>>>
>>>> 質問としては、
>>>>  ・i.MX257内蔵のUARTに入力するクロックは、66.5MHzで合っていますでしょ
>>>> うか。
>>>>
>>>> hermitのコードを見ますと、「120MHz」としてボーレートの計算をされていま
>>>> すが、「Armadillo-400シリーズハードウェアマニュアル」を見ますと
>>>>
>>>> 	BUSクロック:133MHz
>>>>
>>>> となっていますので、その半分の66.5MHzが入力されるものと考えています。
>>>> この考えは正しいでしょうか?
>>>
>>> UART に入力されるクロックの周波数は、i.MX257 の CCM (Clock Control
>>> Module) の設定により変わるのではないでしょうか。133MHz は BUS
>>> クロック、つまり AHB のクロックで、120MHz は USB PLL の 240MHz の
>>> 半分の値ですよね。UART へ供給される PER のクロックは、CCM の MCR
>>> レジスタの設定(MCR の PER CLK MUX フィールドの UART 対応ビット)
>>> によって決まり、USB PLL クロックがソースになるか HCLK/AHB クロック
>>> がソースになるかが変わるのだと思います。
>>>
>>> これと、CCM の PCDRn (PER Clock Divider Register n) の対応フィールド
>>> に設定した divider 値で、実際に供給されるクロック周波数が決まるんじゃ
>>> ないでしょうか。
>>>
>>>> また、hermitのコードで設定しているものと同じ値をUARTコントローラに設定
>>>> しても、PC上の端末には正しく文字が出力されないため、何か他の設定も必要
>>>> なのかどうか、教えていただけないでしょうか。
>>>
>>> UART コントローラを設定する前、(おそらくブートコードにおいて)CCM
>>> をどのように設定しているのかを確認されるのがよいのではないかと思い
>>> ます。
>>>
>>> 以上、もし参考になりましたら幸いです。
>>>
>>> --
>>> 古賀信哉 (株)サムシングプレシャス
>>>
>>> _______________________________________________
>>> armadillo mailing list
>>> email@hidden
>>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>> _______________________________________________
>> armadillo mailing list
>> email@hidden
>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>> 
>
>
>-- 
>Koyo Takenoshita
>
>_______________________________________________
>armadillo mailing list
>email@hidden
>http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo



armadillo メーリングリストの案内