Sto cercando di ottenere OpenHardwareMonitor per leggere i dati di temperatura dal Winbond W83793 chip sulla mia scheda madre Supermicro X7DWA. Il problema è che non ho alcuna esperienza di programmazione di basso livello e che i documenti disponibili online non sembrano sufficienti a spiegare come accedere alle temperature.Riesci a mettere insieme i seguenti indizi per aiutarmi a leggere le temperature del chip Winbond W83793?
Tuttavia, nel corso del mese in cui ho lavorato a questo problema, ho scoperto alcuni valori e metodi di basso livello che potrebbero essere la chiave per risolvere il mio problema. Ho solo bisogno di capire come usarli per ottenere quello che voglio. È lì che mi rivolgo a te, perché potresti capire cosa significa questa informazione e come applicarla, a differenza di me. Ho già fatto la mia giusta parte di curiosità, causando molte schermate blu e riavvii del computer. Basta indovinare, devo mettere insieme questi indizi. Ecco quello che so finora:
Per leggere dal chip, io in qualche modo bisogno di accedere al SMBus, perché questo è il modo in cui programmi di monitoraggio, come CPUID HWMonitor, stanno ottenendo le informazioni. OpenHardwareMonitor, per quanto ne so, non ha alcun codice in esso per accedere a SMBus, motivo per cui potrebbe non essere leggibile dal chip. Tuttavia, OpenHardwareMonitor ha i seguenti metodi inclusi nel suo Ring0 class, che utilizza per accedere alle informazioni da altri chip. Io possa essere in grado di utilizzare questi metodi a mio vantaggio:
void Ring0.WriteIOPort(uint port, byte value); byte Ring0.ReadIOPort(uint port);
Tra le altre informazioni, HWMonitor riporta le seguenti informazioni relative al chip Winbond W83793 a me quando ho salvare un rapporto:
Registrati Spazio : SMBus, indirizzo di base = 0x01100
SMBus richiesta: canale 0x0, indirizzo 0x2F
sembra t questi sono valori importanti, ma non so esattamente cosa intendono e come posso usarli in combinazione con i metodi Ring0 sopra. Hmm ... tanti indizi. Gli altri valori che HWMonitor mi mostra sono le tensioni, le temperature e le velocità della ventola effettive e una serie di valori esadecimali che rappresentano dati da qualche parte sul chip, che riprodurrò qui se si vuole osservarli.
Infine, nella scheda tecnica W83793, a pagina 53 (se avete il documento aperto), qui ci sono gli indirizzi in hex delle temperature vorrei leggere (credo):
TD1 Lettura - Bank 0 Indirizzo 1C
TD2 Lettura - Bank 0 Indirizzo 1D
TD3 Lettura - Bank 0 Indirizzo 1E
TD4 Lettura - Bank 0 Indirizzo 1F
po 'bassa Lettura - Bank 0 Indirizzo 22
TR1 Lettura - Bank 0 Indirizzo 20
TR2 Lettura - Bank 0 Indirizzo 21
Questo è tutto quello che so finora .Il chip OpenHardwareMonitor, W83793 e Ring0 sono disponibili tramite i collegamenti forniti sopra. Come ho detto prima, ci sono stato per un mese, e non sono ancora riuscito a risolvere questo mistero. Spero che puoi aiutarmi. Tutte queste informazioni possono sembrare un po 'intimidatorie, ma sono sicuro che avrà senso per qualcuno con qualche esperienza di programmazione di basso livello.
Per riassumere la mia domanda, utilizzare gli indizi forniti sopra per capire come ottenere OpenHardwareMonitor per leggere le temperature dal chip W83793. Non ho bisogno di dettagli sulla creazione di un chip in OpenHardwareMonitor. Ho già una lezione pronta. Ho solo bisogno della sequenza e del formato per scrivere i comandi Ring0, se è quello che devo fare.
MODIFICA: ho trovato qualche altra informazione. Ho stampato un rapporto dispositivo SMBus da HWMonitor, e tra le altre cose, ho avuto questa linea, incluso qui perché dice 0x2F: dispositivo
SMB: I/O = 0x1100, indirizzo 0x2F, canale = 0
Ciò significa che è necessario combinare in qualche modo gli indirizzi dell'I/O con l'indirizzo del chip, che sembra essere 0x2F. Ho provato ad aggiungerli insieme, ma poi ho ottenuto tutte le letture di temperatura per essere 255, quindi non era la giusta ipotesi.
Ciò è estremamente utile, grazie! Ho provato a utilizzare questi metodi nel modo specificato, ma ho finito con tutti gli 0 per le prime 4 temperature (1C - 1F) e 255 per le ultime due (20 e 21). Ma ho fatto una nuova scoperta (controlla le mie modifiche alla domanda sopra). Sembra che 0x1100 non sia l'indirizzo del chip ma l'indirizzo del canale SMBus (o qualcosa del genere), mentre 0x2F è l'indirizzo del chip. Potrei sbagliarmi. Ho provato ad aggiungere l'indirizzo di base al presunto indirizzo del chip, ma i risultati erano ancora errati. Qualche idea? – Dalal
Ho perso l'indizio di SMBus; la mia comprensione è che è necessario istruire il controller SMBus da cui si desidera leggere o scrivere su un indirizzo specifico su un dispositivo specifico. La specifica SMBus (http://smbus.org/specs/) stabilisce come i dispositivi su SMBus saranno parlati e rispondenti, ma inevitabilmente non definisce come un controller SMBus dovrebbe parlare a una CPU nel mondo x86. Quindi la prossima cosa da scoprire è una scheda tecnica per il controller SMBus della tua scheda madre, o per scoprire se sono abbastanza generiche da far funzionare qualsiasi vecchio datasheet. I miei primi due google non hanno funzionato, ma continuerò a cercare. – Tommy
Ho trovato la scheda tecnica per Intel 5400 MCH (http://www.intel.com/Assets/PDF/datasheet/318610.pdf), che sembra essere un 'Hub controller di memoria' per la mia scheda madre, secondo il mio scheda tecnica della scheda madre. Non sono sicuro se questo è ciò di cui abbiamo bisogno. – Dalal