从事嵌入式 ARM开发已经快3年了,忙碌的工作让自己没能抽出时间好好的系统学习ARM开发。现在赶个闲季,钻研下广大嵌入式爱好者起步用的s3c6410开发板,希望也能凭借绵薄之力为嵌入式行业的XDJM们整理点资料,share 一下自己的心得~~
1. Tiny 6410 刷机指南(自带的光盘里面也有,不过杯具的是这电脑竟然没有光驱,吐血中~~)
http://www.doc88.com/p-137418176161.html (旧版的刷机文档)
2012.08.08 最新版的刷机文档:
http://pan.baidu.com/disk/home#dir/path=%2FA
Tiny 6410 刷机竟然必须要用SDcard,改天买个卡托试试我那micro SDcard.
现在有个想法是直接把u-boot 修改下,在开机的时候看看能不能找个事件,然后出发uboot 进入USB 下载模式,这样就不用非得依赖友善的superboot 和SDcard了。(可恶的友善superboot 都不开源,争取自己研究下)。
2. Tiny6410 Android使用的rootfs 是rootfs_android-mlc2.ubi,了解一下UBIFS吧:
无排序区块图像文件系统(Unsorted Block Image File System, UBIFS)是用于固态硬盘存储设备上,并与LogFS相互竞争,作为JFFS2的后继文件系统之一。真正开始开发于2007年,并于2008年10月第一次加入稳定版本于Linux核心2.6.27版。
UBIFS最早在2006年由IBM与Nokia的工程师Thomas Gleixner,Artem Bityutskiy所设计,专门为了解决MTD(Memory Technology Device)设备所遇到的瓶颈。由于Nand Flash容量的暴涨,YAFFS等皆无法再去控制Nand Flash的空间。UBIFS通过子系统UBI处理与MTD device之间的动作。与JFFS2一样,UBIFS 建构于MTD device 之上,因而与一般的block device不兼容。
UBIFS在设计与性能上均较YAFFS2、JFFS2更适合MLC NAND FLASH。[1]例如:UBIFS 支持 write-back, 其写入的数据会被cache, 直到有必要写入时才写到flash, 大大地降低分散小区块数量并提高I/O效率。UBIFS UBIFS文件系统目录存储在flash上,UBIFS mount时不需要scan整个flash的数据来重新创建文件目录。支持on-the-flight压缩文件数据,而且可选择性压缩部份文件。另外UBIFS使用日志(journal),可减少对flash index的更新频率。
UBIFS 目前是 Nokia N900 智能手机上的默认文件系统。
3. MLC Nand 的介绍:
http://baike.baidu.com/view/9701101.htm
4. Bootloader
嵌入式的bootloader 一般分为两个阶段,
第一阶段,Stage 1的主要完成以下功能:
- 硬件设备初始化(CPU 内部的硬件)
- 为加载Stage2 的bootloader 准备 RAM 空间
- 拷贝 Stage bootloader 到RAM 空间中
- 设置好 堆栈
- 跳转到 stage2 的 C 入口点
- 初始化本阶段要使用的硬件设备(开发板级的硬件,比如串口,网卡之类的)
- 将内核镜像和根文件系统从flash上读到 RAM 中
- 调用内核