remap源碼
㈠ 銆怉utoware銆戦厤緗闀紲炴縺鍏夐浄杈緇slidar-c16騫跺畬鎴愮偣浜戣仛綾繪嫻
鍥犱負灝忚濺鐢ㄧ殑嬋鍏夐浄杈炬槸闀紲瀕slidar-c16錛岃孉utoware榛樿ゆ敮鎸佺殑鏄痸elodyne錛屽洜姝ら渶瑕佷慨鏀筶slidar-c16鐨勬簮鐮侀厤緗錛屾潵瀹屾垚瀵笰utoware鐨勯傞厤銆
棣栧厛闇瑕佸皢lslidar-c16榪炴帴濂界數婧愶紝騫墮噰鐢ㄧ綉緇滅鍙h繛鎺ュ埌涓繪満涓婏紝鍏蜂綋閰嶇疆鍒癠buntu鐨凴OS鐜澧冨彲浠ュ弬鑰冩垜涔嬪墠鍐欒繃鐨勫彟涓涓絎旇幫細 闀紲炴縺鍏夐浄杈緇slidar-c16鐨勯┍鍔ㄥ畨瑁呬笌ros涓媟viz鐐逛簯鏄劇ず
鍓嶅線lslidar-c16鐨勭洰褰曚笅src涓璴slidar_c16_decoder涓嬬殑launch鏂囦歡澶癸紝淇鏀瑰叾涓鐨刲slidar_c16.launch鏂囦歡錛屽皢鍏朵腑鐨勫師鍏坒rame_id鐨勫尖渓aser_link鈥濅慨鏀逛負autoware涓鑳界敤鐨剉elodyne錛 <param name="frame_id" value="velodyne"/> 錛屽啀澧炲姞涓涓 <remap from="lslidar_point_cloud" to="/points_raw" /> 鐢ㄤ簬Autoware鎺ユ敹鐨勭偣浜戣瘽棰/points_raw錛堟敞鎰忎笉瑕佸皯浜唖錛
鎵撳紑鍙充笅瑙掔殑rviz錛屽苟涓斿姞杞藉垰鎵嶄慨鏀硅繃鐨刲slidar_c16鐨刲aunch鏂囦歡錛 /home/clark/Workspace/catkin_ws_lslidar/src/lslidar_C16/lslidar_c16_decoder/launch 銆
鍙浠ョ湅鍒板乏涓婅扜lobal Options涓鐨凢ixed Frame榛樿よ劇疆鎴愪簡velodyne錛屽彸渚ф樉紺哄嚭嬋鍏夐浄杈緇slidar-c16鐨勬壂鎻忔暟鎹銆
㈡ bootloader源代碼Snds.S解析
大哥這個有意思嗎?你是學BOOTLODE的嗎?這個只是對寄存器或者變數的設置
S3C4510B的特殊功能寄存器: 系統管理器
ARM7_SYSCFG EQU (ASIC_BASE+0x0000) 系統配置寄存器
ARM7_CLKCON EQU (ASIC_BASE+0x3000) 時鍾控制寄存器
ARM7_EXTACON0 EQU (ASIC_BASE+0x3008) 外部I/O時序寄存器1
ARM7_EXTACON1 EQU (ASIC_BASE+0x300c) 外部I/O時序寄存器2
ARM7_EXTDBWTH EQU (ASIC_BASE+0x3010) 分組數據匯流排的寬度設置寄存器
ARM7_ROMCON0 EQU (ASIC_BASE+0x3014) ROM/ARAM/FLASH組0控制寄存器
ARM7_ROMCON1 EQU (ASIC_BASE+0x3018) ROM/ARAM/FLASH組1控制寄存器
ARM7_ROMCON2 EQU (ASIC_BASE+0x301c) ROM/ARAM/FLASH組2控制寄存器
ARM7_ROMCON3 EQU (ASIC_BASE+0x3020) ROM/ARAM/FLASH組3控制寄存器
ARM7_ROMCON4 EQU (ASIC_BASE+0x3024) ROM/ARAM/FLASH組4控制寄存器
ARM7_ROMCON5 EQU (ASIC_BASE+0x3028) ROM/ARAM/FLASH組5控制寄存器
ARM7_DRAMCON0 EQU (ASIC_BASE+0x302c) DRAM組0控制寄存器
ARM7_DRAMCON1 EQU (ASIC_BASE+0x3030) DRAM組1控制寄存器v
ARM7_DRAMCON2 EQU (ASIC_BASE+0x3034) DRAM組2控制寄存器
ARM7_DRAMCON3 EQU (ASIC_BASE+0x3038) DRAM組3控制寄存器
ARM7_REFEXTCON EQU (ASIC_BASE+0x303c) 刷新與外部I/O控制寄存器
中斷 控制器
ARM7_INTMODE EQU (ASIC_BASE+0x4000) 中斷模式寄存器
ARM7_INTPEND EQU (ASIC_BASE+0x4004) 中斷懸掛寄存器
ARM7_INTMASK EQU (ASIC_BASE+0x4008) 中斷屏蔽寄存器
ARM7_INTOFFSET EQU (ASIC_BASE+0x4024) 中斷偏移地址寄存器
ARM7_INTPENDTST EQU (ASIC_BASE+0x402c)
ARM7_INTPRI0 EQU (ASIC_BASE+0x400C) 中斷優先順序寄存器0
ARM7_INTPRI1 EQU (ASIC_BASE+0x4010) ..
ARM7_INTPRI2 EQU (ASIC_BASE+0x4014) ..
ARM7_INTPRI3 EQU (ASIC_BASE+0x4018) ..
ARM7_INTPRI4 EQU (ASIC_BASE+0x401C) ..
ARM7_INTPRI5 EQU (ASIC_BASE+0x4020) 中斷優先順序寄存器5
ARM7_INTOSET_FIQ EQU (ASIC_BASE+0x4030) FIQ中斷偏移量寄存器
ARM7_INTOSET_IRQ EQU (ASIC_BASE+0x4034) IRQ中斷偏移量寄存器
I/O口
ARM7_IOPMOD EQU (ASIC_BASE+0x5000) I/O口模式寄存器
ARM7_IOPCON EQU (ASIC_BASE+0x5004) I/O口控制寄存器
ARM7_IOPDATA EQU (ASIC_BASE+0x5008) I/O口數據寄存器
ARM7_IICCON EQU (ASIC_BASE+0xf000) IIC匯流排控制狀態寄存器
ARM7_IICBUF EQU (ASIC_BASE+0xf004) IIC匯流排移位緩沖寄存器
ARM7_IICPS EQU (ASIC_BASE+0xf008) IIC匯流排預分頻寄存器
ARM7_IICCNT EQU (ASIC_BASE+0xf00c) IIC匯流排預分頻計數寄存器
rEXTDBWTH EQU 0x00003001 分組數據匯流排的寬度設置寄存器
rROMCON0 EQU 0x02000060 ROM/ARAM/FLASH組0控制寄存器
rROMCON1 EQU 0x60 ROM/ARAM/FLASH組1控制寄存器
rROMCON2 EQU 0x60 ROM/ARAM/FLASH組2控制寄存器
rROMCON3 EQU 0x60 ROM/ARAM/FLASH組3控制寄存器
rROMCON4 EQU 0x60 ROM/ARAM/FLASH組4控制寄存器
rROMCON5 EQU 0x60 ROM/ARAM/FLASH組5控制寄存器
rSDRAMCON0 EQU 0x12008380 下面的幾個沒有查到,應該是你自己定義的
rSDRAMCON1 EQU 0x00
rSDRAMCON2 EQU 0x00
rSDRAMCON3 EQU 0x00
rSREFEXTCON EQU 0xCE278360
rEXTDBWTH_R EQU 0x00003001
rROMCON0_R EQU 0x12040060
rROMCON1_R EQU 0x60
rROMCON2_R EQU 0x60
rROMCON3_R EQU 0x60
rROMCON4_R EQU 0x60
rROMCON5_R EQU 0x60
rSDRAMCON0_R EQU 0x10000380
rSDRAMCON1_R EQU 0x00
rSDRAMCON2_R EQU 0x00
rSDRAMCON3_R EQU 0x00
rSREFEXTCON_R EQU 0xCE278360
自己多想想看看,其實沒有什麼,只是一個一個代號賦值問題,寄存器,很重的
㈢ C#服務端,Android客戶端 開發IM,服務端怎麼弄,有沒有開源的框架
C#開源項目(國外的還是很多) 一、Ajax框架 Ajax.NET Professional
(AjaxPro)是最先把AJAX技術在微軟.NET環境下的實現的AJAX框架之一。它在客戶端腳本之上創建代理類來調用伺服器端的方法。
MagicAjax.NET是一款在ASP.NET下創建Web頁面提供AJAX技術的框架。它使開發人員很容易把AJAX整合到他們的頁面而不需要替換ASP.NET控制項或自己寫javascript腳本代碼。
Anthem.NET是為ASP.NET開發環境提供的開源AJAX工具包,它可以運行於ASP.NET 1.1和2.0。
二、工作流(workflow)
Workflow.Net是使用微軟.Net技術基於wmfc標準的創建工作流引擎。
NetBPM是JBpm移植到.net平台下的一款開源工作流軟體。NetBpm可以很容易和.Net應用程序集成在一起,可以創建,執行和管理工作流程序。 Bpm
Tool支持將業務模型轉換成軟體模型。業務開發人員可以使用模型驅動的方法設計,實現,執行和跟蹤業務流程。因此開發人員能夠更容易的關注業務邏輯的變化。
其實微軟自己的WPF做WorkFlow也很厲害。
三、文本編輯 FCKeditor是一款功能強大的開源在線文本編輯器(DHTML
editor),它使你在web上可以使用類似微軟Word 的桌面文本編輯器的許多強大功能。它是輕量級且不必在客戶端進行任何方式的安裝。 FreeTextBox
是一個基於 Internet Explorer 中 MSHTML 技術的 ASP.NET 開源伺服器控制項。這是一款優秀的自由軟體(Free
Software),我們可以輕松地將其嵌入到 Web Forms 中實現 HTML 內容的在線編輯,在新聞發布、博客寫作、論壇社區等多種 Web
系統中都會有用途。 VietPad是一個功能完整的跨平台的Java/.NET的Vietnamese
Unicode開源文本編輯器。支持打開,編輯,列印,轉換,排序,和保存基於文本的Unicode格式的Vietnamese文件。
NetSpell是一款.NET框架下的開源拼寫檢查引擎。 PPC_edit是一款應用在Pocket PC上的開源文本編輯器,它支持TXT, RTF, HTML,
WordML, DocBook 和 ZIP格式的文件,屏幕上會顯示國際標準的軟鍵盤。
四、博客(Blog)
NovaShare是一款Blog引擎,它使你創建基於互動式的web的新聞和論壇網站,很像WonkoSlice或Slashdot。管理員可以發布文章和發起投票,瀏覽者可以創建用戶帳號,發表議論等等。
dasBlog是從BlogX 網上日誌引擎發展而來。像Trackback ,Pingback
一樣增加許多附加的特徵,有完整的Blogger/MovableType
API支持,API注釋,完整的Radio-style模板定製,支持Mail-To-Weblog/POP3的附件和內嵌圖片,基於WEB的
DHTML,OPML,配置的編輯器。 DotText是一個被使用了數百個blogs的強勁的blog引擎。這是一個N-tiered應用的例子。
tBlogger是一個C#開發的完整的blog網站程序,使用XML配置。
Blog現在可以使用MVC的其他開源項目來構建,這些項目在codeplex上有很多,其中微軟自己的就有OXite。
五、系統構建
.NETZ是一款免費開源工具,它可以壓縮和打包微軟 .NET 框架可執行文件(EXE,
DLL)以使他們更小。更小的可執行文件佔用的磁碟空間較少且因為讀取文件時對磁碟的訪問較少而使讀取數度更快。它和PE(portable
executable)打包工具不一樣,.NETZ是使用 C# 編寫的存粹的 .NET 解決方案。.NETZ可以用來打包幾乎每一種 .NET
支持的語言編寫的程序。.NETZ支持 .NET EXE 和 非共享(non-shared)的 DLL
文件。壓縮過的程序能以相同的方式解壓縮這些對最終用戶是透明的。 NAntContrib為NAnt提供定製任務的工具。
Prebuild是XML驅動的一款跨平台pre-build工具,使開發人員很容易就可以為IDE和.NET開發工具生成項目或構建文件。它支持 Visual
Studio .NET 2002, 2003, 2005, SharpDevelop, MonoDevelop 和 NAnt。
BusyBeeBuilder是.NET平台下功能強大,易於使用,可擴展的開源構建自動操作工具。 Draco.NET 是 Windows
服務應用程序。它的設計使其容易持續的集成新特性。Draco.NET監視你的源代碼儲存庫。當探測到你的項目有變化時自動重新創建項目並把包含變化列表的創建結果發送到你的Email。
Build Studio為軟體的自動構件處理提供了一套完整的解決方案。 CruiseControl.NET是.NET平台下的一款整合伺服器。
NAnt類似Apache項目下的Ant,是.Net下的開源構建工具。適用在自動編譯.NET應用的場合,如.NET項目的每日構建(nightly
build)。
說老實話,我並不認為系統構建工具的作用真的有那麼強大,如果你真的計劃做一個很大的項目,且持續開發時間很長,那麼你可以使用上面的系統構建工具。
五、圖表製作
ZedGraph是C#編寫的.NET類庫,提供了用戶控制項和web控制項。它可以創建2D的線性圖、條形圖和餅圖。它功能完整且有詳細的功能自定義,不過
使用默認的選項就足夠好用了。一款類似 PieChart, StackBar, LineChart的C#開源圖表組件。
NPlot是一款.NET下的開源圖表類庫.它值得稱道的地方是優雅且靈活的API設計.NPlot包含了Windows Form控制項,
ASP.NET控制項和一個創建Bitmap圖片的類。還有一個可用的GTK#控制項。 XSCharting是C#開發的圖表組件,提供了多種多樣的圖表選項。
DaveChart是一個免費的DotNet類庫。 NChart 提供了很多值得應用在商業,教育等多個領域的2 D圖表。
微軟自己已經提供了一個chat繪制控制項,也就是原來的nat,如果那個可以滿足你的要求,那麼完全沒有必要使用上面的。但是如果你需要研究畫圖,作自己定義的chat,那麼這些開源的項目將對你有很大的幫助。
六、聊天系統
Dot Net Chat
server是基於DotNet框架開發的聊天伺服器和客戶端項目。說老實話,我對這個很感興趣,有時間,要瞧瞧它的代碼是咋實現的。
七、內容管理系統(CMS)
Ludico是C#編寫的居於ASP.NET
2.0的Portal/CMS系統。它的模塊化設計是你可以按照你希望的使用或開發網站功能。它裡面有高級的用戶管理,一個所見即所的(WYSIWYG)的編輯器等。
mojoPortal是一款C#開發的面相對象網站框架,它可以運行於Windows的ASP.NET 和GNU/linux 或Mac OS X的Mono的平台上。
Cuyahoga是C#開發的靈活的CMS / Portal 解決方案。它可以運行於Microsoft .NET 和Mono 平台,支持SQL Server,
PostgreSQL或MySQL作為底層資料庫。 Umbraco是一款在.net平台下C#開發的開源內容管理系統,該系統效率,靈活,用戶界面都不錯。 Kodai
CMS是.NET平台下的一款功能齊全的內容管理系統。 Rainbow項目是一款使用Microsoft』』s
ASP.NET和C#技術開發的有豐富功能的開源內容管理系統。 NkCMS是使用ASP.net和Sql server 2000開發的內容管理系統。
Amplefile是一款內容管理系統,是.Net環境下的windows應用程序,使用了.Net remoting.
Go.Kryo是一個用ASP.NET(C#).NET 實現的簡單的內容管理系統,後台資料庫使用Microsoft SQL Server 。 ndCMS是
ASP.net
(C#)下的一個內容管理系統。它提供了用戶管理,文件管理,一個WYSIWYG編輯器,模板管理,拼寫檢查和內置的http壓縮。ndCMS的目標是提供一個簡單而快速的方式部署.Net站點以節省你的時間和金錢。
這些開源的CMS我試用了幾個,說真的,拿來研究可以,要真的實施,估計很難。
九、論壇系統
YetAnotherForum可以作為ASP.NET開發的網站的論壇或是留言板。它使用MSSQL作為底層資料庫。
十、安裝製作
izfree是一套套免費的工具用於幫助創建使用Microsoft」』』s Windows
Installer 技術的安裝程序。使用izfree你可以為你的應用程序製作強勁的安裝程序。
Windows Installer XML
(WiX)可以重XML源文件創建Windows程序安裝包的工具集。它支持命令行方式,開發人員可以把結合它來創建MSI和MSM安裝包一個可以和商業軟體安裝產品相比的開源打包工具。
一般的需求試用VS
自帶的就可以了,更復雜的需要用到InstallShield,這樣看起來開源的就沒啥意義了。
十一、IoC容器
Spring.net是從java的Spring
Framework移植過來的。java的Spring包含了許多功能和特性,在當前的Spring.net都有提供。Spring.net最初發布的版本包含了一個很有特色的IoC容器。
Castle是一組應用開發的工具,內含一個簡單的IoC容器。
StructureMap是.NET環境下的一個輕量級依賴注入工具,StructureMap也是一個靈活的、可擴展的通用「插件」機制的.NE
我用過StrucutureMap,但是給我的感覺是,試用這個似乎沒多發幫助。
十二、網路客戶端
.NET FTP Client是C#編寫的開源類庫。
.NET Telnet是微軟.NET
Framework下的C#開發的開源telnet類庫。它的靈感來至Java Telnet Application。
metro這個項目是C#編寫的類庫,它提供了一套豐富的類使開發IP version 4, TCP,
UDP and ICMP等工作更容易。它包含了有很有用的工具如包嗅探器,網路分析工具例如路由跟蹤,ping等。
LJ.NET是LiveJournal站點的客戶端。它為LJ在線日誌服務提供了簡單而強大的用戶介面。
NET VNC Viewer 是一款完全用C#開發的開源VNC觀察器。它兼容Smartphones,
Pocket PC和Windows的電腦(.NET CF or .NET Framework)。它比起其它觀察器的優點是可以在Pocket
PC上全屏顯示而且可以旋轉屏幕。
GVDownloader允許你從google videos, metacafe, putfile,
youtube, break.com 和更多的地方快速下載內含的視頻和多媒體。它的包含一個強勁IE插件和位於你系統托盤的獨立程序。
DotNetOpenMail能夠使你在微軟.net框架開發的asp.net,
WinForm應用程序發送Email。它是C#編寫的開源組件,它不需要使用System.Web.Mail類庫就可以容易的創建帶附件HTML和
Plain-text的Email。程序員不需要知道很多相關的細節就可以使用不同的字元集或不同的MINE編碼來創建
multipart/alternative,multipart/related和multipart/mixed的MIME消息。
DotMSN是一款獨立的開源類庫,它不需要和官方的MSN Messenger交互,因此不必安裝MSN
Messenger就可以使用DotMSN和MSN
Messenger服務通信.DotMSN是C#編寫的,所以.NET環境支持的語言都能夠使用.DotMSN類庫使用簡單而且實現方便。它靈活,堅固,
輕量級利於整合到任何應用系統.使用DotMSN的應用系統能實現從創建消息機器人到自定義客戶端等各種不同的功能.如果你的應用程序需要和
Messenger服務通信,DotMSN是一個不錯的工具.
SharpSSH使用C#實現了SSH2協議,它支持SSH, SCP 和 SFTP.
OpenPOP.NET一組和POP Servers通信的.NET類庫。
IceChat是為連接多樣的IRC Servers設計的Internet Relay Chat
Client。
lphant是為edonkey/emule開發的開源客戶端程序。
.NET FTP Client C#開發的類庫。
OpenSmtp.net 是 C# 開發的開源SMTP組件。它不依賴.NET Framework
的System.Web.Mail 包中的類。允許開發人員使用不同於MS SMTP的SMTP 伺服器且提供了web
service而可以通過HTTP發送email。
這裡面有幾個值得推薦,例如DotMsn這個,在某些場合就很有用處。
㈣ apache traffic server鎬庝箞閰嶇疆webui
涓 浠嬬粛
Apache Traffic Server錛圓TS鎴朤S錛夋槸涓涓楂樻ц兘鐨勩佹ā鍧楀寲鐨 HTTP 浠g悊鍜岀紦瀛樻湇鍔″櫒銆俆raffic Server 鏈鍒濇槸 Inktomi 鍏鍙哥殑鍟嗕笟浜у搧錛岃ュ叕鍙稿湪 2003 騫磋 Yahoo 鏀惰喘錛屼箣鍚 Traffic Server 涓鐩村湪 Yahoo 鍐呴儴浣跨敤闀胯揪 4 騫達紝鐩村埌 2009 騫 8 鏈 Yahoo 鍚 Apache 杞浠跺熀閲戜細錛圓SF錛夎礎鐚浜嗘簮浠g爜錛屽苟浜 2010 騫 4 鏈堟垚涓轟簡 ASF 鐨勯《綰ч」鐩錛圱op-Level Project錛夈 Apache Traffic Server 鐜板湪鏄涓涓寮婧愰」鐩錛屽紑鍙戣璦涓篊++銆
Traffic Server 鐨勫紑鍙戝洟闃熸浘緇忕敱 Chuck Neerdaels 棰嗗礆紝浠栦篃鏄 Harvest 欏圭洰鐨勬棭鏈熷壋濮嬩漢涔嬩竴錛孒arvest 欏圭洰鍚庢潵鍙戝睍涓哄嶮鍒嗘祦琛岀殑 Squid 欏圭洰錛汱eif Hedstrom 鐩存帴綆$悊鐫鐜板湪鐨 Traffic Server 寮鍙戝洟闃熴傜洰鍓 Chuck Neerdaels 鍜 Leif Hedstrom閮藉凡鍔犵洘鐭ュ悕 CDN 鏈嶅姟鎻愪緵鍟 Akamai銆
HTTP 浠g悊鏈嶅姟鍣ㄦ槸 HTTP 鏈嶅姟鍣ㄧ殑涓縐嶅疄鐜幫紝澶勪簬瀹㈡埛絝錛堜竴鑸涓烘祻瑙堝櫒錛変笌鍙︿竴涓 HTTP 鏈嶅姟鍣ㄤ箣闂達紙閫氬父鎸囨簮鏈嶅姟鍣錛孫rigin Server錛夈侶TTP 浠g悊閫氬父鍒嗕負姝e悜浠g悊銆佸弽鍚戜唬鐞嗗拰閫忔槑浠g悊錛屾垜浠涓昏佸叧娉ㄧ殑鏄鍙嶅悜浠g悊錛圧everse Proxy錛岃佷笅鍥撅級鍙嶅悜浠g悊鏈嶅姟鍣ㄦ牴鎹鏄庣『閰嶇疆鐨勬槧灝勮勫垯鏉ュ勭悊鐢ㄦ埛璇鋒眰銆傚弽鍚戜唬鐞嗘湇鍔″櫒閫氬父浼氳劇疆涓涓杈冨ぇ鐨勭紦瀛樺尯錛屾湇鍔″櫒澶勭悊璇鋒眰鐨勫悓鏃跺皢璇鋒眰鐨勫唴瀹圭紦瀛樺湪鏈嶅姟鍣ㄦ湰鍦幫紝褰撲笅嬈$敤鎴瘋鋒眰鍚屼竴涓瀵硅薄鏃訛紝鏈嶅姟鍣ㄥ彲鐩存帴浠庣紦瀛樺尯閲屽彇鍑哄硅薄錛岃屼笉鐢ㄥ幓婧愭湇鍔″櫒鍘誨彇錛岃搗鍒頒簡鍔犻熺殑鏁堟灉銆傚彟澶栵紝閰嶇疆鍙嶅悜浠g悊鐨勬槧灝勮勫垯涔熻兘瀹炵幇璐熻澆鍧囪鐨勫姛鑳姐傞櫎浜 Traffic Server錛屽父瑙佺殑寮婧愪唬鐞嗘湇鍔″櫒榪樻湁 Squid錛孷arnish錛孨ginx錛孒AProxy銆
Apache <wbr>Traffic <wbr>Server <wbr>綆浠
Traffic Server 鍦 Yahoo 鍐呴儴浣跨敤浜嗚秴榪 4 騫達紝涓昏佺敤浜 CDN 鏈嶅姟錛孋DN 鐢ㄤ簬鍒嗗彂鐗瑰畾鐨 HTTP 鍐呭癸紝閫氬父鏄闈欐佺殑鍐呭瑰傚浘鐗囥丣avaScript銆丆SS銆備笅闈㈡槸Traffic Server 鍦 Yahoo CDN 搴旂敤鐨勪竴浜涙儏鍐碉細
瓚呰繃 4 騫寸殑浣跨敤涓錛岀紦瀛樹腑娌℃湁鍑虹幇宸茬煡鐨勬暟鎹鎹熷潖錛坉ata corruption錛夛紱
浣滀負鍙嶅悜浠g悊錛屾湇鍔″櫒鏂逛究閮ㄧ講鍜岀$悊錛屽苟涓斿ぇ閮ㄥ垎閰嶇疆鐨勬洿鏀瑰彲鐩存帴鍦ㄧ嚎涓婃湇鍔″櫒瀹屾垚錛岃屼笉鐢ㄩ噸鍚鏈嶅姟錛
鍦ㄩ珮騫跺彂鎯呭喌涓嬫墿灞曡壇濂斤紝鏀鎸 HTTP/1.1 鍗忚鐗規э紝濡 SSL銆並eep-Alive錛
鍦ㄤ笘鐣岃寖鍥村唴閮ㄧ講浜嗚秴榪 100 鍙版湇鍔″櫒錛
鍦ㄥ疄闄匔DN涓錛屾瘡縐掑勭悊瓚呰繃 350,000 嬈¤鋒眰錛岃揪鍒 30 Gbps錛屾渶澶у歸噺鑷沖皯鍗佸嶄簬鏅閫氫嬌鐢錛屼互搴斿歸珮宄版椂鐨勫ぇ閲忚鋒眰錛
鍦ㄥ疄闄 CDN 涓錛屾瘡鍙版湇鍔″櫒鏈 20,000 鍒 30,000 鐨 keep-alive 騫跺彂榪炴帴錛屽叾涓鏈 1,000 鍒 2,000 鐨勮繛鎺ユ槸涓鐩村緢媧昏穬鐨勶紱
瀹為獙鐜澧冧腑錛屽崟鍙版湇鍔″櫒姣忕掑勭悊 105,000 嬈¤鋒眰錛岃鋒眰鐨勫硅薄鏄琚緙撳瓨浣忕殑灝忔枃浠訛紱
瀹為獙鐜澧冧腑錛岃鋒眰澶ф枃浠舵椂錛屽崟鍙版湇鍔″櫒杈懼埌 3.6 Gbps錛4x GigE NIC bonded錛夈
浜 緇勪歡銆佹満鍒
Traffic Server錛圱S錛 鐨勭粍鎴
1.Traffic Server緙撳瓨
TS 緙撳瓨鍖呭惈涓涓楂橀熺殑瀵硅薄鏁版嵁搴擄紝鏁版嵁搴撴牴鎹 URL 鍜岀浉鍏沖ご閮ㄦ潵緔㈠紩瀵硅薄錛屽逛簬鍚屼竴瀵硅薄鍙浠ョ紦瀛樹笉鍚岀増鏈錛堝備笉鍚岀殑緙栫爜銆佽璦錛夈
褰撶紦瀛樼┖闂存弧鍚庯紝TS 浼氱Щ闄よ繃鏈熺殑鏁版嵁銆
褰撶佺洏鍑洪敊鏃訛紝TS 灝嗕笉鍐嶄嬌鐢ㄨュ潡紓佺洏錛岃漿鑰屼嬌鐢ㄥ墿涓嬬殑紓佺洏銆傛墍鏈夌佺洏閮藉嚭閿欐椂錛孴S 灝嗗垏鎹㈣嚦 proxy-only 妯″紡錛屽嵆鍙浠g悊錛屼笉緙撳瓨銆
鍙鍒嗗尯錛屽嵆鍙浠ョ粰鎸囧畾鐨勫崗璁鍜屾簮鏈嶅姟鍣ㄥ垝鍒嗕竴瀹氭暟閲忕殑紓佺洏絀洪棿
2.RAM 緙撳瓨
鍐呭瓨緙撳瓨鍖哄偍瀛樻瘮杈冪儹闂ㄧ殑瀵硅薄錛屽湪嫻侀噺鐨勯珮宄版湡鏃惰兘鍔犲揩澶勭悊閫熷害鍜岄檷浣庣佺洏璐熻澆銆
3.涓繪満鏁版嵁搴
鍌ㄥ瓨 DNS 淇℃伅錛屾柟渚誇富鏈哄悕鍒 IP 鍦板潃鐨勫揩閫熻漿鎹
鍌ㄥ瓨姣忎釜涓繪満鐨 HTTP 鐗堟湰錛屾柟渚塊珮綰у崗璁鐗規х殑浣跨敤
鍌ㄥ瓨涓繪満鐨勫彲闈犳у拰鍙鐢ㄦт俊鎮
4.DNS 瑙f瀽鍣
TS 鍘熺敓瀹炵幇浜 DNS 瑙f瀽鍣錛屼笉渚濊禆杈冩參鐨勪紶緇熻В鏋愬簱銆傚悓鏃朵篃闄嶄綆浜 DNS 鐨勬祦閲忋
5.Traffic Server 榪涚▼
traffic_server 榪涚▼璐熻矗鎺ュ彈榪炴帴錛屽勭悊鍗忚璇鋒眰錛岀劧鍚庝粠緙撳瓨鎴栨簮鏈嶅姟鍣ㄨ幏鍙栧硅薄騫惰繑鍥
traffic_manager 榪涚▼鏄 TS 鐨勫懡浠ゅ拰鎺у埗璁炬柦錛岃礋璐e惎鍔ㄣ佺洃鎺у拰閰嶇疆 traffic_server 榪涚▼錛屽畠涔熻礋璐d唬鐞嗙殑絝鍙i厤緗銆佺粺璁′俊鎮鐨勬帴鍙c侀泦緹ょ$悊鍜岃櫄鎷 IP 鐨勬晠闅滆漿縐匯
濡傛灉 traffic_manager 媯嫻嬪埌 traffic_server 榪涚▼澶辨晥錛屽畠絝嬪嵆閲嶅惎 traffic_server 榪涚▼騫朵笖緇存姢涓涓榪炴帴闃熷垪錛屼繚瀛樻ゆ椂鍒版潵鐨勮鋒眰錛屽畬鍏ㄩ噸鍚鍚庤繖涓闃熷垪閲岀殑榪炴帴灝嗘寜欏哄簭琚澶勭悊銆
traffic_cop 榪涚▼鐩戣 traffic_server 鍜 traffic_manager 榪涚▼錛屾よ繘紼嬪懆鏈熸х殑鏌ヨ traffic_server 鍜 traffic_manager 榪涚▼鐨勫仴搴風姸鍐碉紝濡傛灉鏌ヨ㈠湪涓瀹氶棿闅旀椂闂村唴鏈榪斿洖鎴栬呰繑鍥炰俊鎮涓嶆g『錛宼raffic_cop 灝嗛噸鍚 traffic_manager 鍜 traffic_server 榪涚▼銆
Apache <wbr>Traffic <wbr>Server <wbr>綆浠
6.綆$悊宸ュ叿
Traffic Line 鏄鍛戒護琛岀▼搴忥紝鍙浠ョ敤鏉ュ揩閫熺洃瑙 Traffic Server 鐨勬ц兘鍜岀綉緇滄祦閲忥紝涔熻兘閰嶇疆 TS銆
Traffic Shell 涔熸槸鍛戒護琛屽伐鍏鳳紝榪涘叆璇 shell 鍚庢湁鑷宸變竴濂楄娉曪紝鍙浠f浛 Traffic Line 瀹屾垚鐩戞帶銆侀厤緗浠誨姟銆
閫氳繃 Traffic Line 鍜 Traffic Shell 瀵歸厤緗浣滃嚭鐨勪慨鏀瑰皢浼氳嚜鍔ㄥ啓鍏ラ厤緗鏂囦歡涓銆
Traffic Server 鐨勫簳灞傛満鍒
Apache Traffic Server 涓嶅悓浜庡ぇ閮ㄥ垎寮婧愪唬鐞嗘湇鍔″櫒錛屽畠緇撳悎浜嗕袱縐嶆妧鏈鏉ュ勭悊楂樺苟鍙戱細
寮傛ヤ簨浠跺勭悊錛圓synchronous event processing錛
澶氱嚎紼嬶紙Multi-threading錛
Traffic Server 鍦ㄥ CPU銆佸氭牳鐨勭‖浠朵笂鎵╁睍鑹濂斤紝鑳藉厖鍒嗗埄鐢ㄦ墍鏈夊彲鐢ㄧ殑 CPU 鍜屽叾浠栬祫婧愩
HTTP 浠g悊緙撳瓨鐩稿叧鏈哄埗
1. Traffic Server 澶勭悊璇鋒眰鐨勮繃紼
1錛夌敤鎴瘋鋒眰涓涓 web 瀵硅薄錛孴S 鏀跺埌璇鋒眰
2錛塗S 閫氳繃瀵硅薄鐨勫湴鍧錛屽湪瀵硅薄鏁版嵁搴擄紙緙撳瓨錛変腑鍘誨畾浣嶈ュ硅薄
a.濡傛灉瀵硅薄鍦ㄧ紦瀛樹腑錛孴S 浼氭鏌ュ硅薄鏄鍚︽柊椴滐紙fresh錛
濡傛灉鏂伴矞錛孴S 浠庣紦瀛橀噷榪斿洖璇ュ硅薄緇欑敤鎴鳳紝姝ゆ椂縐頒負緙撳瓨鍛戒腑錛坈ache hit錛
濡傛灉涓嶆柊椴滐紙stale錛夛紝TS 浼氳繛鎺ユ簮鏈嶅姟鍣ㄥ幓楠岃瘉瀵硅薄鏄鍚︿粛鐒舵柊椴滐紝鍗抽噸鏂伴獙璇侊紙revalidation錛夛紝濡傛灉浠嶇劧鏂伴矞錛孴S 絝嬪嵆灝嗙紦瀛樹腑鐨勫壇鏈榪斿洖緇欑敤鎴
b.濡傛灉瀵硅薄涓嶅湪緙撳瓨涓錛堢紦瀛樻湭鍛戒腑錛宑ache miss錛夛紝鎴栬呯紦瀛樼殑鍓鏈涓嶅啀鏈夋晥錛孴S 浼氬幓婧愭湇鍔″櫒鑾峰彇瀵硅薄錛岀劧鍚庡悓鏃跺仛涓嬮潰涓や歡浜
灝嗗硅薄榪斿洖緇欑敤鎴
灝嗗硅薄鏀懼埌鏈鍦扮紦瀛樹腑
2. Traffic Server 鍒ゆ柇 HTTP 瀵硅薄鏄鍚︽柊椴滐紙fresh錛夌殑榪囩▼
濡傛灉鏈 Expires 鎴栬 max-age 澶撮儴鐩存帴瀹氫箟緙撳瓨鐨勮繃鏈熸椂闂達紝TS灝嗗規瘮褰撳墠鏃墮棿鍜岃繃鏈熸椂闂村幓鍒ゆ柇瀵硅薄鏄鍚︽柊椴
濡傛灉娌℃湁涓婅堪澶撮儴錛孴S 灝嗘鏌 Last-Modified 鍜 Date 澶撮儴錛堝叾涓璂ate鏄婧愭湇鍔″櫒榪斿洖瀵硅薄鐨勬椂闂達紝濡傛灉娌℃湁 Last-Modified 澶撮儴錛孴S 浼氱敤瀵硅薄鍐欏叆緙撳瓨鐨勬椂闂翠互浣滀唬鏇匡級錛岀劧鍚庣敤浠ヤ笅鍏寮忕畻鍑烘柊椴滅殑鏃墮棿鑼冨洿錛坒reshness_limit錛屽彲鐞嗚В涓轟繚璐ㄦ湡錛:
freshness_limit = ( Date - Last-Modified ) x 0.1
0.1 榪欎釜鍙傛暟鍙浠ヤ綔璋冩暣錛屽苟涓旇兘闄愬埗 freshness_limit 鐨勪笂涓嬮檺錛岄粯璁ゆ渶灝忔槸 1 灝忔椂錛屾渶澶ф槸 1 澶
濡傛灉娌℃湁 Expires 澶撮儴鎴栬呮病鏈 Last-Modified銆丏ate 澶撮儴錛孴S 灝嗕嬌鐢ㄩ粯璁ょ殑 fressness limit
鍙﹀栵紝TS 榪樹細媯鏌 cache.config 閰嶇疆鏂囦歡涓鐨 revalidate 瑙勫垯錛岃ヨ勫垯鍙浠ュ圭壒瀹氱殑 HTTP 瀵硅薄璁劇疆鐗瑰畾鐨勯獙璇佹椂闂達紙鐗瑰畾鐨勫煙鍚嶃両P銆佷竴瀹氳勫垯鐨 URL銆佺壒瀹氱殑瀹㈡埛絝絳夌瓑錛
3. 緙撳瓨榪囨湡錛坰tale錛夛紝Traffic Server 鍘繪簮鏈嶅姟鍣ㄩ噸鏂伴獙璇佸硅薄鍙鑳界殑鎯呭喌
浠嶇劧 fresh錛孴S 閲嶇疆 freshness_limit錛屽苟榪斿洖瀵硅薄
瀵硅薄鏂板壇鏈鍙鐢錛孴S 緙撳瓨鏂板硅薄錛屽苟鍚屾椂榪斿洖緇欑敤鎴
婧愭湇鍔″櫒涓婄殑瀵硅薄涓嶅啀瀛樺湪錛孴S 涔熶笉鍐嶈繑鍥炶ュ壇鏈緇欑敤鎴
婧愭湇鍔″櫒娌℃湁鍝嶅簲錛孴S 榪斿洖榪囨湡鐨勫硅薄騫跺彂鍑鴻﹀憡銆
鏇磋︾粏鐨勮存槑璇鋒煡鐪 Traffic Server 綆$悊鏂囨。涓鐨 HTTP Proxy Caching 閮ㄥ垎
涓 瀹夎呫佷嬌鐢
Apache Traffic Server 寮婧愬悗娣誨姞浜 64 浣嶆敮鎸侊紝涔熺Щ妞嶅埌浜嗗父瑙佺殑 Linux 鍙戣岀増銆丗reeBSD銆丱penSolaris 鍜 Mac OS X錛屽紑婧愪箣鍓 Yahoo Traffic Server 涓鐩磋繍琛屽湪 32-bit Linux 涓娿
錛堜互 Apache Traffic Server 2.1.1 unstable 涓轟緥鍦 32-bit Linux 鐜澧冧笅榪涜屽畨瑁呮祴璇曪級
瀹夎
1. 涓嬭澆銆佽В鍘
wget http://www.apache.org/dist/trafficserver/trafficserver-2.1.1-unstable.tar.bz2
wget http://www.apache.org/dist/trafficserver/trafficserver-2.1.1-unstable.tar.bz2.md5
md5sum -c trafficserver-2.1.1-unstable.tar.bz2.md5
tar jxvf trafficserver-2.1.1-unstable.tar.bz2
cd trafficserver-2.1.1-unstable
2. 緙栬瘧銆佸畨瑁
鏌ョ湅 README 璇存槑鏂囨。錛屽畨瑁呯紪璇戜緷璧栫殑搴擄紙centos 鍙鍙傜収 fedora 渚濊禆鐨勮蔣浠跺寘錛宲cre鍖呮浛鎹涓 pcre-devel 鍗沖彲錛
./configure --help 鏌ョ湅緙栬瘧鐨勪竴浜涢夐」
./configure 錛堥粯璁ゅ畨瑁呭湪 /usr/local錛屽傞渶淇鏀癸紝浣跨敤 --prefix=PREFIX錛涘弬鏁頒腑榪樻湁鐢ㄦ埛鍜岀敤鎴風粍閫夐」錛岃繖鏄 TS 榪涚▼榪愯岀殑韜浠斤紝榛樿ゅ潎涓 nobody錛宑entos 鍙浠ヤ笉浣滀慨鏀癸紝鍏朵粬鍙戣岀増鍙鑳介渶瑕佷慨鏀癸紝濡 ./configure --with-group=nogroup錛
make
make install 浠ョ$悊鍛樿韓浠芥墽琛
鐩褰曠粨鏋
榛樿ょ洰褰
鍐呭
/usr/local/var/log/trafficserver
榪愯屾椂鍒涘緩鐨勬棩蹇楁枃浠
/usr/local/var/trafficserver
榪愯屾椂鐨勪竴緋誨垪鏂囦歡
/usr/local/etc/trafficserver
閰嶇疆鏂囦歡
/usr/local/bin
鍙鎵ц屾枃浠
/usr/local/libexec/trafficserver
鎻掍歡
鍒濇ラ厤緗
records.config 鏄 key-value 鏍煎紡鐨勯厤緗鏂囦歡錛岃礋璐eぇ閮ㄥ垎鍏ㄥ矓鐨勯夐」璁劇疆錛屽嵆涓婚厤緗鏂囦歡銆
storage.config 鐢ㄤ簬鎸囧畾紓佺洏瀛樺偍銆
remap.config 瀹氫箟鏄犲皠瑙勫垯錛岀敤浜庤鋒眰鐨勯噸鍐欙紙rewrite錛夛紝鍙嶅悜浠g悊鍗沖湪姝ら厤緗銆
records.config 涓鍏抽敭鐨勯厤緗
CONFIG proxy.config.exec_thread.autoconfig INT 1
CONFIG proxy.config.exec_thread.autoconfig.scale FLOAT 2.0
CONFIG proxy.config.exec_thread.limit INT 2 # 緇忚傚療鏄姣忎釜鏍稿壋寤虹殑綰跨▼鏁幫紝瀹樻柟鏂囨。涓鏈鎻愬強
CONFIG proxy.config.cluster.ethernet_interface STRING eth0 # 璁劇疆浠ュお緗戞帴鍙
CONFIG proxy.config.http.server_port INT 8080 # 鐩戝惉絝鍙o紝鍙嶅悜浠g悊閫氬父涓80
LOCAL proxy.local.incoming_ip_to_bind STRING 0.0.0.0 # 緇戝畾鐨 IP錛屽彲鐪佺暐錛岄粯璁ゅ嵆涓 0.0.0.0
CONFIG proxy.config.http.cache.http INT 1 # 鎵撳紑緙撳瓨鍔熻兘
CONFIG proxy.config.cache.ram_cache.size INT 512M # RAM 緙撳瓨澶у皬
CONFIG proxy.config.reverse_proxy.enabled INT 1 # 鎵撳紑
CONFIG proxy.config.url_remap.remap_required INT 1 # 1涓哄彧鍙嶅悜浠g悊錛0涓烘e悜+鍙嶅悜浠g悊
CONFIG proxy.config.url_remap.pristine_host_hdr INT 0
CONFIG proxy.config.ssl.enabled INT 0 # 鍏抽棴SSL
CONFIG proxy.config.ssl.server.cert.filename STRING server.pem
CONFIG proxy.config.http.server_max_connections INT 2000 # 鍚屾簮鏈嶅姟鍣ㄧ殑鏈澶ц繛鎺ユ暟
CONFIG proxy.config.http.keep_alive_no_activity_timeout_out INT 60 # 褰撲竴涓浜嬪姟緇撴潫鍚庡悓鍘熸湇鍔″櫒淇濇寔榪炴帴鐨勬椂闂
remap.config 閰嶇疆
map http://cdn.example.com/js http://js.example.com # 閫氳繃 DNS 杞璇㈠彲瀹炵幇璐熻澆鍧囪
reverse_map http://js.example.com http://cdn.example.com/js # reverse_map 鑳藉湪婧愭湇鍔″櫒 鏈 HTTP 閲嶅畾鍚戣煩杞鏃訛紝淇鏀歸噸瀹氬悜璇鋒眰錛屽嵆閲嶅啓 Location 澶撮儴鍐呭
map http://cdn.example.com/css http://css.example.com
reverse_map http://css.example.com http://cdn.exampe.com/css
map http://cdn.example.com/img http://img.example.com
reverse_map http://img.example.com http://cdn.example.com/img
storage.config 閰嶇疆
/data1 67108864 # 鎸囧畾涓涓鎴栧氫釜鐩褰曪紝娉ㄦ槑緙撳瓨澶у皬錛屼篃鍙鐩存帴鎸囧畾 raw 鍒嗗尯錛岃﹁乻torage.config 涓鐨勬敞閲婅存槑
鏇磋︾粏鐨勯厤緗鍙鍙傝冨畼鏂圭$悊鎸囧崡 http://trafficserver.apache.org/docs/v2/admin/
鏈嶅姟鎺у埗
榪愯 /usr/local/bin/trafficserver start
緇撴潫 /usr/local/bin/trafficserver stop
閲嶅惎 /usr/local/bin/trafficserver restart
鍛戒護琛屽伐鍏楓佺洃鎺
/usr/local/bin/traffic_line 闇鐢ㄧ$悊鍛樿韓浠芥墽琛
鏌ョ湅甯鍔 traffic_line -h
鏌ョ湅鍙橀噺鐨勫 traffic_line -r 鍙橀噺鍚 錛堝彉閲忓悕瑙佸畼鏂圭$悊鎸囧崡闄勫綍C錛屽惈 TS 榪愯屾椂緇熻℃暟鎹錛
緇欏彉閲忚祴鍊 traffic_line -s 鍙橀噺鍚 -v 鍊 錛堝彉閲忓悕瑙乺ecords.config錛
涓嶉噸鍚疶S 浣塊厤緗鐢熸晥 traffic_line -x
/usr/local/bin/traffic_shell 闇鐢ㄧ$悊鍛樿韓浠芥墽琛岋紝榪涘叆鍚庢彁紺虹︿負鈥%鈥
鏌ョ湅甯鍔 man traffic_shell 錛堢敱浜庡紑鍙戣呯枏蹇斤紝鏆備笉鑳界敤錛
show 鍛戒護錛屽 %show:cache-stats 鏌ョ湅緙撳瓨緇熻★紝濡傚懡涓鎯呭喌錛岀紦瀛樺ぇ灝忥紱濡%show:proxy-stats 鏌ョ湅鍛戒腑鐜
config 鍛戒護錛屽 %config:logging event disable 鍏抽棴鏃ュ織錛涘 %config:cache clear錛屾竻闄ょ紦瀛橈紝config鍛戒護浣滃嚭鐨勪慨鏀歸兘浼氱珛鍗崇敓鏁
/usr/local/bin/traffic_logcat 鏃ュ織鏌ョ湅宸ュ叿
traffic_logcat -h 鑾峰緱甯鍔
鏌ョ湅浜岃繘鍒舵棩蹇 traffic_logcat 鏃ュ織鏂囦歡鍚
Traffic Server 緋葷粺鑷韜鐨勮繍琛屾棩蹇楀彲鍦 /var/log/message 涓鏌ョ湅錛坈entos錛夛紝鐢ㄤ簬鎺掗敊
traffic_logstats 鎻愪緵浜嗗熀浜庢棩蹇楃殑緇熻″姛鑳
鍥 緇撹
Apache Traffic Server 寮婧愬悗鍔熻兘鍦ㄤ笉鏂琚寮鍙戱紝鎬ц兘寰楀埌寰堝ぇ鎻愬崌錛岀ぞ鍖轟篃鍦ㄩ愭笎鍙戝睍錛屼絾闄や簡 Yahoo 涔嬪栬繕寰堝皯鏈夊叾浠栧疄璺碉紝寰堝氬姛鑳斤紙濡傞泦緹わ級鐨勬枃妗f湁寰呭畬鍠勩俆raffic Server 涓板瘜鐨勬彃浠跺紑鍙戞槸鍏朵竴澶т寒鐐癸紝妯″潡鍖栫殑鐗圭偣浣垮叾鎷ユ湁寰堝ソ鐨勬墿灞曟у拰鐏墊椿鎬э紝鍐嶅姞涓婂畠鐨勯珮鎬ц兘錛岀浉淇 Apache Traffic Server 鏈鏉ュ皢鍦ㄥ緢澶氬満鏅涓鏇誇唬浼犵粺鐨勪唬鐞嗗拰緙撳瓨鏈嶅姟鍣ㄨ屾垚涓哄ぇ瀹剁殑棣栭夈
㈤ 如何編寫驅動程序
代碼:
#include<linux/mole.h>
#include<linux/kernel.h>
#include<asm/io.h>
#include<linux/miscdevice.h>
#include<linux/fs.h>
#include<asm/uaccess.h>
//流水燈代碼
#define GPM4CON 0x110002e0
#define GPM4DAT 0x110002e4
static unsigned long*ledcon=NULL;
static unsigned long*leddat=NULL;
//自定義write文件操作(不自定義的話,內核有默認的一套文件操作函數)
static ssize_t test_write(struct file*filp,const char __user*buff,size_t count,loff_t*offset)
{
int value=0;
int ret=0;
ret=_from_user(&value,buff,4);
//底層驅動只定義基本操作動作,不定義功能
if(value==1)
{
*leddat|=0x0f;
*leddat&=0xfe;
}
if(value==2)
{
*leddat|=0x0f;
*leddat&=0xfd;
}
if(value==3)
{
*leddat|=0x0f;
*leddat&=0xfb;
}
if(value==4)
{
*leddat|=0x0f;
*leddat&=0xf7;
}
return 0;
}
//文件操作結構體初始化
static struct file_operations g_tfops={
.owner=THIS_MODULE,
.write=test_write,
};
//雜設備信息結構體初始化
static struct miscdevice g_tmisc={
.minor=MISC_DYNAMIC_MINOR,
.name="test_led",
.fops=&g_tfops,
};
//驅動入口函數雜設備初始化
static int __init test_misc_init(void)
{
//IO地址空間映射到內核的虛擬地址空間
ledcon=ioremap(GPM4CON,4);
leddat=ioremap(GPM4DAT,4);
//初始化led
*ledcon&=0xffff0000;
*ledcon|=0x00001111;
*leddat|=0x0f;
//雜設備注冊函數
misc_register(&g_tmisc);
return 0;
}
//驅動出口函數
static void __exit test_misc_exit(void)
{
//釋放地址映射
iounmap(ledcon);
iounmap(leddat);
}
//指定模塊的出入口函數
mole_init(test_misc_init);
mole_exit(test_misc_exit);
MODULE_LICENSE("GPL");
(5)remap源碼擴展閱讀:
include用法:
#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。
插入頭文件的內容
#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含標准庫頭文件或者實現版本所提供的頭文件,應該使用第一種格式。如下例所示:
#include<math.h>//一些數學函數的原型,以及相關的類型和宏
如果需要包含針對程序所開發的源文件,則應該使用第二種格式。
採用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。如下例所示:
#include"myproject.h"//用在當前項目中的函數原型、類型定義和宏
你可以在#include命令中使用宏。如果使用宏,該宏的取代結果必須確保生成正確的#include命令。例1展示了這樣的#include命令。
【例1】在#include命令中的宏
#ifdef _DEBUG_
#define MY_HEADER"myProject_dbg.h"
#else
#define MY_HEADER"myProject.h"
#endif
#include MY_HEADER
當上述程序代碼進入預處理時,如果_DEBUG_宏已被定義,那麼預處理器會插入myProject_dbg.h的內容;如果還沒定義,則插入myProject.h的內容。