[Armadillo:05358] Re: Armadillo-420のシリアル通信における正確なボーレートについて

Myoukan Kiyohito email@hidden
2010年 6月 23日 (水) 12:33:27 JST


明官です。

nakai様、返信ありがとうございます。

丁寧な回答、本当にありがとうございました。
とても役に立ちます。

> -----Original Message-----
> From: email@hidden
> [mailto:email@hidden] On Behalf Of nakai
> Sent: Wednesday, June 23, 2010 12:00 PM
> To: Armadillo series general discussion list
> Subject: [Armadillo:05357] Re: Armadillo-420のシリアル通信における正確なボーレ
> ートについて
>
> nakaiです。
>
> Busyboxのsttyにはバグがあるのか2Mなど設定できないようです。
> debianパッケージのcoreutilsを持ってきて設定してみたところ、
> 問題なく出来たため、1M, 2M, 3Mについても設定値を記載します。
>
> stty -F /dev/ttymxc4 1000000
> 	ref: 120000000, ubir: 4368, ubmr: 32767
>  	設定値: 999984
> stty -F /dev/ttymxc4 2000000
> 	ref: 120000000, ubir: 8737, ubmr: 32767
>  	設定値: 1999969
> stty -F /dev/ttymxc4 3000000
> 	ref: 120000000, ubir: 13106, ubmr: 32767
>  	設定値: 2999954
>
>
>
> nakai さんは書きました:
> > nakaiです。
> >
> > Armadillo-420が使用しているUARTコントローラは、
> > i.MX25内蔵のものです。
> > このコントローラでのボーレート設定は、リファレンスマニュアル[1]の
> > 	46.4.6 Binary Rate Multiplier (BRM)
> > に記載があります。
> > [1]
> >
> http://cache.freescale.com/files/dsp/doc/ref_manual/IMX25RM.pdf?fpsp=1&WT_TYPE
> =Reference%20Manuals&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documenta
> tion
> >
> > 実際にボーレートの算出を行うソースは、
> > linux-2.6.26-at/drivers/serial/mxc_uart.c::mxcuart_set_termios
> > です。
> >
> > さて、実際に設定する値ですが、以下のようなパッチをあてて確認してみました。
> > {{{
> > diff --git a/drivers/serial/mxc_uart.c b/drivers/serial/mxc_uart.c
> > index c596c83..a602bb9 100644
> > --- a/drivers/serial/mxc_uart.c
> > +++ b/drivers/serial/mxc_uart.c
> > @@ -1424,6 +1424,7 @@ static void mxcuart_set_termios(struct uart_port
*port,
> >                 num = (u_int) n64 - 1;
> >                 denom = 0x7fff;
> >         }
> > + printk("ref: %d, ubir: %d, ubmr: %d\n", umxc->port.uartclk, num, denom);
> >         writel(num, umxc->port.membase + MXC_UARTUBIR);
> >         writel(denom, umxc->port.membase + MXC_UARTUBMR);
> >
> > }}}
> >
> > ● 115200
> > stty -F /dev/ttymxc4 115200
> > 	ref: 120000000, ubir: 502, ubmr: 32767
> > 	設定値: 115127
> > ● 921600
> > stty -F /dev/ttymxc4 921600
> > 	ref: 120000000, ubir: 4026, ubmr: 32767
> > 	設定値: 921707
> > ● 1152000
> > stty -F /dev/ttymxc4 1152000
> > 	ref: 120000000, ubir: 5032, ubmr: 32767
> > 	設定値: 1151962
> > ● 4000000
> > stty -F /dev/ttymxc4 4000000
> > 	ref: 120000000, ubir: 17475, ubmr: 32767
> > 	設定値: 3999938
> >
> > 他のボーレートについては、パッチをあてて確認してみてください。
> > 計算式は、リファレンスマニュアル Egn. 46-3にあるように、
> > BaudRate = RefFreq / (16 * ((UBMR + 1) / (UBIR + 1)))
> > です。




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