随笔分类 - uboot
摘要:说明:本文转载自:http://blog.csdn.net/gooogleman/article/details/17238079作者:gooogleman 日期:2013.11.27 最近,发现4412 和S5PV210的一些iNand/TF启动方式有些不同,4412 ...
阅读全文
摘要:关于NAND flash的MTD分区与uboot中分区的理解原文:http://blog.csdn.net/yjp19871013/article/details/6933455分类:ARM/Linux2011-11-03 20:092784人阅读评论(0)收藏举报flashstruct化工linux终端存储 今天做内核移植,准备添加NAND flash的驱动,做到MTD分区时,想起在一本书上看到的一句话,说的是分区时每个区之间没有间隙,前一个区的结束地址是后一个区的起始地址。可是当我看我的开发板的教程时,分区如下:static struct mtd_partition smdk_defaul
阅读全文
摘要:1.uboot启动内核的代码缩减如下:s = getenv ("bootcmd");debug ("### main_loop: bootcmd=\"%s\"\n", s ? s : "<UNDEFINED>");if (bootdelay >= 0 && s && !abortboot (bootdelay)){run_command (s, 0);}2.假设bootcmd = nand read.jffs2 0x30007FC0 kernel; bootm 0x
阅读全文
摘要:原文出处:http://blog.sina.com.cn/s/blog_54f82cc2010125um.htmluboot命令添加过程U-Boot的命令为用户提供了交互功能,并且已经实现了几十个常用的命令。如果开发板需要很特殊的操作,可以添加新的U-Boot命令。U-Boot的每一个命令都是通过U_Boot_CMD宏定义的。这个宏在<include/command.h>头文件中定义#ifdefCFG_LONGHELP#defineU_BOOT_CMD(name,maxargs,rep,cmd,usage,help)\cmd_tbl_t__u_boot_cmd_##nameStru
阅读全文
摘要:在编译内核的时候,一般直接使用makeuImage是不可以的,会出现时一下错误UIMAGEarch/arm/boot/uImage"mkimage"commandnotfound-U-BootimageswillnotbebuiltImagearch/arm/boot/uImageisready很容易理解没有mkimage,不能生成uImage,下面来讲一下mkimage。使用makeuImage编译生成的内核能由uboot引导,编译时会用到mkimage工具,出现这种错误是因为编译器无法找到mkimage工具,该工具在uboot/tools目录下,以下两种方法可以解决问题
阅读全文
摘要:mkimage制作linux内核映像 即uImage是怎么制作的2012-08-26 17:11:35分类:Delphibootm命令是用来引导经过u-boot的工具mkimage打包后的kernel image的,什么叫做经过u-boot的工具mkimage打包后的kernel image,这个就要看mkimage的代码,看看它做了些什么,虽然我很希望大家不要偷懒,认真地去看看,但是我知道还是有很多人懒得去做这件,那么我就j将分析mkimage代码后得到的总结告诉大家,mkimage做了些什么,怎么用这个工具。mkimage的用法uboot源代码的tools/目录下有mkimage工具,这个
阅读全文
摘要:由于NandFlash硬件升级比较快,公司去年一直在使用三星的K9GAG08U0D,现在MLC NandFlash 升级到了第二代,K9GAG08U0D 很快就会处在停产的状态,未雨绸缪,公司选型了K9GAG08U0E 来替代原有的NandFlash芯片。起初。本以为把新Nandflash ID信息增加到Uboot 和 Linux内核的NandFlash ID 列表文件中即可,也就是Uboot 和Linux源码中的nand_ids.c 文件中,但是仔细看了K9GAG08U0E 的DataSheet,发现自己的想法错了。下面记录了NandFlash更换时面临的几个问题,及解决方法:第一个问题:I
阅读全文
摘要:首先在这里我需要感谢两个人,一个是liukun,一个是2012shiyi这两个人的功劳,因为他们给了一些引导.在nand启动着一步,我卡了蛮久,今天才成功启动.版本说明:linaro_uboot_4.17_nandboot_v5.1.tar.gz是本人根据liukun和网上2012shiyi的资料研究处理的,目前这个版本能成功支持从sd和从mlc的nand flash启动。编写人:lihaiping时间:2013-4-17我移植的时候,将板子名字改为了ydzx210.没有再要tiny210V2的称呼,但我的板子是最新的tiny210板子.功能说明:能实现网卡DM9000的功能能对sd卡保存环境
阅读全文
摘要:Eboot中应用NandFlash分类:WINCE bootloader开发2010-11-17 17:071218人阅读评论(1)收藏举报flashdownload存储wincebyteinterface********************************LoongEmbedded********************************作者:LoongEmbedded(kandi)时间:2010.11.17类别:WINCE bootloader开发********************************LoongEmbedded******************
阅读全文
摘要:底层如何定位到oob的起始位置?中间有个细节,本来很简单清楚的,差点把自己搞晕了,那就是:对于写oob,到底底层是怎么传入参数使得定位到一个页的oob的起始位置的,然后再开始写oob数据的。结果就是,再nand_write_oob_std()中,发命令的时候,送的就是定位的起始地址:chip->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize, page);其中,mtd->writesize就是页内地址,此处就是一个页大小,比如2K,页结束地址=oob开始的位置,就可以定位到oob起始处了,后面就可以写oob数据了:chip->wr
阅读全文
摘要:NAND FLASH ECC校验原理与实现2008-01-25 14:57:27转自:http://blog.csdn.net/nhczp/archive/2007/07/20/1700031.aspxECC简介 由于NANDFlash的工艺不能保证NAND的MemoryArray在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。为了检测数据的可靠性,在应用NANDFlash的系统中一般都会采用一定的坏区管理策略,而管理坏区的前提是能比较可靠的进行坏区检测。 如果操作时序和电路稳定性不存在问题的话,NANDFlash出错的时候一般不会造成整个Block或是Pa...
阅读全文
摘要:NAND Flash ECC算法长度计算收藏NAND Flash中常用的纠错方式 因为闪存中会有出错的可能,如果没有使用ECC模块,读出的数据和写入的数据会有不匹配的可能,也许一个文件中只有一两个bit不匹配,这也是不能容忍 的。相对来说SLC中出错概率比较低,所以使用一个纠错能力不强的Hanming码就可以了,在MLC中Hanming码就显得力不从心了,需要纠错能力 更强的RS或者BCH纠错方式了。 BCH擅长处理随机错误,由于NAND Flash自身的特点,出现随机错误的概率更大一些,所以在MLC中目前应用最多的还是BCH方式。 ECC校验都需要在增加一些额外的空间来存放ECC效验码。所以
阅读全文
摘要:内核的nand flash驱动真可谓用“日新月异”来形容,今儿个刚写完的驱动,等到明天下个新内核放进去,又不好使了。这里讨论下struct nand_ecclayout,即nand 的ecc布局问题,基于2.6.32-rc2.该结构体定义如下:struct nand_ecclayout {uint32_t eccbytes; //表示使用几个ecc字节uint32_t eccpos[128]; //表示ecc占用的位置,因为现在大页面4kbyte也就128个,所以这里写了128, //以后有更大页面的,这里也要改了。uint32_t oobavail; ...
阅读全文
摘要:U-BOOT源码分析及移植本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网络功能。 这些认识源于自己移植u-boot过程中查找的资料和对源码的简单阅读。下面主要以smdk2410为分析对象。 一、u-boot工程的总体结构:1、源代码组织 对于ARM而言,主要的目录如下:board 平台依赖 存...
阅读全文
摘要:DECLARE_GLOBAL_DATA_PTR; 这个宏在include/global_data.h中#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")/* 声明一个寄存器变量gd占用r8。这个宏在所有需要引用全局数据指针gd_t *gd的源码中都有声明* 这个声明也避免编译器把r8分配给其他的变量,所以gd就是r8,这个指针变量不占用内存。*//* 定义gd为gd_t类型指针,存储在寄存器r8中 *//* register:表示变量对于执行速度非常重要,因此应该放在机器的寄存器中(寄存
阅读全文
摘要:原文出处:http://blog.csdn.net/sydjm/article/details/8591518-------------------------------------------------------------------------------------------------------------------------------------------我们知道,bootloader是系统上电后最初加载运行的代码。它提供了处理器上电复位后最开始需要执行的初始化代码。 在PC机上引导程序一般由BIOS开始执行,然后读取硬盘中位于MBR(Main Boot Reco
阅读全文
摘要:最近在分析u-boot的源代码,看到这一行:.balignl 16,0xdeadbeef不理解了,不知道为什么要这样写,0xdeadbeef,明显是个单词组,写在这里有何意义呢?然后在查阅了众多资料的时候才晃然大悟。下面我一步步来说明:首先要弄明白.balignl的意思,这个其实应该算是一个伪操作符,伪操作符的意思就是机器码里,并没有一个汇编指令与其对应,是编译器来实现其功能的。.balignl是.balign的变体,.balign是意思是,在以当前地址开始,地址计数器必须是以第一个参数为整数倍的地址为尾,在前面记录一个字节长度的信息,信息内容为第二个参数。.balign 8, 0xde它的意
阅读全文
摘要:自己写的bootloader可以引导kernel了,我以为曾经神秘的u-boot代码将变得毫无挑战,然事实表明u-boot作为优秀的开源代码,阅读起来还是很有挑战的,值得一读! 阅读碰到的头等问题:Makefile和shell脚本看不懂... 说起来做linux也很久了,Makefile和shell脚本都接触过,但真的都是略懂而已.因为公司的Makefile和shell简单的一眼望的对穿,很初级的写法,简单的应用.再随便在网上下个老外的开源代码,那个Makefile和shell复杂啊.一不留神想起来了qt的qmake根据工程文件生成的Makefile也是很简单,但qmake是人家老...
阅读全文
摘要:标题:u-boot中.lds连接脚本文件的分析2008-03-14 14:03:31对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。先看一下GNU官方网站上对.lds文件形式的完整描述:SECTIONS {...secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { contents } >region :phdr =fill...}secname和contents是必须的,其他的都是可选的。下面挑几个常用的看看:1、secname:
阅读全文