【发布时间】:2017-09-19 06:24:19
【问题描述】:
我有一个用于外部 MCU 应用程序的 Linux 驱动程序。驱动程序和 MCU 使用我们自己的协议通过总线进行通信。
我想在内核模块和 MCU 之间共享协议功能的程序代码,但由于无法为内核构建 lib,所以我目前唯一的想法是“尽可能像内核”编写代码然后在平台之间复制整个 .c 文件。
还有其他方法吗? Surly 我不能成为第一个想要这样做的人。
我说的是代码重用,而不是 IPC 机制。
谢谢!
【问题讨论】:
-
我没听懂你的问题,你的意思是说,某种数据交换机制,比如IPC,还是JSON?没听懂你说的,要在MCU和内核之间共享C代码?
-
在内核构建过程中使用外部编译对象的唯一方法是运送文件。但是,据我了解,这些文件不能携带代码,只能携带数据。所以,
write the code "as kernel as possible" and then just copy the entire .c file between the platforms.。即使内核构建过程可以接受预编译代码,也需要这样的代码;这只会减少单个编译,而不是空间。 -
你只能分享source code,你可能不应该分享很多。一般来说,尽可能避免编写内核代码。你的问题太宽泛了;您应该对其进行编辑以提供更多详细信息和上下文。您想到什么驱动程序,什么协议? MCU 到底是什么??
-
确保您可以在 Makefile 级别执行此操作:对于 MCU,您需要使用交叉编译器,对于内核模块,您需要使用本机编译器。您可以在
common/、mcu/和module/目录中组织源文件。仅将 Makefile 放在mcu/和module/中。另外,我很确定可以为内核构建一个库,然后将其与模块静态链接。 -
这可能是一个尝试当且仅当他们都运行相同的操作系统(Linux)的想法。
标签: c linux linux-kernel shared-libraries linux-device-driver