AnsweredAssumed Answered

Unable to modprobe blackfin.ko (undefined symbol reference)

Question asked by Soderstrom on Dec 18, 2013
Latest reply on Dec 19, 2013 by Soderstrom

Hi,

 

I've been trying to enable the usb otg device on my blackfin 527 board.

I found the posts http://ez.analog.com/message/120994#120994 and http://ez.analog.com/message/121057#12105.

Thanks to those posts I soon realized that I hadn't loaded the musb driver.

 

But when I attempt to do so, I get the following error.

root:/> modprobe lib/modules/3.10.10-ADI-2013R1/kernel/drivers/usb/musb/blackfin.ko
blackfin: Unknown symbol _musb_interrupt (err 0)
modprobe: can't load module lib/modules/3.10.10-ADI-2013R1/kernel/drivers/usb/musb/blackfin.ko (kernel/drivers/usb/musb/blackfin.ko): unknown symbol in module, or unknown parameter

 

When I look at the objdump --syms of the blackfin.ko object I notice the following.

build/linux-custom/drivers/usb/musb/blackfin.ko:     file format elf32-little

 

SYMBOL TABLE:
00000000 l    d  .text    00000000 .text
00000000 l    d  .exit.text    00000000 .exit.text
00000000 l    d  .init.text    00000000 .init.text
00000000 l    d  .rodata.str1.4    00000000 .rodata.str1.4
00000000 l    d  .modinfo    00000000 .modinfo
00000000 l    d  .rodata    00000000 .rodata
00000000 l    d  .data    00000000 .data
00000000 l    d  .gnu.linkonce.this_module    00000000 .gnu.linkonce.this_module
00000000 l    d  .bss    00000000 .bss
00000000 l    d  .debug_abbrev    00000000 .debug_abbrev
00000000 l    d  .debug_info    00000000 .debug_info
00000000 l    d  .debug_line    00000000 .debug_line
00000000 l    d  .debug_frame    00000000 .debug_frame
00000000 l    d  .debug_loc    00000000 .debug_loc
00000000 l    d  .debug_pubnames    00000000 .debug_pubnames
00000000 l    d  .debug_aranges    00000000 .debug_aranges
00000000 l    d  .debug_ranges    00000000 .debug_ranges
00000000 l    d  .debug_str    00000000 .debug_str
00000000 l    d  .comment    00000000 .comment
00000000 l    d  .note.GNU-stack    00000000 .note.GNU-stack
00000000 l    df *ABS*    00000000 /home/rikard/github/adi-root/sources/buildroot/linux/linux-kernel/drivers/usb/musb/blackfin.c
00000000 l     F .text    0000000a _bfin_musb_enable
0000000c l     F .text    0000000a _bfin_musb_disable
00000018 l     F .text    0000000a _bfin_musb_set_power
00000024 l     F .text    0000000a _bfin_musb_vbus_status
00000030 l     F .text    0000000a _bfin_musb_set_mode
0000003c l     F .text    0000004e _bfin_musb_adjust_channel_params
0000008c l     F .text    0000000a _bfin_suspend
00000000 l     F .exit.text    00000012 _bfin_driver_exit
00000000 l     O .data    00000054 _bfin_driver
00000098 l     F .text    000000b4 _bfin_musb_reg_init
0000014c l     F .text    0000002c _bfin_resume
00000178 l     F .text    00000036 _bfin_remove
000001b0 l     F .text    00000020 _bfin_musb_set_vbus
000001d0 l     F .text    0000001e _bfin_musb_exit
000001f0 l     F .text    00000078 _bfin_musb_init
00000268 l     F .text    000000e8 _blackfin_interrupt
00000004 l     O .bss    0000001c _musb_conn_timer
00000350 l     F .text    0000018a _musb_conn_timer_handler
00000000 l     O .bss    00000001 _toggle.27541
000004dc l     F .text    00000162 _bfin_probe
00000054 l     O .data    00000008 _bfin_dmamask
00000000 l     O .rodata    00000024 _bfin_ops
00000000 l     F .init.text    00000012 _bfin_driver_init
00000000 l     O .modinfo    0000000f ___UNIQUE_ID_license2
0000000f l     O .modinfo    00000026 ___UNIQUE_ID_author1
00000035 l     O .modinfo    00000025 ___UNIQUE_ID_description0
0000005c l     O .data    0000005c _bfin_pm_ops
00000000 l    df *ABS*    00000000 drivers/usb/musb/blackfin.mod.c
0000005c l     O .modinfo    00000009 ___module_depends
00000065 l     O .modinfo    00000009 ___UNIQUE_ID_intree1
0000006e l     O .modinfo    00000028 ___UNIQUE_ID_vermagic0
00000000         *UND*    00000000 _get_sclk
00000000         *UND*    00000000 _insw
00000000         *UND*    00000000 ___gpio_set_value
00000000         *UND*    00000000 _platform_device_unregister
00000640 g     F .text    00000124 _musb_read_fifo
00000000         *UND*    00000000 _platform_device_add
00000000         *UND*    00000000 _musb_interrupt
00000000         *UND*    00000000 ___umodsi3
00000000         *UND*    00000000 _outsw
00000764 g     F .text    00000034 _musb_write_fifo
00000000 g     F .init.text    00000012 _init_module
00000000         *UND*    00000000 _mod_timer
00000000         *UND*    00000000 _printk
00000000         *UND*    00000000 _platform_device_add_data
00000000         *UND*    00000000 ___divsi3
00000000         *UND*    00000000 _gpio_request
00000000         *UND*    00000000 _kfree
00000000         *UND*    00000000 _dev_err
00000000         *UND*    00000000 _kmem_cache_alloc
00000000         *UND*    00000000 _platform_device_alloc
00000000         *UND*    00000000 _gpio_free
00000000         *UND*    00000000 _platform_driver_unregister
00000000         *UND*    00000000 _blackfin_dcache_invalidate_range
00000000         *UND*    00000000 _platform_driver_register
00000000         *UND*    00000000 _kmalloc_caches
00000000         *UND*    00000000 _platform_device_put
00000000 g     O .gnu.linkonce.this_module    00000154 ___this_module
00000000         *UND*    00000000 _insw_8
00000000         *UND*    00000000 _dev_set_drvdata
00000000 g     F .exit.text    00000012 _cleanup_module
00000000         *UND*    00000000 _platform_device_add_resources
00000000         *UND*    00000000 _jiffies
00000000         *UND*    00000000 _gpio_direction_output
00000000         *UND*    00000000 _bfin_irq_flags
00000000         *UND*    00000000 _dev_get_drvdata
00000000         *UND*    00000000 _outsw_8

 

This means that the musb_interrupt function is not defined in blackfin.ko, has something gone wrong when linking this object? Is there something I need to change in the default BF527-EZKIT_defconfig ? Or what could be the cause of this?

 

I have also seen the guide for musb driver:

http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:drivers:musb&s[]=usb&s[]=otg

Here it states that I should enable

Device Drivers -->  HID Devices --> USB Human Interface Device (full HID) support

But this particular option is not available. I cannot find it.

 

My current goal is to connect a keyboard so that I can play doom on the board. I already have doom, but no input devices, so can't do much

Just watching the demo, over and over again.

 

Yours sincerely

Rikard Söderström

Outcomes