野火Linux内核编译

续上集野火Linux开发板insmod出现insmod: ERROR: could not insert module hellomodule.ko: Invalid module format的解决方法_黑摸仙小月的博客-优快云博客

出现这个错误之后发现驱动加载不上是因为linux系统版本不匹配,所以摸索着怎么重新编译一个内核。

以下是我的操作步骤(有不太对劲的地方也请大家指正)

1.获取内核源码

github:

git clone -b ebf_4.19.35_imx6ul https://github.com/Embedfire/ebf_linux_kernel.git

gitee:

git clone  https://gitee.com/Embedfire/ebf_linux_kernel_6ull_depth1

在开发板通过

cat /proc/version 

得到开发板目标内核版本后到github下载对应的版本

https://github.com/Embedfire/ebf_linux_kernel.git

然后再拉到本地(下载太慢可以在windows挂个机场,下载完成后再传到虚拟机里面)

再把野火gitee构建好的工程拉到本地。

接下来我们可以看到这样的结构

make_deb.sh就OK啦~

 编译成功

再试试看我们的hellow_world驱动能不能成功跑起来

(结果并没有跑起来。。。。。我太乐观了)

接下来就只能再重新编译一个固件烧录到板子里面了,估计还是内核版本不匹配的原因。

事实证明名字改成一样,内核版本也改成一样符号表也不一定能匹配上

补:这里一开始应该是内核不匹配

后来我在野火的教程地址更新了一下内核,再用他们提供是内核来编也是不行

偶然间想着校验一下MD5

结果发现竟然是 这个tftp工具的问题。我真是服了。

后面用挂载 NFS 网络文件系统(PC虚拟机与开发板实现文件互通)_黑摸仙小月的博客-优快云博客

这个方法挂载nfs再传输就不会错了。

驱动直接运行成功

### 关于野火嵌入式Linux驱动开发 对于从事野火嵌入式Linux驱动开发的学习者来说,获取合适的资源至关重要。这类学习材料通常会详细介绍如何针对特定硬件平台编写设备驱动程序。 #### 获取官方文档和支持 许多嵌入式Linux发行版提供详尽的开发者指南和技术手册,这些资料往往是最权威的信息来源之一[^1]。例如,如果使用的是基于ARM架构的处理器板卡,则可以从芯片制造商处下载数据表以及应用笔记来辅助理解底层硬件接口的工作原理。 #### 利用在线课程和书籍 网络上有大量的教学视频、电子书和其他形式的教学资源可以帮助掌握必要的技能。一些知名的出版物如《Understanding the Linux Kernel》或《Linux Device Drivers》都是很好的参考资料[^2]。此外,在线教育平台上也可能存在专门面向初学者到高级用户的系列课程。 #### 社区交流与论坛支持 积极参与开源项目社区讨论组可以快速解决问题并获得同行的帮助。像GitHub这样的代码托管网站不仅提供了大量现成的例子供研究参考,而且还有活跃的问题跟踪系统用于寻求帮助。同时,Stack Overflow等技术问答站点也是解决具体编码难题的好去处。 #### 实践操作环境搭建 为了更好地理解和测试所学的知识点,建议构建一个稳定的实验环境。这可以通过安装虚拟机软件模拟目标机器或者直接在一个真实的单片机开发板上来实现。确保能够顺利编译内核模块,并通过交叉编译工具链生成适用于不同体系结构的目标二进制文件[^3]。 ```bash # 安装必要依赖包 sudo apt-get install build-essential libncurses-dev bison flex texinfo git # 下载指定版本的Linux内核源码树 git clone https://github.com/torvalds/linux.git cd linux git checkout v5.x.y # 替换为所需的具体标签名 # 配置适合当前硬件配置项 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig # 编译整个内核及其子系统 make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值