momo zone

调核人的blog

Monthly Archives: 八月 2010

不错的ACG music 电台

正值C78,animeNFO 广播了大量C78的曲子。 个人感觉这个电台的选曲确实很好,不会有太令人囧的曲目。内容涉及ACG,JPOP,LIVE  , 音质192Kbps 。不过速度很奇怪,用PSP竟然比PC 缓冲还要快。所以现在PSP 就躺在旁边…….



電台名稱
AnimeNfo Radio V2 :: Your BEST source for Anime and japanese music!
 
電台簡介
AnimeNfo Radio 是出自 AnimeNfo 這個網站的電台,AnimeNfo 創自2001年,為動漫的百科資料庫匯整了許多相關資訊與動漫迷一同分享交流,受歡迎的動漫排行可見 Top 200 Anime,電台的網路串流媒體服務始於2003年,2004年首次設置了電台網站 AnimeNfo radio,目前則是在2009年3月份推出的第二版﹙AnimeNfo Radio V2﹚,播放的音樂清一色都是日本流行﹙J-POP﹚或動漫歌曲﹙ACG﹚。
您可以使用 Winamp、Realplayer 或 VLC media player 等音樂播放軟體收聽,捷徑可參考這邊,若過多人數收聽造成無法連入可試不同的媒體串流網址,想知道最近播放的歌曲可參考
 
官方網站:
電台網站:
收聽捷徑:
播歌查詢:

C78 好物收集中

C78 资源收集中,这次令人印象深刻的东西真不少

首先是这张了,其中几首很不错

[茶太& CLOCK MUSIC Foreground Eclip]Panoram a Note




然后是这张(貌似是TAM的) [C78][Zephyr Cradle] Zephyr Violin Duo 
钢琴,小提琴,电子风…… 编曲又很强,这哪里是同人专辑啊,实在太强了!!

1.Gentle Jena -はじまりのおと-

钢琴一直都被誉为乐器中的王者,当清脆的音色在耳畔响起时就能够感觉到整个曲风的轻柔与动人,然而作为第一首歌,让我这个不讳乐理的人深深被震撼住的反而是随后而至的小提琴部分,那种迭起的绵延感,仿佛正如封面中一望无际的大海,看似平静却卷起阵阵让人心颤的波浪。
深夜听这样一首乐曲,没有人声,纯粹的纯音乐,在黑暗之中荡漾出一种迷离的舒缓,这是全篇乐章的前奏,短短的两分多钟,自此也就将我们带入了《Zephyr Violin Duo》的温暖。



2.My Soul, Your Beats! -Zephyr Violin Edition-

比起第一首,曲风有了很大的改变,一上来依旧是钢琴,但却和“平静”的感觉丝毫也扯不上关系。听到后面便能感觉到是实打实的华丽,像舞会的爵士乐一般能把心底潜藏的不羁都激发出来,给予心灵上的震撼。
能听到吗?在夜晚的沙滩上围着篝火跳起舞蹈,赤着脚旋转出兴奋与激昂,抛弃了世俗的华丽曲调一次又一次重复着,一次又一次叩响心的门扉。
然而一曲终了时,又恢复了低沉的钢琴,体现了在疯狂过后的温馨、安逸,不由得仔细回想刚刚所感觉到的一切是否为真实?长夜漫漫,欢声笑语,载歌载舞,直至天明。



3.新しき世界 -Unison of the Violization-

开头是有些宗教感的沉闷,在旋律逐渐步入主调,又不失自由的宽阔感。仿佛是独身一人前往欧洲迷宫般的城堡,被高大的十字架压抑的喘不过气来,然而脱离了银色主调的牢笼奔往城堡的顶端,又能看到另一番天地。是蓝天白云是沙鸥翔集,脱离了本身肃穆的气氛而展现出的一种别样风味,和之前的沉重比起来犹如少女的心思般细腻而又透明透亮,在主旋律下也有着一种震慑着聆听者的节奏感,伴随着架子鼓的敲响完美无缺地体现了出来。
听完整曲,我似乎感觉到了在沉穆的气氛中推开一扇窗所发现的令人惊喜的景象。



4.風を待った日 -little wish-

凭着蹩脚的日语连猜带蒙最后还是靠魔女姐姐帮忙翻译了标题:待风再起时 – 小小的祝福 -。不得不说,标题就首先吸引了过分少女心泛滥的笔者。
除了小提琴与钢琴的组合外,我还听到了八音盒的音色,虽然很少但明显能感觉到,从0:00到1:09都是清爽空灵的感觉,完全印证了标题中的等待,那种小心那种在意,那种静谧那种轻缓,但也正是从1:10开始,又进入一个全新的梦幻,不停敲击着的钢琴也好,一直占据着主要旋律的小提琴也罢,二者相结合,似乎有切合了祝福的字眼。整个曲子回归了第一首的风格,感觉像是坐在海边的少女在等待着什么,也许风只是一个象征罢了,等待、祝福与回忆,时而平静时而焦躁的内心,某一段音乐被用钢琴和小提琴循环重复着不断淡去,构成了天涯海角之处的风景画。


