> Since some variables and functions are exported in .c files, and not
> propagated into related .h files. And then this makes some confusion
> while having OOT drivers.

Quite an opposite. It must be defined to be exported, and to appear in
Module.symvers .

If it is NOT defined as exported (EXPORT_SYMBOL, EXPORT_SYMBOL_GPL),
it will behave as from your initial post, if the driver is defined as
a module.

The example for this behaviour is here:
https://github.com/ZoranStojsavljevic/mikrobus/blob/mikrobusv2-debug/mikrobus_core.c#L447

Symbol regulator_register_always_on (it is NOT exported at all,
neither in include/linux/regulator/fixed.h, neither in
drivers/regulator/fixed-helper.c).

So the mikrobus driver, being a module, produces such an error:
unknown symbol in module, or unknown parameter .
_______

Sorry for the confusion. :(

Zoran
_______


On Thu, Jan 7, 2021 at 6:55 PM Zoltan Kerenyi Nagy
<kerenyi.nagy.zol...@gmail.com> wrote:
>
> Yep, the best would be if the driver burned into the root filesystem with 
> bitbake. I dont want to compile that driver on the device. I'll modifile the 
> makefile tomorrow, thanks
>
> On 2021. Jan 7., Thu at 18:20, Zoran Stojsavljevic 
> <zoran.stojsavlje...@gmail.com> wrote:
>>
>> If I think more... For driver development the Out Of (OOT) Tree driver
>> is a must, and so far the most efficient way is to have native tool
>> environment presence on the target, so the quick recompilation of the
>> module is a must/should be achieved... It is a pain doing this on the
>> host using cross compilation, or even building it to the kernel.
>>
>> Once the driver is stable, then it should be built-in with Y in the
>> kernel, changing the YOCTO kernel defconfig (not the topic for this
>> problem, there is a good explanation how to do that in YOCTO manuals).
>>
>> If the driver is out of shelf, it should be recompiled as built-in the 
>> kernel.
>>
>> There are differences between having an OOT driver versus a built-in driver.
>>
>> Since some variables and functions are exported in .c files, and not
>> propagated into related .h files. And then this makes some confusion
>> while having OOT drivers.
>>
>> Zoran
>> _______
>>
>> On Thu, Jan 7, 2021 at 4:27 PM Zoran via lists.yoctoproject.org
>> <zoran.stojsavljevic=gmail....@lists.yoctoproject.org> wrote:
>> >
>> > No, no... I did not mean in the makefile to change m to y.
>> >
>> > Please, maybe you can try to set your makefile to lookalike as these ones:
>> > https://github.com/ZoranStojsavljevic/mikrobus/blob/mikrobusv2/Makefile
>> > https://github.com/ZoranStojsavljevic/mikrobus/blob/mikrobusv2-debug/Makefile
>> >
>> > Zoran
>> > _______
>> >
>> > On Thu, Jan 7, 2021 at 4:17 PM Zoltan Kerenyi Nagy
>> > <kerenyi.nagy.zol...@gmail.com> wrote:
>> > >
>> > > Hi Zoran,
>> > >
>> > > Thanks, I modified the Makefile:
>> > >
>> > > obj-m := huawei_cdc_ncm.o
>> > > Kconfig (obj-y := huawei_cdc_ncm.o)
>> > > SRC := $(shell pwd)
>> > > all:
>> > > $(MAKE) -C $(KERNEL_SRC) M=$(SRC)
>> > > modules_install:
>> > > $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install
>> > > clean:
>> > > rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
>> > > rm -f Module.markers Module.symvers modules.order
>> > > rm -rf .tmp_versions Modules.symvers
>> > >
>> > > but this is the error:
>> > >
>> > > ERROR: huawei-1.1-r0 do_configure: oe_runmake failed
>> > > ERROR: huawei-1.1-r0 do_configure: Function failed: do_configure (log 
>> > > file is located at 
>> > > /home/kerenyiz/oe-core/build/tmp-glibc/work/barix_ipam400-oe-linux-gnueabi/huawei/1.1-r0/temp/log.do_configure.4488)
>> > > ERROR: Logfile of failure stored in: 
>> > > /home/kerenyiz/oe-core/build/tmp-glibc/work/barix_ipam400-oe-linux-gnueabi/huawei/1.1-r0/temp/log.do_configure.4488
>> > > Log data follows:
>> > > | DEBUG: Executing shell function do_configure
>> > > | NOTE: make 
>> > > KERNEL_SRC=/home/kerenyiz/oe-core/build/tmp-glibc/work-shared/barix-ipam400/kernel-source
>> > >  clean
>> > > | ERROR: oe_runmake failed
>> > > | Makefile:2: *** empty variable name.  Stop.
>> > > | ERROR: Function failed: do_configure (log file is located at 
>> > > /home/kerenyiz/oe-core/build/tmp-glibc/work/barix_ipam400-oe-linux-gnueabi/huawei/1.1-r0/temp/log.do_configure.4488)
>> > > ERROR: Task 
>> > > (/home/kerenyiz/oe-core/build/../stuff/meta-barix-sdk/recipes-z/kernel-modules/huawei/huawei_1.1.bb:do_configure)
>> > >  failed with exit code '1'
>> > > NOTE: Tasks Summary: Attempted 3880 tasks of which 3873 didn't need to 
>> > > be rerun and 1 failed.
>> > >
>> > > On Thu, 7 Jan 2021 at 16:03, Zoran Stojsavljevic 
>> > > <zoran.stojsavlje...@gmail.com> wrote:
>> > >>
>> > >> Hello Zoltan,
>> > >>
>> > >> > root@barix-ipam400:~# insmod 
>> > >> > /lib/modules/4.10.0/extra/huawei_cdc_ncm.ko
>> > >> > insmod: can't insert '/lib/modules/4.10.0/extra/huawei_cdc_ncm.ko': 
>> > >> > unknown symbol in module, or unknown parameter
>> > >>
>> > >> Please, try to set Kconfig (obj-y := huawei_cdc_ncm.o) to y, I guess
>> > >> 99.9% that the kernel compilation (actually, driver compilation) will
>> > >> pass.
>> > >>
>> > >> I think YOCTO (recipe) behaves perfectly correctly.
>> > >>
>> > >> Other approach: try to compile the same module with Makefile above on
>> > >> the target.
>> > >>
>> > >> (my two cent thoughts)
>> > >>
>> > >> Zoran
>> > >> _______
>> > >>
>> > >> On Thu, Jan 7, 2021 at 2:46 PM Zoltan Kerenyi Nagy
>> > >> <kerenyi.nagy.zol...@gmail.com> wrote:
>> > >> >
>> > >> > Hi Folks,
>> > >> >
>> > >> > I bitbaked a Huawei E3372h driver into the distro with this recipe 
>> > >> > file:
>> > >> >
>> > >> > SUMMARY = "Huawei Stick kernel module"
>> > >> > LICENSE = "CLOSED"
>> > >> >
>> > >> > inherit module
>> > >> >
>> > >> > SRC_URI = "file://Makefile \
>> > >> >            file://huawei_cdc_ncm.c \
>> > >> >           "
>> > >> >
>> > >> > S = "${WORKDIR}"
>> > >> >
>> > >> > The makefile looks like this:
>> > >> >
>> > >> > obj-m := huawei_cdc_ncm.o
>> > >> >
>> > >> > SRC := $(shell pwd)
>> > >> >
>> > >> > all:
>> > >> > $(MAKE) -C $(KERNEL_SRC) M=$(SRC)
>> > >> >
>> > >> > modules_install:
>> > >> > $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install
>> > >> >
>> > >> > clean:
>> > >> > rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
>> > >> > rm -f Module.markers Module.symvers modules.order
>> > >> > rm -rf .tmp_versions Modules.symvers
>> > >> >
>> > >> > The source file is the one that matches the kernel:
>> > >> >
>> > >> > https://elixir.bootlin.com/linux/v4.0/source/drivers/net/usb/huawei_cdc_ncm.c
>> > >> >
>> > >> > I included this into the conf file:
>> > >> > KERNEL_MODULE_AUTOLOAD += "lte"KERNEL_MODULE_PROBECONF += 
>> > >> > "lte"huawei_cdc_ncm = "options lte iProduct=E3372h 
>> > >> > iManufacturer=Huawei"
>> > >> >
>> > >> > Bitbake runs without error, however when I insert the SD card into 
>> > >> > the hardware ( barix ipam 400)
>> > >> > and boot the hardware this is the error message:
>> > >> >
>> > >> > root@barix-ipam400:~# insmod 
>> > >> > /lib/modules/4.10.0/extra/huawei_cdc_ncm.ko
>> > >> > insmod: can't insert '/lib/modules/4.10.0/extra/huawei_cdc_ncm.ko': 
>> > >> > unknown symbol in module, or unknown parameter
>> > >> >
>> > >> > To me it looks like that there was an error during the bitbake, or 
>> > >> > the header files included in the driver doesn't match the kernel.
>> > >> >
>> > >> > Do you have any idea how to procede?
>> > >> >
>> > >> > Thanks,
>> > >> >
>> > >> >
>> > >> >
>> > >> > --
>> > >> > Zolee
>> > >> >
>> > >> >
>> >
>> > 
>> >
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#51923): https://lists.yoctoproject.org/g/yocto/message/51923
Mute This Topic: https://lists.yoctoproject.org/mt/79498728/21656
Group Owner: yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to