Ticket #60 (assigned defect)

Opened 20 months ago

Last modified 20 months ago

Axis Devboard with Crystalfontz 634 kernel crash

Reported by: Mark Richards <mark.richards@…> Owned by: michael
Priority: normal Component: lcd4linux
Version: 0.1 Severity: normal
Keywords: axis devboard etrax cris crystalfontz 634 lock Cc:

Description

I don't think this is a LCD4Linux issue, but I am writing it up just in case...

Compiled for Linux 2.6.12 under CRIS for an Etrax LX. No problems there. Set configuration for a Crystalfontz 634:

Display CF634 {

Icons 0 Driver 'Crystalfontz' Model '634' Port '/dev/ttyUSB0' Speed 19200 Contrast 16 Backlight 50

}

// for the layout supplied I removed the last two rows (as my display is 4 rows, // although I suppose these just scroll via the driver).

Layout Default {

Row1 {

Col1 'OS'

} Row2 {

Col1 'CPU' Col10 'RAM'

} Row3 {

Col1 'Busy' Col10 'Rain' Col11 'BusyBar?'

} Row4 {

Col1 'Load' Col11 'LoadBar?'

}

}

Display 'CF634' Layout 'Default'

The display clears (I have another piece of code that writes something to it first) and then the kernel locks. All services die. The console (/dev/ttyS0) locks up. Nada.

I was having this same issue when sending control sequences to the display with my test program (written in C). I found it necessary to pause 100 microseconds or so between commands (not displayable ascii). I also found that many commands are ignored. I have a CD632 which has the same issue.

Now the Axis has a USB-based eth1 port (eth0 is a dedicated controller) and under kernel 2.6.x this has been known in the past to be problematic. I suspect this is a factor, but would welcome any suggestions from the experts before I revert to a 2.4 kernel and try again.

Output:

# ./lcd4linux -Fvv Version 0.10.1-RC1-768 starting plugin_cfg.c: Variable minute = '60000' (60000) plugin_cfg.c: Variable tack = '100' (100) plugin_cfg.c: Variable tick = '500' (500) [KVV] Using station 89 [KVV] Using default port 80 [KVV] Using default refresh interval of 60 seconds [KVV] Default abbreviation setting: off lcd4linux.c: initializing driver Crystalfontz Crystalfontz: $Rev: 728 $ Crystalfontz: using model '634' Crystalfontz: using port '/dev/ttyUSB0' at 19200 baud

Here's dmesg if it helps:

# dmesg MU. On node 0 totalpages: 4096

DMA zone: 4096 pages, LIFO batch:1 Normal zone: 0 pages, LIFO batch:1 HighMem? zone: 0 pages, LIFO batch:1

Linux/CRIS port on ETRAX 100LX (c) 2001 Axis Communications AB Built 1 zonelists Kernel command line: root=/dev/mtdblock3 init=/linuxrc PID hash table entries: 256 (order: 8, 4096 bytes) ds1302: RTC found. ds1302: SDA, SCL, RST on PB0, PB1, GENIO0 rtc_time : 23:54:33 rtc_date : 2007-03-16 rtc: sec 0x33 min 0x54 hour 0x23 day 0x16 mon 0x3 year 0x7 Enabling watchdog... Dentry cache hash table entries: 8192 (order: 2, 32768 bytes) Inode-cache hash table entries: 4096 (order: 1, 16384 bytes) Memory: 30056k/32768k available (1411k kernel code, 2664k reserved, 310k data, 6 4k init) Calibrating delay loop... 99.53 BogoMIPS (lpj=497664) Mount-cache hash table entries: 1024 NET: Registered protocol family 16 SCSI subsystem initialized usbcore: registered new driver usbfs usbcore: registered new driver hub Bluetooth: Core ver 2.7 NET: Registered protocol family 31 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized JFFS version 1.0, (C) 1999, 2000 Axis Communications AB JFFS2 version 2.2. (C) 2001-2003 Red Hat, Inc. ETRAX 100LX serial-driver 1.25 $, (c) 2000-2004 Axis Communications AB ttyS0 at 0xb0000060 is a builtin UART with DMA ttyS2 at 0xb0000070 is a builtin UART with DMA fast_timer_init() io scheduler noop registered RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize PPP generic driver version 2.4.2 ETRAX 100LX 10/100MBit ethernet v2.0 (c) 2000-2003 Axis Communications AB eth0: changed MAC to 00:40:8C:CD:00:00 drivers/usb/host/hc_crisv10.c: ETRAX 100LX USB-HCD $Revision: 1.4 $ (c) 2001-200 3 Axis Communications AB

ETRAX 100LX : new USB bus registered, assigned bus number 1 drivers/usb/host/hc_crisv10.c: USB controller in host mode. hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected Initializing USB Mass Storage driver... drivers/usb/host/hc_crisv10.c: USB controller in host mode. drivers/usb/host/hc_crisv10.c: USB controller started. drivers/usb/host/hc_crisv10.c: USB controller in host mode. drivers/usb/host/hc_crisv10.c: USB controller started. drivers/usb/host/hc_crisv10.c: USB controller running. usb 1-1: new full speed USB device using ETRAX 100LX and address 2 usb 1-2: new full speed USB device using ETRAX 100LX and address 3 usbcore: registered new driver usb-storage USB Mass Storage support registered. drivers/usb/net/rtl8150.c: rtl8150 based usb-ethernet driver v0.6.2 (2004/08/27) drivers/usb/net/rtl8150.c: eth%d: rtl8150 is detected usbcore: registered new driver rtl8150 usbcore: registered new driver usbserial drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0 drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI SIO drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI 8U232AM Compatible drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI FT232BM Compatible drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI FT2232C Compatible drivers/usb/serial/usb-serial.c: USB Serial support registered for USB-UIRT Infr ared Tranceiver drivers/usb/serial/usb-serial.c: USB Serial support registered for Home-Electron ics TIRA-1 IR Transceiver ftdi_sio 1-2:1.0: FTDI FT232BM Compatible converter detected usb 1-2: FTDI FT232BM Compatible converter now attached to ttyUSB0 usbcore: registered new driver ftdi_sio drivers/usb/serial/ftdi_sio.c: v1.4.2:USB FTDI Serial Converters Driver Bluetooth: HCI USB driver ver 2.8 usbcore: registered new driver hci_usb cse0: Probing a 0x04000000 bytes large window at 0xe0000000. cse0: Probing for AMD compatible flash... cse0: unknown flash device at 0x0, mfr id 0x1f, dev id 0xc8 cse0: Found no AMD compatible device at location zero cse0: Found 1 x16 devices at 0x0 in 16-bit bank cse0: Found an alias at 0x400000 for the chip at 0x0 cse0: Found an alias at 0x800000 for the chip at 0x0 cse0: Found an alias at 0xc00000 for the chip at 0x0 cse0: Found an alias at 0x1000000 for the chip at 0x0 cse0: Found an alias at 0x1400000 for the chip at 0x0 cse0: Found an alias at 0x1800000 for the chip at 0x0 cse0: Found an alias at 0x1c00000 for the chip at 0x0 cse0: Found an alias at 0x2000000 for the chip at 0x0 cse0: Found an alias at 0x2400000 for the chip at 0x0 cse0: Found an alias at 0x2800000 for the chip at 0x0 cse0: Found an alias at 0x2c00000 for the chip at 0x0 cse0: Found an alias at 0x3000000 for the chip at 0x0 cse0: Found an alias at 0x3400000 for the chip at 0x0 cse0: Found an alias at 0x3800000 for the chip at 0x0 cse0: Found an alias at 0x3c00000 for the chip at 0x0

Amd/Fujitsu Extended Query Table at 0x0041

cse0: CFI does not contain boot bank location. Assuming top. number of CFI chips: 1 cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness. cse1: Probing a 0x04000000 bytes large window at 0xe4000000. cse1: Probing for AMD compatible flash... cse1: unknown flash device at 0x0, mfr id 0xc2, dev id 0x22a7 cse1: Found no AMD compatible device at location zero cse1: Found 1 x16 devices at 0x0 in 16-bit bank cse1: Found an alias at 0x400000 for the chip at 0x0 cse1: Found an alias at 0x800000 for the chip at 0x0 cse1: Found an alias at 0xc00000 for the chip at 0x0 cse1: Found an alias at 0x1000000 for the chip at 0x0 cse1: Found an alias at 0x1400000 for the chip at 0x0 cse1: Found an alias at 0x1800000 for the chip at 0x0 cse1: Found an alias at 0x1c00000 for the chip at 0x0 cse1: Found an alias at 0x2000000 for the chip at 0x0 cse1: Found an alias at 0x2400000 for the chip at 0x0 cse1: Found an alias at 0x2800000 for the chip at 0x0 cse1: Found an alias at 0x2c00000 for the chip at 0x0 cse1: Found an alias at 0x3000000 for the chip at 0x0 cse1: Found an alias at 0x3400000 for the chip at 0x0 cse1: Found an alias at 0x3800000 for the chip at 0x0 cse1: Found an alias at 0x3c00000 for the chip at 0x0

Amd/Fujitsu Extended Query Table at 0x0040

cse1: Swapping erase regions for broken CFI table. number of CFI chips: 1 cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness. Concatenating MTD devices: (0): "cse0" (1): "cse1" into device "cse0+cse1" cse0+cse1: 0x00800000 bytes of flash memory.

Found a valid partition table at 0xf001000a-0xf0010056.

/dev/flash1 at 0x00010000, size 0x00350000 /dev/flash2 at 0x00360000, size 0x004a0000

Adding readonly flash partition for romfs image:

/dev/flash3 at 0x000eb136, size 0x0024c000

Creating 4 MTD partitions on "cse0+cse1": 0x00000000-0x00010000 : "part0" 0x00010000-0x00360000 : "part1" 0x00360000-0x00800000 : "part2" 0x000eb136-0x00337136 : "romfs" gpio init GPIO port G: in_bits: 0xC1FFFF3E out_bits: 0xF200003F val: FDFF00FE GPIO port G: dir: 00000001 changeable: 01FFFF00 ETRAX 100LX GPIO driver v2.5, (c) 2001, 2002, 2003, 2004 Axis Communications AB err: timer0 irq for gpio err: PA irq for gpio ds1302: RTC found. ds1302: SDA, SCL, RST on PB0, PB1, GENIO0 rtc_time : 23:54:34 rtc_date : 2007-03-16 NET: Registered protocol family 2 IP: routing cache hash table of 1024 buckets, 8Kbytes TCP established hash table entries: 4096 (order: 2, 32768 bytes) TCP bind hash table entries: 4096 (order: 1, 16384 bytes) TCP: Hash tables configured (established 4096 bind 4096) ip_tables: (C) 2000-2002 Netfilter core team NET: Registered protocol family 1 NET: Registered protocol family 17 Bluetooth: L2CAP ver 2.7 Bluetooth: L2CAP socket layer initialized Bluetooth: RFCOMM ver 1.5 Bluetooth: RFCOMM socket layer initialized Bluetooth: BNEP (Ethernet Emulation) ver 1.2 VFS: Mounted root (cramfs filesystem) readonly. Freeing unused kernel memory: 64k freed eth0: changed MAC to 00:40:8C:63:AB:BB # dmesg | grep cry # dmesg | grep crystalfontz # dmesg | grep usb usbcore: registered new driver usbfs usbcore: registered new driver hub drivers/usb/host/hc_crisv10.c: ETRAX 100LX USB-HCD $Revision: 1.4 $ (c) 2001-200 3 Axis Communications AB drivers/usb/host/hc_crisv10.c: USB controller in host mode. drivers/usb/host/hc_crisv10.c: USB controller in host mode. drivers/usb/host/hc_crisv10.c: USB controller started. drivers/usb/host/hc_crisv10.c: USB controller in host mode. drivers/usb/host/hc_crisv10.c: USB controller started. drivers/usb/host/hc_crisv10.c: USB controller running. usb 1-1: new full speed USB device using ETRAX 100LX and address 2 usb 1-2: new full speed USB device using ETRAX 100LX and address 3 usbcore: registered new driver usb-storage drivers/usb/net/rtl8150.c: rtl8150 based usb-ethernet driver v0.6.2 (2004/08/27) drivers/usb/net/rtl8150.c: eth%d: rtl8150 is detected usbcore: registered new driver rtl8150 usbcore: registered new driver usbserial drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0 drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI SIO drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI 8U232AM Compatible drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI FT232BM Compatible drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI FT2232C Compatible drivers/usb/serial/usb-serial.c: USB Serial support registered for USB-UIRT Infr ared Tranceiver drivers/usb/serial/usb-serial.c: USB Serial support registered for Home-Electron ics TIRA-1 IR Transceiver usb 1-2: FTDI FT232BM Compatible converter now attached to ttyUSB0 usbcore: registered new driver ftdi_sio drivers/usb/serial/ftdi_sio.c: v1.4.2:USB FTDI Serial Converters Driver usbcore: registered new driver hci_usb #

