tiny210之bootloader
xie0812
这个作者很懒,什么都没留下…
展开
-
ARM 汇编指令集
ARM汇编指令集一、 跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转:Ⅰ.使用专门的跳转指令。Ⅱ.直接向程序计数器PC写入跳转地址值。通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调转载 2014-07-16 18:46:07 · 893 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(三)
这节我们换种方法分析,从重点开始,也把我们前面分析的关联起来。还记得README 吧,在 README 中 Software Configuration 一节有详细说明,README 告诉我们:要针对某个单板进行配置,需要执行:make NAME_config,其中 NAME 在 boards.cfg 中列出。S5PV210 和 S5PC100 都是 Cortex-A8 架构,比较类似,我以转载 2014-07-28 14:43:56 · 933 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND添加分区
这里的分区只是为了操作的方便。假设有个分区 kernel,其地址区间为 0x20000~0x320000,其大小为 0x300000在没有分区的情况下,对这块区间的操作如下:nand erase 20000 300000 擦除操作nand write 20000000 20000 300000 写操作nand read 20000000 20000 300000转载 2014-07-28 14:55:39 · 750 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND 启动
我们知道 s5pv210启动方式有很多种,sd卡和nand flash 启动就是其中的两种,前面我们实现的都是基于sd卡启动,这节我们开始实现从nand flash 启动: 从 NAND 启动 u-boot,需要 BL1 初始化 NAND 控制器,然后从 NAND 拷贝 BL2 到 DDR 内存。这里的BL1 即我们移植的 u-boot-spl.bin,BL2 即我们移植的 u-转载 2014-07-29 07:37:22 · 1158 阅读 · 3 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND 8位硬件ECC
这节我们实现nand的ecc,保存环境变量到nand flash 中。然后把我们之前的led灯烧写到nand flash 中,开机启动,在 tiny210.h 中定义宏 CONFIG_S5PV210_NAND_HWECC、CONFIG_SYS_NAND_ECCSIZE、CONFIG_SYS_NAND_ECCBYTESCONFIG_SYS_NAND_ECCSIZE 定义了消息长度转载 2014-07-29 07:33:38 · 1095 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——编译过程
关于 u-boot 中的命令的使用,大家可以百度“uboot 命令详解”,或者查看 u-boot 的帮助文档。 注意:所有修改或添加的代码都标注有“add by shl”或者“modied by shl” ,这样方便查看。 首先大致分析一下 u-boot 的代码走向,通过看链接脚本 u-boot-2014.04/arch/arm/cpu/u-boot.lds转载 2014-07-28 14:44:04 · 860 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot-spl.bin(核心初始化)
什么是SPL? SPL 的全称为 secondary program loader,我们知道,S5PV210 启动过程需要 BL1,BL2,其中 BL1 进行一些基本初始化(时钟、内存) ,加载BL2 到内存。U-boot 为此专门实现了 SPL 框架,看下面这幅图就清楚了: SPL即第 2 阶段程序加载器,即我们要实现的 BL1。 要支持 SPL, 我转载 2014-07-28 14:45:15 · 993 阅读 · 1 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot-spl.bin(时钟初始化)
前几节记录的都是一些准备知识。现在我们开始正在的移植了 。 首先我们解压下载好的u-boot源码,在 u-boot 的帮助文档 README 中有介绍如何添加自己的单板:1) 首先在顶层目录下的 boards.cfg 中添加自己的单板的硬件配置信息,但是我们拿到代码,先make distclean 一下。我们仿照 smdkc1002)转载 2014-07-28 14:45:49 · 971 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植开始
移植 u-boot-spl.bin,我们采用 SPL 方式,因此需要在单板配置文件 u-boot-2014.04/include/configs/tiny210.h 中添加宏: 我们可以进行如下操作,只编译 u-boot-spl.bin,这里没有在命令行指定交叉编译器,因为我已经在 Makefile 里添加了工具链: 但是编译出错,我们前转载 2014-07-28 14:44:46 · 881 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot.bin(内存布局)
这节我们完成内存的初始化: 我们在 u-boot-2014.04/board/samsung/tiny210/tiny210.c 中实现它, 由于这个函数只需要在 u-boot-spl.bin 中实现,而 u-boot.bin 不需要,同时 smdkv210.c中的其他函数只需要在 u-boot.bin 中实现,前面分析过,编译 u-boot-spl.bin 时,spl/Makefile 会导出一转载 2014-07-28 14:48:06 · 754 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot-spl.bin(内存初始化)
在这节,我们要完成u-boot-spl.bin移植,并且通过这个程序,拷贝我们自己写的一个led程序到内存,让led灯点亮,首先我们回顾一下u-boot-spl.bin的整个运行过程: 1. 运行 arch/arm/cpu/armv7/start.S 文件,设置异常向量表,关闭中断,设置处理器到svc模式,然后执行 cup转载 2014-07-28 14:46:25 · 1008 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——SPL
这里引入一个 Makefile 的知识点,GUN make 的执行过程分为两个阶段: 第一阶段:读取所有的 makefile 文件(包括“MAKIFILES”变量指定的、指示符“include”指定的、以及命令行选项“-f(--file)”指定的 makefile 文件),内建所有的变量、明确规则和隐含规则,并建立所有目标和依赖之间的依赖关系结构链表。 第二阶段转载 2014-07-28 14:44:33 · 991 阅读 · 1 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot-spl.bin(点亮led灯)
在前面我们已经成功的实现了u-boot-spl.bin 现在开始我们要移植重头戏: u-boot.bin了,同样开始之前我们先进行分析: 同样u-boot.bin 也是从 start.S 中的 reset 开始执行,执行一些 CPU 底层初始化,然后跳转到 crt0.S 中的_main函数。_main开始是设置堆栈,在u-boot-spl.bin中,因为比较小,我们默认用bl转载 2014-07-28 14:47:18 · 1386 阅读 · 0 评论 -
S5PV210--1---210启动方式和代码前16字节
按照三星《S5PV210_UM_REV1.1》手册上说明的启动流程为:S5PV210上电将从IROM(interal ROM)处执行固化的启动代码,它对时钟等初始化、对启动设备进行判断,并从启动设备中复制BL1(最大16KB)到IRAM(0xd002_0000处,其中0xd002_0010之前的16个字节储存的BL1的校验信息和BL1尺寸)中,并对BL1进行校验,校验OK转入BL1进行执行;首转载 2014-07-14 10:49:23 · 1375 阅读 · 0 评论 -
U-Boot移植——链接地址、运行地址、加载地址、存储地址
1 运行地址/链接地址 根据参考资料[1]的说明,运行地址和链接地址是等价的,只是两个不同的说法而已,指的是程序在SRAM、SDRAM中执行时的地址,就是执行这条指令时,PC应该等于这个地址,换句话说,PC等于这个地址时,这条指令应该保存在这个地址内[1]。 然而,根据参考资料[5]的分析,运行时地址与链接地址有时候是不一致的[6],例如U-Boot开始启动的其_start标号转载 2016-09-25 10:14:43 · 1304 阅读 · 0 评论 -
uboot的relocation原理详细分析
最近在一直在做uboot的移植工作,uboot中有很多值得学习的东西,之前总结过uboot的启动流程,但uboot一个非常核心的功能没有仔细研究,就是uboot的relocation功能。这几天研究下uboot的relocation功能,记录在此,跟大家共享。自己辛苦编辑,转载请注明出处,谢谢!所谓的relocation,就是重定位,uboot运行后会将自身代码拷贝到sdram转载 2016-09-25 11:28:00 · 584 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植网卡
tiny210 板载的网卡芯片是 DM9000A,接在 S5PV210 的 SROM 控制器的 BANK1 上:S5PV210 的 SROM 控制器支持 8/16 位 NOR Flash/PROM/SRAM 内存。分为 6 个 bank,每个 bank 寻址空间达 128MB。每个 bank 有一个片选信号 nGCS[5:0],用来选通外接的内存芯片。当发的地址在bank1转载 2014-07-28 14:54:10 · 977 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(二)
上节我们分析到第149-1390行,由于比较长,我们这节继续分析。这是一个条件语句,我们拆分分析:(第153-158行)[cpp] view plaincopyPHONY += all ifeq ($(KBUILD_EXTMOD),) _all: all else _all: modules endif转载 2014-07-28 14:43:04 · 721 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——前言
刚开始学嵌入式Linux,看到uboot时,对它产生了很强的兴趣,刚好手中有块tiny210的板子,很想尝试移植一下,之前也尝试过移植,但不成功,经过一段时间的学习,加上找到的一些参考资料,决定趁这个暑假尝试一下uboot的移植,于是想把中间的移植的过程记录下来,并想尽可能的详细,供以后参考,同时希望得到大家的指导,希望中间的错误大家能指出,共同进步: 很多 u-boot 的基础转载 2014-07-28 14:40:54 · 842 阅读 · 0 评论 -
s5pv210的汇编中断
开发环境:宿主机:原创 2014-07-18 14:21:48 · 1602 阅读 · 0 评论 -
(一)u-boot2013.01.01 for s5pv210:《Uboot简介》
转载请注明地址:http://blog.csdn.net/zsy2020314/article/details/9301437转载 2014-07-26 15:46:46 · 1079 阅读 · 0 评论 -
(三)u-boot2013.01.01 for s5pv210:《mkconfig分析》
转载地址:http://blog.csdn.net/zsy2020314/article/details/9312147[cpp] view plaincopy/* 和分析makefile一样,分析mkconfig同样注重句法分析 */ ############################################转载 2014-07-26 15:54:17 · 828 阅读 · 0 评论 -
(四)u-boot2013.01.01 for s5pv210:《mkconfig分析》
转载请注明地址:http://blog.csdn.net/zsy2020314/article/details/9312719 config.mk主要功能是配置单板信息和编译环境,将会被u-boot的makefile所调用,本文仍然侧重于句法分析。[cpp] view plaincopy####转载 2014-07-26 15:58:45 · 792 阅读 · 0 评论 -
(五)u-boot2013.01.01 for s5pv210:《移植前的准备及u-boot初编译》
转载请注明地址:http://blog.csdn.net/zsy2020314/article/details/9329051移植前的准备 移植前,要做的事情是搭建开发环境以及对U-boot源码的获取。首先说一下开发环境:1.此次U-boot移植的硬件平台是天嵌的TQ210开发板: CPU:板载核心是S5PV210(CortexA转载 2014-07-26 16:03:20 · 829 阅读 · 0 评论 -
(七)u-boot2013.01.01 for s5pv210:《u-boot启动流程》
转载请注明地址:http://blog.csdn.net/zsy2020314/article/details/98240351.关于启动流程1.1 启动阶段分为3个,bl0,bl1,bl2。下面只是就功能方面对它们做说明,实际设计的时候,也许会对其具体功能做出调整,也就是说,这几个阶段的划分是就功能而言的,不能看得太死。 bl0:出厂的时候就固化在irom中一段转载 2014-07-26 16:06:05 · 969 阅读 · 1 评论 -
(二)u-boot2013.01.01 for s5pv210:《Makefile分析》
当时写的时候看的是2012-10版本的,但是略对比了一遍和2013.01.01没什么改动,所以这不影响对2013.01.01版本的makefile的理解。本文比较侧重于语法句意的分析,框架性的原理网上已经有很多,makefile在变但原理始终不变,只要理解了其中一个版本,对于其他版本的理解来说就应该不存在问题了。[cpp] view plaincopy转载 2014-07-26 15:48:59 · 952 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(一)
刚开拿到u-boot源码,我首先想到看的是readme文件,但这个文件很长且我英文水平有限,只能大概的了解他的意思:介绍了 u-boot 的历史, 版本命名规则, 目录组织架构,软件配置,如何添加一个新的板子等。对于linux下的工程,编译配置的开始肯定是根目录下的makefile , 但对于makefile我也只是了解基本的知识,所以开始之前,我又去恶补了一下makfile相关的知识,下面的分析转载 2014-07-28 14:42:04 · 1097 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot.bin(修改显示信息)
我们平时在使用u-boot时 ,u-boot启动会打印一些基本信息,比如说cpu型号、内存大小、时钟等信息,我们这节实现这些信息。现在接着上节继续分析: 在设置堆栈指针之后,接着调用 board.c 中的 board_init_f 函数,给它传了一个参数 r0=0,事实上没有用到。这个函数使用到了一些全局变量,因此我们需要让 u-boot.bin 位于其链接地址,通过修改 tin转载 2014-07-28 14:50:42 · 868 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植NAND FLASH
这节我们开始移植nand flash:通过查看帮助文档 doc/README.nand,要支持 NAND,需要配置CONFIG_CMD_NAND我们修改 tiny210.h,把 CONFIG_CMD_ONENAND 屏蔽掉,同时加上CONFIG_CMD_NAND:编译出错 ,没有定义 CONFIG_SYS_MAX_NAND_DEVICE,最大 NAND 设备数,我们的板子只有转载 2014-07-28 14:55:00 · 823 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot.bin(打印串口控制台)
在之前我们移植的代码中,都没看到明显的效果,这节我们实现控制台的打印信息。在上节,我们看到调用 relocate_code 重定位。在 u-boot 的帮助文档 doc/README.arm-relocation 中对重定位有说明。u-boot 为了生成位置无关码,在链接时指定了-pie 选项,这个选项在 u-boot-2014.04/arch/arm/config.mk 中指定:转载 2014-07-28 14:51:48 · 851 阅读 · 0 评论 -
tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——命令补全和历史命令
我们知道 Linux 的 shell 支持按 Tab 键自动补全命令,以及历史命令。 使用非常方便,我们也想让 u-boot支持这些功能:让 u-boot shell 支持 tab、命令历史-jdzwl-ChinaUnix 博客”一文有说明,需要配置 2 个宏CONFIG_CMDLINE_EDITING 和 CONFIG_AUTO_COMPLETE,我们在 tiny210.h 中增加这 2转载 2014-07-28 14:53:12 · 728 阅读 · 0 评论 -
使用u-boot引导smart210提供的内核,卡在了“Starting kernel ...”
大家好,我问个问题,使用u-boot引导友善smart210提供的内核,卡在了“Starting kernel ...”。我百度了很久都没能解决。。。不知道大家有没有处理过这个问题的经验?谢谢!直接go zImage也不行。gcc:4.9.2u-boot:2014.07linux内核:3.0.8(config已配置好串口,使用superboot引导是可以打印的)boot转载 2016-09-27 17:26:36 · 2409 阅读 · 0 评论