这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [原创]将boot flash的空闲部分作为文件系统

共1条 1/1 1 跳转至

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

菜鸟
2003-10-24 19:10:04     打赏
续前“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    

共1条 1/1 1 跳转至

回复

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