作業系統核心的中神奇的代碼

最近free download一個Linux kernel

如何分析HCI的Command Packet和Event Packet包

HCI Packet包括四種,即Command,Event,ACL和SCO/eSCO,對應到MS-Stack中的定義,即為COMMAND_PACKET ,EVENT_PACKET,DATA_PACKET_ACL和DATA_PACKET_SCO。如下(詳細參照bt_hcip.h):enum HCI_TYPE {         COMMAND_PACKET  = 1,         DATA_PACKET_ACL = 2,         DATA_PACKET_SCO = 3,        

ARM branch instruction的分析

branch instruction的指令如下:0xEA00088E對應的二進位是:11101010000000000000100010001110分析如下:1110是無條件的意思101是branch instruction的標誌000000000000100010001110一共24位,就是我們的0x88E,可以表示的最大數是2的24次方,即64MB,所以branch instruction可以前跳或者後跳32MB的空間。然後然我們看看0x88E到底怎麼回事:0x88E*4+8=0x2240

cvs用法總結(4)–cvs命令checkout,commit,update

一.checkout 簽出    cvs checkout [-ANPRcflnps] [-r rev| -D date] [-d dir] [-j rev1] [-j rev2] [-k kopt] modules...        -A    重設所有粘性標記/日期/kopts    -N    如果指定了-d選項,不要使用短模組路徑    -P    刪除空目錄    -R    操作應用於子目錄    -c    顯示模組資料庫的內容    -f  

藍芽耳機複位

二、藍芽串連方法第一次使用需要用手機與藍芽耳機配對,配對成功後才能夠使用。配對方法:1.啟動藍芽耳機:按住藍芽開關鍵,等藍燈變長亮(一直亮)狀態(有的藍芽耳機是紅藍燈交替閃爍),此時藍芽耳機處於配對狀態(此過程大概需要按住10秒左右,按的時候中間一定不能鬆手,否則需要關機後重新操作);2.啟動手機的藍芽功能,然後設定手機搜尋藍牙裝置;3.從搜尋到的裝置列表中選擇產品的型號,按提示輸入配對碼“0000”(有的不需要輸入配對碼),藍紅燈快速閃爍兩下後表明配對成功,並將藍芽串連至手機,在部分手機中可能

程式員你有資格驕傲嗎?

我遇到過太多太多自以為是的例子,有時候包括自己。超級解霸之父梁肇新在他書中提到程式員進階的幾個階段,我非常同意這位大師的觀點。其中有個階段就是學習驅動程式和理解作業系統的核心,從1990年一直有以研究linux核心所引發的研究作業系統核心的一股風潮。Ring0,Ring3,虛擬記憶體,系統調用,進程同步,缺頁等等,有一些聽起來很炫的專業詞彙,更有甚者,以為自己能說出這些詞,自己就是高手了。Ring0/3,如果你不懂Intel IA-32體系架構,那麼請你謙虛一點。虛擬記憶體,page pool,

Ubuntu11.04解決外接顯示器解析度低的問題

我的筆記本是thinkpad,外接顯示器設定解析度為1680x1050.首先,熟悉一下命令:xrandr 命令列可以很方便地切換雙屏,常用方式如下,其他的可以自己探索:xrandr --output VGA --same-as LVDS --auto開啟外接顯示器(最高解析度),與筆記本液晶螢幕顯示同樣內容(複製)xrandr --output VGA --same-as LVDS --mode

“代碼執行環境”淺談

“代碼執行環境”不知道有沒有這個專有名詞。工作的經曆讓我感到這個概念需要攤出來好好說說。它是衡量你coding水平的重要指標。從電腦發明到現在,人們一直在努力使更多的人“不理解”這個概念,於是軟體中的層級概念就隨之產生了。核心,驅動,應用程式等的3個等級的大致的劃分,也基本劃分出了3種類型的程式員。作業系統的著作者更是竭力在營造一個好的“環境”給我們的代碼。我們---“普通的程式員”則越來越傻。其實可以這樣說,“代碼執行環境”的深刻理解,是你有資格成為“高手”的必要條件。當代的多任務作業系統使我

我和作業系統(二)

由於大二的經驗,我OS的bootloader很快就被拿到了gcc下面,運行正常,從中得出了個結論,中斷的啟用對發現你的boot code down機的情況是個絕佳的工具,它幫你撲捉出錯的一瞬間。如果不啟用,代碼中的記憶體保護性錯誤,讓你很難找到哪裡的問題,這個思想已經被我運用到了現在從事的工作中。printk一定得有,我需要看kernel

系統啟動後的 wifi 載入過程

============================ Wifi 啟動代碼流程 ====================1、系統啟動 首先載入init.rc,這個檔案 會載入所有service,init是linux啟動的 第一個 使用者空間 的應用(屬於linux進程,不屬於Android應用)。2、init.rc裡有以下這句話:Service wpa_supplicant /system/bin/wpa_supplicant –Dwext –iwlan0 –d –c

老被人懷疑是什麼感覺?

下面這封信,是我今天準備對我的兩位老大寫的郵件。我真的很受不了這種不被人信任的感覺。可是想想這封信發出去確實對我不會有什麼好處,顯示我的氣量很小,不成熟。最後還是沒寫下去。作為26歲的心潮澎湃的紀念,我決定將它留在我的blog上。我不知道各路大俠,遇到這樣的事情時,你是如何處理的?你會發火麼?(其實我也只是心裡比較火)。你會有不被信任感嗎?到底應該和其他的類似這樣的team member如何合作呢? Dear J & D,       我非常樂意為other

S3C2440的定時器設定

Linux中宏定義linux/arch/arm/plat-samsung/include/plat/regs-timer.h  92#define S3C2410_TCNTB(tmr) S3C_TIMERREG2(tmr, 0x00) 93#define S3C2410_TCMPB(tmr) S3C_TIMERREG2(tmr, 0x04) 94#define S3C2410_TCNTO(tmr) S3C_TIMERREG2(tmr, (((tmr) == 4) ?

PC—我錯過了好幾年

最近準備裝配一台台式機,盯上了intel H55 chipset。發現現在的主板不再有南北橋之分,一個CPU+H55 chipset就完畢了,整合度越來越高了!南北橋改名為platform controller hub,這個還真不知該怎麼翻譯,最後搜尋了一下,發現一些網站已經開始使用“平台控制單元”這個名字了,我想這個名字未來會越來越響亮的。看了一下H55的技術文檔,發現H55 PCI bus不再內建相容考慮的ISA bus。IDE也開始消失,取而代之的是SATA host

SAMSUNG Nand Flash應用

 K9K8G08U1M512Mx8BitsPackage Type: 48-Pin TSOP1這是典型的NAND flash,由block組成,每一個block包含64個Pages,而一個page是2k+64=2048+64=2112位元組。對於一個page,0~2047個位元組用來儲存資料,2048~2111,共64個位元組,Spare Area,用來儲存page中每個sector的資訊,其中第一個16位元組用於描述第一個512個位元組,第二個16位元組用於描述第二個512個位元組,以此類推,

有效利用清晨時間

有效利用清晨時間作者:warfalcon早起已經堅持快一年了,前段時間做下回顧,跟大家分享一些早起的心得:睡前要做的二件事:準備一杯涼開水放在床頭,剛起床的時候喝掉,對你的健康有好處。臨睡前做好準備和規劃,準備好第二天早起要做的事情,一起床就可以去做。剛起床時,可以通過做些簡單的運動讓自己精神起來:1、可以在床上轉動腳腕,順時針10下,逆時針10下,然後會讓大腦變得清醒起來。2、直接冷水洗臉,能增強身體的抵抗力,對皮膚也有好處。3、交替壓腿,一個腿30-60下。做完需要2-3分鐘,把自己的身體活

RDS-TMC(Traffic Message Channel)蘊藏的商機不可小視

上海的FM交通音樂台,是廣大司機朋友們的好朋友。它會即時的播報一些交通狀況。但是很可惜,只有聽得懂中文,並且能把上海地圖牢記在心中的朋友,才能知道交通台在說些什麼。“延安西路暢通。。。”,假如你是老外,或者初到上海,他們交通台播報的即時交通訊息你就無法享用了。 這就是智能交通系統的雛形。從整個城市的角度看,即時的廣播路況可以極大的提高道路的利用率,不至於有的道路堵死,有的道路沒車開。FM語音廣播是只是一個過渡產品,以後的交通狀況資訊還是通過FM廣播,但是不是語音,是數字編碼。你作為一個司機,只需

微軟引起的while不歸路

如果你是windows mobile的驅動程式開發人員,又恰好寫了類似的這樣一句話。while(dev->devState!=5);說明一下,dev是個結構體指標。你希望等待它的成員變數變成5,繼續執行。同時有可能你在中斷服務程式中改變這個成員變數的值。哈哈!我幸運的告訴你你已經進入了“死迴圈”,永遠跳不出去啦。這是個編譯器最佳化產生的問題,看看編譯器產生的彙編片段。|$L39064|cmp r3, #5bne |$L39064|它將dev->devState最佳化為了一個寄存器r3

ARM切換到THUMB模式

ARM切換到THUMB模式,根據ARM的文檔說是用一個跳轉完成,並且跳轉地址要儲存在general register裡,地址中最低位為1。我一向喜歡眼見為實。最簡單就是看看編譯後變成什麼樣子,下面是一個叫ab的函數,開thumb編譯的,結果就變成了下面這樣:E28FC001 $Ven$AT$I$$ab: add r12,pc,#0x1E12FFF1C bx r12B510 ab: push {r4,r14}

WinCE5讀核筆記(二) 系統調用

KernelInit是MMU啟用以後,一段軟體結構的初始化函數。它負責system call函數表的建立,和NK.exe這個進程的構建,當然也包括NK.exe的第一次以進程的身份調度運行。就此一個類似於《駭客帝國》的虛擬環境就被建立起來了。或者說由單一線程啟動的環境,轉為一個多線程並發執行的環境。不過KernelInit只是完成建立這個環境,真的虛擬環境開始不是這個函數的內容。這個函數最值得看的地方是system

Google memchek 記憶體檢測

最近在看了一下記憶體檢測,在http://code.google.com/p/memcheck/可以找到,文章有源碼和test,簡單的幾句介紹,剛開始沒怎麼看懂,自己根據使用說明用了下立馬就能上手,顯示結果最好用cmd調用產生的exe,能清楚列印mem leaking的情況。主要代碼:bool mc_checkmem(){bool memLeaked=false;for(int i=0;i<MC_HASHTABLESIZE;++i){mc_block_node_t* ptr=pTable[

總頁數: 61357 1 .... 20117 20118 20119 20120 20121 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.