按照蜗窝科技的步骤执行

一、有关硬件描述的填空题

1)CPU上电后,从哪种设备(       BOOTROM         )的哪个地址(        0x0000_0000       )开始执行。

2)用(                )方式,可以让CPU进入USB download(或者UART download)模式。 no

3)进入USB download之后,设备使用哪个USB接口(        )和主机通信。no

4)进入download模式后,哪一段地址范围(通常为SRAM)可以用来执行程序:(                )~(                ),size有多大(                )。

5)用什么协议(                )可以通过USB将bin文件上传到指定的地址。no

6)用什么协议(                )可以让CPU跳转到到指定地址继续执行。no

二、基本符号的定义

Board                ->  ql10_demo
Vendor              ->  fmxx
Machine(SoC)    ->  fmql10
Arch                  ->  arm
CPU                  ->  armv7

三、目录结构及K从Kconfig的确定

1)在board/目录中创建“fmxx/ql10_demo” 目录,并提供Kconfig和Makefile文件

mkdir -p board/fmxx/ql10_demo
touch board/fmxx/ql10_demo/Kconfig
touch board/fmxx/ql10_demo/Makefile

2)在arch/arm/Kconfig中,添加配置菜单
config TARGET_QL10_DEMO
       bool "Support fmxx ql10 demo board"
       select CPU_V7A
       select SUPPORT_SPL
       select SPL
       help
         Support for ql10 demo board platform based on fmxx  ql10 Psoc,
         with 4xA7 CPU, 1GB DDR.

endchoice

source "board/fmxx/ql10_demo/Kconfig"

3)根据符号定义,在board/fmxx/ql10_demo/Kconfig中,添加如下配置项:
if TARGET_QL10_DEMO

config SYS_BOARD
    default "ql10_demo"

config SYS_VENDOR
    default "fmxx"

config SYS_SOC
    default "fmql10"

config SYS_CONFIG_NAME
    default "ql10_demo"
endif

vi doc/README.kconfig
以上README中有大致的流程

Conversion from boards.cfg to Kconfig
-------------------------------------

Prior to Kconfig, boards.cfg was a primary database that contained Arch, CPU,
SoC, etc. of all the supported boards.  It was deleted when switching to
Kconfig.  Each field of boards.cfg was converted as follows:

Status      ->  "S:" entry of MAINTAINERS
 Arch        ->  CONFIG_SYS_ARCH defined by Kconfig  
 CPU         ->  CONFIG_SYS_CPU defined by Kconfig
 SoC         ->  CONFIG_SYS_SOC defined by Kconfig
 Vendor      ->  CONFIG_SYS_VENDOR defined by Kconfig
 Board       ->  CONFIG_SYS_BOARD defined by Kconfig
 Target      ->  File name of defconfig (configs/<target>_defconfig)
 Options     ->  CONFIG_SYS_EXTRA_OPTIONS defined by Kconfig
 Maintainers ->  "M:" entry of MAINTAINERS

################# tips ####################

1.Arch       arm

arch/arm/Kconfig中

config SYS_ARCH
    default "arm"

2.CPU        armv7

arch/arm/Kconfig

config SYS_CPU
    default "armv7" if CPU_V7A

3.SoC        fmql10

Define CONFIG_SYS_SOC="soc" to compile arch/<arch>/cpu/<cpu>/<soc> 其实并没有这个目录

4.Vendor     fmxx

Define CONFIG_SYS_VENDOR="vendor" to compile board/<vendor>/common/*
         and board/<vendor>/<board>/*

5.Board      ql10_demo

Define CONFIG_SYS_BOARD="board" to compile board/<board>/*
         (or board/<vendor>/<board>/* if CONFIG_SYS_VENDOR is defined)

6.Target     ql10_demo

Define CONFIG_SYS_CONFIG_NAME="target" to include
         include/configs/<target>.h

Add configs/<target>_defconfig

Tips to add/remove boards
-------------------------

When adding a new board, the following steps are generally needed:

[1] Add a header file include/configs/<target>.h
 [2] Make sure to define necessary CONFIG_SYS_* in Kconfig:
       Define CONFIG_SYS_CPU="cpu" to compile arch/<arch>/cpu/<cpu>
       Define CONFIG_SYS_SOC="soc" to compile arch/<arch>/cpu/<cpu>/<soc>
       Define CONFIG_SYS_VENDOR="vendor" to compile board/<vendor>/common/*
         and board/<vendor>/<board>/*
       Define CONFIG_SYS_BOARD="board" to compile board/<board>/*
         (or board/<vendor>/<board>/* if CONFIG_SYS_VENDOR is defined)
       Define CONFIG_SYS_CONFIG_NAME="target" to include
         include/configs/<target>.h
 [3] Add a new entry to the board select menu in Kconfig.
     The board select menu is located in arch/<arch>/Kconfig or
     arch/<arch>/*/Kconfig.
 [4] Add a MAINTAINERS file
     It is generally placed at board/<board>/MAINTAINERS or
     board/<vendor>/<board>/MAINTAINERS
 [5] Add configs/<target>_defconfig

When removing an obsolete board, the following steps are generally needed:

[1] Remove configs/<target>_defconfig
 [2] Remove include/configs/<target>.h if it is not used by any other boards
 [3] Remove board/<vendor>/<board>/* or board/<board>/* if it is not used
     by any other boards
 [4] Update MAINTAINERS if necessary
 [5] Remove the unused entry from the board select menu in Kconfig
 [6] Add an entry to doc/README.scrapyard

根据README的描述,定义上述配置项之后,u-boot会编译如下的目录:

Define CONFIG_SYS_CPU="cpu" to compile arch//cpu/
        arch/arm/cpu/armv8
        Q:并没有看到CONFIG_SYS_CPU的定义?
        A:在“arm/Kconfig”中定义,“default "armv8" if ARM64”,这就是为什么在上面Target定义中“select ARM64”的原因。

Define CONFIG_SYS_SOC="soc" to compile arch//cpu//
        arch/arm/cpu/armv8/s900
        Q:如果该目录不存在,是否还会编译?
        A:应该不会。

Define CONFIG_SYS_VENDOR="vendor" to compile board//common/* and board///*
        board/actions/common/*
        board/actions/bubblegum/*

Define CONFIG_SYS_CONFIG_NAME="target" to include include/configs/.h
        include/configs/bubblegum.h

4)创建该板子有关的配置头文件

include/configs/ql10_demo.h

#ifndef __QL10_DEMO_H
#define __QL10_DEMO_H

#endif

5)使用menuconfig,生成.config,并保存为ql10_demo_defconfig

cd ~/work/x_project/u-boot

make menuconfig

配置Architecture和Target:

Architecture select (ARM architecture)  --->

ARM architecture  --->
    Target select (Support Bubblegum 96Board)  --->

关闭Command line interface配置项下面所有的内容:

Command line interface  --->

其它暂时用默认值,保存退出,得到.config文件,然后另存为ql10_demo_defconfig

cp .config configs/ql10_demo_defconfig

四、尝试编译一次

uboot移植之迷雾解码的更多相关文章

  1. u-boot移植 II

    下面是韦老师的uboot移植攻略: A. 开发板的相关拷贝与修改 1. 在board文件夹下面, 将原来的smdk2410复制为100ask24x0目录, 并将smdk2410.c改名为100ask2 ...

  2. 基于mini2440的uboot移植(一)

    一.移植环境 虚拟机:ubuntu12.04 uboot源码:u-boot-2008.10.tar.bz2 交叉编译:arm-linux-gcc-4.4.3 简单的记录下编译uboot的过程,要想具体 ...

  3. u-boot移植总结(四)u-boot-2010.09框架分析

    (一)本次移植是基于FL2440,板子的基本硬件: CPU 型号为S3C2440,基于ARM920T,指令集ARMV4,时钟主频400MHz SDRAM H57V2562GTR-75C 2片*32MB ...

  4. 【转】uboot移植(一)BootLoader基本概念

    原文网址:http://blog.chinaunix.net/uid-25445243-id-3869348.html 一.BootLoader简介1.1.嵌入式Linux软件结构与分布 在一般情况下 ...

  5. U-BOOT 移植到友善之臂mini2440

    U-BOOT 移植到友善之臂mini2440 开发环境:ubuntu 10.10 编译器:友善之臂mini2440光盘自带arm-linux-gcc 4.4.3 一. 在denx官网下载源码,我所用版 ...

  6. X-007 FriendlyARM tiny4412 u-boot移植之内存初始化

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

  7. X-004 FriendlyARM tiny4412 uboot移植之点亮指路灯

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

  8. X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件

    X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件 <<<<<<<<<<<<<< ...

  9. tiny4412 --Uboot移植(5) DDR3内存

    开发环境:win10 64位 + VMware12 + Ubuntu14.04 32位 工具链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-g ...

随机推荐

  1. 编写灵活、稳定、高质量的HTML代码的规范

    一.唯一定律 无论有多少人共同参与同一项目,一定要确保每一行代码都像是唯一个人编写的. 二.HTML 2.1 语法 (1)用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现 ...

  2. error: ‘xxx’ does not name a type

    error: ‘TPlanMgr’ does not name a type 两个头文件相互应用会导致一个头文件你的类型无定义问题.

  3. HDU 6592 (LIS+输出字典序最大最小)

    题意:给你一个序列,让你找长度最长的字典序最小和最大的单峰序列,单峰序列就是满足先增后降的序列. 思路:先正着求一遍LIS,再反着求一遍LIS,然后用单调栈来模拟. 求字典序最小的话,首先找到第一个顶 ...

  4. React-Native 之 GD (三)近半小时热门

    1.设置页面跳转 半小时热门组件  GDHalfHourHot.js /** * 近半小时热门 */ import React, { Component } from 'react'; import ...

  5. ngTemplateOutlet递归的问题

    今天尝试通过 ng-template 加 ngTemplateOutlet实现一个递归的菜单.但是遇到一个问题:NullInjectorError: No provider for NzMenuDir ...

  6. memocached基础操作

    cmd->telnet方式链接(控制面板-启动该功能)telenet +ip +(端口号) memcahed 只有 string类型的 整个数据全部都是存在内存里面的 连接数 内存的大小 失效时 ...

  7. 006-Spring Boot自动配置-Condition、Conditional、Spring提供的Conditional自动配置

    一.接口Condition.Conditional(原理) 主要提供一下方法 boolean matches(ConditionContext context, AnnotatedTypeMetada ...

  8. 自动化生成 Openstack 新项目开发框架

    目录 目录 前言 环境 openstack-project-generator 前言 Openstack Developer 应该都知道, 开发一个 Openstack 的新项目并不是一个从 0 到 ...

  9. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第5节 String类_2_字符串的构造方法和直接创建

    string的构造方法 psvm创建main方法 把字节翻译成了小a小b小c.字符串的底层科室用的byte字节数组 Ctrl+鼠标左键点击string 这个byte就保存了字符串底层的字节数据 直接创 ...

  10. DirectX 安装报错: 不能信任一个安装所需的压缩文件,请检查加密服务是否启用并且cabinet文件证书是否有效

    DirectX 安装报错 不能信任一个安装所需的压缩文件,请检查加密服务是否启用并且cabinet文件证书是否有效 是直播软件open broadcaster software,这个软件安装的时候提示 ...