> 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] -=-=-=-=-=-=-=-=-=-=-=-