买了正点原子STM32MP157开发板,使用他们提供的百度网盘资源,使用内核源码:

按照正点的视频教程,编译了一个空的字符设备ko文件:chrdevbase.ko
用dmesg看具体错误:
![]()
这是模块的内核版本信息和板载系统的内核版本不一致。5.4.31改成5.4.31-g8c3068500,还要增加字段preempt。

再搜索5.4.31,找到并改之:


用dmesg查看具体信息:
![]()
参照帖子:求助:关于“undefined reference to `__gnu_mcount_nc'”问题。 - Ubuntu中文论坛
原因是“这个是开启了gprof,才会出现的问题,按道理内核不应该去gprof的吧。如果只要编译通过,只需要把CFLAGS的-pg或-p参数去掉,就可以。”
我们打开内核源码根目录下的Makefile文件,去掉参数-pg:

使用正点配套内核源码编译了驱动ko文件,在stm32mp157板子上无法直接加载,解决了加载时的两个问题:
一是 ERROR: could not insert module *.ko: Invalid module format
二是unknown symbol in module