无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 2699|回复: 6
打印 上一主题 下一主题

尝试开个U盘固件学习讨论帖(征集同好+回应Victor888版主)

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-26 10:25:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谈些个人感受,抛砖引玉。

在处理USB BOOT过程中,或多或少地要牵扯到U盘固件和
BIOS USB更深层次、内部处理方面的内容。典型的例子:

一、fbinst在开发过程中,bean大曾提问过能否应用到CD上;
二、Victor888版主曾设想U盘量产工具能否提供写保护软开关,以
方便地更新fbinst等启动盘内容,并在时空感叹论坛缺少这方面的
人才。

-------------------------------------------------------------
最近2年,我一直在网上搜集U盘固件开发和BIOS源码方面的资料。
目的倒不是能掌握、能开发(我没那个专业水平),而是想扩大知识面,
了解感兴趣的知识点,知其所以然。现在看来,内容非常难,但在追寻
过程中,还是有重要收获。

BIOS USB方面的内容,很长一段时间里还有用,但由于EFI的出现,前途
已不是很光明了,所以兴趣有所减弱。而U盘固件方面的内容,则非常
值得学习,从中可以了解USB的许多东西。

评分

参与人数 1无忧币 +88 收起 理由
jjsfm + 88 精品文章

查看全部评分

2#
 楼主| 发表于 2010-1-26 10:26:00 | 只看该作者
回到最初的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 编辑 ]
回复

使用道具 举报

3#
 楼主| 发表于 2010-1-26 10:31:50 | 只看该作者
二、关于写保护软开关。

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;
回复

使用道具 举报

4#
发表于 2010-1-26 12:19:48 | 只看该作者
这个技术很好!
不同U盘的固件只可以用量产工具吧?但是不可以统一。
我得好好学习!
回复

使用道具 举报

5#
发表于 2010-2-4 20:13:36 | 只看该作者
非常有益的探讨,佩服楼主的钻研精神。
回复

使用道具 举报

6#
发表于 2010-2-4 20:23:42 | 只看该作者
占楼学习,对于量产啊,FBINST啊,只能用别人做好的。
回复

使用道具 举报

7#
发表于 2010-2-6 02:21:44 | 只看该作者
这个好,菜鸟可以学习到更多东西,支持!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-21 22:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表