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

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.kler.cn/news/339290.html

相关文章:

  • Centos7通过jengkins实现自动发布和回滚
  • JUC-synchronized 知多少
  • 灵动微高集成度电机MCU单片机
  • Windows无需管理员权限,命令轻松修改IP和DNS
  • EtherCAT学习笔记
  • 【Qt】窗口预览(1)—— 菜单栏
  • std::future概念和使用方法
  • Arduino UNO R3自学笔记23 之 Arduino如何使用4511控制数码管?
  • 最佳实践(1)
  • `pandas` 库提供了一个非常方便的方法将 DataFrame 转换为字典
  • 2024年最新版本神马TV8.5影视APP源码 293TV影视点播系统源码搭建教程 神马TV8.2加强版反编译教程 保姆级小白可搭建 完整版本视频教程
  • 揭开DNA实验室装修的秘密:水电管道设计的关键要点
  • C# 自适应屏幕分辨率
  • Python从入门到高手4.3节-掌握跳转控制语句
  • 02_InFluxDb
  • MHA携手Atlas:打造高效读写分离解决方案,引领数据库性能飞跃
  • C++学习笔记----8、掌握类与对象(四)---- 不同类型的数据成员(2)
  • Sym-NCO:利用对称性进行神经组合优化
  • 餐饮生存战:平价消费时代,别盲目卷低价
  • 2.4Mybatis——缓存机制