📄 readme
字号:
## $Id: Readme,v 1.8 2008/11/23 12:06:37 oe Exp $#Where does it came from?=======================This driver is derived from the LLP projects can4linux driverwhich was started by Clausi Schr鰐er and later maintained by Heinz-J黵gen Oertelthe most of the ddl stuff is removedas is the support for supporting different chip-sets and i/o models.some useful macros are anyway used in this versionlike the Debug functions ( DBGin();DBGout();)or function parameters which do differ in different Linux kernel versions.Where is the documentation?===========================man/ - sub directoryAre examples available?=======================Look in your can4linux distribution for the can4linux-examplesdirectory.It is not possible to use the driver and application programs (fromthe can4linux-examples directory) compiled for different CPUs,e.g for 32 bit and 64 bit CPUs.Please compile your application and driver for always for the same CPUe.g all for x86_64. Selcet the correct cross compiler and library locations if youare cross compiling for at919263, mcf5282, BlackFin or wahtever.Currently you have to change the Make file in can4linux-examplesAdopting other boards, CAN controllers======================================the IO Model - is compiled in (that means it must be selected at compile time)CAN Chip functionsare coded in the files <CHIP>funcs.c, e.g. sja1000funcs.c,at9263funcs.cbf537funcs.ci82527funcs.c,mcf5282funcs.csja1000func.c,mcp2515funs.cBasic hardware access functions are defined in the chip related c files, like in sja1000funcs.c,the register definitions in header files like sja1000.hall I/O depencies are in the Macros CANout(bd,adr,v) CANin(bd,adr) CANset(bd,adr,m) CANreset(bd,adr,m) CANtest(bd,adr,m)defined in can_defs.hBoard specific files, used if the CAN controller,e.g. SJA1000 is used on boards made by different manufacturers,are named <manuf>_something.c :cc_pci.c - Contemporary Controls PCI boardcpc_104.c - EMS W黱sche PC104ems_pci.c - EMS W黱sche PCI boardkvaser_pci.c - Kvaser 4 channel CAN PCIPlease have a look at the Makefile for correct namings.Does it work with PCI-Express?==============================We have tested the CPC-PCIe - an PCI Express board for up to twoCAN channels based on the CPC-PCI. It works without any softwarechanges. The board has its own PCI-Express to PCI Bridge, thats it.Behind this bridge, the standard PCI bus controller as on theCPC-PCI is used.lspci shows01:00.0 PCI bridge: Texas Instruments XIO2000(A)/XIO2200(A) PCI Express-to-PCI Bridge (rev 03)02:00.0 Network controller: Siemens Nixdorf AG Eicon Diva 2.02 compatible passive ISDN card (rev 02)lspci -v01:00.0 PCI bridge: Texas Instruments XIO2000(A)/XIO2200(A) PCI Express-to-PCI Bridge (rev 03) (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0 Bus: primary=01, secondary=02, subordinate=02, sec-latency=0 Memory behind bridge: 90200000-902fffff Capabilities: [50] Power Management version 2 Capabilities: [60] Message Signalled Interrupts: Mask- 64bit+ Queue=0/4 Enable- Capabilities: [80] Subsystem: Gammagraphx, Inc. Unknown device 0000 Capabilities: [90] Express PCI/PCI-X Bridge IRQ 002:00.0 Network controller: Siemens Nixdorf AG Eicon Diva 2.02 compatible passive ISDN card (rev 02) Flags: bus master, medium devsel, latency 0, IRQ 11 Memory at 90201000 (32-bit, non-prefetchable) [size=4K] Memory at 90200000 (32-bit, non-prefetchable) [size=4K] Capabilities: [40] Power Management version 2Unfortunately, the CAN interrupt is shared with some others(in our PC used for the test)cat /proc/interrupts CPU0 11: 17856 XT-PIC uhci_hcd:usb4, uhci_hcd:usb5, ohci1394, ehci_hcd:usb8, Can, Can/var/log/messagesJan 8 08:01:36 ursula kernel: PCI-PeliCAN-memory mapped CAN Driver 3.4.6_CPC_PCI (c) Jan 8 2008Jan 8 08:01:36 ursula kernel: H.J. Oertel (oe@port.de)Jan 8 08:01:36 ursula kernel: found CPC-PCI:Jan 8 08:01:36 ursula kernel: : 0000:02:00.0Jan 8 08:01:36 ursula kernel: CAN: 1. at pos 1Jan 8 08:01:36 ursula kernel: CAN: 2. at pos 2We had problems on another PC. After installing the CPC-PCIe, theX server didn't find the additional graphic board. But this seemsto be a problem of the X-server configuration.Reference syslog created from can_sendloading with insmod Jun 9 10:38:43 uschi kernel: PCI-PeliCAN-memory mapped CAN Driver 3.5.2_CPC_PCI (c) Jun 9 2008 10:37:54Jun 9 10:38:43 uschi kernel: H.J. Oertel (oe@port.de)Jun 9 10:38:43 uschi kernel: MAX_CHANNELS 4Jun 9 10:38:43 uschi kernel: CAN_MAX_OPEN 4Jun 9 10:38:43 uschi kernel: found CPC-PCI:Jun 9 10:38:43 uschi kernel: : 0000:00:0c.0Jun 9 10:38:43 uschi kernel: CAN: 1. at pos 1Jun 9 10:38:43 uschi kernel: CAN: 2. at pos 2The driver checks at this stage some registers. If the values are as expected, it says "CAN: 1. at pos x".Typically that means the base address is correct.$ sudo ./debug 7/proc/sys/Can/AccCode:-1 -1 -1 -1/proc/sys/Can/AccMask:-1 -1 -1 -1/proc/sys/Can/Base:-114539520 -114522624 0 0/proc/sys/Can/Baud:125 125 125 125/proc/sys/Can/Chipset:SJA1000/proc/sys/Can/IOModel:mmmm/proc/sys/Can/IRQ:209 209 0 0/proc/sys/Can/Outc:218 218 218 218/proc/sys/Can/Overrun:0 0 0 0/proc/sys/Can/RxErr:0 0 0 0/proc/sys/Can/Timeout:100 100 100 100/proc/sys/Can/TxErr:0 0 0 0/proc/sys/Can/dbgMask:7/proc/sys/Can/version:3.5.2_CPC_PCIcan_sendJun 9 10:40:38 uschi kernel: Can: - :in can_openJun 9 10:40:38 uschi kernel: Can: - :in CAN_VendorInitJun 9 10:40:38 uschi kernel: Can: - :in Can_RequestIrqJun 9 10:40:38 uschi kernel: Can: - :Requested IRQ: 209 @ 0xf929445eJun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :in Can_TxFifoInitJun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :in Can_RxFifoInitJun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :in CAN_ChipResetJun 9 10:40:38 uschi kernel: Can: - : INT 0x0Jun 9 10:40:38 uschi kernel:Jun 9 10:40:38 uschi kernel: Can: - :status=0x3c mode=0x1Jun 9 10:40:38 uschi kernel: Can: - :[1] CAN_mode 0x1Jun 9 10:40:38 uschi kernel:Jun 9 10:40:38 uschi kernel: Can: - :[1] CAN_mode 0x9Jun 9 10:40:38 uschi kernel:Jun 9 10:40:38 uschi kernel: Can: - :[1] CAN_mode 0x9Jun 9 10:40:38 uschi kernel:Jun 9 10:40:38 uschi kernel: Can: - :in CAN_SetTimingJun 9 10:40:38 uschi kernel: Can: - :baud[1]=125Jun 9 10:40:38 uschi kernel: Can: - :tim0=0x3 tim1=0x1cJun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :[1] CAN_mode 0x9Jun 9 10:40:38 uschi kernel:Jun 9 10:40:38 uschi kernel: Can: - :in CAN_SetMaskJun 9 10:40:38 uschi kernel: Can: - :[1] acc=0xffffffff mask=0xffffffffJun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :[1] CAN_mode 0x9Jun 9 10:40:38 uschi kernel:Jun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :in CAN_StartChipJun 9 10:40:38 uschi kernel: Can: - :[1] CAN_mode 0x9Jun 9 10:40:38 uschi kernel:Jun 9 10:40:38 uschi kernel: Can: - :start mode=0x8Jun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: MODE 0x8, STAT 0x3c, IRQE 0xf, INT 0x0Jun 9 10:40:38 uschi kernel:Jun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :in can_writeJun 9 10:40:38 uschi kernel: Can: - : -- write 1 msgJun 9 10:40:38 uschi kernel: Can: - :in CAN_SendMessageJun 9 10:40:38 uschi kernel: Can: - :CAN[1]: tx.flags=0 tx.id=0x64 tx.length=8 stat=0xcJun 9 10:40:38 uschi kernel: Can: - :---> send std messageJun 9 10:40:38 uschi kernel:Jun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :in can_readJun 9 10:40:38 uschi kernel: Can: - : => got IRQ[1]: 0x2Jun 9 10:40:38 uschi kernel:Jun 9 10:40:38 uschi kernel: Can: - : => leave IRQ[1]Jun 9 10:40:38 uschi kernel:Jun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :in can_closeJun 9 10:40:38 uschi kernel: Can: - :in CAN_StopChipJun 9 10:40:38 uschi kernel: Can: - :outJun 9 10:40:38 uschi kernel: Can: - :in Can_FreeIrqJun 9 10:40:38 uschi kernel: Can: - :out
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -