• ARM开发板系统移植-----kernel的编译


     

     
    前面一篇文章介绍了开发板上系统软件的第一部分--bootloader的编译方法。

      背景:把bootloader烧写到开发板的Nand Flash中后,开发板从Nand启动,硬件会自动将bootloader加载到内存中运行,bootloader将板载资源都初始化完成后,会停留在一个命令行界面,接收并执行用户敲入的命令。这时候用户可以通过命令控制开发板,比如查看参数列表:print、读写nand:nand read and 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文件,这是一个可以被启动的二进制文件,当然这里面还没有文件系统的代码,这将是下一篇文章的内容。

  • 相关阅读:
    普通链表的各种排序及常用操作
    数据结构、算法与应用(C++描述)(第二版)第六章习题解答
    数据结构、算法与应用(C++描述)(第二版)第三章习题解答
    数据结构、算法与应用(C++描述)(第二版)第二章习题解答
    数据结构、算法与应用(C++描述)(第二版)第一章习题解答
    数据结构、算法与应用(C++描述)(第二版)第五章习题解答
    C++排序算法
    Code-C++-Cut CString to get keyValue by ","||"}"
    C++-Struct string初始化&&map初始化
    JSON的简单介绍以及C语言的JSON库使用
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/6826483.html
Copyright © 2020-2023  润新知