uboot移植
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语言入口)
- 调用一系列的初始化函数
指定初始函数表
配置可用的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移植的更多相关文章
- u-boot移植 II
下面是韦老师的uboot移植攻略: A. 开发板的相关拷贝与修改 1. 在board文件夹下面, 将原来的smdk2410复制为100ask24x0目录, 并将smdk2410.c改名为100ask2 ...
- 基于mini2440的uboot移植(一)
一.移植环境 虚拟机:ubuntu12.04 uboot源码:u-boot-2008.10.tar.bz2 交叉编译:arm-linux-gcc-4.4.3 简单的记录下编译uboot的过程,要想具体 ...
- u-boot移植总结(四)u-boot-2010.09框架分析
(一)本次移植是基于FL2440,板子的基本硬件: CPU 型号为S3C2440,基于ARM920T,指令集ARMV4,时钟主频400MHz SDRAM H57V2562GTR-75C 2片*32MB ...
- 【转】uboot移植(一)BootLoader基本概念
原文网址:http://blog.chinaunix.net/uid-25445243-id-3869348.html 一.BootLoader简介1.1.嵌入式Linux软件结构与分布 在一般情况下 ...
- U-BOOT 移植到友善之臂mini2440
U-BOOT 移植到友善之臂mini2440 开发环境:ubuntu 10.10 编译器:友善之臂mini2440光盘自带arm-linux-gcc 4.4.3 一. 在denx官网下载源码,我所用版 ...
- X-007 FriendlyARM tiny4412 u-boot移植之内存初始化
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- X-004 FriendlyARM tiny4412 uboot移植之点亮指路灯
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件
X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件 <<<<<<<<<<<<<< ...
- tiny4412 --Uboot移植(5) DDR3内存
开发环境:win10 64位 + VMware12 + Ubuntu14.04 32位 工具链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-g ...
- uboot移植阶段二--3串口终结篇
2011-03-20 23:00:37 前天U-boot移植串口后,能成功显示数据. 今天的主要目的是再次进行U-boot移植.看是否成功.花了40分钟,很顺利. 接着就是要把之前有问题的U-boot ...
随机推荐
- 研究C语言的新型编译环境TCC
C语言综合研究1 搭建一个tcc环境 研究过程: 问题引出:为什么要使用tcc环境,甚至连图形界面都没有,为什么要使用这样的化境? 按照我们学习的本质来讲,可能是为了体验C语言底层的相关特性,但是在研 ...
- M2阶段团队贡献分
根据任务完成情况与之前的评分标准,我们给组员分数如下: 团队成员 最终得分 程刚 51 李睿琦 53 刘丽萍 50 刘宇帆 48 王力民 47 马佐霖 49 左少辉 52
- 《Linux内核分析》第七周笔记 可执行程序的装载
20135132陈雨鑫 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...
- java注解的简单介绍
什么是注解 1.注解就是Annontation,Annontation是Java5开始引入的新特征,中文名称叫做注解,它提供了一种安全的类似注释的机制,可以起到减少配置的成果,给程序起到辅助性的作用 ...
- Distances to Zero CodeForces - 803B (二分)
题目链接:https://vjudge.net/problem/CodeForces-803B#author=0 题意: 给你一个数组,其中至少包括一个0,求每一个元素距离最近一个0的距离是多少. 样 ...
- 软件工程(GZSD2015) 第三次作业提交进度
第三次作业题目请查看这里:软件工程(GZSD2015)第三次作业 开始进入第三次作业提交进度记录中,童鞋们,虚位以待哈... 2015年4月19号 徐镇.尚清丽,C语言 2015年4月21号 毛涛.徐 ...
- Why yarn
http://www.cnblogs.com/LeftNotEasy/archive/2012/02/18/why-yarn.html https://www.ibm.com/developerwor ...
- CentOS virt-manager 安装Win2008r2的一种GUI方法
1. 必须在物理机上面安装CentOS机器. 安装方法上一个blog里面简单写过. 注意一点,重复安装时 总是提示no disk found 我的解决办法使用 windows 安装盘 格式化了下磁盘重 ...
- [书摘]HTTPS--From图解HTTP
1. HTTP存在的安全性风险: 1) 通信过程使用明文,容易被窃听 2) 不验证通信方的身份,可能遭遇伪装 3) 不验证通信数据包的完整性,可能遭遇篡改 2. HTTP+加密+认证+完整性保护=H ...
- BFC——块级格式化上下文
BFC(块级格式化上下文) 一.BFC是什么? 从样式上看,具有BFC的容器和普通的容器没有区别.从功能上看,具有BFC的容器可以看作是隔离了的容器,容器里面的元素不会影响到外面的元素,并且BFC具有 ...