This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAP-L138 Character LCD

Other Parts Discussed in Thread: OMAPL138, AM1808, OMAP-L138, DA8XX

I have a OMAPL138 EVM with 3.5inch LCD connected to it.

1. By using /dev/fb0 i am able to display some bmp images.

2. And able to draw some squares and line on LCD

But, my use case is to display some characters. Like below menu's

On LCD, 1. MYNAME

                 2. DOB

...etc like some srings i need to display. But i configured my kernel for da850_oampl138_defconfig. I understood from this my kernel is using Frame Buffer  to display images. But i want to display some character strings on LCD. And also looked some code in /drivers/staging/panel but it was not added to my da850 configuration.

So, could some one help me to find the way to display char's on my LCD.

  • Hi,

    Are you referring to Character LCD or the Graphic LCD ? Refer the below link [1] to enable either of these.

    [1]

    Cheers,

    --Prabhakar Lad

  • Yes, I have modified config file for supporting Character LCD, After that i am not getting how to write some cha's. I haven't seen any device node (/dev/lcd) in filwsystem? Could you help me on this
  • Hi,
    Are you using LogicPD's UI Character LCD board or any other custom LCD ?
    Have you enabled Character LCD via make menuconfig as Lad given?

    Enable parallel port support.
    Disable framebuffer support.

    make menuconfig ->
    Device drivers ->
    <*> Parallel port support --->

    [*] Staging drivers --->
    <*> Parallel port LCD?Keypad panel support --->
    Provide some LCD initialization message.
  • Yes, i have done as per the procedure mentioned above, but after enabling the panal and lcd, i am getting kerenl crash. i am getting following error. full kerenl dump will be attached once i reached.

    "Unable to handle kernel NULL pointer dereference"

    After that, i disabled parralel port and lcd, and build the kernel and flashed, it is working. I am confusing my drivers are creating problem or i am not getting correct sollution.

    I am using Calixto AM1808 EVM, which contails OMAPl138 SOM. and i have taken DAVINCI omapl138 linux kernel from ti, and done aobve setting to enable character lcd. but same issu i am facing.

    Is there any thing wrong in my kernel drivers? then,please provide me correct lcd drivers or some colution?

    Thanks,
    Gopi
  • Hi,

    Yes, i have done as per the procedure mentioned above, but after enabling the panal and lcd, i am getting kerenl crash. i am getting following error. full kerenl dump will be attached once i reached.

    "Unable to handle kernel NULL pointer dereference"

    Attach the kernel panic log.

    Also try,
    echo "Test" > /dev/fb0
  • I think, after disabling framebuffer for enabling CLCD, can we get /dev/fb0 node? to write some ascii text ?
  • here is the krenel dump:

    U-Boot 2009.11 (Jul 30 2015 - 23:15:39)

    I2C: ready
    DRAM: 64 MB
    NAND: 128 MiB
    MMC: davinci: 0
    Bad block table found at page 65472, version 0x01
    Bad block table found at page 65408, version 0x01
    nand_read_bbt: Bad block at 0x000000260000
    In: serial
    Out: serial
    Err: serial
    ARM Clock : 300000000 Hz
    DDR Clock : 150000000 Hz
    Net: Ethernet PHY: GENERIC @ 0x00

    Hit any key to stop autoboot: 0

    NAND read: device 0 offset 0x200000, size 0x300000
    Skipping bad block 0x00260000
    3145728 bytes read: OK

    NAND read: device 0 offset 0x500000, size 0x800000
    8388608 bytes read: OK
    ## Booting kernel from Legacy Image at c0700000 ...
    Image Name: Linux-2.6.33-rc4
    Image Type: ARM Linux Kernel Image (uncompressed)
    Data Size: 2118208 Bytes = 2 MB
    Load Address: c0008000
    Entry Point: c0008000
    Verifying Checksum ... OK
    Loading Kernel Image ... OK
    OK

    Starting kernel ...

    Uncompressing Linux... done, booting the kernel.
    [ 0.000000] Linux version 2.6.33-rc4 (root@gopi-laptop) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #2 PREEMPT Mon Aug 3 23:23:15 I5
    [ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
    [ 0.000000] CPU: VIVT data cache, VIVT instruction cache
    [ 0.000000] Machine: DaVinci DA850/OMAP-L138/AM18xx EVM
    [ 0.000000] Memory policy: ECC disabled, Data cache writeback
    [ 0.000000] DaVinci da850/omap-l138/am18xx variant 0x1
    [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
    [ 0.000000] Kernel command line: mem=128M console=ttyS2,115200n8 root=/dev/ram0 rw initrd=0xc1180000,32M
    [ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
    [ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
    [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
    [ 0.000000] Memory: 128MB = 128MB total
    [ 0.000000] Memory: 92572KB available (3976K code, 309K data, 128K init, 0K highmem)
    [ 0.000000] SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [ 0.000000] Hierarchical RCU implementation.
    [ 0.000000] NR_IRQS:245
    [ 0.000000] Console: colour dummy device 80x30
    [ 0.000000] Calibrating delay loop... 149.50 BogoMIPS (lpj=747520)
    [ 0.210000] Mount-cache hash table entries: 512
    [ 0.210000] CPU: Testing write buffer coherency: ok
    [ 0.210000] DaVinci: 144 gpio irqs
    [ 0.220000] regulator: core version 0.5
    [ 0.220000] NET: Registered protocol family 16
    [ 0.240000] da850_evm_init: mmcsd2 registration failed: -1
    [ 0.270000] da850_evm_init: LCD registration Done: 0
    [ 0.270000] CONFIG_WIFI_CONTROL_FUNC is defined !!!!!!!!!!!*
    [ 0.400000] bio: create slab <bio-0> at 0
    [ 0.410000] SCSI subsystem initialized
    [ 0.410000] usbcore: registered new interface driver usbfs
    [ 0.410000] usbcore: registered new interface driver hub
    [ 0.410000] usbcore: registered new device driver usb
    [ 0.420000] i2c i2c-1: sendbytes: NAK bailout.
    [ 0.420000] tps6507x 1-0048: Write for reg 0xd failed
    [ 0.420000] set_machine_constraints: failed to enable VDCDC1
    [ 0.420000] tps6507x 1-0048: failed to register tps6507x-pmic regulator
    [ 0.420000] tps6507x-pmic: probe of tps6507x-pmic failed with error -5
    [ 0.430000] pca953x 1-0020: failed reading register
    [ 0.430000] i2c-gpio i2c-gpio.1: using pins 20 (SDA) and 21 (SCL)
    [ 0.440000] Bluetooth: Core ver 2.15
    [ 0.440000] NET: Registered protocol family 31
    [ 0.440000] Bluetooth: HCI device and connection manager initialized
    [ 0.440000] Bluetooth: HCI socket layer initialized
    [ 0.440000] Switching to clocksource timer0_1
    [ 0.450000] musb_hdrc: version 6.0, cppi4.1-dma, host, debug=0
    [ 0.450000] Waiting for USB PHY clock good...
    [ 0.470000] musb_hdrc: USB Host mode controller at fee00000 using DMA, IRQ 58
    [ 0.470000] musb_hdrc musb_hdrc: MUSB HDRC host driver
    [ 0.470000] musb_hdrc musb_hdrc: new USB bus registered, assigned bus number 1
    [ 0.470000] hub 1-0:1.0: USB hub found
    [ 0.470000] hub 1-0:1.0: 1 port detected
    [ 0.470000] NET: Registered protocol family 2
    [ 0.470000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
    [ 0.470000] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
    [ 0.470000] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
    [ 0.470000] TCP: Hash tables configured (established 4096 bind 4096)
    [ 0.470000] TCP reno registered
    [ 0.470000] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [ 0.470000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [ 0.470000] NET: Registered protocol family 1
    [ 0.470000] RPC: Registered udp transport module.
    [ 0.470000] RPC: Registered tcp transport module.
    [ 0.470000] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [ 0.480000] Trying to unpack rootfs image as initramfs...
    [ 0.480000] rootfs image is not initramfs (junk in compressed archive); looks like an initrd
    [ 1.050000] Freeing initrd memory: 32768K
    [ 1.050000] EMAC: MII PHY configured, RMII PHY will not be functional
    [ 1.140000] JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
    [ 1.150000] msgmni has been set to 245
    [ 1.150000] io scheduler noop registered (default)
    [ 1.260000] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
    [ 1.270000] serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a AR7
    [ 1.270000] serial8250.0: ttyS1 at MMIO 0x1d0c000 (irq = 53) is a AR7
    [ 1.270000] serial8250.0: ttyS2 at MMIO 0x1d0d000 (irq = 61) is a AR7
    [ 1.680000] console [ttyS2] enabled
    [ 1.680000] brd: module loaded
    [ 1.690000] spi_davinci spi_davinci.1: DaVinci SPI driver in EDMA mode
    [ 1.690000] Using RX channel = 18 , TX channel = 19 and event queue = 1
    [ 1.710000] m25p80 spi1.0: non-JEDEC variant of m25p64
    [ 1.720000] m25p80 spi1.0: m25p64 (8192 Kbytes)
    [ 1.720000] Creating 4 MTD partitions on "m25p80":
    [ 1.730000] 0x000000000000-0x000000040000 : "U-Boot"
    [ 1.740000] 0x000000040000-0x000000050000 : "U-Boot Environment"
    [ 1.750000] 0x000000050000-0x0000007f0000 : "Linux"
    [ 1.760000] 0x0000007f0000-0x000000800000 : "MAC Address"
    [ 41.760000] spi_davinci spi_davinci.1: Controller at 0xfef0e000
    [ 41.770000] console [netcon0] enabled
    [ 41.780000] netconsole: network logging started
    [ 41.780000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
    [ 41.790000] ohci ohci.0: DA8xx OHCI
    [ 41.790000] ohci ohci.0: new USB bus registered, assigned bus number 2
    [ 41.800000] ohci ohci.0: irq 59, io mem 0x01e25000
    [ 41.860000] hub 2-0:1.0: USB hub found
    [ 41.870000] hub 2-0:1.0: 1 port detected
    [ 41.870000] Initializing USB Mass Storage driver...
    [ 41.880000] usbcore: registered new interface driver usb-storage
    [ 41.890000] USB Mass Storage support registered.
    [ 41.890000] i2c i2c-1: sendbytes: NAK bailout.
    [ 41.900000] tps6507x-ts: probe of tps6507x-ts failed with error -5
    [ 41.910000] omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0
    [ 41.910000] omap_rtc: RTC power up reset detected
    [ 41.920000] omap_rtc: already running
    [ 41.920000] i2c /dev entries driver
    [ 41.930000] Linux video capture interface: v2.00
    [ 41.940000] usbcore: registered new interface driver uvcvideo
    [ 41.940000] USB Video Class driver (v0.1.0)
    [ 41.950000] watchdog watchdog: heartbeat 60 sec
    [ 41.950000] Bluetooth: HCI UART driver ver 2.2
    [ 41.960000] Bluetooth: HCI H4 protocol initialized
    [ 41.960000] Bluetooth: HCI BCSP protocol initialized
    [ 41.970000] Bluetooth: HCILL protocol initialized
    [ 41.980000] cpuidle: using governor ladder
    [ 41.980000] cpuidle: using governor menu
    [ 41.990000] davinci_mmc davinci_mmc.0: Using DMA, 4-bit mode
    [ 42.000000] davinci_mmc davinci_mmc.1: Using DMA, 4-bit mode
    [ 42.010000] usbcore: registered new interface driver usbhid
    [ 42.010000] usbhid: USB HID core driver
    [ 42.020000] Panel driver version 0.9.5 not yet registered
    [ 42.020000] da8xx_lcdc da8xx_lcdc.0: attached parallel port driver
    [ 42.140000] User Mode GPIO Driver: 1.00
    [ 42.140000] Advanced Linux Sound Architecture Driver Version 1.0.21.
    [ 42.150000] Unable to handle kernel NULL pointer dereference at virtual address 00000000
    [ 42.160000] pgd = c0004000
    [ 42.160000] [00000000] *pgd=00000000
    [ 42.170000] Internal error: Oops: 80000005 [#1] PREEMPT
    [ 42.170000] last sysfs file:
    [ 42.170000] Modules linked in:
    [ 42.170000] CPU: 0 Not tainted (2.6.33-rc4 #2)
    [ 42.170000] PC is at 0x0
    [ 42.170000] LR is at panel_scan_timer+0xb8/0x640
    [ 42.170000] pc : [<00000000>] lr : [<c023c9f0>] psr: 80000013
    [ 42.170000] sp : c7823dc8 ip : c7823dc8 fp : c7823dfc
    [ 42.170000] r10: c043fa2c r9 : c0450c60 r8 : c043fc2c
    [ 42.170000] r7 : 0000003f r6 : c7822000 r5 : 00000104 r4 : 00000000
    [ 42.170000] r3 : c0430830 r2 : 00000000 r1 : 00000000 r0 : c5569400
    [ 42.170000] Flags: Nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
    [ 42.170000] Control: 0005317f Table: c0004000 DAC: 00000017
    [ 42.170000] Process swapper (pid: 1, stack limit = 0xc7822270)
    [ 42.170000] Stack: (0xc7823dc8 to 0xc7824000)
    [ 42.170000] 3dc0: 00000000 0000002a 094536a7 c043ee20 00000104 c7822000
    [ 42.170000] 3de0: c023c938 c043fc2c c043f82c c043fa2c c7823e3c c7823e00 c0049678 c023c948
    [ 42.170000] 3e00: 094536a7 c043f62c c7823e08 c7823e08 c043cc24 00000104 00000004 00000101
    [ 42.170000] 3e20: c7822000 00000001 0000000a c043ec80 c7823e7c c7823e40 c0044320 c0049500
    [ 42.170000] 3e40: c7823e6c c7823e50 c7822000 00000000 00000015 00000015 00000000 00200000
    [ 42.170000] 3e60: 00000003 00000002 c7822000 00000039 c7823e8c c7823e80 c0044404 c0044298
    [ 42.170000] 3e80: c7823ea4 c7823e90 c0028078 c00443c4 ffffffff febfd000 c7823f64 c7823ea8
    [ 42.170000] 3ea0: c0028b2c c0028010 00000001 00000003 80000013 c0413108 00000001 00000009
    [ 42.170000] 3ec0: 0000002a c7823f15 c043a85b 0000004e 00000039 c7823f64 c7823ec8 c7823ef0
    [ 42.170000] 3ee0: c003f25c c003f8d4 60000013 ffffffff c00e66d4 00000000 00000006 80000013
    [ 42.170000] 3f00: c55766c0 205b0146 32342020 3034312e 5d303030 00000020 c7823f44 c7823f28
    [ 42.170000] 3f20: c00e6854 c00e6534 c0240d20 c5587f60 00000000 c55766c0 c7823f5c 00000000
    [ 42.170000] 3f40: c04309a8 c001d950 00000001 00000000 00000000 00000000 c7823f7c c7823f68
    [ 42.170000] 3f60: c031525c c003f548 c7823f8c c7823f84 c7823fac c7823f90 c001d9e0 c0315248
    [ 42.170000] 3f80: c03dd703 00000000 00000001 c04513a0 c0332830 c01a8cd8 c0023ea0 00000000
    [ 42.170000] 3fa0: c7823fdc c7823fb0 c0028394 c001d960 00000000 00000000 c7823fdc c7823fc8
    [ 42.170000] 3fc0: c0023ea0 00000000 00000000 00000000 c7823ff4 c7823fe0 c0008480 c0028340
    [ 42.170000] 3fe0: 00000000 00000000 00000000 c7823ff8 c0042074 c00083e8 00000000 00000000
    [ 42.170000] Backtrace:
    [ 42.170000] [<c023c938>] (panel_scan_timer+0x0/0x640) from [<c0049678>] (run_timer_softirq+0x188/0x24c)
    [ 42.170000] [<c00494f0>] (run_timer_softirq+0x0/0x24c) from [<c0044320>] (__do_softirq+0x98/0x12c)
    [ 42.170000] [<c0044288>] (__do_softirq+0x0/0x12c) from [<c0044404>] (irq_exit+0x50/0xa8)
    [ 42.170000] [<c00443b4>] (irq_exit+0x0/0xa8) from [<c0028078>] (asm_do_IRQ+0x78/0x94)
    [ 42.170000] [<c0028000>] (asm_do_IRQ+0x0/0x94) from [<c0028b2c>] (__irq_svc+0x4c/0x9c)
    [ 42.170000] Exception stack(0xc7823ea8 to 0xc7823ef0)
    [ 42.170000] 3ea0: 00000001 00000003 80000013 c0413108 00000001 00000009
    [ 42.170000] 3ec0: 0000002a c7823f15 c043a85b 0000004e 00000039 c7823f64 c7823ec8 c7823ef0
    [ 42.170000] 3ee0: c003f25c c003f8d4 60000013 ffffffff
    [ 42.170000] r5:febfd000 r4:ffffffff
    [ 42.170000] [<c003f538>] (vprintk+0x0/0x414) from [<c031525c>] (printk+0x28/0x30)
    [ 42.170000] [<c0315234>] (printk+0x0/0x30) from [<c001d9e0>] (alsa_sound_init+0x90/0xb4)
    [ 42.170000] r3:c04513a0 r2:00000001 r1:00000000 r0:c03dd703
    [ 42.170000] [<c001d950>] (alsa_sound_init+0x0/0xb4) from [<c0028394>] (do_one_initcall+0x64/0x1c4)
    [ 42.170000] r5:00000000 r4:c0023ea0
    [ 42.170000] [<c0028330>] (do_one_initcall+0x0/0x1c4) from [<c0008480>] (kernel_init+0xa8/0x12c)
    [ 42.170000] r7:00000000 r6:00000000 r5:00000000 r4:c0023ea0
    [ 42.170000] [<c00083d8>] (kernel_init+0x0/0x12c) from [<c0042074>] (do_exit+0x0/0x678)
    [ 42.170000] r5:00000000 r4:00000000
    [ 42.170000] Code: bad PC value
    [ 42.530000] ---[ end trace 4d5b78606d333f67 ]---
    [ 42.530000] Kernel panic - not syncing: Fatal exception in interrupt
    [ 42.540000] Backtrace:
    [ 42.540000] [<c002c6f4>] (dump_backtrace+0x0/0x114) from [<c03150fc>] (dump_stack+0x18/0x1c)
    [ 42.550000] r7:fffffff0 r6:fffffff8 r5:fffffffc r4:c043a360
    [ 42.560000] [<c03150e4>] (dump_stack+0x0/0x1c) from [<c0315154>] (panic+0x54/0x134)
    [ 42.560000] [<c0315100>] (panic+0x0/0x134) from [<c002ca90>] (die+0x288/0x2c4)
    [ 42.570000] r3:00000100 r2:c7823c08 r1:00000000 r0:c03a9f8b
    [ 42.580000] [<c002c808>] (die+0x0/0x2c4) from [<c002e308>] (__do_kernel_fault+0x6c/0x7c)
    [ 42.590000] [<c002e29c>] (__do_kernel_fault+0x0/0x7c) from [<c002e4e8>] (do_page_fault+0x1d0/0x1e8)
    [ 42.590000] r7:00000000 r6:00000000 r5:c7820000 r4:c040e86c
    [ 42.600000] [<c002e318>] (do_page_fault+0x0/0x1e8) from [<c002e5a0>] (do_translation_fault+0x18/0x7c)
    [ 42.610000] [<c002e588>] (do_translation_fault+0x0/0x7c) from [<c0028230>] (do_PrefetchAbort+0x3c/0x9c)
    [ 42.620000] r7:c7823d80 r6:00000005 r5:c7823db4 r4:c040e86c
    [ 42.620000] [<c00281f4>] (do_PrefetchAbort+0x0/0x9c) from [<c0028c50>] (__pabt_svc+0x50/0x80)
    [ 42.630000] Exception stack(0xc7823d80 to 0xc7823dc8)
    [ 42.640000] 3d80: c5569400 00000000 00000000 c0430830 00000000 00000104 c7822000 0000003f
    [ 42.650000] 3da0: c043fc2c c0450c60 c043fa2c c7823dfc c7823dc8 c7823dc8 c023c9f0 00000000
    [ 42.660000] 3dc0: 80000013 ffffffff
    [ 42.660000] r8:c043fc2c r7:0000003f r6:c7822000 r5:c7823db4 r4:ffffffff
    [ 42.670000] [<c023c938>] (panel_scan_timer+0x0/0x640) from [<c0049678>] (run_timer_softirq+0x188/0x24c)
    [ 42.670000] [<c00494f0>] (run_timer_softirq+0x0/0x24c) from [<c0044320>] (__do_softirq+0x98/0x12c)
    [ 42.680000] [<c0044288>] (__do_softirq+0x0/0x12c) from [<c0044404>] (irq_exit+0x50/0xa8)
    [ 42.690000] [<c00443b4>] (irq_exit+0x0/0xa8) from [<c0028078>] (asm_do_IRQ+0x78/0x94)
    [ 42.700000] [<c0028000>] (asm_do_IRQ+0x0/0x94) from [<c0028b2c>] (__irq_svc+0x4c/0x9c)
    [ 42.710000] Exception stack(0xc7823ea8 to 0xc7823ef0)
    [ 42.710000] 3ea0: 00000001 00000003 80000013 c0413108 00000001 00000009
    [ 42.720000] 3ec0: 0000002a c7823f15 c043a85b 0000004e 00000039 c7823f64 c7823ec8 c7823ef0
    [ 42.730000] 3ee0: c003f25c c003f8d4 60000013 ffffffff
    [ 42.740000] r5:febfd000 r4:ffffffff
    [ 42.740000] [<c003f538>] (vprintk+0x0/0x414) from [<c031525c>] (printk+0x28/0x30)
    [ 42.750000] [<c0315234>] (printk+0x0/0x30) from [<c001d9e0>] (alsa_sound_init+0x90/0xb4)
    [ 42.750000] r3:c04513a0 r2:00000001 r1:00000000 r0:c03dd703
    [ 42.760000] [<c001d950>] (alsa_sound_init+0x0/0xb4) from [<c0028394>] (do_one_initcall+0x64/0x1c4)
    [ 42.770000] r5:00000000 r4:c0023ea0
    [ 42.770000] [<c0028330>] (do_one_initcall+0x0/0x1c4) from [<c0008480>] (kernel_init+0xa8/0x12c)
    [ 42.780000] r7:00000000 r6:00000000 r5:00000000 r4:c0023ea0
    [ 42.790000] [<c00083d8>] (kernel_init+0x0/0x12c) from [<c0042074>] (do_exit+0x0/0x678)
    [ 42.800000] r5:00000000 r4:00000000

    CTRL-A Z for help |115200 8N1 | NOR | Minicom 2.5 | VT102 | Offline


    Please suggest me next step?