首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将我的源代码添加到内核源代码树中

如何将我的源代码添加到内核源代码树中
EN

Stack Overflow用户
提问于 2016-08-19 19:57:43
回答 1查看 1K关注 0票数 1

我有一个与系统相连的I2C存储芯片,该芯片的一个内核空间驱动程序正在运行系统中的insmod / rmmod。

但是我想用内核源添加这个程序,这样在内核引导(从zImage)时,它将从I2C芯片读取,并从中打印一些东西(例如序列号)。

我的问题是,添加以obj-y += ?kernel/Makefile的驱动程序对象是否足够

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-22 20:28:01

在搜索内核模块编写等工作时,你会发现一个成千上万的"hello_world.c“程序,它描述了当你的内核和系统都正常工作时,如何在内核日志中打印hello_world。它们被称为可加载内核模块,使用像insmod这样的程序来加载,使用rmmod来卸载。

但是,我在搜索如何在内核启动时加载我自己的脚本(即hello_world.c),并希望在控制台上看到在启动时来自内核的东西,然后谷歌几乎是沉默的。

嗯,这并不难,而且很容易。为了在内核引导时获得printk()消息,我自己做的事情是-

hello_world.c程序放在./kernel/driver中(你可以把它放在内核源代码文件夹中的几乎任何地方,也可以创建你自己的文件夹,但这需要你自己的Makefile)。

然后编辑./kernel/driver/Makefile,在Makefile的末尾添加obj-y += hello_world.o

然后编译整个内核,并将生成的zImage文件传输到SD卡中。在启动时,在USB核心驱动之后,我能够看到来自hello_world printk()的自定义消息。

代码语言:javascript
运行
复制
[    3.652944] usbcore: registered new interface driver usbhid
[    3.657253] usbhid: USB HID core driver
[    3.660152] HELLO: HELLOING WORLD from KERNEL BINARY

注意:-与可加载模块不同,使用__exit生成的函数永远不会被编译调用,因为受约束的代码是内置在内核源代码中的。

也就是说,在这种情况下,hello_world.c被编程为接收(读取包含),但不能永远离开

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39038547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档