u-boot移植准备(文件级).1

(原创文章,作者:达达kiki,未经许可,谢绝转载)

对于诸如S3C2440/2410系列,网上关于u-boot移植资料是较多的,但是大部分皆是在看完视频后直接按照视频中的移植步骤来拽写的,缺少一种体系,给人的感觉稍显分散,本篇随笔以文件的形式从start.s到board.c的顺序,从第一层到其引用层的层次来讲述一个u-boot的工作过程,以及他是如何调用文件并且修改硬件的相关部分,从而掌握依托S3C2440为硬件基础的u-boot移植,较深刻的认识一个u-boot移植过程。

    一、文件基础结构搭建

    开发板:100ask24x0

    芯片:S3C24x0

    需要涉及的文件有README、mkconfig、config.mk、100ask24x0.h、100ask24x0(文件夹)。

    文件引用处:/README

                     /mkconfig

                     /include/config.mk

                     /include/100ask24x0.h

                     /board/100ask24x0 

   

    1 README

    对于一个文件首先需要阅读其说明文档,u-boot中的说明文档就是README,由该文档可知Makefile文件中需用到命令:

  •     make xx_config
  •     make

    由此可知接下来需要通过Makefile详细去了解该配置过程。

    2 Makefile

    找到config命令行部分:   

smdk2410_config    :    unconfig
    @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

    此处有调用MKCONFIG:

MKCONFIG    := $(SRCTREE)/mkconfig
export MKCONFIG

    由此可知调用了源文件目录下的mkconfig

    2.1 mkconfig

# Create include file for Make
#
echo "ARCH   = $2" >  config.mk                                     
echo "CPU    = $3" >> config.mk                                     
echo "BOARD  = $4" >> config.mk

[ "$5" ] && [ "$5" != "NULL" ] && echo /
"VENDOR = $5" >>config.mk

[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC    = $6" >> config.mk

     创建/include/config.mk,将$2~$6信息添加到其中,当通过make 100ask24x0_config传递信息后在config.mk中可以看到如下信息:

1 ARCH    = ARM
2 CPU      = arm920t
3 BOARD  = 100ask24x0
4 SOC      = s3c24x0

    2.2 100ask24x0.h

  在mkconfig末尾可以看到如下代码:

echo "#include <configs/$1.h>" >>config.h

    由此可知需要新建立一个名为100ask24x0的头文件:100ask24x0.h

    2.3 100ask24x0

    Makefile从最前面看起我们可以发现有关于board信息的引用,比如:

LIBS += board/$(BOARDDIR)/lib$(BOARD).a

    由此可知对应目的board我们需要在board下建立一个100ask24x0文件夹,文件夹可由smdk2410_config改编,文件内部的具体修改以及为什么选择smdk2410在后面描述。

原文地址:https://www.cnblogs.com/orangeJuice/p/5845022.html