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. UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现(转)

    UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现   类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统 ...

  2. 个人github链接及git学习心得总结

    个人github链接 https://www.github.com/liangjianming/test git学习心得总结​ git是一个快速,开源,分布式的版本控制系统. GitHub是一个基于w ...

  3. guthub第一次作业连接及心得体会

    https://github.com/12wangmin/ GitHub的本意是旨在成为一种开放的软件协作平台,但它目前已成为一个巨大的综合性的平台,其作用远远超过单纯地开源代码.它现在在艺术家.建筑 ...

  4. pandas修改全列的时间格式 无需使用apply

    df.date.dt.strftime('%Y%m%d') #实现全列修改时间格式

  5. 【转】GPS定位准确度CEP、RMS

    转自:http://blog.sina.com.cn/s/blog_70f96fda0101lcb9.html CEP和RMS是GPS的定位准确度(俗称精度)单位,是误差概率单位.就拿2.5M CEP ...

  6. java数值运算后精度丢失问题

    最近连续俩次遇到运算后数值精度丢失问题,所以记录一下. 问题1:java计算百分比,应该得到57,可返回的就是56 在java代码中 BigDecimal progress; BigDecimal a ...

  7. opencv学习笔记(一)

    摘要:最近要做一个和图像处理有联系的项目,从此走上了学习opencv的道路. 灰度图:2维矩阵 彩色图:3维矩阵 ps:目前大部分设备都是用无符号 8 位整数(类型为 CV_8U)表示像素亮度 Mat ...

  8. 自己实现数据结构系列二---LinkedList

    一.先上代码: 1.方式一: public class LinkedList<E> { //节点,用来存放数据:数据+下一个元素的引用 private class Node{ privat ...

  9. iptables防火墙配置

    iptables防火墙配置 一.防火墙简介 1.功能: 1)通过源端口,源IP地址,源MAC地址,包中特定标记和目标端口,IP,MAC来确定数据包是否可以通过防火墙 2)分割内网和外网[附带的路由器的 ...

  10. Review software requirements specification and create test scenarios (what to test for a certain functionality)

    1 srs2 what to test3 establish guidelines on how this deliverable is to be presented , the template4 ...