AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.)
Thema durchsuchen
Ansicht
Themen-Optionen

[Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.)

Ein Thema von turboPASCAL · begonnen am 22. Jul 2007 · letzter Beitrag vom 2. Nov 2008
Antwort Antwort
Seite 17 von 23   « Erste     7151617 1819     Letzte »    
Benutzerbild von turboPASCAL
turboPASCAL
Registriert seit: 8. Mai 2005
Eine kleine GPU - Temperaturanzeige für nVidia Grafikkarten.

Angezeigt werden die akt. GPU - Temperatur, sowie wenn unterstützt die "SlowDown" und die Umgebungstemperatur. Weiterhin wird noch der GPU - Temperaturhöchstwert (ab Begin der Messung) angezeigt.
Das nVidia ControlPanel sollte auf dem Betriebssystem installiert sein, da an sonst die benötigte Dll nicht gefunden wird.

In der TNA wird zusätzlich ein Icon angezeigt um die Anzeige beim klick auf das Icon sichtbar oder nicht sichtbar zu schalten. Bei einem Rechtsklick auf das Icon kann das Programm beendet werden.

Zum kompilieren der Anwendung wird die GR32-Unit von www.graphics32.org benötigt.


Die Bedeutung der Farben in der Anzeige:
---- SlowDown - Temperatur (wenn unterstützt)
----- Umgebungstemperatur (wenn unterstützt)
-...- Temeraturverlauf der (GPU wenn unterstützt )
----- max erreichte Temp. seit Messung
----- Temperaturgrenze zur akustischen Warnung (einstellbar)
----- CPU Auslastung (Optional)


Akustische Warnung:
  • anzeigen bzw. aktivieren/deaktivieren mit einem Doppelklick auf die Anzeige
  • einstellen mit gedrückter Controltaste ("Strg" bzw. "Ctrl" - Taste) und gleichzeitig gedrückter linker Maustaste
Der Alarm ist Aktiev wenn die Anzeige "Alert by" sichtbar ist.


Updates:
  • 07/2007 ...sodele ein Update, bessere Functionen und Quellcodeoptimierung etc.
  • 07/2007 Upps, anscheinend war beim kompilieren das XP / Vista Manifest nicht aktualisiert.
    Das Programm sollte unter Vista Adminrechte anfordern....

    Status: Behoben. (nicht getested)
  • 26/07/2007 ein neues Update, Einbau eines Trayicons ({noch} nicht animiert) sowie Quellcodeoptimierung.
  • 29/07/2007 neue Version 1.0.2 online:
    • Akustische Warnung eingebaut
    • kleinere Fehler behoben
  • 15/08/2007 neue Version 1.0.8 Build 54 online:
    • kleinen Fehler behoben bzw. Umgangen( Die Funktion RenderText aus der GR32-Unit von www.graphics32.org erzeugt massenhaft Pagefoults und eignet sich nur begrenst zur Textdarstellung)
    • Einbau der Anzeige zur CPU-Auslastung
    • Alle Einstellungen werden nun gespeichert
  • 05/09/2007 neue Version 1.0.8 Build 75 online:
    • animiertes Trayicon zur Anzeige des akt. Temperatur Statuses
    • neue Otion zum Starten das Programmes als "nur Trayicon"
    • das seichern der Einstellungen nun wählbar
  • 15/09/2007 neue Version 1.0.10 Build 81 online:
    • "Starten mit Windows" möglich
    • Bug vom animierten TrayIcon - beseitigt
    • Bug Messagebox(en) bei Vista manchmal hinter der Hauptform - beseitigt
    • Normales XP-Manifest an Stelle des Vista-Manifest mit Adminrechten wird nun (wieder) verwendet
    • Lauffähigkeit erfolgreich unter Vista getestet.*
  • 09/10/2007 neue Version 1.0.10 Build 85 online:
    • "Log.-Funktion eingebaut"
    • kleinen Fehler bei der Anzeige von Luckies TAboutWnd-Klasse beseitigt
  • 02/01/2008 neue Version 1.0.21 Build 103 online:
    • Vista-Skin für XP nun einstellbat
    • Hilfe Datei erstellt
    • Programm aufgesplittet in Exec. & DLL
    • das Programm ist nun exakt 640.000 Bytes gross
  • 04/02/2008 neue Version 1.0.23 Build 114 online:
    • hier und da eine kleine Änderung
    • Funktionalität für Vista verbessert
* siehe Anmerkung


Anmerkung:
Für Vista gibt es zurzeit keine entsprechenden Treiber der Hersteller (nVidia) die das Auslesen der Temperatur ermöglichen. Leider gilt das auch für Windows XP-64Bit.
Mit dieser (Beta) Version von "Show GPU Temperatur" können Sie, wenn sie unter Vista nTune von nVidia installiert haben die aktuelle GPU-Tempratur auslesen.


Hinweis:
Der Quelltext, in Bezug auf meinen und die dazugehörigen Dateien dürfen frei verwendet oder
geändert werden, solange die daraus erzeugte Anwendung für nicht kommerzielle Zwecke verwendet wird.
Es sei denn der Programmierer fragt mich vorher, damit ich ein Scheibchen abbekomme.

Wie heisst denn gleich diese Open-Source-Lizenz ?
Miniaturansicht angehängter Grafiken
preview_136.gif  
Angehängte Dateien
Dateityp: zip gputemperatur_1.0.23_build_114_206.zip (718,6 KB, 422x aufgerufen)
Dateityp: exe showgputempsetup_179.exe (469,8 KB, 108x aufgerufen)
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
 
Razor
 
#161
  Alt 13. Nov 2007, 11:04
I got information that ATI uses special I2C
Delphi-Quellcode:
    i2c-radeon.c - Part of lm_sensors, Linux kernel modules for hardware
              monitoring
    Copyright (C) 1998-2004 The LM Sensors Team
    
    Based on i2c-savage4.c.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#include <linux/module.h>
#include <linux/pci.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
#include <linux/init.h>
#include <asm/io.h>
#include <asm/param.h> /* for HZ */
#include "version.h"

/* Radeon defines */
#define RADEON_GPIO_VGA_DDC   0x0060
#define RADEON_GPIO_DVI_DDC   0x0064

/* bit locations in the registers */
#define I2C_SDA_IN      (1 << 8)
#define I2C_SCL_IN      (1 << 9)
#define I2C_SCL_OUT      (1 << 17) /* inverted */
#define I2C_SDA_OUT      (1 << 16) /* inverted */

/* delays */
#define CYCLE_DELAY   10
#define TIMEOUT      (HZ / 2)


static void config_radeon(struct pci_dev *dev);

static unsigned long ioaddr;

static void radeon_dvi_setscl(void *data, int val)
{
   unsigned int r;
   r = readl(ioaddr + RADEON_GPIO_DVI_DDC);
   if(val)
      r &= ~I2C_SCL_OUT;
   else
      r |= I2C_SCL_OUT;
   writel(r, ioaddr + RADEON_GPIO_DVI_DDC);
   readl(ioaddr + RADEON_GPIO_DVI_DDC);   /* flush posted write */
}


static void radeon_dvi_setsda(void *data, int val)
{
   unsigned int r;
   r = readl(ioaddr + RADEON_GPIO_DVI_DDC);
   if(val)
      r &= ~I2C_SDA_OUT;
   else
      r |= I2C_SDA_OUT;
   writel(r, ioaddr + RADEON_GPIO_DVI_DDC);
   readl(ioaddr + RADEON_GPIO_DVI_DDC);   /* flush posted write */
}


static int radeon_dvi_getscl(void *data)
{
   return (0 != (readl(ioaddr + RADEON_GPIO_DVI_DDC) & I2C_SCL_IN));
}


static int radeon_dvi_getsda(void *data)
{
   return (0 != (readl(ioaddr + RADEON_GPIO_DVI_DDC) & I2C_SDA_IN));
}


static void radeon_vga_setscl(void *data, int val)
{
   unsigned int r;
   r = readl(ioaddr + RADEON_GPIO_VGA_DDC);
   if(val)
      r &= ~I2C_SCL_OUT;
   else
      r |= I2C_SCL_OUT;
   writel(r, ioaddr + RADEON_GPIO_VGA_DDC);
   readl(ioaddr + RADEON_GPIO_VGA_DDC);   /* flush posted write */
}


static void radeon_vga_setsda(void *data, int val)
{
   unsigned int r;
   r = readl(ioaddr + RADEON_GPIO_VGA_DDC);
   if(val)
      r &= ~I2C_SDA_OUT;
   else
      r |= I2C_SDA_OUT;
   writel(r, ioaddr + RADEON_GPIO_VGA_DDC);
   readl(ioaddr + RADEON_GPIO_VGA_DDC);   /* flush posted write */
}


static int radeon_vga_getscl(void *data)
{
   return (0 != (readl(ioaddr + RADEON_GPIO_VGA_DDC) & I2C_SCL_IN));
}


static int radeon_vga_getsda(void *data)
{
   return (0 != (readl(ioaddr + RADEON_GPIO_VGA_DDC) & I2C_SDA_IN));
}


/* Configures the chip */

void config_radeon(struct pci_dev *dev)
{
   unsigned int cadr;

   /* map memory */
   cadr = dev->resource[0].start;
   cadr &= PCI_BASE_ADDRESS_MEM_MASK;
   ioaddr = (unsigned long)ioremap_nocache(cadr, 0x0001000);
   if(ioaddr) {
//      writel(0x8160, ioaddr + RADEON_GPIO_DVI_DDC2);
//      writel(0x00000020, ioaddr + RADEON_GPIO_DVI_DDC);
      radeon_dvi_setscl(NULL, 1);
      radeon_dvi_setsda(NULL, 1);
      radeon_vga_setscl(NULL, 1);
      radeon_vga_setsda(NULL, 1);
      printk(KERN_INFO "i2c-radeon.o: Using Radeon at 0x%lx\n", ioaddr);
   }

}


static struct i2c_algo_bit_data radeon_dvi_bit_data = {
   .setsda      = radeon_dvi_setsda,
   .setscl      = radeon_dvi_setscl,
   .getsda      = radeon_dvi_getsda,
   .getscl      = radeon_dvi_getscl,
   .udelay      = CYCLE_DELAY,
   .mdelay      = CYCLE_DELAY,
   .timeout   = TIMEOUT
}
;

static struct i2c_algo_bit_data radeon_vga_bit_data = {
   .setsda      = radeon_vga_setsda,
   .setscl      = radeon_vga_setscl,
   .getsda      = radeon_vga_getsda,
   .getscl      = radeon_vga_getscl,
   .udelay      = CYCLE_DELAY,
   .mdelay      = CYCLE_DELAY,
   .timeout   = TIMEOUT
}
;

static struct i2c_adapter radeon_i2c_adapter = {
   .owner      = THIS_MODULE,
   .name      = "ATI Radeon",
   .id      = I2C_HW_B_SAVG, /* FIXME */
   .algo_data   = &radeon_vga_bit_data,
}
;

static struct pci_device_id radeon_ids[] __devinitdata = {
   {
      .vendor      = 0x1002,
      .device      = 0x4C59,
      .subvendor   = PCI_ANY_ID,
      .subdevice   = PCI_ANY_ID,
   }
,
   { 0 }
};

static int __devinit radeon_probe(struct pci_dev *dev, const struct pci_device_id *id)
{
   config_radeon(dev);
   return i2c_bit_add_bus(&radeon_i2c_adapter);
}


static void __devexit radeon_remove(struct pci_dev *dev)
{
   i2c_bit_del_bus(&radeon_i2c_adapter);
}


static int __init i2c_radeon_init(void)
{
   struct pci_dev *dev;
   const struct pci_device_id *id;

   printk(KERN_DEBUG "i2c-radeon.o init\n");

   pci_for_each_dev(dev) {
      id = pci_match_device(radeon_ids, dev);
      if(id && radeon_probe(dev, id) >= 0)
         return 0;
   }

   return -ENODEV;
}

static void __exit i2c_radeon_exit(void)
{
   radeon_remove(NULL);
   iounmap((void *)ioaddr);
}


MODULE_AUTHOR("Jean Delvare <khali@xxxxxxxxxxxx>");
MODULE_DESCRIPTION("ATI Radeon I2C bus driver");
MODULE_LICENSE("GPL");

