ARM开发板系统移植-----kernel的编译
版权声明:本文为博主原创文章,转载请注明出处:http://blog.csdn.net/u013819957
背景:把bootloader烧写到开发板的Nand Flash中后,开发板从Nand启动,硬件会自动将bootloader加载到内存中运行,bootloader将板载资源都初始化完成后,会停留在一个命令行界面,接收并执行用户敲入的命令。这时候用户可以通过命令控制开发板,比如查看参数列表:print、读写nand:nand read\nand write 、内存管理:mm、设置参数列表:setenv、网络下载:tftp、启动内核:bootm等等。如果我们把一个编译好的内核通过tftp服务器下载到内存中,就可以通过bootm 命令启动内核。
好吧,啰嗦了、、、下面回到正题-----内核的编译。
编译适合开发板的使用的内核映像其实很简单,无非就是配置然后编译。当然最麻烦的就是配置了,因为配置的过程需要了解板子上都有哪些资源,都是什么型号,需要什么驱动等等,然后根据这些了解到的信息舍取。不过既然我们使用的是别人开发的开发板,那就说明厂家已经进行配置过,只要我们能拿到别人后的配置文件,再通过自己稍加修改,就能省掉很多麻烦。进入顶层目录,操作步骤如下:
1、配置内核:执行命令 make menuconfig ARCH=arm-Linux 出现如下配置界面:
前面说了,这里可以根据板子的情况一项一项的选,但是笔者通常都是往下拉,找到一个 "Load an Alternate Configuration File"的选项,使用厂家提供的配置文件,这样省时省力。配置完成后保存退出,进行下一步。
2、编译内核:执行命令 :make uImage ARCH=arm CROSS_COMPILE=arm-linux- 。这是个挺漫长的过程,而且还可能出现编译错误,比如笔者就遇到一个问题,mkimage not found ,其实就是一个打包工具没找到,导致内核映像生成失败。后来发现这个工具是在uboot/tools目录中的,把工具复制到/bin目录中再执行一次编译命令即可。
这两个步骤完成后用户可以在 arch/arm/boot/中找到uImage.bin文件,这是一个可以被启动的二进制文件,当然这里面还没有文件系统的代码,这将是下一篇文章的内容。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2015-05-08 无锁队列的实现
2015-05-08 使用C++11实现无锁stack(lock-free stack)
2015-05-08 线程、线程句柄、线程ID
2015-05-08 用消息在Win32控制台程序多线程间进行通讯
2015-05-08 Win32多线程编程(1) — 基础概念篇
2015-05-08 Win32多线程编程(2) — 线程控制
2015-05-08 Win32多线程编程(3) — 线程同步与通信