原创 ARM aarch64彙編學習筆記(三):寄存器概述

ArmV8 寄存器簡單概念: ARMv8擁有兩種執行模式: AArch64執行A64指令,使用64bit的通用寄存器; AArch32執行A32/T32指令,使用32bit的通用寄存器; 本篇主要描述aarch64執行模式的一些

原创 稀疏矩陣概念及簡單實現

稀疏矩陣: 在矩陣中,若數值爲0的元素數目遠遠多於非0元素的數目,並且非0元素分佈沒有規律時,則稱該矩陣爲稀疏矩陣;與之相反,若非0元素數目佔大多數時,則稱該矩陣爲稠密矩陣。定義非零元素的總數比上矩陣所有元素的總數爲矩陣的稠密度。 特性

原创 ARM aarch64彙編學習筆記(二):ARM DS-5模擬器安裝和使用

工欲善其事,必先利其器。 使用Qemu 雖然可以進行模擬開發,但在Qemu調試彙編有一些困難。 DS-5 (即ARM Development Studio 5) ,是一款針對 ARM 支持的 Linux 和 Android 平臺的全面的

原创 PCIe設備發現過程

PCIe在調試過程中,經常會出現掃描不到對端EP設備的問題,在問題定位過程中,瞭解內核中pcie枚舉流程至關重要。 PCIe枚舉過程一般分爲三步: 1.創建根節點 2.掃描根節點下設備 3.爲根節點下設備分配資源 那麼如何發現設備?

原创 linux內核筆記之時間管理(二) : 低精度timer

低精度定時器的API 初始化定時器: void init_timer(struct timer_list * timer); 增加定時器: void add_timer(struct timer_list * timer); 刪除

原创 Linux內核之高端內存

物理地址空間佈局 CPU所訪問的都是虛擬內存地址。通常32位Linux內核地址空間劃分0~3G爲用戶空間,3~4G爲內核空間。 Linux系統在初始化時,會根據實際的物理內存的大小,爲每個物理頁面創建一個page對象,所有的page對象

原创 簡單認識TCP/IP協議

本文轉自:HTTP協議—— 簡單認識TCP/IP協議 1、什麼是TCP/IP        如果要了解一個人,可以從他歸屬的集體聊起來。我們的HTTP協議就屬於TCP/IP協議家族中的一員,瞭解HTTP協議再整個網絡流程中的地位,也能更加

原创 Linux進程間通信之信號

信號是Linux系統響應某些條件而產生的一個事件,接收到該信號的進程會執行相應的操作。 信號的名稱是在頭文件signal.h中定義的 信號 描述 SIGABORT 處理失敗 SIGALRM 報警時鐘 SIGFPE 浮

原创 CPU體系結構之cache小結

1.What is cache? CPU緩存(Cache Memory)位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可

原创 linux內核中的Oops

原文鏈接:http://blog.csdn.net/ce123_zhouwei/article/details/6710816 什麼是Oops?從語言學的角度說,Oops應該是一個擬聲詞。當出了點小事故,或者做了比較尷尬的事之後,你可以說

原创 C中的volatile用法

volatile 影響編譯器編譯的結果,指出,volatile 變量是隨時可能發生變化的,與volatile變量有關的運算,不要進行編譯優化,以免出錯,(VC++ 在產生release版可執行碼時會進行編譯優化,加volatile關鍵字

原创 樹莓派學習筆記:MQTT協議的簡單應用

前言 基於MQTT的協議,將外網手機發送的字符通過樹莓派輸出。 PC上搭建MQTT服務器,樹莓派和手機作爲客戶端,發佈和訂閱消息。 MQTT簡介 MQTT 是輕量級基於代理的發佈/訂閱的消息傳輸協議,設計思想是開放、簡單、輕量、易於實現

原创 Linux進程間通信之管道

linux下進程間通信的幾種主要手段: 1.管道(Pipe)及有名管道(named pipe):管道可用於具有親緣關係進程間的通信,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係進程間的通信; 2

原创 linux 內核筆記之時間管理(三) : 高精度timer

低精度定時器基於時間輪算法,與jiffies關係緊密,精度爲ms級,應用場景一般爲“超時”退出。 因此,對於精度要求較高的驅動或應用場景,內核重新設計了一套軟件架構,它可以提供納秒級的定時精度,基於紅黑樹實現。 hrtimer的結構 與