⑴ C# 取硬體信息(比如序列號和Mac地址)源碼(多個硬體,會有多個代碼,請復制文件內容拿來給我。)
用WMI,網路下就有介紹!!
using System;
using System.Management;
namespace Soyee.Comm
{
/// <summary>
/// Computer Information
/// </summary>
public class Computer
{
public string CpuID;
public string MacAddress;
public string DiskID;
public string IpAddress;
public string LoginUserName;
public string ComputerName;
public string SystemType;
public string TotalPhysicalMemory; //單位:M
private static Computer _instance;
public static Computer Instance()
{
if (_instance == null)
_instance = new Computer();
return _instance;
}
protected Computer()
{
CpuID=GetCpuID();
MacAddress=GetMacAddress();
DiskID=GetDiskID();
IpAddress=GetIPAddress();
LoginUserName=GetUserName();
SystemType=GetSystemType();
TotalPhysicalMemory=GetTotalPhysicalMemory();
ComputerName=GetComputerName();
}
string GetCpuID()
{
try
{
//獲取CPU序列號代碼
string cpuInfo = "";//cpu序列號
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
}
moc=null;
mc=null;
return cpuInfo;
}
catch
{
return "unknow";
}
finally
{
}
}
string GetMacAddress()
{
try
{
//獲取網卡硬體地址
string mac="";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"] == true)
{
mac=mo["MacAddress"].ToString();
break;
}
}
moc=null;
mc=null;
return mac;
}
catch
{
return "unknow";
}
finally
{
}
}
string GetIPAddress()
{
try
{
//獲取IP地址
string st="";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"] == true)
{
//st=mo["IpAddress"].ToString();
System.Array ar;
ar=(System.Array)(mo.Properties["IpAddress"].Value);
st=ar.GetValue(0).ToString();
break;
}
}
moc=null;
mc=null;
return st;
}
catch
{
return "unknow";
}
finally
{
}
}
string GetDiskID()
{
try
{
//獲取硬碟ID
String HDid="";
ManagementClass mc = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
HDid = (string)mo.Properties["Model"].Value;
}
moc=null;
mc=null;
return HDid;
}
catch
{
return "unknow";
}
finally
{
}
}
/// <summary>
/// 操作系統的登錄用戶名
/// </summary>
/// <returns></returns>
string GetUserName()
{
try
{
string st="";
ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
st=mo["UserName"].ToString();
}
moc=null;
mc=null;
return st;
}
catch
{
return "unknow";
}
finally
{
}
}
/// <summary>
/// PC類型
/// </summary>
/// <returns></returns>
string GetSystemType()
{
try
{
string st="";
ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
st=mo["SystemType"].ToString();
}
moc=null;
mc=null;
return st;
}
catch
{
return "unknow";
}
finally
{
}
}
/// <summary>
/// 物理內存
/// </summary>
/// <returns></returns>
string GetTotalPhysicalMemory()
{
try
{
string st="";
ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
st=mo["TotalPhysicalMemory"].ToString();
}
moc=null;
mc=null;
return st;
}
catch
{
return "unknow";
}
finally
{
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
string GetComputerName()
{
try
{
return System.Environment.GetEnvironmentVariable("ComputerName");
}
catch
{
return "unknow";
}
finally
{
}
}
}
}
⑵ 怎樣修改uboot源碼,更改uboot等待輸入時間10s
1. 去掉不必要的硬體初始化,例如網路,usb等。 2. 縮寫kernel image的大校 3. 提高ARM cpu cache 4. ECC 校驗去掉一些。 5,使用硬體解碼。
⑶ 如何從源碼里調整根目錄空間大小
這是一個先有雞還是先有蛋的問題...
先有已經被配置好大小及文件系統格式(fat32,ntfs,ext4等)的分區,然後才有由你所謂的"源碼"編譯出的程序安裝在分區里.
通常這個分區的大小及文件系統格式被配置的方式是:
1 通過光碟啟動盤開機,格式化硬碟時配置,然後將由"源碼"編譯出的系統裝入分區中.
2 將硬碟插入一台已經正常安裝了操作系統的機器,啟動後通gparted,fdisk甚至dd命令配置
3 一定要通過"源碼"來配置大小...可以自己寫個程序或者腳本,裡面放著類似"sudo sfdisk /dev/sda <sda_table"這樣的命令,開機或在某個特定條件發生時運行之,記得運行完了後要重啟系統.另外裡面的文件應該也廢了.
/etc/fstab 文件負責配置linux系統中每個分區掛載的目錄,啟動參數等,也不能達到你要求的改變分區大小的目的.
⑷ 易語言硬體檢測源碼
你是想做殺毒啊!
⑸ 「DirectX診斷工具」里顯示的硬體信息:怎樣修改
查看基本信息,在「DirectX診斷工具」窗口中點擊「系統」選項卡,當前日期、計算機名稱、操作系統、系統製造商及BIOS版本、CPU處理器頻率及及內存容量一目瞭然。注意嘍,雖然我將Celeron 2.0MHz超頻至2.40MHz使用,但是DirectX卻不認這個帳,依然顯示的是未超頻的原始頻率。看來沒有AIDA32,
在「DirectX診斷工具」窗口中點擊「顯示」選項卡,在這里我們可以看到顯卡的製造商、顯示晶元類型、顯存容量、顯卡驅動版本、監視器等常規信息。
音頻設備往往為人所忽視,但缺了它又不行,單擊「聲音」選項卡,對其做一番了解吧!同樣在出現的窗口中能看到設備的名稱、製造商及其驅動程序等等極為詳細的資料
⑹ Linux系統移植的目錄
第1篇 系統移植基礎篇
第1章 linux內核介紹 2
1.1 系統調用介面 2
1.1.1 linux系統調用 2
1.1.2 用戶編程介面 2
1.1.3 系統調用與服務常式的對應關系 3
1.1.4 系統調用過程 3
1.1.5 系統調用傳遞的參數 4
1.2 進程管理 4
1.2.1 進程 4
1.2.2 進程描述符 5
1.2.3 進程狀態 6
1.2.4 進程調度 6
1.2.5 進程地址空間 8
1.3 內存管理 10
1.3.1 內存管理技術 10
1.3.2 內存區管理 12
1.3.3 內核中獲取內存的幾種方式 13
1.4 虛擬文件系統 14
1.4.1 虛擬文件系統作用 14
.1.4.2 文件系統的注冊 15
1.4.3 文件系統的安裝和卸載 15
1.5 設備驅動程序 17
1.5.1 字元設備驅動程序 17
1.5.2 塊設備驅動程序 18
1.5.3 網路設備驅動程序 21
1.5.4 內存與i/o操作 22
1.6 小結 23
第2章 嵌入式linux開發環境搭建 24
2.1 虛擬機及linux安裝 24
2.1.1 虛擬機的安裝 24
2.1.2 單獨分區安裝系統 30
2.1.3 虛擬機和主機通信設置 31
2.1.4 vmware tools工具安裝 33
2.1.5 虛擬機與主機共享文件 35
2.1.6 虛擬機與主機文件傳輸 36
2.2 交叉編譯工具 38
2.2.1 交叉編譯工具安裝 38
2.2.2 交叉編譯器測試 43
2.3 超級終端和minicom 44
2.3.1 超級終端軟體的安裝 44
2.3.2 minicom使用 45
2.3.3 securecrt使用 48
2.4 內核、文件系統載入工具 48
2.4.1 燒寫bootloader 48
2.4.2 內核和文件系統下載 52
2.4.3 應用程序和文件傳輸 54
2.5 在開發中使用網路文件系統(nfs) 56
2.5.1 虛擬機設置 56
2.5.2 虛擬機的ip地址設置 56
2.5.3 驗證網路連接 59
2.5.4 設置共享目錄 59
2.5.5 啟動nfs服務 60
2.5.6 修改共享配置後 61
2.5.7 掛載nfs 61
2.5.8 雙網卡掛載nfs 61
2.6 小結 62
第2篇 系統移植技術篇
第3章 bootloader移植 64
3.1 bootloader介紹 64
3.1.1 bootloader與嵌入式linux系統的關系 64
3.1.2 bootloader基本概念 64
3.1.3 bootloader啟動過程 66
3.2 bootloader之u-boot 67
3.2.1 u-boot優點 67
3.2.2 u-boot的主要功能 68
3.2.3 u-boot目錄結構 68
3.3 u-boot移植過程 69
3.3.1 環境配置 69
3.3.2 修改cpu/arm920t/start.s 70
3.3.4 具體平台相關修改 79
3.3.5 其他部分修改 81
3.3.6 u-boot的編譯 84
3.4 bootloader之vivi 85
3.4.1 vivi簡介 85
3.4.2 vivi配置與編譯 85
3.4.3 代碼分析 88
3.5 vivi的運行 88
3.5.1 bootloader啟動的階段一 89
3.5.2 bootloader啟動的階段二 95
3.6 小結 95
第4章 linux內核裁剪與移植 96
4.1 linux內核結構 96
4.1.1 內核的主要組成部分 96
4.1.2 內核源碼目錄介紹 97
4.2 內核配置選項 99
4.2.1 一般選項 99
4.2.2 內核模塊載入方式支持選項 100
4.2.3 系統調用、類型、特性、啟動相關選項 101
4.2.4 網路協議支持相關選項 102
4.2.5 設備驅動支持相關選項 102
4.2.6 文件系統類型支持相關選項 103
4.2.7 安全相關選項 104
4.2.8 其他選項 104
4.3 內核裁剪及編譯 105
4.3.1 安裝內核源代碼 105
4.3.2 檢查編譯環境設置 105
4.3.3 配置內核 106
4.3.4 編譯內核 115
4.4 內核映像文件移植到arm板 116
4.4.1 移植准備 116
4.4.2 燒寫系統 118
4.5 內核升級 121
4.5.1 准備升級內核文件 121
4.5.2 移植過程 122
4.6 小結 125
第5章 嵌入式文件系統製作 126
5.1 文件系統選擇 126
5.1.1 flash硬體方案比較 126
5.1.2 嵌入式文件系統的分層結構 127
5.2 基於flash的文件系統 127
5.2.1 jffs文件系統(journalling flash filesystem) 128
5.2.2 yaffs文件系統(yet another flash file system) 130
5.2.3 cramfs文件系統(compressed rom file system) 133
5.2.4 romfs文件系統(rom file system) 134
5.3 基於ram的文件系統 135
5.4 文件系統的製作 135
5.4.1 製作ramdisk文件系統 136
5.4.2 製作yaffs2文件系統 144
5.4.3 製作jffs2文件系統 150
5.4.4 其他文件系統製作 152
5.5 小結 153
第3篇 系統移植與驅動篇
第6章 lcd驅動移植 156
6.1 認識lcd相關硬體原理 156
6.1.1 lcd概述 156
6.1.2 lcd控制器 157
6.1.3 lcd控制器方塊圖 157
6.1.4 lcd控制器操作 158
6.1.5 lcd控制寄存器 163
6.2 lcd參數設置 166
6.3 內核lcd驅動機制 167
6.3.1 framebuffer概述 167
6.3.2 framebuffer 設備驅動的結構 167
6.4 linux 2.6.25的lcd驅動源碼分析 171
6.4.1 lcd驅動開發的主要工作 171
6.4.2 s3c2410fb_init()函數分析 172
6.4.3 s3c2410fb_probe()函數分析 173
6.4.4 s3c2410fb_remove()函數分析 178
6.5 移植內核中的lcd驅動 179
6.5.1 lcd硬體電路圖 179
6.5.2 修改lcd源碼 179
6.5.3 配置內核 184
6.6 小結 187
第7章 觸摸屏驅動移植 188
7.1 觸摸屏概述 188
7.1.1 觸摸屏工作原理 188
7.1.2 觸摸屏的主要類型 188
7.2 s3c2440 adc介面使用 191
7.2.1 s3c2440觸摸屏介面概述 191
7.2.2 s3c2440觸摸屏介面操作 192
7.3 2.6內核觸摸屏驅動源碼分析(s3c2410_ts.c源碼分析) 196
7.4 linux內核輸入子系統介紹 201
7.4.1 input子系統概述 202
7.4.2 輸入設備結構體 202
7.4.3 輸入鏈路的創建過程 205
7.4.4 使用input子系統 206
7.4.5 編寫輸入設備驅動需要完成的工作 208
7.5 觸摸屏驅動移植和內核編譯 209
7.5.1 修改初始化源碼 209
7.5.2 修改硬體驅動源碼s3c2440_ts.c 211
7.5.3 修改kconfig和makefile 213
7.5.4 配置編譯內核 214
7.5.5 觸摸屏測試程序設計 215
7.6 小結 216
第8章 usb設備驅動移植 217
8.1 usb協議 217
8.1.1 usb協議的系統主要組成部分 217
8.1.2 匯流排物理拓撲結構 219
8.1.3 usb設備、配置、介面、端點 219
8.1.4 usb設備狀態 222
8.1.5 usb枚舉過程 223
8.1.6 usb請求塊(urb) 226
8.2 usb主機驅動 230
8.2.1 usb主機驅動結構和功能 230
8.2.2 主機控制器驅動(usb_hcd) 231
8.2.3 ohci主機控制器驅動 233
8.2.4 s3c24xx ohci主機控制器驅動實例 234
8.3 usb設備驅動 237
8.3.1 usb骨架程序分析 237
8.3.2 usb驅動移植的時鍾設置 241
8.4 usb滑鼠鍵盤驅動 242
8.4.1 usb滑鼠驅動代碼分析 242
8.4.2 usb鍵盤驅動代碼分析 245
8.4.3 內核中添加usb滑鼠鍵盤驅動 248
8.5 u盤驅動 249
8.5.1 內核配置 249
8.5.2 移植和測試 250
8.6 小結 252
第9章 網卡驅動程序移植 253
9.1 乙太網概述 253
9.1.1 乙太網連接 253
9.1.2 乙太網技術概述 254
9.1.3 乙太網的幀結構 256
9.2 網路設備驅動程序體系結構 258
9.2.1 嵌入式linux網路驅動程序介紹 258
9.2.2 linux網路設備驅動的體系結構 259
9.2.3 網路設備驅動程序編寫方法 259
9.2.4 網路設備驅動程序應用實例 261
9.3 net_device 數據結構 262
9.3.1 全局信息 262
9.3.2 硬體信息 263
9.3.3 介面信息 263
9.3.4 設備方法 266
9.3.5 公用成員 268
9.4 dm9000網卡概述 268
9.4.1 dm9000網卡總體介紹 269
9.4.2 dm9000網卡的特點 269
9.4.3 內部寄存器 270
9.4.4 功能描述 274
9.5 dm9000網卡驅動程序移植 275
9.5.1 dm9000網卡連接 275
9.5.2 驅動分析——硬體的數據結構 276
9.5.3 驅動分析——數據讀寫函數 277
9.5.4 驅動分析——重置網卡 277
9.5.5 驅動分析——初始化網卡 277
9.5.6 驅動分析——打開和關閉網卡 282
9.5.7 驅動分析——數據包的發送與接收 283
9.5.8 dm9000網卡驅動程序移植 285
9.6 小結 288
第10章 音頻設備驅動程序移植 289
10.1 音頻設備介面 289
10.1.1 pcm(脈沖編碼調制)介面 289
10.1.2 iis(inter-ic sound)介面 289
10.1.3 ac97(audio codec 1997)介面 289
10.1.4 linux音頻設備驅動框架 290
10.2 linux音頻設備驅動——oss驅動框架 291
10.2.1 oss驅動架構硬體 291
10.2.2 oss驅動架構代碼 291
10.2.3 oss初始化函數oss_init() 293
10.2.4 oss釋放函數oss_cleanup() 294
10.2.5 打開設備文件函數sound_open() 295
10.2.6 錄音函數sound_read() 296
10.2.7 播放函數sound_write() 297
10.2.8 控制函數sound_ioctl() 297
10.3 linux音頻設備驅動——alsa驅動框架 298
10.3.1 card和組件 299
10.3.2 pcm設備 303
10.3.3 控制介面 306
10.3.4 ac97 api音頻介面 308
10.4 音頻設備應用程序編寫 312
10.4.1 dsp介面編程 312
10.4.2 mixer介面編程 315
10.4.3 alsa應用程序編程 316
10.5 音頻設備驅動移植 318
10.5.1 添加uda1341結構體 318
10.5.2 修改錄音通道 319
10.5.3 內核中添加uda1341驅動支持 320
10.5.4 移植新內核並進行測試 321
10.6 音頻播放程序madplay的移植 322
10.6.1 准備移植需要的源文件 322
10.6.2 交叉編譯 322
10.6.3 移植和測試 323
10.6.4 編譯中可能遇到的問題 324
10.7 小結 324
第11章 sd卡驅動移植 325
11.1 sd卡簡介 325
11.1.1 sd卡系統概念 325
11.1.2 sd卡寄存器 325
11.1.3 sd功能描述 326
11.2 sd卡驅動程序分析 329
11.2.1 host驅動部分 330
11.2.2 core驅動部分 333
11.2.3 card驅動部分 337
11.3 sd卡移植步驟 339
11.3.1 添加延時和中斷 339
11.3.2 配置內核 340
11.3.3 燒寫新內核 341
11.4 小結 342
第12章 nandflash驅動移植 343
12.1 nandflash介紹 343
12.1.1 nandflash命令介紹 343
12.1.2 nandflash控制器 344
12.2 nandflash驅動介紹 345
12.2.1 nand晶元結構 345
12.2.2 nandflash驅動分析 346
12.3 nandflash驅動移植 351
12.3.1 內核的修改 351
12.3.2 內核的配置和編譯 353
12.4 小結 353
第4篇 系統移植高級篇
第13章 minigui與移植 356
13.1 minigui在上位機中的安裝 356
13.1.1 安裝需要的安裝文件 356
13.1.2 minigui的運行模式 357
13.1.3 編譯並安裝minigui 357
13.1.4 編譯安裝minigui需要的圖片支持庫 360
13.1.5 編譯minigui應用程序例子 360
13.2 eclipse開發minigui程序 361
13.2.1 linux下安裝eclipse介紹 361
13.2.2 使用eclipse編譯minigui程序 363
13.2.3 設置外部工具 367
13.2.4 運行程序 368
13.3 vc++6.0開發minigui程序 368
13.3.1 安裝windows開發庫 368
13.3.2 建立新工程 369
13.3.3 添加文件和設置工程 370
13.3.4 編譯和運行程序 371
13.3.5 minigui程序編程風格舉例 372
13.4 minigui的交叉編譯和移植 374
13.4.1 交叉編譯minigui 375
13.4.2 移植minigui程序 376
13.5 小結 378
第14章 qt開發與qtopia移植 379
14.1 qt安裝與編程 379
14.1.1 下載安裝qt 379
14.1.2 qt編程 380
14.1.3 使用qmake生成makefile 382
14.2 qtopia core在x86平台上的安裝和應用 383
14.2.1 qtopia core安裝准備 383
14.2.2 編譯qtopia core 384
14.2.3 qtopia在x86平台上的應用開發 385
14.3 qtopia core在嵌入式linux上的移植 388
14.3.1 qtopia core移植准備 389
14.3.2 交叉編譯qtopia core 389
14.3.3 編譯內核 392
14.3.4 應用程序開發 392
14.3.5 應用程序移植 395
14.4 小結 395
第15章 嵌入式資料庫berkeley db移植 396
15.1 資料庫的基本概念 396
15.1.1 利用文檔和源代碼 396
15.1.2 創建環境句柄 396
15.1.3 創建資料庫句柄 397
15.1.4 打開資料庫 398
15.1.5 dbt結構 398
15.1.6 存取數據 399
15.1.7 關閉資料庫 400
15.2 berkeley db資料庫安裝 400
15.2.1 安裝成c庫 400
15.2.2 安裝成c++庫 401
15.2.3 交叉編譯安裝berkeley db 401
15.3 使用berkeley db資料庫 403
15.3.1 代碼分析 403
15.3.2 編譯運行程序 406
15.4 移植berkeley db資料庫 407
15.4.1 資料庫設計 407
15.4.2 編寫應用程序 407
15.4.3 調試和交叉編譯應用程序 409
15.4.4 資料庫的移植和測試 410
15.5 小結 410
第16章 嵌入式資料庫sqlite移植 411
16.1 sqlite支持的sql語句 411
16.1.1 數據定義語句 411
16.1.2 數據操作語句 412
16.2 sqlite資料庫編譯、安裝和使用 412
16.2.1 安裝sqlite 413
16.2.2 利用sql語句操作sqlite資料庫 413
16.2.3 利用c介面訪問sqlite資料庫 414
16.3 移植sqlite 417
16.3.1 交叉編譯sqlite 417
16.3.2 交叉編譯應用程序 418
16.4 移植sqlite資料庫 418
16.4.1 文件移植 419
16.4.2 運行應用程序 419
16.4.3 測試sqlite3 419
16.5 小結 421
第17章 嵌入式web伺服器boa移植 422
17.1 boa介紹 422
17.1.1 boa的功能 422
17.1.2 boa流程分析 423
17.1.3 boa配置信息 426
17.2 boa編譯和html頁面測試 428
17.2.1 編譯boa源代碼 428
17.2.2 設置boa配置信息 429
17.2.3 測試boa 429
17.3 cgi腳本測試 431
17.3.1 編寫測試代碼 431
17.3.2 編譯測試程序 431
17.3.3 測試cgi腳本 431
17.4 boa交叉編譯與移植 431
17.4.1 交叉編譯boa 432
17.4.2 准備測試程序 432
17.4.3 配置boa 432
17.4.4 測試 433
17.5 boa與sqlite結合 433
17.5.1 通過cgi程序訪問sqlite 434
17.5.2 編譯和測試 436
17.6 小結 437
第18章 嵌入式web伺服器thttpd移植 438
18.1 thttpd介紹 438
18.1.1 web伺服器比較 438
18.1.2 thttpd的特點 438
18.1.3 thttpd核心代碼分析 439
18.2 thttpd編譯和html頁面測試 442
18.2.1 配置文件介紹 442
18.2.2 thttpd編譯 443
18.2.3 運行和測試thttpd 443
18.3 cgi腳本測試 446
18.3.1 編寫測試代碼 446
18.3.2 編譯測試程序 447
18.3.3 測試cgi腳本 447
18.4 thttpd交叉編譯與移植 447
18.4.1 交叉編譯thttpd 447
18.4.2 交叉編譯cgi程序 448
18.4.3 移植thttpd 448
18.4.4 測試 449
18.5 thttpd與嵌入式資料庫結合 450
18.5.1 通過cgi程序訪問sqlite 450
18.5.2 編譯和測試 452
18.6 小結 453
第19章 jvm及其移植 454
19.1 jvm介紹 454
19.1.1 jvm原理 454
19.1.2 jvm支持的數據類型 455
19.1.3 jvm指令系統 456
19.1.4 jvm寄存器 456
19.1.5 jvm棧結構 456
19.1.6 jvm碎片回收堆 459
19.1.7 jvm異常拋出和異常捕獲 459
19.2 類裝載 460
19.2.1 裝載類的結構體 460
19.2.2 裝載類的操作 461
19.3 垃圾回收 463
19.3.1 mark-and-sweep回收演算法 464
19.3.2 分代回收演算法 465
19.3.3 增量收集 466
19.4 解析器 466
19.4.1 函數interpret() 466
19.4.2 函數fastinterpret() 467
19.4.3 函數slowinterpret () 469
19.5 java編程淺析 470
19.5.1 java程序命令 470
19.5.2 java構造函數 470
19.5.3 java主函數 470
19.5.4 java程序編譯與運行 471
19.6 kvm執行過程 471
19.6.1 kvm啟動過程 471
19.6.2 kvm用到的計數器清零 474
19.6.3 kvm初始化內存管理 475
19.6.4 kvm中的哈希表初始化 476
19.6.5 kvm中的事件初始化 477
19.6.6 kvm中的資源釋放 477
19.7 pc機安裝jvm 477
19.7.1 jvm在windows上的安裝 478
19.7.2 jvm在linux上的安裝 479
19.8 kvm移植和測試 480
19.8.1 sdk安裝和環境變數設置 480
19.8.2 修改makefile和代碼 480
19.8.3 kvm編譯 481
19.8.4 測試 481
19.8.5 移植 483
19.9 小結 485
第20章 voip技術與linphone編譯 486
20.1 voip介紹 486
20.1.1 voip基本原理 486
20.1.2 voip的基本傳輸過程 487
20.1.3 voip的優勢 487
20.1.4 voip的實現方式 487
20.1.5 voip的關鍵技術 488
20.2 osip協議概述 488
20.3 osip狀態機 489
20.3.1 ict(invite client (outgoing) transaction)狀態機 489
20.3.2 nict(non-invite client (outgoing) transaction)狀態機 498
20.3.3 ist(invite server (incoming) transaction)狀態機 499
20.3.4 nist(non-invite server (incoming) transaction)狀態機 500
20.4 osip解析器 500
20.4.1 初始化解析類型函數osip_body_init() 500
20.4.2 釋放函數osip_body_free() 501
20.4.3 字元串到body類型轉換函數osip_body_parse() 501
20.4.4 body類型到字元串類型轉換函數osip_body_to_str() 502
20.4.5 克隆函數osip_body_clone() 504
20.4.6 osip解析器分類 505
20.5 osip事務層 506
20.6 sip建立會話的過程 508
20.7 rtp協議 510
20.7.1 rtp基本概念 510
20.7.2 發送rtp 511
20.7.3 接收rtp 513
20.8 linphone編譯與測試 515
20.8.1 編譯linphone需要的軟體包 516
20.8.2 x86平台上編譯和安裝 516
20.8.3 linphone測試 519
20.8.4 進一步的測試和開發 523
20.9 linphone交叉編譯 523
20.9.1 linphone的交叉編譯 523
20.9.2 linphone的測試 526
20.10 小結 527
⑺ 如何讓kernel支持yaffs2 文件系統
1。修改內核源碼根目錄下的Makefile文件
#ARCH ?= arm
#CROSS_COMPILE ?=arm-linux-
2。修改arch/arm/plat-s3c24xx/common-smdk.c文件,修改Nand Flash的分區信息和Nand Flash的硬體信息。這里的分區一定要和你的bootloader的一致,你可以參考smdk_default_nand_part[]這個數據結構的做法。
3。還是2中用到的文件,修改static struct s3c2410_platform_nand smdk_nand_info = {
.tacls = 0,
.twrph0 = 30, //這 三個數字要改的 以前是20 60 20
.twrph1 = 0,
.nr_sets = ARRAY_SIZE(smdk_nand_sets),
.sets = smdk_nand_sets,
};
4。修改drivers/mtd/nand/s3c2410.c中s3c2410_nand_init_chip函數的NAND_ECC_SOFT為NAND_ECC_NONE。
5。晶振頻率:修改arch/arm/mach-s3c2440/mach-smdk2440.c
static void __init smdk2440_map_io(void)
{
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(12000000);//改成和你的一樣
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
}
6。添加對yaffs2文件系統的支持:
下載yaffs2的源碼包,解壓後進入其中,其加入Linux內核(打補丁的方式)
#cd yaffs2
#./patch-ker.sh c $you_kernel_path(你的內核代碼的目錄)
7。配置內核
先拷貝s3c2410開發板的默認配置到內核根目錄下,以簡化配置過程
# cp arch/arm/configs/s3c2410_defconfig .config
# make menuconfig
1.General setup --->
[*] Configure standard kernel features (for small systems) --->
2. System Type ---->
[*] S3C2410 DMA support [*] Support ARM920T processor
S3C2410 Machines --->
[*] SMDK2410/A9M2410
S3C2440 Machines --->
[*] SMDK2440
[*] SMDK2440 with S3C2440 CPU mole
3.Boot options --->
將 (root=/dev/hda1 ro init=/bin/bash console=ttySAC0) Default kernel command string
改成 (noinitrd root=/dev/mtdblock2 console=ttySAC0,115200 init=/linuxrc )
這里要特別注意root=/dev/mtdblock2 這個參數,mtdblock2是你的根文件系統所在的位置,和你在bootloader的分配有關,當然也和上述2。步驟的密切相關。不行的話多試幾次。
4.[*] Enable loadable mole support --->
[*] Mole unloading
[*] Automatic kernel mole loading
選擇這兩個,剩下的可以去掉
5.Device Drivers --->
<*> Memory Technology Device (MTD) support --->
[*] MTD partitioning support
<*> NAND Device Support --->
<*> NAND Flash support for S3C2410/S3C2440 SoC
[ ] S3C2410 NAND Hardware ECC //這個要去掉
6.File systems----->
Miscellaneous filesystems --->
<*>YAFFS2 file system support
7.make zImage
⑻ delphi xe 取CPU等硬體信息
usesHardWareInfo.pas{引用自定義單元,文件見附件}
procereTForm1.Button1Click(Sender:TObject);
var
CPUinfo:TCPU_info;//定義CPU對象
Diskinfo:TDisk_info;//硬碟
Memoryinfo:TMemory_info;//內存
NICinfo:TNIC_info;//網卡
VGAinfo:TVGA_info;//顯卡
begin
//創建實例
CPUinfo:=TCPU_info.Create;
Diskinfo:=TDisk_info.Create;
Memoryinfo:=TMemory_info.Create;
NICinfo:=TNIC_info.Create;
VGAinfo:=TVGA_info.Create;
//顯示硬體信息
memo1.Lines.Add('********************CPU*************************');
memo1.Lines.Add('製造商:'+CPUinfo.GetCpuFactory);
memo1.Lines.Add('型號:'+CPUinfo.GetCpuModel);
memo1.Lines.Add('個數:'+CPUinfo.GetCPUCount);
memo1.Lines.Add('********************硬碟*************************');
memo1.Lines.Add(Diskinfo.print_diskinfo);
memo1.Lines.Add('********************內存*************************');
memo1.Lines.Add(Memoryinfo.GetMemorysize);
memo1.Lines.Add(Memoryinfo.Getvirtualmemory);
memo1.Lines.Add(Memoryinfo.GetusingMemory);
memo1.Lines.Add('********************網卡*************************');
memo1.Lines.Add('序列號:'+NICinfo.GetNICID);
memo1.Lines.Add('本地IP:'+NICinfo.GetLocalIP);
memo1.Lines.Add('MAC地址:'+NICinfo.GetMAC);
memo1.Lines.Add('********************顯卡*************************');
memo1.Lines.Add(VGAinfo.printf_VGAinfo);
end;
⑼ 求紅米2的CPU,RAM,主板等硬體驅動源碼(Java for Android),我要改為原生An
要原生何必這樣呢,直接刷機即可。Android 系統文件目錄
/etc下的文件都是和低層硬體有關的,如果要你自己想移植原生系統,驅動不用去編譯,/etc 下文件直接用就可以改改ui 有關的組件就可以。