5.時の回廊 -summer horizon-

像个能让人沉溺于其中的牢笼。
走廊,时间,听不到的回声;视野,范围,看不到的夏天。
旋律中透露出沉静,但更多的,似乎是难以摆脱的沉闷与慌乱。鼓点宛如心跳,扑通扑通振个不停。不知为何,全曲都感觉到了忧伤与欲罢不能。
意犹未尽的结尾,在美艳而又高贵的画皮下结了一层薄膜,捅破后竟是回不去的过往以及现实的败破。



6.angel’s night -祭りの後-

连环的高音,然而曲子过了中部以后给我一中很沉稳很大气的感觉,如同第二首,小提琴所带来的感觉无疑是华丽的,弦的触动在丝毫不带空隙的各种音调的转换间热血起来,就算没有任何歌词的修饰,仅仅是通过标题也有各种各样的感触。
一首五分多的曲子听了很多遍,越来越觉得它和《My Soul, Your Beats! -Zephyr Violin Edition-》异常相似,都有种浓重的西洋舞会风格,都能感觉到潇洒与不羁,亢奋与高昂,激烈与急躁。



7.風の辿り着く場所 -day after tomorrow-

the day after tomorrow。后天。
令人舒心的曲调,风到达的地方。
听到了鸟鸣,感受到了风。
作为整张CD的末尾,长达六分钟的曲子在我看来有股《天空の花の都》的味道,开头与副歌部分的差别很大但完全不违和,将整张CD带给我们的震撼程度又推向一个高潮。一个恰到好处的首尾,让人听完7首曲子后回味无穷留下无限遐想。

曲目考据

1.Gentle Jena -はじまりのおと- 原曲是星之梦的MAIN THEME Gentle Jena
2.My Soul, Your Beats! -Zephyr Violin Edition- 原曲是Angel Beats!的OP My Soul, Your Beats!
3.新しき世界 -Unison of the Violization- 原曲是FF5的BGM新しき世界
4.風を待った日 -little wish- 原曲是KANON的BGM風を待った日
5.時の回廊 -summer horizon- 原曲是超时空之轮的BGM時の回廊
6.angel’s night -祭りの後- 这个…原曲应该是KONAMI DDR上E-ROTIC乐队的歌曲angel’s night
7.風の辿り着く場所 -day after tomorrow-原曲是KANON的ED風の辿り着く場所

其中1.2.4.7皆为KEY社 3.5是SE

同样都是非常治愈的曲子,不多作评价,每次CM不都是在等她的声音吗


sed 常见用法总结

sed 命令:

$ sed -e ‘exp’ /path/to/file
or
$ cat /path/to/file |sed -e ‘exp’
删除含有大写字母C的行:

$ sed -e '/C/d' /etc/services | more

 

将1-10 行的内容删除

$ sed -e '1,10d' /etc/services | more
将开头为#的行删除



$ sed -e '/^#/d' /etc/services | more
反向操作,显示匹配的部分并删除



$ sed -ne '/^#/p' /etc/services | more
 
打印从包含 "BEGIN" 的行开始,并且以包含 "END" 的行结束的文本块. BEGIN 和 END 都可以是规则表达式。
 注意:该模式总是匹配最长的一个,换句话说,END表达式将会尽量匹配靠后的一个。



$ sed -n -e '/BEGIN/,/END/p' /my/test/file | more
打印c源码中main函数:
sed -ne '/main *(/,/^}/p' ifenslave.c
sed -ne '/main[[:blank:]]'*(/,/^}/p' ifsenslave.c
 
每行第一个出现的foo被替换成bar 



$ sed -e 's/foo/bar/' myfile.txt
将整个文件中所有的foo替换成bar
$ sed -e 's/foo/bar/g' myfile.txt
 
将整个文件的第1-10 行的所有enchantment 替换成 entrapment



$ sed -e '1,10s/enchantment/entrapment/g' myfile2.txt

 


 
将整个文件中以空行为开头,以行首END的行为结尾区间内的hills 换成 mountains



$ sed -e '/^$/,/^END/s/hills/mountains/g' myfile3.txt

 
如果"/" 在要操作的替换操作中被文本用作他用,则可以在s 后面指定分隔符 :



$ sed -e 's:/usr/local:/usr:g' mylist.txt
这里:被用作分隔符
插入多个字段:



foo bar oni eeny meeny miny larry curly moe jimmy the weasel



插入后:

 

Victor foo bar oni eeny meeny miny larry curly moe jimmy-the Von weasel
执行的sed :



$ sed -e 's/(.*) (.*) (.*)/Victor 1-2 Von 3/' myfile.txt

 

详解:
1.首先把要插入的字段扩展成.* ,插入三个的话就是.*.*.* ,并且最后要用() 分隔 : (.*)(.*)(.*)
2.将要插入的字段写在替换字符区域, 变成 /(.*)(.*)(.*)/Victor - Von

 


3.最后将原来字符的用1 2 3 等等引用,并放在正确的位置:/(.*)(.*)(.*)/Victor 1-2 Von 3/
注意:(.*) 会尽量匹配长字段
 






 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 

 

字符类 描述
[:alnum:] 字母数字 [a-z A-Z 0-9]
[:alpha:] 字母 [a-z A-Z]
[:blank:] 空格或制表键
[:cntrl:] 任何控制字符
[:digit:] 数字 [0-9]
[:graph:] 任何可视字符(无空格)
[:lower:] 小写 [a-z]
[:print:] 非控制字符
[:punct:] 标点字符
[:space:] 空格
[:upper:] 大写 [A-Z]
[:xdigit:] 十六进制数字 [0-9 a-f A-F]
 


 







 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 


 

 

 

 

规则 表达式 描述
/./ 将与包含至少一个字符的任何行匹配
/../ 将与包含至少两个字符的任何行匹配
/^#/ 将与以 '#' 开始的任何行匹配
/^$/ 将与所有空行匹配
/}^/ 将与以 '}'(无空格)结束的任何行匹配
/} *^/ 将与以 '}' 后面跟有 或多个空格结束的任何行匹配
/[abc]/ 将与包含小写 'a'、'b' 或 'c' 的任何行匹配
/^[abc]/ 将与以 'a'、'b' 或 'c' 开始的任何行匹配
 

 


 

搞定sensors 温度和转速监控

之前就了解到sensors能够显示风扇转速和温度等信息,但执行的时候提示:

No sensors found!
Make sure you loaded all the kernel drivers you need.
Try sensors-detect to find out which these are.
这两天就研究了一下原因,最终搞定。
首先按照提示执行sensors-detect 检查系统已有的传感器。
sensors-detect
# sensors-detect revision 5818 (2010-01-18 17:22:07 +0100)
# System: System manufacturer System Product Name
# Board: ASUSTeK Computer INC. P5B-Deluxe

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you’re doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no): YES
Silicon Integrated Systems SIS5595…                       No
VIA VT82C686 Integrated Sensors…                          No
VIA VT8231 Integrated Sensors…                            No
AMD K8 thermal sensors…                                   No
AMD Family 10h thermal sensors…                           No
AMD Family 11h thermal sensors…                           No
Intel Core family thermal sensor…                         Success!
    (driver `coretemp’)
Intel Atom thermal sensor…                                No
Intel AMB FB-DIMM thermal sensor…                         No
VIA C7 thermal sensor…                                    No
VIA Nano thermal sensor…                                  No

Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no): YES
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor’…                   No
Trying family `SMSC’…                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek’…               Yes
Found `Winbond W83627DHG Super IO Sensors’                  Success!
    (address 0x290, driver `w83627ehf’)
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor’…                   No
Trying family `SMSC’…                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek’…               No
Trying family `ITE’…                                      No

Some systems (mainly servers) implement IPMI, a set of common interfaces
through which system health data may be retrieved, amongst other things.
We first try to get the information from SMBIOS. If we don’t find it
there, we have to read from arbitrary I/O ports to probe for such
interfaces. This is normally safe. Do you want to scan for IPMI
interfaces? (YES/no): YES
Probing for `IPMI BMC KCS’ at 0xca0…                      No
Probing for `IPMI BMC SMIC’ at 0xca8…                     No

Some hardware monitoring chips are accessible through the ISA I/O ports.
We have to write to arbitrary I/O ports to probe them. This is usually
safe though. Yes, you do have ISA I/O ports even if you do not have any
ISA slots! Do you want to scan the ISA I/O ports? (yes/NO): yes
Probing for `National Semiconductor LM78′ at 0x290…       No
Probing for `National Semiconductor LM79′ at 0x290…       No
Probing for `Winbond W83781D’ at 0x290…                   No
Probing for `Winbond W83782D’ at 0x290…                   No

Now follows a summary of the probes I have just done.
Just press ENTER to continue:

Driver `w83627ehf’:
  * ISA bus, address 0x290
    Chip `Winbond W83627DHG Super IO Sensors’ (confidence: 9)

Driver `coretemp’:
  * Chip `Intel Core family thermal sensor’ (confidence: 9)

最终检测到了intel core CPU的内部温度传感器,那么执行modprobe coretemp ,再执行sensors 就看到了温度显示。
那么还有

Winbond W83627DHG Super IO Sensors这个未知的东西,执行modprobe w83627ehf 提示:

insmod /lib/modules/2.6.31-6-generic/kernel/drivers/hwmon/w83627ehf.ko
FATAL: Error inserting w83627ehf (/lib/modules/2.6.31-6-generic/kernel/drivers/hwmon/w83627ehf.ko): Device or resource busy

dmesg :

[10910.136417] w83627ehf: Found W83627DHG chip at 0x290
[10910.136481] ACPI: I/O resource w83627ehf [0x295-0x296] conflicts with ACPI region HWRE [0x290-0x299]
[10910.136484] ACPI: Device needs an ACPI driver

好像是ACPI I/O 冲突, 只能google 一下了,结果发现同样问题的还真多(估计大部分都是asus的主板),解决方法是添加内核启动参数 acpi_enforce_resources=lax 

重启然后重新加载这个模块竟然显示出了风扇的转速和cpu电压了: 

coretemp-isa-0000
Adapter: ISA adapter
Core 0:      +66.0°C  (high = +84.0°C, crit = +100.0°C)

coretemp-isa-0001
Adapter: ISA adapter
Core 1:      +65.0°C  (high = +84.0°C, crit = +100.0°C)

w83627dhg-isa-0290
Adapter: ISA adapter
VCore:       +1.18 V  (min =  +0.00 V, max =  +1.74 V)
in1:        +12.25 V  (min =  +1.85 V, max =  +8.87 V)   ALARM
AVCC:        +3.23 V  (min =  +2.11 V, max =  +0.10 V)   ALARM
3VCC:        +3.23 V  (min =  +0.34 V, max =  +0.42 V)   ALARM
in4:         +1.68 V  (min =  +1.93 V, max =  +0.31 V)   ALARM
in5:         +1.56 V  (min =  +1.80 V, max =  +1.46 V)   ALARM
in6:         +5.25 V  (min =  +6.45 V, max =  +1.51 V)   ALARM
VSB:         +3.25 V  (min =  +2.27 V, max =  +1.38 V)   ALARM
VBAT:        +3.23 V  (min =  +1.25 V, max =  +2.34 V)   ALARM
Case Fan:   5720 RPM  (min = 15000 RPM, div = 2)  ALARM
CPU Fan:    1527 RPM  (min = 2205 RPM, div = 4)  ALARM
Aux Fan:       0 RPM  (min = 7031 RPM, div = 32)  ALARM
fan4:          0 RPM  (min = 4687 RPM, div = 32)  ALARM
fan5:       3792 RPM  (min = 3857 RPM, div = 2)  ALARM
Sys Temp:    +43.0°C  (high = +70.0°C, hyst = +87.0°C)  sensor = thermistor
CPU Temp:    +52.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = diode
AUX Temp:   +124.5°C  (high = +80.0°C, hyst = +75.0°C)  ALARM  sensor = thermistor

sensors 这个软件包中还包括另外两个比较重要的程序:
pwmconfig 检查系统各个测速风扇,并生成设定档 。
fancontrol 依据pwmconfig  生成的设定档控制个测速风扇的速度。3

这里有个文章可以参考 : http://wiki.archlinux.org/index.php/Fan_Speed_Control

麦咖啡竟然这么值钱 !!!

没想到intel竟然花这么大的价钱买下一个IT安全集成供应商,话说我对麦咖啡没什么好感,查杀毒一般,而且还总是给我发垃圾广告,不过我机房里一台硬件过滤墙写这大大的McAfee字样,也许它在企业领域比较强。




英特尔宣布将以78.6亿美元收购McAfee

据国外媒体今日报道,英特尔宣布将以每股48美元现金收购安全软件公司McAfee,此笔交易总值将达约78.6亿美元。该 收购价格超过McAfee周三收盘价29.93美元的60%。McAfee股价周四飙升58%,至47.42美元。

英特尔表示,该公司目前的安全服务不足以覆盖手机、电视、ATM以及其他可与网络连接设备的安全隐患。该收购将整合安全软件与硬件两项服务,从而大大加强个人用户、企业和政府设备、服务器以及网络的安全性。

英特尔注重安全性能、能源使用效率以及连接性的均衡发展。英特尔CEO保罗·欧德宁(Paul Otellini)称:“越来越多的设备允许与互联网连接,我们生活中的很多事情都将在网上完成。过去,能源使用效率和连接性是计算机性能的核心指标;而 将来,安全性将成为计算机性能的第三大决定因素。”

McAfee凭借其杀毒软件而出名,近期曾表示计划在手机市场加大投入,并宣布将收购手机安全公司tenCube。此前McAfee已收购手机安全软件商Trust Digital。

该收购还将帮助英特尔继续推进移动无线战略,确保用户设备互相连接之后的安全性。

收购完成后McAfee将作为英特尔的全资子公司,向英特尔软件与服务事业部(Software and Services Group)报告。

英特尔围绕软件业务展开了一系列收购,目标包括不同领域内的领先企业,例如此前的软件公司Wind River以及数字媒体服务商Havok等等。本周一,英特尔宣布将收购德州仪器电缆调制解调器业务,但未透露收购价格。

英特尔上月宣布第二季度业绩创下有史以来最佳,主要得益于其半导体业务的复苏。McAfee第二季度盈利上涨38%,一扫第一季度低迷业绩阴霾的预期。McAfee称北美市场销量出现大幅增长。

英特尔与McAfee董事会均全票同意收购交易,但交易仍需经过McAfee股东大会的通过以及相关部门的批准。英特尔预期该交易将对下一年利润有微弱影响,主要由于收购相关的费用支出,此后一年利润则不会受影响,并随之有望出现盈利。

linux 内核突飞猛进

今天编译了最新的kernel-2.6.35 ,突然发觉最近两年kernel的开发进程越来越快了,2.6.35 中默认打开了KMS (尽管我的R300显卡使用的radeon驱动和它有冲突), google带来了网络代码新特性:Receive Packet Steering (RPS) and Receive Flow Steering (RFS)。MAC80211 协议栈bug修复和特性补充。 

但杯具的是目前持续多个版本的针对realtek 8187 rate control问题仍然没有修复 。8187和intel 5350 连接AP 速度大幅上升,信号指示也比较准确了。R300显卡开源驱动radeon 可以运行google earth 了。
希望kernel-2.8 早日到来。

USB设备的自动检测

USB设备检测也是通过/proc目录下的USB文件系统进行的。为了使一个USB设备能够正常工作,必须要现在系统中插入USB桥接器模块。在检测开始时,一般要先检测是否存在/proc/bus/usb目录,若不存在则尝试插入USB桥接模块。

现在一般的USB桥接器模块有两种类型,UHCI和OHCI。在决定插入那一个桥接器模块时,可以察看/proc/pci文件来决定。打开此文件,您若发现USB节为 I/O at 0xHHHH格式(例如出现 I/O at 0xe000 [0xe01f]),HHHH为16进制数,则桥接器类型为UHCI。若是它为 32 bit memory at 0xHH000000形式(例如出现32 bit memory at 0xee000000),HH为16进制数,则桥接器类型为OHCI。但是若您的桥接器类型不满足上述任何一种情况,唯一的解决办法就是您尝试插入这两种模块,直到成功为止。一般而言,UHCI类型的桥接器它的插入模块是uhci或usb-uhci(由内核版本决定);而对于OHCI类型的桥接器它的插入模块是ohci或usb-ohci。

您在正确的插入了桥接器模块之后,这时/proc文件系统下就会出现USB设备目录,不过这时这个目录是空的,没有任何文件。这时您就必须挂接usbdevfs文件系统,然后通过此文件系统检测连接的设备。在成功挂接usb文件系统之后,就会生成文件/proc/bus/usb/devices,/proc/bus/usb/drivers和目录/proc/bus/usb/busNo。挂接usbdevfs文件您可以通过如下操作实现: 
mount -t usbdevfs none /proc/bus/usb 
或在/etc/fstab上加入 
none /proc/bus/usb usbdevfs defaults 0 0

然后通过/proc/bus/usb/devices文件的内容,您就可以获得连接的设备信息,包括设备标识和制造商标是等信息。

usb设备类型描述:

表5-1 usb设备类码

设备规范 设备类码 接口类码
应用程序特定 0xFE
声音接口 0x00 0x01
通信设备 0x02
CDC控制接口e 0x02
CDC数据接口 0x0A
HID 0x00 0x03
HUB 0x09 0x09
批量存储设备 0x00 0x08
监视器 same as HID same as HID
电源设备 same as HID same as HID
物理设备 0x05
打印机 0x07
供应商特定 0xFF

5.2 usb文件系统简介

T = 总线拓扑结构(Lev, Prnt, Port, Cnt, 
等),是指USB设备和主机之间的连接方式 
B = 带宽 (仅用于USB主控制器) 
D = 设备描述信息 
P = 产品标识信息 
S = 串描述符 
C = 配置描述信息 (* 表示活动配置) 
I = 接口描述信息 
E = 终端点描述信息

一般格式: 
d = 十进制数 
x = 十六进制数 
s = 字符串

拓扑信息

T:  Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=ddd MxCh=dd
|   |       |       |         |        |        |         |         |__最大子设备
|   |       |       |         |        |        |         |__设备速度(Mbps)
|   |       |       |         |        |        |__设备编号(相对于Bus)
|   |       |       |         |        |__这层的设备数
|   |       |       |         |__此设备的父连接器/端口
|   |       |       |__父设备号
|   |       |__此总线在拓扑结构中的层次
|   |__总线编号
|__拓扑信息标志

带宽信息

B:  Alloc=ddd/ddd us (xx%), #Int=ddd, #Iso=ddd
|   |                            |           |__同步请求编号
|   |                            |__中断请求号
|   |__分配给此总线的总带宽
|__带宽信息标志

设备描述信息和产品标识信息

D:  Ver=x.xx Cls=xx(s) Sub=xx Prot=xx MxPS=dd #Cfgs=dd
P:  Vendor=xxxx ProdID=xxxx Rev=xx.xx
D:  Ver=x.xx Cls=xx(sssss) Sub=xx Prot=xx MxPS=dd #Cfgs=dd
|   |          |               |        |        |        |__配置编号
|   |          |               |        |        |______缺省终端点的最大包尺寸 
|   |          |               |        |                   
|   |          |               |        |__设备协议
|   |          |               |__设备子类型
|   |          |__设备类型
|   |__设备USB版本
|__设备信息标志编号#1
P:  Vendor=xxxx ProdID=xxxx Rev=xx.xx
|   |             |              |__产品修订号
|   |             |__产品标识编码
|   |__制造商标识编码
|__设备信息标志编号#2

串描述信息

S:  Manufacturer=ssss
|   |__设备上读出的制造商信息
|__串描述信息
S:  Product=ssss
|   |__设备上读出的产品描述信息,对于USB主控制器此字段为"USB *HCI Root Hub"
|__串描述信息
S:  SerialNumber=ssss
|   |__设备上读出的序列号,对于USB主控制器它是一个生成的字符串,表示设备标识
|__串描述信息

配置描述信息

C:  #Ifs=dd Cfg#=dd Atr=xx MPwr=dddmA
|   |         |        |       |__最大电流(mA)
|   |         |        |__属性
|   |         |__配置编号
|   |__接口数
|__配置信息标志

接口描述信息(可为多个)

I:  If#=dd Alt=dd #EPs=dd Cls=xx(sssss) Sub=xx Prot=xx Driver=ssss
|   |       |        |        |                |       |        |__驱动名
|   |       |        |        |                |       |__接口协议
|   |       |        |        |                |__接口子类
|   |       |        |        |__接口类
|   |       |        |__中断点数
|   |       |__可变设置编号
|   |__接口编号
|__接口信息标志

终端点描述信息

E:  Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms
E:  Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms
|   |          |              |           |__间隔
|   |          |              |__终端点最大包尺寸
|   |          |__属性(终端点类型)
|   |__终端点地址(I=In,O=Out)
|__终端点信息标志

举个例子,这是在连接了一个USB键盘时的配置情况。

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh=
2
B: Alloc= 41/900 us ( 5%), #Int= 3, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
S: SerialNumber=e000
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00
Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh=
3
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=07e4 ProdID=a961 Rev= 0.01
S: Manufacturer=ALCOR
S: Product=Movado USB Keyboard
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00
Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms
T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh=
0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=07e4 ProdID=a961 Rev= 0.01
S: Manufacturer=ALCOR
S: Product=Movado USB Keyboard
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01
Driver=hid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl= 10ms
I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00
Driver=hid
E: Ad=82(I) Atr=03(Int.) MxPS= 4 Ivl=255ms

它的物理拓扑可用下图来表示:



对于Linux下的usb设备而言,T:(总线拓扑)行用于生成连接在hub上的设备的描述信息,I:(接口信息)行可用于决定每个设备所用的驱动程序,C:(配置信息)可用于列出设备使用最大电流。

实用小工具usbutils和pciutils

lsusb 列出系统中所有usb的vendor id ,product id 以及对应的厂商字符串和设备字符串。

linux-hm12:~ # lsusb
Bus 002 Device 004: ID 05ac:0304 Apple, Inc. Optical USB Mouse [Mitsumi]
Bus 002 Device 003: ID 05ac:0220 Apple, Inc. Aluminum Keyboard
Bus 002 Device 002: ID 05ac:1006 Apple, Inc. Hub in Aluminum Keyboard
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 006: ID 05e3:0717 Genesys Logic, Inc. USB 2.0 SD Reader
Bus 001 Device 002: ID 0bda:8187 Realtek Semiconductor Corp. RTL8187 Wireless Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
不过这个程序是通过一个文件查找id对应的字符串的,所以有未知厂商和设备id就可以通过编辑那个文件来增加:
位置:/usr/share/usb.ids

05e1  Syntek Semiconductor Co., Ltd
        0500  DC-112X WebCam
        0501  DC-1125 WebCam
        0890  STK011 Camera
        0892  STK013 Camera
        0895  STK016 Camera
        0896  STK017 Camera
05e2  ElecVision, Inc.
05e3  Genesys Logic, Inc.
        000a  Keyboard with PS/2 Port
        000b  Mouse
        0100  Nintendo Game Boy Advance SP
        0120  Pacific Image Electronics PrimeFilm 1800u slide/negative scanner
        0131  CF/SM Reader/Writer
        0142  Multiple Slides Scanner-3600
        0143  Multiple Frames Film Scanner-36series
        0180  Plustek Scanner
        0182  Wize Media 1000

同样还有一个lspci ,属于包pciutils,不过这个是属于GNU社区的软件。
比usbutiles强的是它自带一个update 程序可以更新ids (id识别)文件。
linux-hm12:~ # update-pciids
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  157k  100  157k    0     0   6712      0  0:00:24  0:00:24 –:–:–  8749
ids文件位置 : /usr/share/pci.ids.d/
属于包pciutils-ids

Intel 也有后悔的时候

看到这个我笑了
 

美国著名财经网站MarketWatch专栏作家特蕾泽·博勒蒂(Therese Poletti)周四撰文称,计算机芯片产业巨头英特尔一直为出售手机芯片业务而懊悔不已。该公司当然希望不再让过去的这段历史重新上演。以下为文章内容摘要:在上世纪末网络股繁荣时期,英特尔曾通过一系列并购收购了许多公司,希望向微处理器之外的业务进行扩张。英特尔当时曾动用100多亿美元进行收购。随着华尔街急迫的希望看到这些交易带来的结果,英特尔便开始剥离一些表现状况不佳的业务。

在英特尔剥离的业务当中,包括了旗下的手机芯片业务。英特尔在2006年以6亿美元左右的价格把XScale出售给了Marvell。XScale部门随后开发出一款采用了ARM架构的处理器,目前,它已成为仅次于德州仪器的第二大智能手机处理器制造商。

如今,英特尔似乎已为当年出售XScale感到懊悔不已。上月末有消息称,英特尔正在与德国芯片制造商英飞凌进行洽谈,考虑收购后者的基带芯片业务。《华尔街日报》当时曾指出,英飞凌计划以大约20亿美元的价格出售该业务,英特尔则希望以较低的价格完成收购。不过在所有的潜在竞购者当中,英特尔仍处于领先位置。

The Linley Group总裁及首席分析师林利·格文耐普(Linley Gwennap)指出,“在退出手机芯片市场不到4年之后,英特尔将重新涉足这一产业。颇具讽刺意味的是,如果英特尔一直保留手机芯片业务,该公司如今在智能手机芯片市场的地位要强大的多。”

 

没有人会在5年前想到PC 会受到手机等低功耗便携设备的威胁,但现在随着半导体技术的提高,云计算和非MS OS的崛起,一切正在慢慢发生变化。微软开发嵌入式系统支持非intel cpu,intel 研发和支持linux系统等等举动使wintel联盟不那么单纯和那么团结,而wintel联盟正是pc X86/X64 市场的缔造者。当我看到iphone 3G 再次大卖的时候注意到了marvell 这家公司,marvell由华人创业从为希捷提供DSP赚得了第一桶金,在接手了intel的xscale后将这一架构不断优化,最终被apple看中,成为iphone手机的方案。现在marvell 从DSP ,CPU,到Soc ,从硬盘控制器,wifi控制器到整套嵌入式解决方案都做得来,确实能让intel 后悔不已。

usb子系统迷惑中

先补充一下关于usb标准的三个重要实现(UHCI,EHCI,OHCI):
 
1
.uhci  ohci  ehci他们都是主机控制器的规格
OHCI主要为非PC系统上以及带有SiShe ALi芯片组的PC主板上的USB芯片,以及PC系统上ATI的SB系列芯片组。
UHCI大多为Intel和Via主板上的USB控制器芯片。UHCI的硬件电路比OHCI简单,成本第,但驱动复杂。但他们都是由USB1.1规格的。
EHCI是有Intel等几个厂商研发,兼容OHCI  UHCI 遵循USB2.0规范。
USB规范都是从寄存器级别规定好的,不过各个厂商可能有自己的几个专用的寄存器。
2.
uhci(universal host controller interface): Intel用在自家芯片组上的usb 1.1主控制器(host controller)的硬件实例。
ehci(enhanced host controller interface): usb 2.0的主控制器标准接口。
ohci(open host controller inferface):一个不仅仅是usb用的主控制器接口标准,下面细分为usb,1394,或者更多(别的没有接触过)。主要是遵循csr (configuration space register)标准(另一个标准,呵呵)。是其他厂商在设计usb host controller时遵循的标准,如via, nec, ali, 包括nvidia等等。
uhci, ohci在硬件实现以及对底层软件访问上都有所不同,但二者又都完全(实际上各自多少都有些不足)支持usb 1.1 specification里边对usb host controller的要求。
同理,ehci是满足usb 2.0 specification里面对usb host controller (high speed)的要求的硬件设计。
应该是从win98之后usb1.1就被广泛支持了,无论是uhci还是ohci。但ms真正支持usb2.0(或者说ehci)是从win2k sp4和winxp sp1。这里所说的真正支持是指系统自带ehci的驱动而不需要第三方的驱动程序。
apple现在胳膊拗不过大腿,在mac机上也已经都开始支持usb1.1和2.0接口。而上面的host controller一定是ohci的标准。
 
ICH8有2个EHCI控制器,5个UHCI 控制器。
每个UHCI控制器含有一个root hub,每个hub支持两个usb接口,所以ICH8 最多支持10个 full-speed/low-speed usb 设备。
每个EHCI控制器含义一个root hub,第一个EHCI控制器可以接驳6个high-speed usb 设备,第二个EHCI控制器可以接驳4个。算起来一共10个。
也就是说ICH8 所有的usb 接口都是3模式的(比本本上的南桥强多了)。
 
ICH8 可以根据接在usb接口上的设备速度自动将设备分配给UHCI hub 或EHCI hub 。
 
个人最喜欢用lshal 看硬件部分,他的信息很全面,但usb 部分还是很让人疑惑,比如usb.linux.sysfs_path=’/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.0′ . 我暂且不想知道pci0000:00/0000:00:12.2 是什么东西,但是我想知道后面usb的一串是怎么回事。
 
把lshal中输出usb的sysfs_path都贴上来找找规律。
info.product = ‘2.0 root hub’
/sys/devices/pci0000:00/0000:00:1a.7/usb1 (port X 4)
/sys/devices/pci0000:00/0000:00:1d.7/usb2 (port X 6)

info.product = ‘1.1 root hub’
/sys/devices/pci0000:00/0000:00:1a.0/usb3
/sys/devices/pci0000:00/0000:00:1a.1/usb4
/sys/devices/pci0000:00/0000:00:1d.0/usb5
/sys/devices/pci0000:00/0000:00:1d.1/usb6
/sys/devices/pci0000:00/0000:00:1d.2/usb7
这里可以看到ICH8 一共7个usb hub ,这似乎可以解释前几天我疑惑的为什么libusb 显示usb 总线为7 ,难道usb的总线就是root hub ??
这几个hub 分别位于pci总线的0x1a和0x1d,换成10进制就是26和29 , ok 明白intel spec 上面那两个数字的含义了。不过这里需要注意一下,EHCI 和UHCI的hub会可能在一条pci总线上哦。红色标注的pci设备编号中间空缺了几个应该是预留的,不知道intel葫芦里埋得什么药。
下面将按照这些hub继续搜寻,情况变得复杂起来~~ 

info.product = ‘USB HUB Interface’
/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-0:1.0
usb1 hub 上port 0 上的设备 (port 0 是一个特殊的port),config 1 ,interface 0
info.product = ‘RTL8187 Wireless Adapter’
/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-3
usb1 hub 上port 3 上的设备

   info.product = ‘USB Interface’
   /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3:1.0
   usb1 hub 上 port3 有一个interface 0, config 是1 (什么interface ,config ,晕了)
usb1/1-1 , usb1/1-2 在哪里 ?? 没有接驳任何设备所以没有显示?!那么usb1/1-0:1.0 是什么呢 ? 因为port 0 ,interface 0 都是特殊的??? 

info.product = ‘USB Hub Interface’
/sys/devices/pci0000:00/0000:00:1d.7/usb2/2-0:1.0
同样的疑问,特殊的port 和interface
info.product = ‘Hub in Aluminum Keyboard’
/sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1
usb2 root hub上的port 1设备,也就是我的apple G6键盘,但这里应该是指键盘上的hub。

            info.product = ‘USB Hub Interface’
            /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0
            键盘hub上的 ‘USB Hub Interface’设备 的interface 0 , 一个特殊的存在


   info.product = ‘Aluminum Keyboard’
   /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.2
   键盘hub上的2设备: G6 键盘(usb2 hub 上port 1 接的子hub , 设备在这个子hub上的port 2 ????)

      info.product = ‘USB HID Interface’
      /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.2/2-1.2:1.0
      G6 键盘上的HID 接口0
      info.product = ‘USB HID Interface’
      /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.2/2-1.2:1.1
      G6 键盘上的HID 接口1


   info.product = ‘Optical USB Mouse [Mitsumi]’
   /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.3
   键盘hub上的3设备: G6 鼠标(usb2 hub 上port 1 接的子hub , 设备在这个子hub上的port 3 ????)

      info.product = ‘USB HID Interface’
      /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.3/2-1.3:1.0
      G6 鼠标上的HID 接口0


因为我没有接驳任何usb 1.1设备所以UHCI上面(usb总线3-7)没有任何设备显示,除了那个"USB Hub Interface"  比如
/sys/devices/pci0000:00/0000:00:1d.2/usb7/7-0:1.0

对于USB HUB INTERFACE 好像 interface 都应该一定为0
先写到这里,很多地方不明白,不过这水太深,只能慢慢摸着石头过河。