Attachments

Change History

Changed 20 months ago by Mark Richards <mark.richards@…>

I wish to add the results of some experimenting I've done since posting the issue here.

The LCD I am using has a USB adapter (failed to mention this; sorry). In drv_Crystalfontz.c the LCD is defined thusly:

{634, "634", 4, 20, 0, 0, 1, 0},

With the "1" meaning protocol 1. If I change 1 to either the 2 or 3 protocol, the program no longer crashes. A bit of garbage is written to the display and it attempts to listen for a response from the LCD (fails, because this model doesn't talk back). Plus it appears some of the commands for the 634 are incorrect in protocols 2 and 3.

I'm wondering why things crash in protocol 1 and will continue to experiment. Meanwhile if anyone has any guidance...

Maybe I'll end up either fixing a bug in the 634 support, or fixing my own blunder with your help.

Changed 20 months ago by michael

  • status changed from new to assigned

Changed 20 months ago by michael

This is really strange... all protocols use the generic_serial_write() function, and the packet sizes should be in the same range, too. The major difference between protocol 1 and 2/3 is some CRC padding and ACK processing with protocol 2/3. But this may be the reason for your crash: the ACK processing adds some delay after every write to the display... so maybe you wanna try to add some delay after each call to drv_generic_serial_write()?

Changed 20 months ago by Mark Richards <mark.richards@…>

usleep(100);

after the write seems to do the trick.

I have some output and no crashing.

Perhaps it might be wise to include this delay a global option and to note somewhere in the Crystalfontz driver that the delay might be needed?

Shall I code a patch for it?

Changed 20 months ago by michael

Patches are always welcome :-)

Maybe we should generate s special setting for the generic serial driver, and place a usleep() in drv_generic_serial_write().

But be warned that usleep() always does a reschedule, so the minimum delay would be 1/HZ, no matter what value you're using (try replacing your usleep(100) with usleep(1). Using such a delay might cause a significant performance issue with fast display updates.

After all, I think we're curing symptoms here, the real cause may be your kernel/hardware...

Changed 20 months ago by Mark Richards <mark.richards@…>

I think we're curing symptoms here, the real cause may be your kernel/hardware

Hmmm... better look into that then. I will send along a patch once I have stood beneath and shaken that branch.

Add/Change #60 (Axis Devboard with Crystalfontz 634 kernel crash)

Author



Change Properties
<Author field>
Action
as assigned
as The resolution will be set. Next status will be 'closed'
to The owner will change. Next status will be 'new'
 
Note: See TracTickets for help on using tickets.