From 17e72682044b54e27f2bbb53ced773a711527e56 Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Mon, 15 Jul 2024 11:30:00 +0800 Subject: [PATCH] Yocto:IGKBoard-All: Add hello application and hello module example recipes --- yocto/meta-igkboard/recipes-hello/hello-app/files/hello-app.c | 22 +++++++ yocto/meta-igkboard/images/yocto-image-full.bb | 2 yocto/meta-igkboard/recipes-hello/hello-app/hello-app_1.0.bb | 25 ++++++++ yocto/meta-igkboard/recipes-hello/hello-app/files/Makefile | 10 +++ yocto/meta-igkboard/recipes-kernel/hello-mod/files/hello.c | 34 +++++++++++ yocto/meta-igkboard/recipes-kernel/hello-mod/hello-mod.bb | 26 ++++++++ yocto/meta-igkboard/recipes-kernel/hello-mod/files/Makefile | 14 ++++ 7 files changed, 132 insertions(+), 1 deletions(-) diff --git a/yocto/meta-igkboard/images/yocto-image-full.bb b/yocto/meta-igkboard/images/yocto-image-full.bb index a98c7b4..a437d61 100644 --- a/yocto/meta-igkboard/images/yocto-image-full.bb +++ b/yocto/meta-igkboard/images/yocto-image-full.bb @@ -44,7 +44,7 @@ " CORE_IMAGE_EXTRA_INSTALL_BASE += " \ - kernel-modules \ + kernel-modules hello-app hello-mod \ firmwared linux-firmware \ powertop tzdata ppp vim \ xz lrzsz rsync dos2unix \ diff --git a/yocto/meta-igkboard/recipes-hello/hello-app/files/Makefile b/yocto/meta-igkboard/recipes-hello/hello-app/files/Makefile new file mode 100644 index 0000000..17d6a8f --- /dev/null +++ b/yocto/meta-igkboard/recipes-hello/hello-app/files/Makefile @@ -0,0 +1,10 @@ + +APP_NAME=hello-app + +# Must add LDFLAGS, or Yocto will complain about missing GNU_HASH +${APP_NAME}: + ${CC} -o $@ $@.c ${LDFLAGS} + +.PHONY: clean +clean: + rm -rf ${APP_NAME} diff --git a/yocto/meta-igkboard/recipes-hello/hello-app/files/hello-app.c b/yocto/meta-igkboard/recipes-hello/hello-app/files/hello-app.c new file mode 100644 index 0000000..56cbf42 --- /dev/null +++ b/yocto/meta-igkboard/recipes-hello/hello-app/files/hello-app.c @@ -0,0 +1,22 @@ +/********************************************************************************* + * Copyright: (C) 2024 LingYun IoT System Studio. + * All rights reserved. + * + * Filename: hello.c + * Description: This file is hello example application build in yocto + * + * Version: 1.0.0(2024/07/14) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "2024/07/14 10:34:45" + * + ********************************************************************************/ + +#include <stdio.h> + +int main (int argc, char **argv) +{ + printf("Hello, LingYun IoT System Studio!\n"); + + return 0; +} + diff --git a/yocto/meta-igkboard/recipes-hello/hello-app/hello-app_1.0.bb b/yocto/meta-igkboard/recipes-hello/hello-app/hello-app_1.0.bb new file mode 100644 index 0000000..bcba75d --- /dev/null +++ b/yocto/meta-igkboard/recipes-hello/hello-app/hello-app_1.0.bb @@ -0,0 +1,25 @@ +SUMMARY = "My Custom Hello Example Application" + +# Linces file is in poky/meta/files/common-licenses/ and use `md5sum` command to get the MD5 value +LICENSE = "GPL-2.0-or-later" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c" + +# recipe version +PV = "1" +PR = "r0" + +# There is /usr/bin/hello link to hello.lmbench, so can not use application name 'hello' here +SRC_URI = "file://hello-app.c \ + file://Makefile \ + " + +S = "${WORKDIR}" + +do_compile() { + make +} + +do_install() { + install -d ${D}${bindir} + install -m 0755 hello-app ${D}${bindir}/ +} diff --git a/yocto/meta-igkboard/recipes-kernel/hello-mod/files/Makefile b/yocto/meta-igkboard/recipes-kernel/hello-mod/files/Makefile new file mode 100644 index 0000000..4ded35f --- /dev/null +++ b/yocto/meta-igkboard/recipes-kernel/hello-mod/files/Makefile @@ -0,0 +1,14 @@ +obj-m := hello.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 diff --git a/yocto/meta-igkboard/recipes-kernel/hello-mod/files/hello.c b/yocto/meta-igkboard/recipes-kernel/hello-mod/files/hello.c new file mode 100644 index 0000000..772988e --- /dev/null +++ b/yocto/meta-igkboard/recipes-kernel/hello-mod/files/hello.c @@ -0,0 +1,34 @@ +/********************************************************************************* + * Copyright: (C) 2024 LingYun IoT System Studio. + * All rights reserved. + * + * Filename: hello.c + * Description: This file is hello example kernel module build in yocto + * + * Version: 1.0.0(2024/07/14) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "2024/07/14 10:34:45" + * + ********************************************************************************/ + +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/init.h> + +int hello_init(void) +{ + printk("Hello, hello-module loaded!\n"); + return 0; +} + +void hello_exit(void) +{ + printk("Goodbye, hello-module unloaded!\n"); +} + +module_init(hello_init); +module_exit(hello_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Guo Wenxue"); +MODULE_DESCRIPTION("A Simple Hello Kernel Module"); diff --git a/yocto/meta-igkboard/recipes-kernel/hello-mod/hello-mod.bb b/yocto/meta-igkboard/recipes-kernel/hello-mod/hello-mod.bb new file mode 100644 index 0000000..f6694a5 --- /dev/null +++ b/yocto/meta-igkboard/recipes-kernel/hello-mod/hello-mod.bb @@ -0,0 +1,26 @@ +SUMMARY = "My Custom Linux Kernel Hello Module" +DESCRIPTION = "${SUMMARY}" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "file://Makefile \ + file://hello.c \ + " + +S = "${WORKDIR}" + +inherit module + +KERNEL_MODULE_AUTOLOAD = "hello" + +do_compile() { + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + oe_runmake -C ${STAGING_KERNEL_DIR} M=${S} +} + +do_install() { + install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/extra + install -m 0644 ${S}/hello.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/extra/ +} + -- Gitblit v1.9.1