无忧启动论坛
标题:
尝试开个U盘固件学习讨论帖(征集同好+回应Victor888版主)
[打印本页]
作者:
wuwuzz
时间:
2010-1-26 10:25
标题:
尝试开个U盘固件学习讨论帖(征集同好+回应Victor888版主)
谈些个人感受,抛砖引玉。
在处理USB BOOT过程中,或多或少地要牵扯到U盘固件和
BIOS USB更深层次、内部处理方面的内容。典型的例子:
一、fbinst在开发过程中,bean大曾提问过能否应用到CD上;
二、Victor888版主曾设想U盘量产工具能否提供写保护软开关,以
方便地更新fbinst等启动盘内容,并在时空感叹论坛缺少这方面的
人才。
-------------------------------------------------------------
最近2年,我一直在网上搜集U盘固件开发和BIOS源码方面的资料。
目的倒不是能掌握、能开发(我没那个专业水平),而是想扩大知识面,
了解感兴趣的知识点,知其所以然。现在看来,内容非常难,但在追寻
过程中,还是有重要收获。
BIOS USB方面的内容,很长一段时间里还有用,但由于EFI的出现,前途
已不是很光明了,所以兴趣有所减弱。而U盘固件方面的内容,则非常
值得学习,从中可以了解USB的许多东西。
作者:
wuwuzz
时间:
2010-1-26 10:26
回到最初的2个问题上来:
一、bean大的疑问,实际上牵扯到量产CD的实现原理。
写入ISO只是一个方面,而另一个重要方面是:U盘固件对主机端
发出的查询指令做出回应,把第1字节中的外设类型位设置为05h,
意思是设备类型为CD。示例源代码片段应该是这样的:
u8 Standard_Inquiry_Data[] =
{
0x05, //CD设备
0x80,
0x02,
0x02,
...(略)
// Vendor Identification
....(略)
// Product Identification
....(略)
// Product Revision Level
...(略)
};
[
本帖最后由 wuwuzz 于 2010-1-26 10:33 编辑
]
作者:
wuwuzz
时间:
2010-1-26 10:31
二、关于写保护软开关。
U盘固件对主机端发出的MODE指令做出回应,设置参数表头中
第4字节第8位的值。这个是写保护WP位,WP=0可写,WP=1写保护。
示例源代码片段应该是这样的:
typedef struct {
BYTE ModeDataLen;
BYTE MediumType;
unsigned Resv:4;
unsigned DPOFUA:1;
unsigned notused:2;
unsigned WP:1; //WP位
BYTE BlockDscLen;
} tModeParamHdr;
作者:
天涯海角1216
时间:
2010-1-26 12:19
这个技术很好!
不同U盘的固件只可以用量产工具吧?但是不可以统一。
我得好好学习!
作者:
cjx2665
时间:
2010-2-4 20:13
非常有益的探讨,佩服楼主的钻研精神。
作者:
woshi_1001
时间:
2010-2-4 20:23
占楼学习,对于量产啊,FBINST啊,只能用别人做好的。
作者:
hualove
时间:
2010-2-6 02:21
这个好,菜鸟可以学习到更多东西,支持!
欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/)
Powered by Discuz! X3.3