All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wolfgang Grandegger <wg@grandegger.com>
To: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
Cc: socketcan-core@lists.berlios.de, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: About bittiming calculation result
Date: Mon, 07 Feb 2011 13:00:57 +0100	[thread overview]
Message-ID: <4D4FDEF9.2030305@grandegger.com> (raw)
In-Reply-To: <5009516791F146C49C73FAC57C437313@hacdom.okisemi.com>

Hi Tomoya,

On 02/07/2011 12:38 PM, Tomoya MORINAGA wrote:
> Hi,
> 
> I have a question for bittiming-value calculated by Can-core.
> 
> In case setting like below,
>  - ip link set can0 type can bitrate 800000
>  - clock=50MHz
>  - Use pch_can
> 
> Can-core calculates like below
> brp=21
> seg1=1
> seg2=1
> sjw=1
> prop_seg=0
> 
> Is "prop_seg=0" true ?

Well, only prop_seg+phase_seg=tseg1 is relevant and the pch_can driver
sets the allowed minimum "tseg1_min1" currently to 1:

static struct can_bittiming_const pch_can_bittiming_const = {
        .name = KBUILD_MODNAME,
        .tseg1_min = 1,
        .tseg1_max = 16,
        .tseg2_min = 1,
        .tseg2_max = 8,
        .sjw_max = 4,
        .brp_min = 1,
        .brp_max = 1024, /* 6bit + extended 4bit */
        .brp_inc = 1,
};

> seg1/seg2/sjw/prop_seg must be more than 1 ?

Then "tseg1_min" should be set to *2*.

> Also I can see the following kernel error log.
> bitrate error 0.7%

A clock frequency of 50 MHz is sub-optimal for CAN and some
bit-rates cannot be reproduced properly. Here is the output of
the can-utils program "can-calc-bit-timing" (with an entry for
the pch-can added):

$ ./can-calc-bit-timing pch-can
Bit timing parameters for pch-can with 50.000000 MHz ref clock
nominal                                 real Bitrt   nom  real SampP
Bitrate TQ[ns] PrS PhS1 PhS2 SJW BRP Bitrate Error SampP SampP Error CNF1 CNF2 CNF3
1000000    100   3    3    3   1   5 1000000  0.0% 75.0% 70.0%  6.7% 0x05 0x92 0x02
 800000    420   0    1    1   1  21  793650  0.8% 80.0% 66.6% 16.8% 0x15 0xff 0x00
 500000    100   8    8    3   1   5  500000  0.0% 87.5% 85.0%  2.9% 0x05 0xbf 0x02
 250000    500   3    3    1   1  25  250000  0.0% 87.5% 87.5%  0.0% 0x19 0x92 0x00
 125000    500   6    7    2   1  25  125000  0.0% 87.5% 87.5%  0.0% 0x19 0xb5 0x01
 100000    500   8    8    3   1  25  100000  0.0% 87.5% 85.0%  2.9% 0x19 0xbf 0x02
  50000   2500   3    3    1   1 125   50000  0.0% 87.5% 87.5%  0.0% 0x7d 0x92 0x00
  20000   2500   8    8    3   1 125   20000  0.0% 87.5% 85.0%  2.9% 0x7d 0xbf 0x02
  10000  12500   3    3    1   1 625   10000  0.0% 87.5% 87.5%  0.0% 0x71 0x92 0x00

As you can see, especially 800000 gives rather bad results.

Wolfgang.

WARNING: multiple messages have this Message-ID (diff)
From: Wolfgang Grandegger <wg-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
To: Tomoya MORINAGA <tomoya-linux-ECg8zkTtlr0C6LszWs/t0g@public.gmane.org>
Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w@public.gmane.org,
	netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: About bittiming calculation result
Date: Mon, 07 Feb 2011 13:00:57 +0100	[thread overview]
Message-ID: <4D4FDEF9.2030305@grandegger.com> (raw)
In-Reply-To: <5009516791F146C49C73FAC57C437313-c0cKtqp5df7I9507bXv2FdBPR1lH4CV8@public.gmane.org>

Hi Tomoya,

On 02/07/2011 12:38 PM, Tomoya MORINAGA wrote:
> Hi,
> 
> I have a question for bittiming-value calculated by Can-core.
> 
> In case setting like below,
>  - ip link set can0 type can bitrate 800000
>  - clock=50MHz
>  - Use pch_can
> 
> Can-core calculates like below
> brp=21
> seg1=1
> seg2=1
> sjw=1
> prop_seg=0
> 
> Is "prop_seg=0" true ?

Well, only prop_seg+phase_seg=tseg1 is relevant and the pch_can driver
sets the allowed minimum "tseg1_min1" currently to 1:

static struct can_bittiming_const pch_can_bittiming_const = {
        .name = KBUILD_MODNAME,
        .tseg1_min = 1,
        .tseg1_max = 16,
        .tseg2_min = 1,
        .tseg2_max = 8,
        .sjw_max = 4,
        .brp_min = 1,
        .brp_max = 1024, /* 6bit + extended 4bit */
        .brp_inc = 1,
};

> seg1/seg2/sjw/prop_seg must be more than 1 ?

Then "tseg1_min" should be set to *2*.

> Also I can see the following kernel error log.
> bitrate error 0.7%

A clock frequency of 50 MHz is sub-optimal for CAN and some
bit-rates cannot be reproduced properly. Here is the output of
the can-utils program "can-calc-bit-timing" (with an entry for
the pch-can added):

$ ./can-calc-bit-timing pch-can
Bit timing parameters for pch-can with 50.000000 MHz ref clock
nominal                                 real Bitrt   nom  real SampP
Bitrate TQ[ns] PrS PhS1 PhS2 SJW BRP Bitrate Error SampP SampP Error CNF1 CNF2 CNF3
1000000    100   3    3    3   1   5 1000000  0.0% 75.0% 70.0%  6.7% 0x05 0x92 0x02
 800000    420   0    1    1   1  21  793650  0.8% 80.0% 66.6% 16.8% 0x15 0xff 0x00
 500000    100   8    8    3   1   5  500000  0.0% 87.5% 85.0%  2.9% 0x05 0xbf 0x02
 250000    500   3    3    1   1  25  250000  0.0% 87.5% 87.5%  0.0% 0x19 0x92 0x00
 125000    500   6    7    2   1  25  125000  0.0% 87.5% 87.5%  0.0% 0x19 0xb5 0x01
 100000    500   8    8    3   1  25  100000  0.0% 87.5% 85.0%  2.9% 0x19 0xbf 0x02
  50000   2500   3    3    1   1 125   50000  0.0% 87.5% 87.5%  0.0% 0x7d 0x92 0x00
  20000   2500   8    8    3   1 125   20000  0.0% 87.5% 85.0%  2.9% 0x7d 0xbf 0x02
  10000  12500   3    3    1   1 625   10000  0.0% 87.5% 87.5%  0.0% 0x71 0x92 0x00

As you can see, especially 800000 gives rather bad results.

