TFFS格式化到创建成功过程
True FFS内核编程
1、格式化FLASH
即使FLASH没有和块设备驱动绑定,也可对其进行格式化。
tffsDevFormat (int tffsDriveNo, int formatArg);
typedef struct
{
tffsFormatParams formatParams;
unsigned formatFlags;
} tffsDevFormatParams;
2、创建Boot Image区域
2.1 创建Boot Image区域
创建Boot Image区域,通过在格式化flash,使TFFS段从某个偏移的位置开始。
tffsFormatParams
typedef struct {
long int bootImageLen; //保留给Boot Image空间大小
unsigned percentUse;
unsigned noOfSpareUnits;
unsigned long vmAddressingLimit;
int (*progressCallback)(int totalUnitsToFormat, int totalUnitsFormattedSoFar);
char * volumeLabel;
unsigned noOfFATcopies;
unsigned embeddedCISlength;
char * embeddedCIS;
} tffsFormatParams;
STATUS sysTffsFormat (void)
{
STATUS status;
tffsDevFormatParams params =
{
#define HALF_FORMAT /* lower 0.5MB for bootimage, upper 1.5MB for TFFS */
#ifdef HALF_FORMAT
{0x80000l, 99, 1, 0x10000l, NULL, {0,0,0,0}, NULL, 2, 0, NULL},
#else
{0x000000l, 99, 1, 0x10000l, NULL, {0,0,0,0}, NULL, 2, 0, NULL},
#endif /* HALF_FORMAT */
FTL_FORMAT_IF_NEEDED
};
/* we assume that the drive number 0 is RFA */
status = tffsDevFormat (0, (int)¶ms);
return (status);
}
2.2 写Boot Image到FLASH
采用函数tffsBootImagePut()实现,该函数依赖tffsRawio(),所以不能在TFFS卷装载以后使用。
TffsBootImagePut()能直接操作FLASH的任何区域。
函数定义:
STATUS tffsBootImagePut
(
int driveNo, /* TFFS drive number */
int offset, /* offset in the flash chip/card */
char * filename /* binary format of the bootimage */
)
3 mounting the driver
函数usrTffsConfig()把dosFile文件系统加载到TFFS Flash驱动上。
STATUS usrTffsConfig
(
int drive, /* drive number of TFFS */
int removable, /* 0 for nonremovable flash media */
char * fileName /* mount point */
)
STATUS usrTffsConfig ( int drive, int removable, char * fileName )
{
int dosFsCacheSizeDefault = 128 * 1024 ;
CBIO_DEV_ID pCbio;
BLK_DEV * pBlkDev;
char devName [BOOT_FILE_LEN];
if ((UINT)drive >= noOfDrives) {
printErr ("drive is out of range (0-%d)./n", noOfDrives - 1);
return (ERROR);
}
/* create a block device spanning entire disk (non-distructive!) */
if ((pBlkDev = tffsDevCreate (drive, removable)) == NULL) {
printErr ("tffsDevCreate failed./n");
return (ERROR);
}
/* split off boot device from boot file */
devSplit (fileName, devName);
/* initialize the block device as a dosFs device named */
/* Create e.g. 128 Kbytes disk cache */
if ( (pCbio = dcacheDevCreate( (CBIO_DEV_ID) pBlkDev, NULL,
dosFsCacheSizeDefault, devName)) == NULL )
return (ERROR);
if (dosFsDevCreate (devName, pCbio, 0, NONE) != OK)
return (ERROR);
return (OK);
}
4 TFFS SHELL命令
格式化flash,但保留Boot Image区域。
-> sysTffsFormat
加载RFA medium做为驱动0
-> usrTffsConfig 0,0,"/RFA/"
转自:http://m.blog.csdn.net/blog/da895/6033647
TFFS格式化到创建成功过程的更多相关文章
- 实验环境里新创建成功的web application却在浏览器中返回404错误
刚刚翻笔记翻到一些刚学SharePoint时候解决的一些很2的初级问题,本来是有些挣扎该不该把它们记录到这个blog里的?因为担心这些很初级的文章会拉低这个blog的逼格,但是我的哥们善意的提醒了我一 ...
- 创建成功的Python项目
创建成功的Python项目 前端开发工具技巧介绍—Sublime篇 SEO在网页制作中的应用 观察者模式 使用D3制作图表 英文原文:Create successful Python projects ...
- Fabric1.4源码解析:客户端创建通道过程
在使用Fabric创建通道的时候,通常我们执行一条命令完成,这篇文章就解析一下执行这条命令后Fabric源码中执行的流程. peer channel create -o orderer.example ...
- pthread_create线程创建的过程剖析
http://blog.csdn.net/wangyin159/article/details/47082125 在Linux环境下,pthread库提供的pthread_create()API函数, ...
- Delphi窗体创建释放过程及单元文件小结(转)
Delphi窗体创建释放过程及单元文件小结 Delphi中的窗体,有模式窗体与非模式窗体两种.两种窗体的调用方式不同,模式窗体使用ShowModal显示,非模式窗体使用Show显示.当显示模式窗体的时 ...
- 《Programming WPF》翻译 第8章 5.创建动画过程
原文:<Programming WPF>翻译 第8章 5.创建动画过程 所有在这章使用xaml举例说明的技术,都可以在代码中使用,正如你希望的.可是,代码可以使用动画在某种程度上不可能在x ...
- pthread_create线程创建的过程剖析(转)
概述 在Linux环境下,pthread库提供的pthread_create()API函数,用于创建一个线程.线程创建失败时,它可能会返回ENOMEM或EAGAIN.这篇文章主要讨论线程创建过程中碰到 ...
- 在git服务器上创建项目过程及遇到的问题
一: 登录git服务器,输入用户名,密码等 二: New Project 添加项目 设置组可见,项目名称等. 创建成功的项目可以看到该项目的clone地址,可以通过http,ssh两种方式来获取: 三 ...
- Spring容器的创建刷新过程
Spring容器的创建刷新过程 以AnnotionConfigApplicationContext为例,在new一个AnnotionConfigApplicationContext的时候,其构造函数内 ...
随机推荐
- mono for android学习过程系列教程(5)
这一讲主要需要了解的安卓UI元素是Spinner.这个元素类似我们 winform和webform里面的下拉选项. 首先我们先建立一个新的项目,命名为SpinnerExample. 然后在Layout ...
- 微软Visual Studio Code 0.8.0发布,新增多种主题
月30日,Build 开发者大会上,正式宣布了 Visual Studio Code 项目;并将其定义为:一个运行于 Mac OS X.Windows和 Linux 之上的,针对于编写现代 Web 和 ...
- Chrome 控制台不完全指南
Chrome的开发者工具已经强大到没朋友的地步了,特别是其功能丰富界面友好的console,使用得当可以有如下功效: 更高「逼格」更快「开发调试」更强「进阶级的Frontender」 Bug无处遁形「 ...
- ABP(现代ASP.NET样板开发框架)系列之12、ABP领域层——工作单元(Unit Of work)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之12.ABP领域层——工作单元(Unit Of work) ABP是“ASP.NET Boilerplate Pr ...
- .Net 面试题 3C(CTS,CLS,CLR)
1.CTS(Common Type System)通用类型系统 CTS不但实现了COM的变量兼容类型,而且还定义了通过用户自定义类型的方式来进行类型扩展.任何以.NET平台作为目标的语言必须建立它的数 ...
- Vue ES6 Jade Scss Webpack Gulp
一直以来非常庆幸曾经有翻过<代码大全2>:这使我崎岖编程之路少了很多不必要的坎坷.它在软件工艺的话题中有写到一篇:"首先是为人写程序,其次才是机器(Write Programs ...
- float---浮动带来的影响与清除浮动带来的影响方法----在路上(20)
使用float会带来哪些影响: 脱标:无行级块级之分: 相互贴靠:若想之间有空隙可用margin与padding: 顶边对齐: 文字环绕: 当使用float后,子标签脱离父标签,父标签就会失去高度,此 ...
- 计算机人物系列-Mauchly,Eckert,Goldstine
关键词:莫尔学院(Moore School),阿伯丁试验场(Aberdeen Proving Ground), 雷明顿兰德公司(Remington Rand Corporation), IBM院士(I ...
- ★Kali信息收集~★7.FPing :ip段扫描
参数: 使用方法: fping [选项] [目标...] -a显示是活着的目标 -A 显示目标地址 -b n 大量 ping 数据要发送,以字节为单位 (默认 56) -B f 将指数退避算法因子设置 ...
- 【译】Unity3D Shader 新手教程(6/6) —— 更好的卡通Shader
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 动机 如果你想了解以下几件事,我建议你阅读以下这篇教程: 想知道如何写一个multipass的toon shade ...