Uboot移植

1、架构

board:与一些开发板相关的配置文件

common:uboot下使用能够使用的命令

CPU:与特定CPU架构相关的目录

disk:对磁盘的支持

doc:文档目录

drivers:uboot支持的设备驱动程序放置的地方,比如:网卡、Flash、串口和USB等。

fs:支持的文件系统

include:uboot使用的头文件

lib_xxx:与架构有关的库文件

net:与网络协议栈有关的代码

tools:用于生成uboot的工具

2、启动

启动过程:

  • 系统复位进入u-boot stage1入口点(start.S)包括定义入口、设置异常向量、设置CPU的模式和频率、配置内存区控制寄存器、安装uboot的栈空间、关闭看门狗等。
  • 硬件设备的初始化(lib_arm/board.c  start_armboot  C语言入口)
  1. 调用一系列的初始化函数

指定初始函数表

配置可用的Flash区flash_init()

初始化内存分配函数mem_malloc_init()

nand flash初始化nand_init()

初始化环境变量env_relocate()

外围设备初始化devices_init()

I2C总线初始化i2c_init()

LCD初始化drv_lcd_init()

VIDEO初始化drv_video_init()

键盘初始化drv_keyboard_init()

系统初始化drv_system_init()

2、初始化网络设备

设置IP地址gd->bd->bi_ip_addr=getenv_IPaddr(“ipaddr”)

设置mac地址

进入命令循环,接受用户从串口输入的命令for(;;)main_loop();

  • 为加载uboot stage2准备ram空间
  • 设置好堆栈
  • 挑战到stage2的C入口
  • 初始化本阶段要用用到的设备
  • 检查内存映射
  • 将kernel映像和文件映像从flash中读到ram中
  • 为内核设定启动参数
  • 调用内核

3、驱动移植

移植的过程:

  • 在宿主机上建立交叉编译开发环境
  • 修改cpu/armxx目录下的文件内容,主要包括cpu.S,start.S,interrupts.c,seria1.c,speed.c等文件
  • 在board目录下创建自己的开发板目录beaglebone,在目录中创建beaglebone.c,flash.c,memsetup.S,Makefile,u-boot.lds,config.mk文件
  • 在include/configs目录下创建beaglebone.h
  • 打开u-boot目录下Makefile文件,加入两行:
  • beaglebone_config: unconfig
  • @./mkconfig $(@:_config=) arm am335x  beaglebone
  • 编译,运行:
  • make beaglebone_config
  • make
  • 烧写

4、移植要修改的文件大总结

Makefile,include下目标板.h,board目录下的目标板.c文件,flash.c, uboot.lds链接文件, cpu目录下的驱动文件

修改:

  • cpu/armv7目录下start.S启动代码
  • board/beaglebone

beaglebone.c文件,主要是SDRAM的驱动程序,完成SDRAM的UPM表设置,上电初始化

flash.c   Flash的驱动程序在此

mumsetup.S文件

config.mk文件:用于设置程序链接的起始地址

u-boot.lds文件

  • include/configs目录下beaglebone.h文件    beaglebone开发板头文件,寄存器参数设置

额外记录

uboot移植:首先在想对应的配置头文件中打开或添加想对应的宏定义支持,再在板极初始化(第二阶段初始化过程中)代码中添加需要支持功能的初始化函数。

注:如果初始化函数对应的板版本不兼容或者不存在的话,得自己编写。

书籍记录:

从庖丁解牛说uboot如何编译

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 ...

  10. uboot移植阶段二--3串口终结篇

    2011-03-20 23:00:37 前天U-boot移植串口后,能成功显示数据. 今天的主要目的是再次进行U-boot移植.看是否成功.花了40分钟,很顺利. 接着就是要把之前有问题的U-boot ...

随机推荐

  1. 对wordcount单词字母部分的修改

    原始代码: int s; s = ch; switch (s) { case 'a':letter[0]++; break; case 'b':letter[1]++; break; case 'c' ...

  2. M1/M2阶段总结

    之前提问的博客 问题解答 问题 1 关于代码复审,复审者是否应该参与编码?如果复审者也参与编码的话,那么难免任务量较多,但如果不参与编码的话,工作分配的似乎不太均衡. 我们的团队项目在M1和M2阶段没 ...

  3. 我的software

    每个学计算机软件的同学都有可能经历以下的情况: 1.  哎,我家电脑开不了机了,来帮帮忙 2.  我耳机坏了,你给修修吧 3.  你能换手机屏不 4.  过来看下,我的Word打不开了 等等等等 这些 ...

  4. iOS Runloop理解

    一.RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程.RunLoop就是控制线程生命周期并接收事件进行处理的机制. RunLoop是iOS事件响应与任务处理最核心 ...

  5. 业务-----修改Service常用逻辑

    注意:修改时唯一属性不能重复 //num==null 时,没有修改Num,不用考虑重复问题.//num!=null 时,修改了num.考虑重复问题 if(!StringUtils.isEmpty(re ...

  6. Hot code replace (HCR)

    https://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F https://zhidao.baidu.com/question/195505558 ...

  7. [转帖] cnblog新闻区 “40岁以上的员工,请自觉离开”

    “40岁以上的员工,请自觉离开” 投递人 itwriter 发布于 2018-04-29 22:36 评论(9) 有2733人阅读 原文链接 [收藏] « » “准确地说,华为目前要裁掉的.清退的,是 ...

  8. 简单FTP服务器搭建

    1 配置IIS 打开控制面板-卸载程序-点击 打开或关闭windows功能-勾选 internet信息服务-确定 2 配置iis web站点 开始菜单-搜索iis并进入iis管理器(计算机-右键-管理 ...

  9. js對象

    js聲明一個數據,即使沒有賦值,也是創建了一個對象: js的所有數據都是對象,對象裡面有屬性也有方法,屬性方法是對象中的成員: 訪問對象的屬性:objectname.屬性名 訪問對象的方法:objec ...

  10. Luogu4238 【模板】多项式求逆(NTT)

    http://blog.miskcoo.com/2015/05/polynomial-inverse 好神啊! B(x)=B'(x)·(2-A(x)B'(x)) 注意ntt的时候防止项数溢出,即将多项 ...