Wolfgang.

  reply	other threads:[~2011-02-07 11:59 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-04 12:22 [PATCH 00/20] world-writable files in sysfs and debugfs Vasiliy Kulikov
2011-02-04 12:22 ` Vasiliy Kulikov
2011-02-04 12:22 ` Vasiliy Kulikov
2011-02-04 12:22 ` Vasiliy Kulikov
2011-02-04 12:23 ` [PATCH 01/20] mach-omap2: mux: world-writable debugfs files Vasiliy Kulikov
2011-02-04 12:23   ` Vasiliy Kulikov
2011-02-04 20:09   ` Tony Lindgren
2011-02-04 20:09     ` Tony Lindgren
2011-02-04 12:23 ` [PATCH 02/20] mach-omap2: pm: world-writable debugfs timer files Vasiliy Kulikov
2011-02-04 12:23   ` Vasiliy Kulikov
2011-02-04 20:10   ` Tony Lindgren
2011-02-04 20:10     ` Tony Lindgren
2011-02-04 22:53   ` Kevin Hilman
2011-02-04 22:53     ` Kevin Hilman
2011-02-04 12:23 ` [PATCH 03/20] mach-omap2: smartreflex: world-writable debugfs voltage files Vasiliy Kulikov
2011-02-04 12:23   ` Vasiliy Kulikov
2011-02-04 20:10   ` Tony Lindgren
2011-02-04 20:10     ` Tony Lindgren
2011-02-04 22:54   ` Kevin Hilman
2011-02-04 22:54     ` Kevin Hilman
2011-02-07  5:33     ` Menon, Nishanth
2011-02-07  5:33       ` Menon, Nishanth
2011-02-04 12:23 ` [PATCH 04/20] mach-ux500: mbox-db5500: world-writable sysfs fifo file Vasiliy Kulikov
2011-02-04 12:23   ` Vasiliy Kulikov
2011-02-04 12:23 ` [PATCH 05/20] leds: lp5521: world-writable sysfs engine* files Vasiliy Kulikov
2011-02-04 12:23 ` [PATCH 06/20] leds: lp5523: world-writable engine* sysfs files Vasiliy Kulikov
2011-02-04 12:23 ` [PATCH 07/20] video: sn9c102: world-wirtable " Vasiliy Kulikov
2011-02-04 15:29   ` Mauro Carvalho Chehab
2011-02-04 20:28   ` Luca Risolia
2011-02-04 12:23 ` [PATCH 08/20] mfd: ab3100: world-writable debugfs *_priv files Vasiliy Kulikov
2011-02-04 12:23   ` Vasiliy Kulikov
2011-02-18 17:01   ` Vasiliy Kulikov
2011-02-04 12:23 ` [PATCH 09/20] mfd: ab3500: world-writable debugfs register-* files Vasiliy Kulikov
2011-02-04 12:23   ` Vasiliy Kulikov
2011-02-04 12:23 ` [PATCH 10/20] mfd: ab8500: " Vasiliy Kulikov
2011-02-04 12:23   ` Vasiliy Kulikov
2011-02-04 12:23 ` [PATCH 11/20] misc: ep93xx_pwm: world-writable sysfs files Vasiliy Kulikov
2011-02-04 12:23 ` [PATCH 12/20] net: can: at91_can: " Vasiliy Kulikov
2011-02-04 12:42   ` Kurt Van Dijck
2011-02-04 12:42     ` Kurt Van Dijck
2011-02-04 21:06     ` David Miller
2011-02-04 21:06       ` David Miller
2011-02-07 11:38       ` About bittiming calculation result Tomoya MORINAGA
2011-02-07 12:00         ` Wolfgang Grandegger [this message]
2011-02-07 12:00           ` Wolfgang Grandegger
2011-02-07 15:52           ` Wolfgang Grandegger
2011-02-07 15:52             ` Wolfgang Grandegger
2011-02-08  1:27             ` Tomoya MORINAGA
2011-02-08  1:27               ` Tomoya MORINAGA
2011-02-08  7:57               ` Wolfgang Grandegger
2011-02-08  7:57                 ` Wolfgang Grandegger
2011-02-08  1:09           ` Tomoya MORINAGA
2011-02-08  1:09             ` Tomoya MORINAGA
2011-02-08  3:29             ` Bhupesh SHARMA
2011-02-08  3:29               ` Bhupesh SHARMA
2011-02-08  4:11               ` Tomoya MORINAGA
2011-02-08  4:11                 ` Tomoya MORINAGA
2011-02-04 12:23 ` [PATCH 13/20] net: can: janz-ican3: world-writable sysfs termination file Vasiliy Kulikov
2011-02-04 21:06   ` David Miller
2011-02-04 21:06     ` David Miller
2011-02-04 12:23 ` [PATCH 14/20] platform: x86: acer-wmi: world-writable sysfs threeg file Vasiliy Kulikov
2011-02-04 12:23 ` [PATCH 15/20] platform: x86: asus_acpi: world-writable procfs files Vasiliy Kulikov
2011-02-04 12:23   ` Vasiliy Kulikov
2011-02-04 12:53   ` Corentin Chary
2011-02-04 12:24 ` [PATCH 16/20] platform: x86: tc1100-wmi: world-writable sysfs wireless and jogdial files Vasiliy Kulikov
2011-02-04 12:24 ` [PATCH 17/20] rtc: rtc-ds1511: world-writable sysfs nvram file Vasiliy Kulikov
2011-02-04 12:24 ` [PATCH 18/20] scsi: aic94xx: world-writable sysfs update_bios file Vasiliy Kulikov
2011-02-04 12:24 ` [PATCH 19/20] scsi: iscsi: world-writable sysfs priv_sess file Vasiliy Kulikov
2011-03-13  8:28   ` Mike Christie
2011-03-13  8:28     ` Mike Christie
2011-02-04 12:24 ` [PATCH 20/20] fs: ubifs: world-writable debugfs dump_* files Vasiliy Kulikov
2011-02-04 12:24   ` Vasiliy Kulikov
2011-02-06 15:16   ` Artem Bityutskiy
2011-02-06 15:16     ` Artem Bityutskiy
2011-02-04 13:11 ` [rtc-linux] [PATCH 00/20] world-writable files in sysfs and debugfs Linus Walleij
2011-02-04 13:11   ` Linus Walleij
2011-02-04 13:11   ` Linus Walleij
2011-02-04 13:11   ` Linus Walleij
2011-02-21 11:42 ` Samuel Ortiz
2011-03-12 20:23 ` Vasiliy Kulikov
2011-03-12 20:23   ` Vasiliy Kulikov
2011-03-12 20:23   ` Vasiliy Kulikov
2011-03-14 22:18   ` [Security] " Andrew Morton
2011-03-14 22:18     ` Andrew Morton
2011-03-15  2:26   ` James Bottomley
2011-03-15  2:26     ` James Bottomley
2011-03-15  3:09     ` [Security] " Greg KH
2011-03-15  3:09       ` Greg KH
2011-03-15 11:50       ` James Bottomley
2011-03-15 11:50         ` James Bottomley
2011-03-15 14:18         ` Greg KH
2011-03-15 14:18           ` Greg KH
2011-03-15 14:25           ` James Bottomley
2011-03-15 14:25             ` James Bottomley
2011-03-15 16:08         ` Vasiliy Kulikov
2011-03-15 16:08           ` Vasiliy Kulikov
2011-03-15 16:32           ` James Bottomley
2011-03-15 16:32             ` James Bottomley
2011-03-15 16:32             ` James Bottomley
2011-03-12 20:23 ` Vasiliy Kulikov
2011-03-12 20:23 ` Vasiliy Kulikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D4FDEF9.2030305@grandegger.com \
    --to=wg@grandegger.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=socketcan-core@lists.berlios.de \
    --cc=tomoya-linux@dsn.okisemi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.