基于tiny210的barebox分析(一)

barebox是一个bootloader,虽然不如uboot那么出名,但是相对uboot风格上更像linux kernel,而且相对简单,更有利于我们对启动做一个详细深入的学习。

全文分析的barebox的版本是barebox-2014.05.0

编译

首先是下载并解压barebox-2014.05.0,

默认这个版本就对tiny210有不错的支持,我们只需要用下面这些命令就可以了

export ARCH=arm
export CROSS_COMPILE=/home/panzhenjie/tool/arm-2013.11/bin/arm-none-linux-gnueabi-
cp arch/arm/configs/friendlyarm_tiny210_defconfig .config
make

当然,CROSS_COMPILE需要更具你自己的环境配置,我使用的是codesourcery提用的编译工具。

生成的image有个叫barebox.bin,但是我们要烧写到sd卡里的却不是这个文件,而是barebox.s5p

原因是因为s5pv210这块芯片的rom code会对sd卡里的boot image有一个校验码的需求。

所以barebox.bin需要进行16个字节的校验码计算,然后添加在文件的最前端。

-rwxrwxr-x  1 panzhenjie panzhenjie  81892  6月  3 21:01 barebox.bin*
-rw-rw-r--  1 panzhenjie panzhenjie  81908  6月  3 21:01 barebox.s5p

从这里就可以看到,barebox.s5p有81908个字节,正好是81892+16

我们再用hexdump来确认下这一点

barebox.bin

0000000 0012 ea00 fffe eaff fffe eaff fffe eaff
0000010 fffe eaff fffe eaff fffe eaff fffe eaff
0000020 6162 6572 6f62 0078 0000 23e0 3fe8 0001
0000030 5555 5555 5555 5555 5555 5555 5555 5555
*
0000050 0013 ea00 e000 e04e f00e e1a0 c03c e59f

barebox.s5p

0000000 2000 0000 0000 0000 88c4 000d 0000 0000
0000010 0012 ea00 fffe eaff fffe eaff fffe eaff
0000020 fffe eaff fffe eaff fffe eaff fffe eaff
0000030 6162 6572 6f62 0078 0000 23e0 3fe8 0001
0000040 5555 5555 5555 5555 5555 5555 5555 5555
*
0000060 0013 ea00 e000 e04e f00e e1a0 c03c e59f

但是这16个字节的校验头到底是怎么生成书来的那?

这个就要先看下三星文档里的一张图片了

我们可以看到,其实这16个字节只有8个是有用的,另外8个是reserved 0

0000000 2000 0000 0000 0000 88c4 000d 0000 0000

我们再看一下刚才用hexdump生成的前16个字节,确实如文档所言。

BL1 size是0x00002000,CheckSum是0x000d88c4

s5pv210允许的BL1的最大大小是64K,因为barebox.bin是大于64K的,所以必须分两部启动。

这里0x2000=8K就是让rom code把8K的内容从sd卡加载到sram里,然后跳转到这些代码中去。

这一部分跑在sram中的代码需要配置好dram,然后把整个barebox加载到dram中,再跳转过去。

这样才能实现整个barebox的加载。

生成checksum的程序是scripts/s5p_cksum,原代码也在其中。

scripts/s5p_chsum.c line74

cksum = 0;
for (i = 16; i < bufsize; ++i)
	cksum += (uint32_t)buf[i];

其实这个checksum的算法很简单,就是把每个字节的值相加,然后保存起来。

运行

接下来我们用如下命令烧写barebox.s5p到sd卡里

sudo dd if=./barebox.s5p of=/dev/sdb bs=512 seek=1

至此,这张sd卡就可以顺利把tiny210启动起来了。

barebox 2014.05.0 #2 Tue Jun 3 21:47:34 CST 2014

Board: Friendlyarm tiny210
malloc space: 0x23a00000 -> 0x23dfffff (size 4 MiB)
refclk:    24000 kHz
apll:    1000000 kHz
mpll:     667000 kHz
hclk:     133400 kHz
pclk:      66700 kHz
Open /dev/env0 No such file or directory
no valid environment found on /dev/env0. Using default environment
running /env/bin/init...
/env/bin/init not found
barebox:/ 

基于tiny210的barebox分析(一)

时间: 2024-10-15 03:39:49

基于tiny210的barebox分析(一)的相关文章

基于tiny210的barebox分析(二)

代码分析 在上一篇文章中,我们已经对barebox的编译.烧写和运行有了一个大致的了解, 现在我们就要开始学习代码了. arch/arm/cpu/start.c line126 void __naked __section(.text_entry) start(void) { barebox_arm_head(); } 一般的bootloader都会以一个汇编文件作为起始,但是barebox没有这样. 这个c函数作为了整个iamge的入口,关键是__section(.text_entry)和ld

基于社交网络的情绪化分析II

基于社交网络的情绪化分析II By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 上一篇进行了微博数据的抓取,这一篇进行数据的处理介绍. 无意义微博的定义 观察发现微博中有很多的微博是用户参与某些活动而转发的微博,比如:"SmashHit,作者:MediocreAB.推荐!"http://t.cn/8Fkgg9k":"刚刚下载了豆丁文档:项目公司运营简报模板"http://t.cn/RPjFZKf&qu

基于社交网络的情绪化分析IV

基于社交网络的情绪化分析IV By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 前面进行了微博数据的抓取,简单的处理,相似度分析,后面两篇进行学校微博的情感分析. 微博情感分析 这里试图通过字典分析的方式计算学校微博的情感倾向,主要分为积极情感,消极情感,客观. 这里字典分析的情感分析和机器学习方式进行情感分析均参考rzcoding的博客,这里只是根据他的思路和代码改装成了微博的情感分析. 字典分析 字典分析的原理是,给定一句微博,判断这句

基于Qt的信号分析简单应用软件的设计

一.需求描述: 1.读取data.asc文件,分析其连续性: 2.绘制信号图像,并保存. 二.UI界面组成: 该应用的UI由以下几个控件组成: 3个PushButton:打开文件.图像保存.退出: 1个Combox:下拉框用于信号的选择: 1个Widget:用于确定绘图区域的坐标,并在Widget部件上绘制图像曲线. 3个Label:用于标注注释,及坐标轴 三.主要功能的实现 信号分析结果如下: 其中最主要的涉及信号数据的标准化处理,标准化处理计算公式: std=(当前信号值-此类信号的最小值)

基于社交网络的情绪化分析III

基于社交网络的情绪化分析III By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 前面进行了微博数据的抓取,简单的处理,这一篇进行学校微博的相似度分析. 微博相似度分析 这里试图计算任意两个学校之间的微博用词的相似度. 思路:首先对学校微博进行分词,遍历获取每个学校的高频用词词典,组建用词基向量,使用该基向量构建每个学校的用词向量,最后使用TF-IDF算法和余弦函数计算两个学校微博之间的相似度. 注:TF-IDF算法和余弦函数使用可以参照我

转:基于内容的视频分析与检索

摘要 文章简要介绍了从基于内容的视频分析与检索问题的提出到所涉及的关键技术以及目前研究状况,并简要介绍了现阶段在这方面的研究热点及以后要做的工作. 一.问题的提出: 互联网的出现给人类带来了很大的便利,特别是实现资源共享之后的互联网,但面对这浩如烟海的资源到底哪些是对自己有利用价值的呢?而90年代以来,多媒体技术和网络技术的突飞猛进,人们正快速的进入一个信息化社会.现代技术已能运用各种手段采集和生产大量各种类型的多媒体信息数据,出现了数字图书馆.数字博物馆.数字电影.可视电话.交互电视.会议电视

基于SQL的日志分析工具myselect

基本介绍 程序开发人员经常要分析程序日志,包括自己打印的日志及使用的其它软件打印的日志,如php,nginx日志等,linux环境下分析日志有一些内置命令可以使用,如grep,sort,uniq,awk等,其中最强大的是awk,是作为一门小巧的文本处理语言存在的,但由于它是一门语言,功能强大,但在命令行下使用并不那么方便,因为awk是面向计算而不是面向统计的.awk可以定义变量,可以进行计算,命令行下就是一个包含隐式for循环的语言. awk如果很长时间不用,它的一些语法就忘了,要分析线上日志时

VSTO学习笔记(七)基于WPF的Excel分析、转换小程序

原文:VSTO学习笔记(七)基于WPF的Excel分析.转换小程序 近期因为工作的需要,要批量处理Excel文件,于是写了一个小程序,来提升工作效率. 小程序的功能是对Excel进行一些分析.验证,然后进行转换. 概述 小程序主界面如下: 首先选择一个日期和类别,从命名上对待分析的Excel文件进行过滤.点击[浏览]选择待分析的Excel文件所在的目录, 程序中会获取所有子目录.然后点击[执行分析]就会按照左边CheckBox中的选择进行分析,分析结果显示在每一行中间.[修改配置]可以对分析规则

基于Tiny210开发板视频显示

基于Tiny210开发板视频显示 1.写基于V4L2编程 ========videodevice.h文件========= #ifndef VIDEODEVICE_H #define VIDEODEVICE_H #include <string.h> #include <stdlib.h> #include <errno.h> #include <fcntl.h> #include <sys/ioctl.h> #include <sys/m