u-boot-2012-07 for tiny210, 支持USB DNW, 支持YAFFS2烧写, 彻 yaffs2img
分类: Linux 2012-08-30 14:23 1637人阅读 评论(0) 收藏 举报
buffercstructlayoutandroidcmd
买tiny210开发板之前, 真不知道连u-boot也不是提供。
superboot虽好,但只提供二进制文件,且只能用SD卡烧写,太不爽了。 从QQ2440,到Tiny6410, 再到Tiny210,
感觉硬件越来越超值,可送的软件却越来越垃圾了。
痛定思痛,决定移植u-boot, 最早是在2011-12上面搞, 当时把USB DNW做好了(借用6410 usbd-otg-hs.c/.h,小改了几处实现),能烧写u-boot, kernel等二进制文件,
烧写yaffs2, 却启不来,... 因为项目忙,所以就搁置了
最近看到u-boot 2012-07发布,决定直接在最新版本的u-boot上去把心愿了却。
主要方法是: 对比superboot烧写后的OOB数据, IMG原始OOB数据,以及u-boot烧写后的OOB数据。
通过不断对比发现:
1. 要用友善的mkyaffs2image-128M, 因为它里面才包含了ECC layout相关数据。
2. nand_write_skip_bad的
if (!need_skip && !(flags & WITH_DROP_FFS)) {
rval = nand_write (nand, offset, length, buffer);
if (rval == 0)
return 0;
*length = 0;
printf ("NAND write to offset %llx failed %dn",
offset, rval);
return rval;
}
这段代码要屏蔽 (这段代码在有些情况下会导致OOB没有写入)
3. nand_do_write_ops函数的
if (likely(!oob))
memset(chip->oob_poi, 0xff, mtd->oobsize);
要把这个if判断拿掉 (经验证, 这个不是必须的)
4.OOB mode要改为MTD_OOB_PLACE。代码如下:
int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length,
u_char *buffer, int flags)
{
......
#ifdef CONFIG_CMD_NAND_YAFFS
if (flags & WITH_YAFFS_OOB) {
int page, pages;
size_t pagesize = nand->writesize;
size_t pagesize_oob = pagesize + nand->oobsize;
struct mtd_oob_ops ops;
ops.len = pagesize;
ops.ooblen = nand->oobsize;
ops.mode = MTD_OOB_PLACE; //MTD_OOB_AUTO;
ops.ooboffs = 0;
........
5. u-boot要关闭8bit hw ecc, 打开 CONFIG_NAND_4BIT_ECC。这个很关键
在tiny210.h文件中
#define CONFIG_NAND_4BIT_ECC 1
/*
#define CONFIG_NAND_BL1_8BIT_ECC
#define CONFIG_8BIT_HW_ECC_SLC 1
*/
6. 修改nand 驱动
int board_nand_init(struct nand_chip *nand)
{
.....
if (!type->pagesize) {
if (((nand->cellinfo >> 2) & 0x3) == 0) {
nand_type = S3C_NAND_TYPE_SLC;
nand->ecc.size = 512;
nand->ecc.bytes= 4;
.......
if ((1024 << (tmp & 0x3)) > 512) {
#if !defined(CONFIG_NAND_BL1_8BIT_ECC)
nand->ecc.read_page = s3c_nand_read_page_1bit;
nand->ecc.write_page = s3c_nand_write_page_1bit;
nand->ecc.read_oob = s3c_nand_read_oob_1bit;
nand->ecc.write_oob = s3c_nand_write_oob_1bit;
nand->ecc.layout = &s3c_nand_oob_64;
nand->ecc.hwctl = s3c_nand_enable_hwecc;
nand->ecc.calculate = s3c_nand_calculate_ecc;
nand->ecc.correct = s3c_nand_correct_data;
nand->options |= NAND_NO_SUBPAGE_WRITE;
#else
nand->ecc.read_page = s3c_nand_read_page_8bit;
nand->ecc.write_page = s3c_nand_write_page_8bit;
nand->ecc.read_oob = s3c_nand_read_oob_8bit;
nand->ecc.write_oob = s3c_nand_write_oob_8bit;
nand->ecc.layout = &s3c_nand_oob_64_8bit;
nand->ecc.hwctl = s3c_nand_enable_hwecc_8bit;
nand->ecc.calculate = s3c_nand_calculate_ecc_8bit;
nand->ecc.correct = s3c_nand_correct_data_8bit;
nand->ecc.size = 512;
nand->ecc.bytes = 13;
nand->options |= NAND_NO_SUBPAGE_WRITE;
#endif
....
7. kernel也要关闭8 bit hw ecc
差不多完成以上几步后, 用u-boot烧写rootfs_android.img就与superboot完全一致了。
android系统也就可以跑了。
8. 通过USB更新u-boot和内核镜像
目前该功能只在mini210上支持, 且只适用于更新SD卡中的u-boot镜像以及第一个FAT分区上的内核镜像, 镜像文件大小的最大限制为8MB。该功能目前只在Linux操作系统上验证过,欢迎各位在Windows下测试并反馈。
要使用这一功能,需要在PC Linux上安装dfu-util工具:
在Ubuntu 10.04或更新的版本上,可以通过"sudo apt-get install dfu-util"安装,其他发行版可以自行从源代码编译后安装使用,具体步骤参考http://dfu-util.gnumonks.org/build.html
使用步骤:
1. u-boot启动后,在命令行上输入"dfu mmc 0"
2. 用USB线将开发板的USB OTG端口与PC连接起来
3. 在PC上通过以下命令更新:
a. sudo dfu-util -a u-boot -R -D /path/to/u-boot.bin //更新u-boot镜像
b. sudo dfu-util -a uImage -R -D /path/to/uImage //更新内核镜像
4. 更新完成后,在u-boot命令行上用CRTL+C退出下载
更多阅读
养在水中的花发表于2012年4月19日东南早报“功夫早茶”栏目,旧 东南早报功夫早茶漫画
养在水中的花江月英用清水养花,是另外一种景致和心情。盈水则灵透,入花则妖娆。水中花摇曳,花浮水荡漾。清水净植,足矣宜人
phpnow支持discuz伪静态,phpnow如何伪静态? discuz伪静态规则
其实 PHPNOW本身是支持伪静态的需要在您建立好的虚拟主机目录建立一个文件名 .htaccess的文件文件内容如下:RewriteBase /RewriteEngine OnRewriteCond %{QUERY_STRING} ^(.*)$RewriteRule ^topic-(.+).html$portal.php?mod=topic&
2012.4上海音响展全报道7 SHURE旗舰耳机SRH1840,次旗舰1440开 shure srh1540
SHURE展示了两款最新旗舰耳机1840与1440。现场以MICROMEGA音源与音乐传真M1耳放驱动。前端音乐味没问题,因此1840耳机展现出宽松,热情的声音,当然前端素质有限,没有顶级的凝聚度,低频比较散,被现场展出的魔声耳机击败。无论乐感还是素质,都
u-boot-lds编译错误 uboot编译步骤
最近在参考网上的u-boot移植,自己进行了u-boot的移植,但最后发现很多错误,包括u-boot-lds错误:错误提示如下:/usr/local/arm/4.3.2/bin/arm-linux-ld:u-boot.lds:30:syntax errorma
2012.07.12 蜂蜜与四叶草(720P/15.8G/迅雷快传/已补全) 四叶草
如题所示。大小:15.8G分辨:1280*720概述:共11集全备注:地址如有任何问题劳烦告知,如即将过期而为续期也请告知一下。内含外挂字幕。