True FFS内核编程(简单笔记)
True FFS内核编程(简单笔记)
2006-08-22 19:22
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);
}
问题:这里保留的长度为0x80000l,为什么说是0.5M,不止啊?
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/"
True FFS内核编程(简单笔记)相关推荐
- [linux内核][LINUX内核编程]学习笔记(一)
linux内核使用bitmap相关 1,声明一个bitmap数组,可以表示100个bit,数组名字是bitmap [cpp] view plaincopy DECLARE_BITMAP(bitmap ...
- Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础
Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...
- 寒江独钓windows 内核安全编程学习笔记
寒江独钓windows 内核安全编程学习笔记 本博客记录自己的学习过程,如有侵犯或者打扰请告知. 由于项目的需求,第一次接触到驱动程序.开始学习了寒江大神的的内核安全编程.小白一个,第一章就遇到了问题 ...
- 2、从汇编语言到Windows内核编程笔记(2)
内核线程 在驱动中生成的线程一般是系统线程.系统线程所在的进程名为"System". NTSTATUS PsCreateSystemThread( OUT PHANDLE Thre ...
- 重载内核全程分析笔记
标 题: [原创]重载内核全程分析笔记 作 者: Speeday 时 间: 2013-08-20,20:19:46 链 接: http://bbs.pediy.com/showthread.php?t ...
- Spark编程指南笔记
Spark编程指南笔记 标签: spark 编程 笔记 | 发表时间:2015-02-02 16:00 | 作者: 分享到: 出处:http://blog.javachen.com/rss.xml 本 ...
- Win64 驱动内核编程-8.内核里的其他常用
内核里的其他常用 1.遍历链表.内核里有很多数据结构,但它们并不是孤立的,内核使用双向链表把它们像糖 葫芦一样给串了起来.所以遍历双向链表能获得很多重要的内核数据.举个简单的例子,驱 动对象 Driv ...
- Win64 驱动内核编程-3.内核里使用内存
内核里使用内存 内存使用,无非就是申请.复制.设置.释放.在 C 语言里,它们对应的函数是:malloc.memcpy.memset.free:在内核编程里,他们分别对应 ExAllocatePool ...
- Linux与C++11多线程编程(学习笔记)
多线程编程与资源同步 在Windows下,主线程退出后,子线程也会被关闭; 在Linux下,主线程退出后,系统不会关闭子线程,这样就产生了僵尸进程 3.2.1创建线程 Linux 线程的创建 #inc ...
最新文章
- 关于第十六届全国大学生智能汽车竞赛总决赛的规则建议
- 数据分析方法有哪些?
- 计算机组成原理第6章-总线
- python算法与数据结构-希尔排序算法(35)
- Docker学习笔记
- 洛谷 P2762 太空飞行计划问题
- python 旅游_Python带你来一次说走就走的环球旅行
- Ext3文件读写流程概述
- 如何在 Mac 上查找和管理 Safari 下载?
- iOS开发初学者需要经常去的论坛或网站
- xshell 6安装教程
- 计算机软件免税,软件产品的增值税优惠有哪些?
- 最小二乘法曲线拟合(代码环境:matlab)
- 常用的接口测试工具有哪些?
- CN2专线和普通国际对比优势在哪里 有什么优势
- 基于杂化材料银-氨基硅烷氧化石墨烯的化学战剂的电化学传感
- 配置域名解析以及Nginx反向代理
- 极客日报:贾跃亭回应是否有回国打算:那必须的;顺丰将拿出 2 亿元给快递员加薪;OpenAI 宣布解散机器人团队
- 教你怎么把视频转换成gif动图
- 抖音直播间挂人气协议工具
热门文章
- 如何在CAD中完成直线箭头的绘制?
- layer-v2.4弹层组件使用示例
- python匿名函数里用if_python匿名函数 高阶函数 内置函数 文件操作
- java md5签名算法_MD5请求签名规则
- UNITY3D 动作游戏开发教程《怪物猎人》
- Unity3D中第三人称视角的镜头跟随和目标锁定
- 电子采购订单与手动采购订单有什么区别?
- android商城首页demo,FanZhengxi
- 【解决方案】三星T5移动硬盘连接mac pro提示“已断开连接”
- 经典错误:symbol(s) not found for architecture x86_64 || Undefined symbols for architecture x86_64: