請先看『使用說明』
F81801U Hardware Monitor under Linux
From LEXWiKi
(Difference between revisions)
												
			
			 (→The Sample code source you can download from)  | 
				 (→The Sample code source you can download from)  | 
			||
| (One intermediate revision not shown.) | |||
| Line 2: | Line 2: | ||
== The Sample code source you can download from ==  | == The Sample code source you can download from ==  | ||
Source file:   | Source file:   | ||
| - | + | <!--  | |
<Google Drive> [https://drive.google.com/file/d/1U8JdXkhrJhOvsnFEY5vfaU03MrAyKY17/view?usp=sharing F81801U_HW_Src]  | <Google Drive> [https://drive.google.com/file/d/1U8JdXkhrJhOvsnFEY5vfaU03MrAyKY17/view?usp=sharing F81801U_HW_Src]  | ||
| + | -->  | ||
<FTP> [ftp://ftp.lex.com.tw/Engineer/SoftSupport/AP_Module/HardwareMonitor/f81801u_hw_src.tar.gz F81801U_HW_Src]  | <FTP> [ftp://ftp.lex.com.tw/Engineer/SoftSupport/AP_Module/HardwareMonitor/f81801u_hw_src.tar.gz F81801U_HW_Src]  | ||
| Line 44: | Line 45: | ||
Binary file:   | Binary file:   | ||
| - | + | <!--  | |
<Google Drive> [https://drive.google.com/file/d/11ac5AiBbRJ6zbHeDZIty7hijtPZDrMrI/view?usp=sharing F81801U_HW_Bin]  | <Google Drive> [https://drive.google.com/file/d/11ac5AiBbRJ6zbHeDZIty7hijtPZDrMrI/view?usp=sharing F81801U_HW_Bin]  | ||
| + | -->  | ||
<FTP> [ftp://ftp.lex.com.tw/Engineer/SoftSupport/AP_Module/HardwareMonitor/f81801u_hw_bin.tar.gz F81801U_HW_Bin]  | <FTP> [ftp://ftp.lex.com.tw/Engineer/SoftSupport/AP_Module/HardwareMonitor/f81801u_hw_bin.tar.gz F81801U_HW_Bin]  | ||
Current revision
Contents | 
The Sample code source you can download from
Source file:
<FTP> F81801U_HW_Src
About source code. 1.Install libgtk2.0-dev first 2.We suggest using Code::Blocks as an IDE in Linux. 3.Or you can just use "make" to compile the source code in the f81801u_hw_src/ folder or f81801u_hw_src/src/ folder. And you can excute "f81801u_hw" file in the f81801u_hw_src/src/ folder $cd f81801u_hw_src $./configure $make $src/f81801u_hw or double click f81801u_hw
If you want to execute the hardware monitor utility under user account , you can follow the procedure: 1.Login by user account. 2.go to the f81801u_hw_src/src folder $cd f81801u_hw_src/src/ 3.copy the f81801u_hw into the ForUser folder $cp f81801u_hw ForUser 4.build SetForUser $gcc -o f81801u_hw SetForUser.c 5.change the file mode $sudo chown root.root f81801u_hw $sudo chmod 4755 f81801u_hw 6.then you can execute the hardware monitor utility $./f81801u_hw or double click f81801u_hw
Binary file:
<FTP> F81801U_HW_Bin
How to use the DEMO application
- Press the "Read Value" button , and then you can find the values in the below text boxes. 
 
Sample code Introduction
Define Registry
#define F81801U_DEFAULT_CHIP_ID_1 0x07 #define F81801U_DEFAULT_CHIP_ID_2 0x23 #define F81801U_CHIP_ID_1 0x20 #define F81801U_CHIP_ID_2 0x21 #define HW_MONITOR_INDEX 0x295 #define HW_MONITOR_DATA 0x296 #define CPU_FAN_MSB 0xA0 #define CPU_FAN_LSB 0xA1 #define F81801U_VOLTAGE_CORE 0x21 #define F81801U_VOLTAGE_3V 0x20 #define F81801U_VOLTAGE_VIN2 0x22 #define F81801U_VOLTAGE_VSB3V 0x27 #define F81801U_VOLTAGE_VBAT 0x28 #define F81801U_TEMPERATURE_SYSTEM 0x74 #define F81801U_TEMPERATURE_CPU 0x72
Open F81801U
outb(0x87,0x4E);
if ((F81801U_Read(F81801U_CHIP_ID_1) == F81801U_DEFAULT_CHIP_ID_1) && (F81801U_Read(F81801U_CHIP_ID_2) == F81801U_DEFAULT_CHIP_ID_2 ))
    return TRUE;		
else
    return FALSE;
Read Data
DWORD dwPortVal; outb(dwAddrVal,HW_MONITOR_INDEX); dwPortVal = inb(HW_MONITOR_DATA); return ( dwPortVal & 0x00FF);
GetTemperature
switch (dwAddrVal)
{
    case F81801U_TEMPERATURE_CPU:
        return F81801U_Read(F81801U_TEMPERATURE_CPU);
    case F81801U_TEMPERATURE_SYSTEM:
        return F81801U_Read(F81801U_TEMPERATURE_SYSTEM) ;
}
GetVoltage
switch (dwAddrVal)
{
    case F81801U_VOLTAGE_CORE:
        return (float)(F81801U_Read(F81801U_VOLTAGE_CORE)*0.8)/100;
    case F81801U_VOLTAGE_3V:
        return (float)(F81801U_Read(F81801U_VOLTAGE_3V)*1.6)/100;
    case F81801U_VOLTAGE_VIN2:
        return (float)(F81801U_Read(F81801U_VOLTAGE_VIN2)*0.8)/100;
    case F81801U_VOLTAGE_VSB3V:
        return (float)((F81801U_Read(F81801U_VOLTAGE_VSB3V)*1.6)/100);
    case F81801U_VOLTAGE_VBAT:
        return (float)((F81801U_Read(F81801U_VOLTAGE_VBAT)*1.6)/100);
}
						
			
		