OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [原创]将boot flash的空闲部分作为文件系统

共7条 1/1 1 跳转至

[原创]将boot flash的空闲部分作为文件系统

菜鸟
2003-10-24 19:10:00    评分
续前“MFC5272_BOOTROM开发笔记” http://bbs.edw.com.cn/dispbbs.asp?BoardID=3&ID=4733&replyID=16772&skin=1 /*------------------------------------------------------------------------ Purpose: 将boot flash的空闲部分作为文件系统 ------------------------------------------------------------------------*/ bootFlash与第2片Flash型号相同,两者地址不能连续 bootflash起始地址为0xFFC00000,保留512k用于bootRom 剩余512*3K为文件系统,起始地址为0xFFC80000,大小为0x00180000,目录名称为"/data/" ftp登录时指定使用路径"/data/",缺省登录还是原tffs盘 ?不能挂结在原tffs的目录上,如"/tffs0/data/" bootConfig.c: 修改bootCmdLoop,添加类似的usrTffsConfig调用 printf ("Attaching to /data/... "); if (usrTffsConfig (1, 0, "/data/vxworks") == ERROR) printf ("usrTffsConfig failed.\n"); else printf ("done.\n"); vxworks程序初始化时添加相同调用。 sysTffs.c: 添加起始地址和大小宏定义 #define FLASH_BASE_ADRS (0xFFE10000) #define FLASH_SIZE (0x001F0000) #define FLASH_BOOT_ADRS (0xFFC80000) #define FLASH_BOOT_SIZE (0x00180000) 在sysTffsInit中增加一个socket注册: LOCAL void sysTffsInit (void) { rfaRegister (); rfaRegister (); } 根据注册先后区分socket,利用noOfDrives和FLSocket的serialNo,修改rfaRegister: vol.serialNo = noOfDrives; if (noOfDrives == 0) vol.window.baseAddress = FLASH_BASE_ADRS >> 12; else if(noOfDrives == 1) vol.window.baseAddress = FLASH_BOOT_ADRS >> 12; noOfDrives++; 修改rfaSetWindow函数: if (vol.serialNo == 0){ vol.window.baseAddress = FLASH_BASE_ADRS >> 12; flSetWindowSize (&vol, FLASH_SIZE >> 12); } else if(vol.serialNo == 1){ vol.window.baseAddress = FLASH_BOOT_ADRS >> 12; flSetWindowSize (&vol, FLASH_BOOT_SIZE >> 12); } lv160mtd.c 添加起始地址和大小宏定义 增加一个地址映射回调函数,因为不能根据vol->socket->serialNo来分支判断 static void FAR0 * lv160MTDMap1(FLFlash *vol, CardAddress addr, int length) { UINT32 ret; /*???不能根据vol->socket->serialNo来分支判断*/ ret = FLASH_BOOT_ADRS + addr; return (void FAR0 *)ret; } 修改lv160MTDIdentify函数,根据vol.socket->serialNo分支: if (vol.socket->serialNo == 0){ flSetWindowSize(vol.socket, FLASH_SIZE>>12); vol.chipSize = FLASH_SIZE; vol.map = lv160MTDMap0; } else if(vol.socket->serialNo == 1){ flSetWindowSize(vol.socket, FLASH_BOOT_SIZE>>12); vol.chipSize = FLASH_BOOT_SIZE; vol.map = lv160MTDMap1; }



关键词: 原创     flash     空闲     部分     作为     文件     系统     F    

菜鸟
2006-03-07 18:50:00    评分
2楼
太强了[em02]

菜鸟
2006-03-07 19:38:00    评分
3楼

我怀疑是不是可以实现,因为我在实现的时候只能把2的n次幂大小m加载tffs,比如2,4,8m,而10m,11m等等就不能实现,而amine说512*3K为文件系统,我想知道具体还有什么地方要改的么?谢谢


菜鸟
2006-03-23 01:18:00    评分
4楼
太强了........

菜鸟
2006-06-24 07:25:00    评分
5楼
厉害的人!

菜鸟
2006-06-28 18:31:00    评分
6楼
强人,顶一下

菜鸟
2007-12-01 09:29:58    评分
7楼
请问你是怎么格式化这两个TFFS盘的?
用sysTffsFormat吗?参数多少?

共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]