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

Singo SAKAI email@hidden
2011年 8月 31日 (水) 10:50:19 JST


竹之下様

ご回答ありがとうございます。

使っているCP14レジスタは、お知らせいただいたARMv5 ARMのD3に載っている
ものではなく、

http://infocenter.arm.com/help/topic/com.arm.doc.dui0471c/DUI0471C_developing_for_arm_processors.pdf

Chapter 7
Debug Communications Channel

です。

DCCレジスタにアクセスするモジュールは、他のARM CPU搭載ボードでは動作し
ており、ARM926EJ-SコアのCPUでも実績があります。ですので、Armadillo-440
ボードと他のボードでJTAG周辺に何か違いがあるのではないかと考えています。

私はハードには詳しくないため、それが何なのかは分からないのですが、JTAG
ケーブルを接続していることによって、クロック供給や電源供給などで変化が
あるのではないでしょうか。


よろしくお願いします。

酒井

Tue, 30 Aug 2011 21:03:47 +0900, Takenoshita Koyo wrote:
>竹之下です。
>
>> ポーティングしているOSでは、ICEを介してPCと通信するモジュールがあり、
>> そこではDCCレジスタ(CP14)にアクセスしています。
>> 
>> このモジュールが、ICEを接続してデバッグしている時は正常に動作するので
>> すが、ICEを外してボードだけで動かそうとすると、DCCレジスタにアクセスす
>> る命令(MRC/MCR)で、未定義例外が発生してしまうようです。
>> 
>> こうなってしまう原因について、何か分かることはありますでしょうか。
>ここは、恐らくクロックとは直接関係しないと思います。
>
>DCCレジスタを触ったりしたことは無いのですが、 
>
>ARMv5 アーキテクチャ リファレンス マニュアル
>http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0100i/index.
>html
>>Chapter D3 
>
>Coprocessor 14, the Debug Coprocesso
>
>にざっと目を通してみた感じでは、Processor mode や 一部のレジスタの値
>によってアクセス可否が決まるようです。このあたりを見直してみては
>いかがでしょうか?
>
>(2011年08月30日 20:02), Singo SAKAI wrote:
>> 竹之下様
>> 
>> 返信が遅くなってしまいましたが、ツールのご紹介ありがとうございました。
>> おかげ様で、クロックへの理解も深まり、設定内容の確認もできました。
>> 
>> 
>> 最初の質問とは内容が異なるのですが、クロックと関連があるかも知れないの
>> で、続けて質問させてください。
>> 
>> ポーティングしている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 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 メーリングリストの案内