To follow up on this, I configured the parallel port for standard mode and the 
xeno_can_peak_dng driver works without error so the problem has to do with the 
EPP/ECP mode.  I would like to use EPP or ECP for performance.  And as 
indicated below, the xeno_can_peak_dng driver only recognizes the sja1000 when 
the bios is set to EPP mode.  Any ideas on how to get it to work in EPP or ECP?

--John

-----Original Message-----
From: Charlton, John 
Sent: Wednesday, August 05, 2009 10:12 AM
To: xenomai-help@gna.org
Subject: Peak parallel port dongle rtcan driver

I am having some problems with the xeno_can_peak_dng driver with the Peak 
parallel port CAN dongle.  I am using linux-2.6.27.7 kernel and xenomai-2.4.6.1 
on an embedded PC (NANO-7240, ULV Celeron 400 MHz CPU).

I have done extensive testing using both RAW CAN and CanOpen using CanFestival 
at 1Mbit baud with a TS-CAN1 PC-104 bus card with no errors.  When I use the 
Peak parallel port dongle at 1 Mbit or 125Kbit baud I loose packets and get 
errors.  It is worse receiving packets with rtcanrecv than transmitting with 
rtcansend.  I can transmit for longer intervals but eventually it fails with an 
error.  The last error reported is:
Assertion failed! <linux kernel 
directory>/drivers/xenomai/can/rtcan_raw.c:rtcan_tx_push:171 dev->tx_socket == 
0 This error occurred after 484 successful transmissions with 100msec delay at 
baudrate=1000000:
rtcansend rtcan0 --verbose --identifier=0x123 0xde 0xad 3 4 5 6 7 8

After the transmission failed the I was unable to send any more packets until I 
reloaded the driver.  The /proc/rtcan/rtcan0/info state goes to warning in this 
case.
Receiving using rtcanrecv rtcan0 --verbose --error=0xffff has more errors.  
Receiving errors result in corrupt packets but don't cause the CAN bus to quit 
working or the state to go to warning.  Right after a receive failure

Device     rtcan0
Controller SJA1000
Board      PEAK-Dongle
Clock-Hz   8000000
Baudrate   1000000
Bit-time   brp=1 prop_seg=0 phase_seg1=5 phase_seg2=2 sjw=1 sam=0
Ctrl-Mode  
State      active
TX-Counter 0
RX-Counter 0
Errors     0
Refcount   0

SJA1000 registers
00: 80 00 0c 00 ff 00 00 14 1a 00 00 00 a2 60 00 00
10: 60 de ad 03 04 05 06 80 08 08 24 60 de 00 23 80

I currently have the Peak parallel dongle set to io=0x378 irq=7 type=epp.  I 
set the parallel port bios to EPP mode and IRQ 7.  I tried ECP mode but the 
xeno_can_peak_dng driver doesn't find the sja1000 unless the bios setting is 
EPP.  This conflicts with the Peak documentation which states in the FAQ that 
ECP is the correct setting even though the driver type is EPP.  It looks to me 
like there may be a timing problem in the parallel port register read.

--John

John D. Charlton
        Sr. Development Engineer
      GATD Electrical Controls
        Tyco Electronics Corporation 
        Mail Stop: 161-39
        (717) 810-2141 
        (717) 810-2443 FAX
        john.charl...@tycoelectronics.com
 
_______________________________________________
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help

Reply via email to