Time of Update: 2018-12-03
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) ?
Time of Update: 2018-12-03
最近準備裝配一台台式機,盯上了intel H55 chipset。發現現在的主板不再有南北橋之分,一個CPU+H55 chipset就完畢了,整合度越來越高了!南北橋改名為platform controller hub,這個還真不知該怎麼翻譯,最後搜尋了一下,發現一些網站已經開始使用“平台控制單元”這個名字了,我想這個名字未來會越來越響亮的。看了一下H55的技術文檔,發現H55 PCI bus不再內建相容考慮的ISA bus。IDE也開始消失,取而代之的是SATA host
Time of Update: 2018-12-03
有效利用清晨時間作者:warfalcon早起已經堅持快一年了,前段時間做下回顧,跟大家分享一些早起的心得:睡前要做的二件事:準備一杯涼開水放在床頭,剛起床的時候喝掉,對你的健康有好處。臨睡前做好準備和規劃,準備好第二天早起要做的事情,一起床就可以去做。剛起床時,可以通過做些簡單的運動讓自己精神起來:1、可以在床上轉動腳腕,順時針10下,逆時針10下,然後會讓大腦變得清醒起來。2、直接冷水洗臉,能增強身體的抵抗力,對皮膚也有好處。3、交替壓腿,一個腿30-60下。做完需要2-3分鐘,把自己的身體活
Time of Update: 2018-12-03
如果你是windows mobile的驅動程式開發人員,又恰好寫了類似的這樣一句話。while(dev->devState!=5);說明一下,dev是個結構體指標。你希望等待它的成員變數變成5,繼續執行。同時有可能你在中斷服務程式中改變這個成員變數的值。哈哈!我幸運的告訴你你已經進入了“死迴圈”,永遠跳不出去啦。這是個編譯器最佳化產生的問題,看看編譯器產生的彙編片段。|$L39064|cmp r3, #5bne |$L39064|它將dev->devState最佳化為了一個寄存器r3
Time of Update: 2018-12-03
Time of Update: 2018-12-03
ARM切換到THUMB模式,根據ARM的文檔說是用一個跳轉完成,並且跳轉地址要儲存在general register裡,地址中最低位為1。我一向喜歡眼見為實。最簡單就是看看編譯後變成什麼樣子,下面是一個叫ab的函數,開thumb編譯的,結果就變成了下面這樣:E28FC001 $Ven$AT$I$$ab: add r12,pc,#0x1E12FFF1C bx r12B510 ab: push {r4,r14}
Time of Update: 2018-12-03
start_armboot函數在lib_arm/board.c中定義,是U-Boot第二階段代碼的入口。U-Boot啟動第二階段流程如下: U-Boot第二階段執行流程1)gd_t結構體U-Boot使用了一個結構體gd_t來儲存全域資料區的資料,這個結構體在include/asm-arm/global_data.h中定義如下:typedef struct global_data {bd_t *bd;unsigned long flags;unsigned long
Time of Update: 2018-12-03
KernelInit是MMU啟用以後,一段軟體結構的初始化函數。它負責system call函數表的建立,和NK.exe這個進程的構建,當然也包括NK.exe的第一次以進程的身份調度運行。就此一個類似於《駭客帝國》的虛擬環境就被建立起來了。或者說由單一線程啟動的環境,轉為一個多線程並發執行的環境。不過KernelInit只是完成建立這個環境,真的虛擬環境開始不是這個函數的內容。這個函數最值得看的地方是system
Time of Update: 2018-12-03
Framebuffer是把記憶體中視頻資料輸出的裝置驅動程式,Linux的framebuffer是獨立的硬體抽象層,它可以把顯示裝置抽象為框架緩衝區,並把自己當作顯示記憶體的一個映像,開發人員可以通過這個映像映射到進程地址空間,直接進行讀寫操作。簡單的說它把硬體抽象化後,可使上層不再關心硬體是如何操作,只是完成映像的顯示功能,該驅動的裝置檔案一般是/dev/fb0、/dev/fb1,framebuffer最多支援32個裝置。說明了Framebuffer在Linux系統的位置,它高於一般的驅動程式
Time of Update: 2018-12-03
合理的利用零散時間不單是技巧的結合,而是一種生活習慣,平時就準備好,遇到空閑時間直接就用不用考慮直接就行動:1、隨身帶本書,定期更換2、身上帶著平板或Kindle,充好電,裝滿書和視頻,比如TED、公開課3、準備個Mp3,裝滿英語或有聲書4、隨身帶筆記本和筆,有空的時候,記些想法,列一些待辦事項清單5、準備個電話清單,都是要打電話的人。比如公司客戶、家人、朋友,空閑時打個電話交流下感情7、利用幾分鐘的時間,做個擴充運動,鍛煉下身體。8、觀察周圍的人,看看著裝、表情、姿態和口氣,如果你觀察時間長一
Time of Update: 2018-12-03
最近在看了一下記憶體檢測,在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[
Time of Update: 2018-12-03
分頁單元的作用是從線性地址到物理地址轉換,為了效率起見,線性地址被分成以固定長度為單位的組,又被稱為頁,頁內連續的線性地址被映射到連續的物理地址中。而把線性地址映射到物理地址的資料結構叫做頁表(page
Time of Update: 2018-12-03
好了,前面的準備工作都做完了,我們就進入進程調度的主體程式——schedule()函數。函數schedule()實現發送器。它的任務是從運行隊列的鏈表rq中找到一個進程,並隨後將CPU分配給這個進程。schedule()可以由幾個核心控制路徑調用,可以採取直接調用或延遲調用(可延遲的)的方式。下面,我們就來詳細介紹。1
Time of Update: 2018-12-03
Time of Update: 2018-12-03
真是太不關注Linux Kernel發展,今天一大早抽了時間把initrd和initramfs的概念區分了一下,終於有點眉目,不敢獨享。都知道Linux有個Ram Disk的概念,很早就有了,至少2.4的時候就有,再早我也不瞭解。那麼initrd,就如他的名字,initial ram disk,很好理解,就是為了root fs。initramfs無非也如他的名字,initial ram file
Time of Update: 2018-12-03
我在地鐵裡、公交車上、甚至路邊,隨時都可以看到有人盯著手機或者ipad螢幕,忘我的閱讀著電子書。現在的人節奏都已經被調的很快,就算是身體可以閑下來了,但節奏不停的告訴他:“hi~別閑著,要做點什麼!”,所以我們的片段時間就被填滿了其實我倒是建議既然都那麼累了,能休息的時候還是徹底休息為好~回到主題,不管怎麼樣,現在越來越多的人選擇閱讀電子書,在美國42%的人在電腦上閱讀,其中20%的人閱讀過電子書我自己也蠻喜歡閱讀電子書的,今天和大家分享一下我閱讀電子書的方法(流程):電子書全部放在快盤我的電子
Time of Update: 2018-12-03
Linux 傳統的處理序間通訊有很多,如各類管道、訊息佇列、記憶體共用、訊號量等等。但它們都無法介於核心態與使用者態使用,原因如表通訊方法無法介於核心態與使用者態的原因管道(不包括具名管道)局限於父子進程間的通訊。訊息佇列在硬、非強制中斷中無法無阻塞地接收資料。訊號量無法介於核心態和使用者態使用。記憶體共用需要訊號量同步輔助,而訊號量又無法使用。訊號又稱非強制中斷,只有訊號是非同步其餘都是同步訊號處理流程
Time of Update: 2018-12-03
如果你想用微軟的romimage工具產生image,那麼你一定要在你的exe檔案中定義下面這個全域變數:ROMHDR * volatile const pTOC = (ROMHDR
Time of Update: 2018-12-03
Time of Update: 2018-12-03
u-boot 的stage1代碼通常放在start.S檔案中,他用組合語言寫成,其主要代碼部分如下:(1)定義入口。由於一個可執行檔Image必須有一個進入點,並且只能有一個全域入口,通常這個入口放在ROM(Flash)的0x0地址,因此,必須通知編譯器以使其知道這個入口,該工作可通過修改連接器指令碼來完成。(2)設定異常向量(ExceptionVector)。(3)設定CPU 的速度、時鐘頻率及終端控制寄存器。(4)初始化記憶體控制器。(5)將ROM 中的程式複製到RAM