u-boot移植(三)使支持norflash
来源:互联网 发布:qq视频录制软件 编辑:程序博客网 时间:2024/05/22 23:07
将u-boot 2012.04.01移植到JZ2440开发板
让u-boot支持自己的开发板比较简单,因为norflash的接口跟内存很相似,我们不需要自己实现NORFLASH的操作集,u-boot中含有norfalsh的操作集
我们要做的工作就是根据自己开发板上的norflash的特性,在u-boot的norflash的匹配表中加入自己的norflash的数据u-boot中 board_init_r函数中的flash_init用来对norflash进行初始化,这个函数在u-boot中位置参见http://blog.csdn.net/r21nn/article/details/73718514
如下代码分别用新老两种方法检测norflash,如果用旧的方法检测失败,则使用新方法检测,如果就的方法检测成功,则不使用新方法
在移植时,我们使用旧方法检测到norflash,即新方法没有机会执行
if (!flash_detect_legacy(cfi_flash_bank_addr(i), i))flash_get_size(cfi_flash_bank_addr(i), i);flash_detect_legacy中有如下代码if (board_flash_get_legacy(base, banknum, info)) {if (!info->vendor) {int modes[] = {CFI_CMDSET_AMD_STANDARD,CFI_CMDSET_INTEL_STANDARD};int i;for (i = 0; i < sizeof(modes) / sizeof(modes[0]); i++) {info->vendor = modes[i];info->start[0] =(ulong)map_physmem(base, info->portwidth, MAP_NOCACHE);if (info->portwidth == FLASH_CFI_8BIT&& info->interface == FLASH_CFI_X8X16) {info->addr_unlock1 = 0x2AAA;info->addr_unlock2 = 0x5555;} else {info->addr_unlock1 = 0x5555;info->addr_unlock2 = 0x2AAA;}flash_read_jedec_ids(info); /*读取noflash的相关信息*/debug("JEDEC PROBE: ID %x %x %x\n",info->manufacturer_id,info->device_id,info->device_id2);if (jedec_flash_match(info, info->start[0])) /*将读取到的信息和u-boot中norflash的信息表匹配,看读取到的norflash是否被支持*/break;elseunmap_physmem((void *)info->start[0], MAP_NOCACHE);}}我们要做的工作就是,如果我们开发板的norflash信息在u-boot的jedec_table表里没有,那么我们应该添加一项,使得u-boot支持我们开发板上的u-boot
在jedec_table的末尾添加如下一项
{.mfr_id= (u16)MX_MANUFACT, /*厂家ID*/.dev_id= 0x2249, /*设备ID*/.name= "MXIC MX29LV160DB(NOR FLASH)", /*名字*/.uaddr= {[1] = MTD_UADDR_0x0555_0x02AA /* x16 */ /*解锁地址,16位的使用[1],8位的使用[0]*/},.DevSize= SIZE_2MiB, /*总大小*/.CmdSet= P_ID_AMD_STD, /*操作集*/.NumEraseRegions= 4, /*块的种类*/.regions= { /*如下4行为具体的4中块大小和个数*/ERASEINFO(16*1024, 1),ERASEINFO(8*1024, 2),ERASEINFO(32*1024, 1),ERASEINFO(64*1024, 31),}关于怎样填充上述部分的内容,我们要参考具体norflash的数据手册,并参考jedec_table的其他条项进行填写
MX29LV160DT/B数据手册中有如下内容
Sector Structure
- 16K-Byte x 1, 8K-Byte x 2, 32K-Byte x 1, 64K-Byte x 31
Notes:
1. Device ID : MX29LV160DT: 22C4; MX29LV160DB: 2249.
阅读全文
0 0
- u-boot移植(三)使支持norflash
- u-boot移植(五)添加norflash支持
- 移植u-boot-2012.04----支持NORFlash启动
- 06-S3C2440学习之移植2012u-boot到S3C2440(移植过程三)支持NorFlash
- U-boot移植-norflash
- 移植u-boot-2015.07-rc3之修改代码支持NorFlash启动并真正支持NorFlash读写(五)
- U-boot-2009.03移植之十四:支持norflash启动
- S3C2440 U-Boot移植--Norflash驱动支持- S29AL016
- U-boot-2009.03移植之十四:支持norflash启动
- u-boot-2016.01移植笔记之支持norflash
- 移植u-boot-2015.07-rc3之修改代码支持NorFlash(四)
- 移植u-boot-2009.08到mini2440(三) NorFlash设置
- [s3c2416x移植u-boot-2015.10]如何在u-boot工程中取消对NorFlash的支持
- U-boot-2009.08移植(三)支持Nor FLASH
- U-boot-2009.08移植(三)支持Nor FLASH
- u-boot-2014.04移植FL2440(norflash启动)
- U-boot移植(三)
- u-boot移植(三)
- python的requests库
- Java GUI学生成绩管理系统管理员权限之教师添加功能
- 警 告 System.Configuration.ConfigurationSettings.AppSettings" 已过时 , 解 决 办 法
- MySQL之——优化篇(重要)
- [Sklearn应用3] Preprocessing data (三)编码分类特征 Encoding categorical features
- u-boot移植(三)使支持norflash
- MBR 和 GPT分区的区别
- java-方法的重写以及方法重写和方法重载的区别
- Java 并发编程 四 协作
- json和jsonp
- 数组更新检测
- 草根学Python(四) Dict 和 Set
- 关于苹果手机显示像素处理
- 剑指offer——两个链表的第一个公共结点(给出的方法,都是针对有且只有一个公共节点的方法)