u-boot-2011.03在TQ2440上的移植(3)--支持norflash启动 .
转自:http://blog.csdn.net/it_114/article/details/6264897 1、修改命令提示符为自己的 vi include/configs/smdk2440.h 第118行修改为 #define CONFIG_SYS_PROMPT?? "[SMDK2440]#"? //将命令行前的名字改成[SMDK2440] 2、通常,在嵌入式bootloader中,有两种方式来引导启动内核:从Nor Flash启动和从Nand Flash启动。u-boot中默认是从Nor Flash启动的。 3、TQ2440的所用的Norflash为EN29LV160AB。接线同AM29LV160DB 翻开此芯片的datasheet看到 TQ2440原理图上的第47脚 BYTE#是接高电平的,so 此芯片工作于16位模式(半字模式) <1>2048K * 8bit / 1024K * 16bit Flash Memory Boot Sector Flash Memory <2>Flexible Sector Architecture: -One 16-Kbyte,two 8-Kbyte,one 32-Kbyte,and thirty-one 64-Kbyte sectors(byte mode) -One 8-Kword, two 4-Kword,one 16-Kword,and thirty-one 32-Kword sectors(word mode) 无论哪种模式总扇区是 35 sectors。 4、修改Norflash参数 vi include/configs/smdk2440.h /*----------------------------------------------------------------------- #define CONFIG_SYS_MAX_FLASH_BANKS 1? /* max number of memory banks */ #ifdef CONFIG_AMD_LV800 //第175行添加如下内容 #define CONFIG_EON_29LV160AB???? 1??????? //添加TQ2440开发板Nor Flash设置 5、添加Norflash的information vi include/flash.h ?
第181行添加 ? #define EON_ID_LV160AB?? 0x22492249 6、修改norflash的驱动,在u-boot中对Nor Flash的操作分别有初始化、擦除和写入,所以我们主要修改与硬件密切相关的三个函数flash_init、flash_erase、write_hword。 vi board/samsung/smdk2440/flash.c 由-One 8-Kword,two 4-Kword,one 16-Kword,and thirty-one 32-Kword sectors(word mode) 可知主要扇区大小为32k,so修改第31行 #define MAIN_SECT_SIZE???? 0x8000? //定义为32k,主要扇区的大小 #define MEM_FLASH_ADDR1? (*(volatile u16 *)(CONFIG_SYS_FLASH_BASE + (0x00000555 << 1))) 由于我们是把norflash连接到了s3c2440的bank0上,因此norflash中的地址相对于s3c2440来说基址为0x00000000,即CONFIG_SYS_FLASH_BASE? = 0。 由数据手册可知EN29LV160AB第0扇区大小为8K,第1、2为4K,第3为16K,后面31扇区为32K。前面4个扇区加起来刚好是主要扇区的大小 = 32K,所以修改87行下如下 for (j = 0; j < flash_info[i].sector_count; j++) ????? /* 2nd and 3rd are both 4 KB */ ???? /* 4th?16 KB */ ? 修改flash_print_info,添加EN29LV160AB相关信息如下: switch (info->flash_id & FLASH_VENDMASK) { ?switch (info->flash_id & FLASH_TYPEMASK) { ?default: 修改int flash_erase (flash_info_t * info,int s_first,int s_last) if ((info->flash_id & FLASH_VENDMASK) != 7、至此,uboot关于Norflash已经移植好 make distclean make smdk2440_config make即可生成u-boot.bin 下载到板子的Norflash,在命令台输入saveenv即可 [SMDK2440]# saveenv Saving Environment to Flash... Un-Protected 2 sectors Erasing Flash...Erasing sector 19 ... ok. Erasing sector 20 ... ok. Erased 2 sectors Writing to Flash... done Protected 2 sectors [SMDK2440]# flinfo
? Size: 2 MB in 35 Sectors ? Sector Start Addresses: ??? 00000000 (RO) 00002000 (RO) 00003000 (RO) 00004000 (RO) 00008000 (RO) ??? 00010000 (RO) 00018000 (RO) 00020000????? 00028000????? 00030000???? ??? 00038000????? 00040000????? 00048000????? 00050000????? 00058000???? ??? 00060000????? 00068000????? 00070000????? 00078000????? 00080000???? ??? 00088000????? 00090000????? 00098000????? 000A0000????? 000A8000???? ??? 000B0000????? 000B8000????? 000C0000????? 000C8000????? 000D0000???? ??? 000D8000????? 000E0000????? 000E8000????? 000F0000????? 000F8000???? [SMDK2440]# /* (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |