只有.o文件如何编译到 内核中去

qq_29594517 2017-09-20 06:48:52
芯片厂商提供的驱动为编译好的softd.o文件(他们不想给源码),如何把它编译到 boot image 里边去?
...全文
1426 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_43178250 2020-05-07
  • 打赏
  • 举报
回复
直接在Makefile里添加就OK了:

obj-y += softd.o
之子不知名 2020-04-28
  • 打赏
  • 举报
回复
Linux 驱动的编译主要修改驱动代码所在目录下的 Makefile 和 Kconfig 文件。 对着其他驱动照着写就可以了,比如: Kconfig config YOUR_DRIVER default y (默认值 y 对应编译进内核) Makefile: obj-$(CONFIG_YOUR_DRIVER) += softd.o 编译后,查看 Linux 源码顶层目录下的 .config 文件,确认 CONFIG_YOUR_DRIVER 的值是不是 y 。 如果是,就证明已经成功编译进内核。
Cyril Taylor 2020-04-24
  • 打赏
  • 举报
回复
把softd.o文件名改为softd.o_shipped,然后再makefile里面加obj-y += softd.o就可以了
jklinux 2017-09-21
  • 打赏
  • 举报
回复
makefile里直接写: obj-y += softd.o 这样就可以了
Hello Worm 2017-09-21
  • 打赏
  • 举报
回复
这里给一个例子:
gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc test1.o test2.o -o test
可以看到 -c选项保证编译器只编译不链接,而不加任何选项的gcc命令可以把若干个.o文件链接成目标问题。 另外,对于.o文件,理论上你是可以通过objdump -t softd.o 看到他们在该文件中创建的函数(其实已经是符号了),知道这个信息会有利于你编译(连接)通不过时可以找到具体原因。
在嵌入式Linux下,设备树(device tree)用来描述硬件平台的各种资源,Linux内核在启动过程中,会解析设备树,获取各种硬件资源来初始化硬件。设备树的overlay功能是指可以在系统运行期间动态修改设备树。一般情况下,如上图所示,设备树经过DTC编译编译为二进制的hello.dtb文件,加载到内存,随Linux内核一起启动后,一般就无法更改了。如果我们想修改设备树,需要修改hello.dts文件文件,重新编译成二进制文件:hello.dtb,然后重新启动内核,重新解析。有了设备树的overlay功能,省去了设备树的重新编译内核重启,我们可以直接编写一个设备树插件:overlay.dts,编译成overlay.dtbo后,直接给设备树“打补丁”,在运行期间就可以动态添加节点、修改节点...设备树的overlay功能,在很多场合都会用得到,会让我们的开发更加方便:外界插拔设备,无法在设备树中预先描述:耳机树莓派 + FPGA开发板基于I2C的温度传感器管脚的重新配置:PIN multiplexing修改bootcmd、分区...设备树的overlay功能,目前还没有加入到内核mainline(linux-5.10.x),但目前有些开发板和配套的BSP已经支持了,支持在系统运行期间动态修改设备树文件。如果你手头的开发板或内核平台还没有支持device tree overlay,可以学习本期课程,学习内核中设备树overlay的实现原理,如何给内核打补丁,使内核支持设备树的overlay功能。有了本期课程的学习基础,明白了设备树overlay的实现原理和运行机制,你就可以尝试在自己的开发板平台上实现这个功能了。本期课程的主要内容如下:在开发板上如何实现设备树的overlay功能Configfs文件系统的配置与挂载Configfs编程接口如何编写设备树 overlay插件设备树 overlay的编译和运行设备树overlay运行机制分析本期课程适合哪些人学习:嵌入式驱动工程师嵌入式BSP工程师嵌入式软件工程师想从事嵌入式开发的同学全网首家讲解设备树overlay的视频教程。   

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