当前位置: 首页 > news >正文

Linux驱动学习——内核编译

1、从官网下载适合板子的Linux内核版本

选择什么版本的内核需要根据所使用的硬件平台而定,最好使用硬件厂商推荐使用的版本

https://www.kernel.org/pub/linux/kernel/ 

2、将压缩包复制到Ubuntu内进行解压

sudo tar -xvf linux-2.6.32.2-mini2440-20150709.tgz

 然后进入该目录,以下3、4、5操作都在内核源码的顶层目录下进行,及该文件的顶层目录

3、拷贝默认配置到 .config。

cp config_mini2440_td35 .config 

4、打开可视化配置菜单(内核活地图)

make menuconfig 

在菜单里选择需要的功能,这里不做修改,选择默认的功能即可 

5、编译uImage

 make uImage

编译后发现报错 

打开 kernel/timeconst.pl修改第373行代码

372     @val = @{$canned_values{$hz}};
373     if (!defined(@val)) {                                                                                                        
374         @val = compute_values($hz);
375     }
376     output($hz, @val);
377 }
378 exit 0;

将defined删掉

然后再编译

出现 Image arch/arm/boot/uImage is ready 表示编译成功,但也不完全成功

然后将uImage拷贝到tftpboot

6、打开minicom进入uboot

 分别输入

tftp 0x30008000 uImage

bootm 0x30008000

会发现内核启动失败

检测到有未定义指令,CPU复位

 进入arch/arm/boot/Makefile,修改为0x30008040

 修改后再重新编译,更新tftpboot里的uImage,就能成功启动操作系统了


http://www.mrgr.cn/news/45671.html

相关文章:

  • 一个月学会Java 第5天 控制结构
  • Word转PDF的转换方法有哪些?这7个效率技巧,不知道就亏大了!
  • Java中常见的等待唤醒机制及实践
  • Study-Oracle-11-ORALCE19C-ADG集群测试
  • Java访问器方法和更改器方法
  • 【C++ 11】auto 自动类型推导
  • 大厂面试真题-CAS的弊端和规避措施
  • 修改银河麒麟操作系统V10(SP1)网卡名称为ethx
  • WebAPI的初步认识
  • 7.2 职业生涯用过的平台,积累的经验
  • Redis面试题——第一篇
  • Scala第三天
  • simpread-OpenAI推出Canvas:让ChatGPT成为更出色的项目协作者
  • ARTS Week 43
  • 2024 Mysql基础与进阶操作系列之MySQL触发器详解(20)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
  • Java - MyBatis (下)
  • 探索计算机科学的奥秘:从基础到进阶
  • Vue3 使用 pinia
  • gin如何具体利用Server-Send-Events(SSE)实时推送技术实现消息推送
  • ai助手写作查重率多少?推荐这6款AI论文写作工具