zoukankan      html  css  js  c++  java
  • 一、文档目录分析

    1.1 准备工作

      解压缩:tar -xjf u-boot-1.1.6.tar.bz2 

      打补丁:patch -p1 < ../u-boot-1.1.6_jz2440.patch

     1 patching file board/100ask24x0/100ask24x0.c
     2 patching file board/100ask24x0/boot_init.c
     3 patching file board/100ask24x0/config.mk
     4 patching file board/100ask24x0/flash.c
     5 patching file board/100ask24x0/lowlevel_init.S
     6 patching file board/100ask24x0/Makefile
     7 patching file board/100ask24x0/u-boot.lds
     8 patching file board/MAI/bios_emulator/scitech/src/v86bios/lex.l
     9 patching file common/cmd_bootm.c
    10 patching file common/cmd_load.c
    11 patching file common/cmd_menu.c
    12 patching file common/cmd_nand.c
    13 patching file common/cmd_nand_legacy.c
    14 patching file common/cmd_usbslave.c
    15 patching file common/env_nand.c
    16 patching file common/main.c
    17 patching file common/Makefile
    18 patching file cpu/arm920t/cpu.c
    19 patching file cpu/arm920t/s3c24x0/interrupts.c
    20 patching file cpu/arm920t/s3c24x0/Makefile
    21 patching file cpu/arm920t/s3c24x0/nand_flash.c
    22 patching file cpu/arm920t/s3c24x0/nand_flash_legacy.c
    23 patching file cpu/arm920t/s3c24x0/speed.c
    24 patching file cpu/arm920t/start.S
    25 patching file doc/README.SBC8560
    26 patching file drivers/cfi_flash.c
    27 patching file drivers/dm9000x.c
    28 patching file drivers/jedec_flash.c
    29 patching file drivers/Makefile
    30 patching file drivers/nand/nand_base.c
    31 patching file drivers/nand/nand_ids.c
    32 patching file drivers/nand/nand_util.c
    33 patching file drivers/nand_legacy/nand_legacy.c
    34 patching file drivers/usb/2440usb.h
    35 patching file drivers/usb/Makefile
    36 patching file drivers/usb/mrgtmp0
    37 patching file drivers/usb/usb.h
    38 patching file drivers/usb/usbin.c
    39 patching file drivers/usb/usbin.h
    40 patching file drivers/usb/usbinit.c
    41 patching file drivers/usb/usbinit.h
    42 patching file drivers/usb/usblib.c
    43 patching file drivers/usb/usblib.h
    44 patching file drivers/usb/usbmain.c
    45 patching file drivers/usb/usbmain.h
    46 patching file drivers/usb/usbout.c
    47 patching file drivers/usb/usbout.h
    48 patching file drivers/usb/usbsetup.c
    49 patching file drivers/usb/usbsetup.h
    50 patching file include/asm-arm/mach-types.h
    51 patching file include/asm-arm/types.h
    52 patching file include/asm-arm/u-boot-arm.h
    53 patching file include/configs/100ask24x0.h
    54 patching file include/configs/SBC8560.h
    55 patching file include/def.h
    56 patching file include/flash.h
    57 patching file include/nand.h
    58 patching file include/s3c2410.h
    59 patching file include/s3c24x0.h
    60 patching file include/usb.h
    61 patching file lib_arm/armlinux.c
    62 patching file lib_arm/board.c
    63 patching file Makefile

    1.2 目录结构

    1.2.1 根目录下文件

    • arm_config.mk:后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。用于 arm 架构
    • avr32_config.mk:后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。用于 avr32 架构
    • blackfin_config.mk
    • CHANGELOG:修改记录文件,该文件记录了这个uboot项目的版本变迁以及每个版本较上个版本修改的记录。正式的项目都有这些记录的。可以直接忽略,主要是给维护uboot的人用的。这个是 1.1.5 之后的 changelog
    • CHANGELOG-before-U-Boot-1.1.5:修改记录文件,该文件记录了这个uboot项目的版本变迁以及每个版本较上个版本修改的记录。正式的项目都有这些记录的。可以直接忽略,主要是给维护uboot的人用的。
    • config.mk:和 arm_config.mk ,makefile 文件
    • COPYING:版权声明,uboot本身是GPL许可证的。
    • CREDITS:鸣谢,里面记录了对uboot有贡献的人,感谢目录。
    • i386_config.mk:后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。用于 i386 架构
    • m68k_config.mk:后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。用于 m68k 架构
    • MAINTAINERS:维护者,就是当前在参与维护uboot源码的社区工作者。
    • MAKEALL:一个脚本,帮助编译uboot的。
    • Makefile:是uboot源代码的主Makefile,将来整个uboot被编译时就是用这个Makefile管理编译的
    • microblaze_config.mk:后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。microblaze 架构使用
    • mips_config.mk:后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。mips 架构使用
    • mkconfig:是uboot配置阶段的主要配置脚本。uboot的可移植性很大程度就是靠这个配置脚本在维护的。
    • nios_config.mk:后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。nios 架构使用
    • nios2_config.mk:后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。nios2 架构使用
    • ppc_config.mk:后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。ppc 架构使用
    • README:所有的软件都有README,一般拿到一个东西要先读README,这个东西其实就是个简单的使用说明书。
    • rules.mk:这个文件是我们uboot的Makefile使用的规则,本身非常重要,但是我们不去分析他,不去看他。

      对我们分析 uboot 代码重要的有2个:mkconfig和Makefile。一个负责uboot的配置,一个负责编译。

    1.2.2 目录

    • board:board是板的意思,板就是开发板。board文件夹下每一个文件都代表一个开发板,这个文件夹下面放的文件就是用来描述这一个开发板的信息的。board目录下有多少个文件夹,就表示当前这个uboot已经被移植到多少个开发板上了(当前的uboot支持多少个开发板)。
    • common:common 是普遍的普通的,这个文件夹下放的是一些与具体硬件无关的普遍适用的一些代码。譬如控制台实现、crc校验的。但是更多的主要是两类:一类是cmd开头的,是用来实现uboot的命令系统的;另一类是env开头的,是用来实现环境变量的。
    • cpu:这个目录是SoC相关的,里面存放的代码都是SoC相关初始化和控制代码(譬如CPU的、中断的、串口等SoC内部外设的,包括起始代码start.S也在这里)。里面很多子文件夹,每一个子文件夹就是一个SoC系列。
      • 注意:这个问价是严格和硬件相关的,因此移植时也是要注意的。但是因为这个文件夹内都是SoC有关的,我们自己的开发板和三星的开发板虽然板子设计不同但是SoC都是同一个,因此实际移植时这个目录几乎不用动。
    • disk:磁盘有关的
    • doc:文档目录,里面存放了很多uboot相关文档,这些文档可以帮助我们理解uboot代码。但是因为是纯英文的,而且很杂乱,所以几乎没用。
    • drivers:顾名思义,驱动。这里面放的就是从linux源代码中扣出来的原封不动的linux设备驱动,主要是开发板上必须用到的一些驱动,如网卡驱动、Inand/SD卡、NandFlash等的驱动。要知道:uboot中的驱动其实就是linux中的驱动,uboot在一定程度上移植了linux的驱动给自己用。但是linux是操作系统而uboot只是个裸机程序,因此这种移植会有不同,其实,uboot中的驱动其实是linux中的驱动的一部分。
    • dtt:
    • examples:示例代码
    • fs:filesystem,文件系统。这个也是从linux源代码中移植过来的,用来管理Flash等资源。
    • include:头文件目录。uboot和linux kernel在管理头文件时都采用了同一个思路,就是把所有的头文件全部集中存放在include目录下,而不是头文件跟着自己对应的c文件。所以在uboot中头文件包含时路径结构要在这里去找。
    • lib_arm:架构相关的库文件。lib_arm里面就是arm架构使用的一些库文件。
    • lib_avr32:架构相关的库文件
    • lib_blackfin:架构相关的库文件
    • lib_generic:架构相关的库文件。lib_generic里是所有架构通用的库文件。
    • lib_i386:架构相关的库文件
    • lib_m68k:架构相关的库文件
    • lib_microblaze:架构相关的库文件
    • lib_mips:架构相关的库文件
    • lib_nios:架构相关的库文件
    • lib_nios2:架构相关的库文件
    • lib_ppc:架构相关的库文件
    • nand_spl:nand相关的
    • net:网络相关的代码,譬如uboot中的tftp nfs ping命令 都是在这里实现的。
    • post:不清除
    • rtc:时钟驱动
    • tools:里面是一些工具类的代码。譬如mkimage。

      文件夹里面比较重要的,后面会分析涉及到的有:board、common、cpu、drivers、include、lib_arm、lib_generic

  • 相关阅读:
    互联网支付的"二清"介绍
    Spring Tool Suite(STS)加速
    如何将任意文件固定在 Win10 的开始屏幕中
    VCL to UniGUI Migration Wizard
    kbmmw 中XML 操作入门(跨平台,而且可以与JSON,YAML,BSON 直接互相转换)
    欧洲历史上“中国热”:一个瓷器可换数个奴隶
    QPointer,QSharedPointer,QWeakPointer的区别与使用例子(QSharedPointer类似Delphi里的引用计数,是强引用,而QWeakPointer是弱引用,不影响原始对象的引用计数,相当于是在暗中观察对象,但保持联系,需要的时候就会出现)
    Visual Studio 2017 for Mac Preview
    NET Core Kestrel部署HTTPS
    多线程
  • 原文地址:https://www.cnblogs.com/kele-dad/p/8886383.html
Copyright © 2011-2022 走看看