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 (#51921): https://lists.yoctoproject.org/g/yocto/message/51921 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] -=-=-=-=-=-=-=-=-=-=-=-