module_init(i2c_radeon_init);
module_exit(i2c_radeon_exit);
  Mit Zitat antworten Zitat
Muetze1
 
#162
  Alt 13. Nov 2007, 12:13
Zitat von Razor:
I got information that ATI uses special I2C
Yeah, and now?

Btw: you see, that this code (as many parts posted by you before) is under the GPL. So I hope you will publish your sources...
  Mit Zitat antworten Zitat
Razor
 
#163
  Alt 13. Nov 2007, 19:16
I will post it becouse i want other to know as well and learn becouse this isnt the usual topic and it is in the opensource topic.If you help it will be published soon if you need any info i can ask rivatuner or atitool author.

Hilfe!!
  Mit Zitat antworten Zitat
Muetze1
 
#164
  Alt 13. Nov 2007, 19:49
Zitat von Razor:
If you help ...
No, I won't help. So I need no help and so I need no informations. DIY! I had learn many things many years before - so you can do it the same way. Learn and try and you will achieve success.
  Mit Zitat antworten Zitat
Razor
 
#165
  Alt 13. Nov 2007, 19:53
You disapointed me Muetze how can you write code for other users how!I mean please...but ok i understand...I am not german thats why...


If someone knows C++ please translate this becouse if DP wants support for ATI translate it..i cant
  Mit Zitat antworten Zitat
Muetze1
 
#166
  Alt 13. Nov 2007, 21:18
Zitat von Razor:
how can you write code for other users how!
Because other users show that they are dealing with the topic and are trying to learn something new. They wanted to learn and also do this. You got something done (e.g. the CPU temp on intel), but you have not yet followed e.g. one hint: learn the basics! You still ask questions about basic things, even about retrieving the results of a function. You that you are not willing to learn the language but you still bother to get your code together. You use any thread to get this and you post so many messages you need, till you get it nearly finished. But you even fail in glueing the sources together...

I am not willing to build your application and I am not willing to help you, as long as you only spam to get your result, directly fitting in your sources. You have not basic skills but want the highest achievements. I respect your endurance - really!

Zitat von Razor:
but ok i understand...I am not german thats why...
You know that's not the reason and instead of being encouraged to get the solution and try to learn the needed things, you try to still get from other people (me or even other)...

Zitat von Razor:
i cant
You can, but the worse thing: you need to do it by yourself and you even have to learn something for that, etc.

But why you always get back here? Nobody else found in the english-speaking/writing boards/sites?

It is really pathetic, what you try to do here...
  Mit Zitat antworten Zitat
Razor
 
#167
  Alt 14. Nov 2007, 12:09
If i can learn i need an example this is my way of learning but i dont know about yours...its just weird that u write code or translate for other for me u wont.But i want to learn aswell.


Or you dont know how to or you are just making a fool of yourself.
  Mit Zitat antworten Zitat
OlafSt

 
Delphi 10.2 Tokyo Professional
 
#168
  Alt 14. Nov 2007, 13:11
You still didn't got the point, razor.

For example, pick this ATI-Problem. You are posting code which is written in C (not C++, but that is not important here). It is also some code for linux-machines. Of course this is simply impossible to port 1:1 to a windows-machine as linux and windows differ extremely in talking to hardware. Three or four times we mentioned this fact - still you're posting linux-code.

What @Muetze1 and myself and all the others here want from you: You already figured out that ATI uses the I2C-mechanism to publish the data we want to see. So why the hell don't you move your ass and learn HOW TO ACCESS I2C on a windows machine ? This is what @muetze1 and we all here name "basics".

There you (and finally we all) will learn a lot more from.
  Mit Zitat antworten Zitat
Larsi

 
Delphi 2007 Professional
 
#169
  Alt 14. Nov 2007, 13:19
Ich hab ne Geforce FX 5200; die hat keinen Temperatursensor, oder???
  Mit Zitat antworten Zitat
Razor
 
#170
  Alt 14. Nov 2007, 13:34
An example!


So if i am here to learn then YOU post a code since we all want to read ATI!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 17 von 23   « Erste     7151617 1819     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz