討論區快速選單
知識庫快速選單
網路投保旅行平安險 了解駭客手法,才能有效攻防
[ 回上頁 ] [ 討論區發言規則 ]
smbus device 访问
更改我的閱讀文章字型大小
作者 : luobing4365(robin)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/6/21 下午 01:00:35
各位前辈,我自己做了一个smbus设备,希望在OS层访问。目前制定了两个方案:
1 通过 I/O Port去访问设备;
2 call acpi driver去访问。
我在论坛中搜寻了类似的问题,weber等前辈的解释给了我很多助力,先谢谢了^^,不过囿于水平,目前
还没有解决我自己的问题。
第2个方案的研究过程中,用到《SMBus Device Driver External Architecture Specification》,它提供了GUID_SMB去获取handler,我按照代码去调试,没有获取成功。并且在系统中也没有发现smbhc.sys和smbclass.sys,微软的文档有错吗?
问了bios工程师,需要在acpi中提供对应的method,才可以访问,并且也说不清楚应该怎么去访问。
第1个方案我在Intel主板上已经成功了,一位前辈告诉我,可能存在冲突。我一直想不明白,会有什么冲突,到底应该怎么去防止冲突。因为我所在的公司没有办法得到其他厂商的南桥资料,所以也没办法去做其他厂商主板的访问。
我的问题:
1 我的这些方法是否正确?
2 如果我采用方案2,是不是bios必须要提供相应的支持,还是说现在的bios已经都做好了这样的支持?
3 我找了很久,只找到smartbattery的例子,不知道怎么安装调试,哪位前辈可以指点一二?
4 第1个方案的冲突是怎么回事情,各位前辈写的I/O 方式的时候遇到过这样的问题吗,如何防止?

谢谢^^
作者 : zongde(阿德)
[ 貼文 12 | 人氣 3853 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/6/29 下午 08:01:58

我試著回答一下,如果是我的話會用方法一. 正確的說法應該是透過你主板上面的SMBus controller 去存取 你的SMbus上面的devices.
你所謂的衝突沒有說得很清楚,所以也沒辦法給你解答.
給幾點建議(方法一):
1. SMbus 是一種master -> slave的架構,他是Inter依據I2C的協定衍生出來的.
2. 你要知道你主板上SMBus controller的base address,這個base address應該就是你所謂的IO port. 你的devices 應該會有各slave address,由IO port 經由device 存取的協定到devices的slave address. PS.印象中I2C有八種協定可以去存取你的devices.
3. SMbus是一種低速IO,通常可以在南僑的datasheet可以找到相關Registers的操作與說明.
作者 : zongde(阿德)
[ 貼文 12 | 人氣 3853 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/6/29 下午 08:02:10

我試著回答一下,如果是我的話會用方法一. 正確的說法應該是透過你主板上面的SMBus controller 去存取 你的SMbus上面的devices.
你所謂的衝突沒有說得很清楚,所以也沒辦法給你解答.
給幾點建議(方法一):
1. SMbus 是一種master -> slave的架構,他是Inter依據I2C的協定衍生出來的.
2. 你要知道你主板上SMBus controller的base address,這個base address應該就是你所謂的IO port. 你的devices 應該會有各slave address,由IO port 經由device 存取的協定到devices的slave address. PS.印象中I2C有八種協定可以去存取你的devices.
3. SMbus是一種低速IO,通常可以在南僑的datasheet可以找到相關Registers的操作與說明.
作者 : zongde(阿德)
[ 貼文 12 | 人氣 3853 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/6/29 下午 08:02:16

我試著回答一下,如果是我的話會用方法一. 正確的說法應該是透過你主板上面的SMBus controller 去存取 你的SMbus上面的devices.
你所謂的衝突沒有說得很清楚,所以也沒辦法給你解答.
給幾點建議(方法一):
1. SMbus 是一種master -> slave的架構,他是Inter依據I2C的協定衍生出來的.
2. 你要知道你主板上SMBus controller的base address,這個base address應該就是你所謂的IO port. 你的devices 應該會有各slave address,由IO port 經由device 存取的協定到devices的slave address. PS.印象中I2C有八種協定可以去存取你的devices.
3. SMbus是一種低速IO,通常可以在南僑的datasheet可以找到相關Registers的操作與說明.
作者 : luobing4365(robin)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/7/1 上午 08:25:05
非常感谢前辈的回答^^我目前遇到的困难在于:
1 没有除Intel厂商外的南桥datasheet,不知道怎么去开发对应的I/O port代码;
2 没有理清楚acpi driver怎么写,以及怎么通过OS层去call acpi访问smbus设备;
3 我一直很感兴趣cpu-z是怎么写出来的,其中对spd的访问是不是也通过了I/O port的方式?为此,
  这几天一直尝试去反汇编它的代码,进展较慢。另外,linux据说提供了访问smbus的代码,可是
  我对这块非常不熟,想最近找一些朋友去问问,不知道这条道路是否走得通。
作者 : weber(weber) 程式設計甘苦談優秀好手貼文超過200則人氣指數超過30000點
[ 貼文 302 | 人氣 33525 | 評價 2220 | 評價/貼文 7.35 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/29 上午 12:57:47
用 IO Port 去 access SM/I2C Bus 最大的問題是要 Mutual Exclusive !
如果同時有兩個以上 driver 對一個 SM/I2C Bus 下命令時,
這會打亂 I2C command sequence, 無法執行正確的命令.

例如正確下法是 A1->A2->A3->A4. 但若有另一隻 driver 來亂時,
會變成 A1->B1->A2->A3->A4, 就無法完成所要的指令, 反而會造成
無可預測的結果.

MSFT 原先在 Win98 SE DDK 中有付一個 SM BUS Driver sample code
想教系統廠自行解決此問題, 但不了了之.
後來是透過 ACPI 的 SMBUS ASL Method 來解決此問題.
 板主 : 徵求中
 > 驅動程式 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 驅動程式 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
驅動程式
1 新兵衛 1240 
2 eBoy 980 
3 牧童哥 780 
4 北極熊 580 
5 天行者 580 
6 燒酒仙 440 
7 weber 380 
8 KEN 350 
9 jonay 180 
10 掌握文武半邊天 180 
驅動程式
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875