原创 C語言小板凳(1)

①strlen()函數作用:計算字符串的長度,當遇到“\n”字符時結束,即遇到數值“0”時結束計算,有一點特別要注意當這個函數用來計算數組的長度的時候遇到數值0他就停止計算了! ②register關鍵字修飾的變量不可以使用“&”取地址符來

原创 詳解Linux內核異常處理體系結構

本節內容:Linux內核異常處理的的初始化過程和異常發生時的處理流程。 【首先來區分一下兩個概念:中斷(Interrupt)和異常(Exception)。中斷屬於異常的一種,就拿2440開發板來說,他有60多種中斷源,例如來自DMA控制

原创 字符設備驅動查詢方式讀取按鍵值

上一篇博文講到通過字符型設備文件愉快的實現了控制led的亮滅,涉及到一個知識點是用戶程序(用戶空間)向內核程序(內核空間)發送數據實現對led的控制。今天我們是字符設備驅動之按鍵,要把內核程序讀到的按鍵值發送到用戶空間實現顯示。 由於原理

原创 簡單時間編程

時間概念的定義: (1)UTC 世界標準時間(協調世界時):中國內地的時間爲 UTC+8 (2)GMT 格林威治標準時間:等於UTC。這個名字的由來是因爲本初子午線(零時區)經過英國的格林威治區。 (3)日曆時間:從一個標準時間點到此時的

原创 文件IO編程

在Linux中爲了簡化系統對不同設備的處理,提高效率,對目錄和設備的操作都等同於文件的操作。Linux中的文件主要分爲 4 種:普通文件、目錄文件、鏈接文件和設備文件。兩種方式訪問文件:一、系統調用方式:依賴於操作系統Linux系統調用概

原创 編譯時“-nostdlib”的使用

原文轉載於:《ARM-LINUX-GCC -NOSTDLIB》http://blog.chinaunix.net/uid-26739173-id-3154722.html 在韋東山的mmu實驗的 Makefile 中出現: arm-li

原创 s3c2440_MMU(3)

        之前跑裸機時搞到MMU那一塊的時候只進行了原理上的學習,沒有進行s3c2440的MMU實例操作,今天分析linux內核啓動時創建臨時頁表那部分有些地方還是卡住了不理解,就比如說爲什麼要創建臨時頁表這個問題,雖說代碼實現過程

原创 ARM920T中斷體系結構

再開始ARM920t的中斷體系分析前,我們先來回憶一箇中斷觸發時8051單片機的處理流程: (1)保護現場 (2)cpu的pc指針自動跳轉到中斷向量表處找出對應的中斷處理入口,即中斷處理函數 (3)進入中斷處理函數後首先要分辨中斷源,然後

原创 地址有關碼和地址無關碼

幾個地址的說明:    (cpu看來)    (程序員看來) 1、運行地址<---->鏈接地址 2、加載地址<---->存儲地址 他們對應等價,只是從不同的角度說。 進一步闡述: 運行地址:程序在SRAM、SDRAM中執行時的地址。就是執

原创 入駐基地一週

上個週六,即10月25號開始入駐“創業孵化”基地。 對這裏的環境自我感覺比較滿意,尤其是燈光給人比較柔和的感覺,即使在這種光線下看書看電腦一兩個小時眼睛都不會感到疲憊,我想這點對於我們這些敲代碼的人來說顯得尤爲重要。還有一點不得不說的就是

原创 Linux內核中斷處理體系分析

前一篇博文中:linux內核初始化階段通過early_trap_init()函數完成了把異常向量拷貝到0xFFFF0000開始的地方,這些異常向量大部分指向通過vector_stub宏定義的那段代碼,這段代碼完成的主要工作是計算異常返回地

原创 內核文件格式

先來了解一下這兩種文件:elf文件:Executable and Linking Format 這種文件包含的信息:調試信息(就是gcc編譯時有使用“-g”選項),註釋符等等,這種文件在嵌入式開發的過程中主要是調試用的二進制鏡像文件: 去

原创 printk消息日誌等級

內核通過prink()函數輸出相關信息時是要根據日誌等級來輸出的: 一、若沒有指明消息日誌等級則使用默認等級4,在kernel/printk.c裏面有下面一個宏定義:/* printk's without a loglevel use t

原创 內核臨時頁表

建立臨時頁表:內核啓動前期、段式頁表映射(1M大小)主要完成的映射關係:1.將虛擬地址空間按照“1:1”對等映射到內核映像的第一個1M處   作用:在啓動MMU之前只能使用實地址模式運行 2.將整個內核地址空間直接映射區的代碼那部分映射到

原创 51單片機學期總結

這學期開了《單片機原理與應用技術》,試考完了,課設也做完了,也放假一星期多了(^_^),抽出半天的時間把這學期在課堂上學到的東西做了個總結,以便以後可以快速查閱。 學完這門課給自己的感覺是學到挺多以前不知到的東西,雖說是8051單片機,裏