原创 第3章 ARM指令集尋址方式—Load/Store指令尋址(二)

三、半字、有符號字節尋址 這類指令可用來加載有符號字節、加載有符號半字、加載/存儲無符號半字。一般稱這類指令爲“雜類的Load/Store指令”。 Load/Store指令對半字、有符號字節操作指令編碼格式如下: 彙編指令彙編語法格式如下

原创 第3章 ARM指令集尋址方式—協處理器指令尋址方式

ARM支持協處理器操作,其操作要通過協處理器命令來實現,下面討論協處理器指令具體的尋址方式。 一、協處理器加載/存儲指令的尋址方式 協處理器加載/存儲指令可以用來實現ARM處理器與協處理器之間的數據傳輸。 其彙編語法格式如下: <opco

原创 第3章 ARM指令集尋址方式—批量Load/Store指令尋址方式

ARM指令系統提供了批量Load/Store指令尋址方式,即多寄存器尋址,也就是一次可以傳送幾個寄存器的值,允許一條指令最多傳送16個寄存器。 一、編碼格式 批量Load/Store指令彙編語法格式如下: 批量加載: LDM {<cond

原创 深入Linux內核架構—簡介和概述(三)

一、地址空間與特權級別 1K=1024B=2^10(2的10次方)B 1M=1024K 1G=1024M 由於內存區域通過指針尋址,因此CPU的字長(32位、64位)決定所能管理的地址空間的最大長度。對32位系統,是2^32B=4GB,對

原创 深入Linux內核架構—簡介和概述(五)

一、文件系統 Linux系統由數以千計乃至百萬計的文件組成,其數據存儲在硬盤或其他塊設備。存儲使用層次式文件系統。文件系統使用目錄結構組織存儲的數據,並將其他元信息(例如所有者、訪問權限等)與實際數據關聯起來。Linux支持許多不同的文件

原创 深入Linux內核架構—簡介和概述(四)

一、頁表 用來將虛擬地址空間映射到物理地址空間的數據結構稱爲頁表。實現兩個地址空間(虛擬地址空間、物理地址空間)的關聯最容易的方法是使用數組,對虛擬地址空間中的每一頁,都分配一個數組項。該數組項指向與之關聯的頁幀(物理內存頁),但有一個問

原创 深入Linux內核架構-進程管理和調度(一)

現代操作系統都能夠同時運行若干進程。如果系統只有一個處理器,那麼在給定時刻只有一個程序可以運行。在多處理器系統上,可以真正並行運行的進程數目,取決於物理CPU的數目。 內核和處理器建立了多任務的錯覺,即可以並行做幾種操作,這是通過以很短的

原创 ffmpeg-4.2.3編譯

1、下載ffmpeg-4.2.3代碼 2、配置(編譯靜態庫) ./configure --target-os=linux --prefix=$(pwd)/temp --enable-cross-compile --arch=arm --c

原创 深入Linux內核架構-進程管理和調度(二)

一、進程表示 Linux內核涉及進程和程序的所有算法都圍繞一個名爲task_struct的數據結構建立,該結構定義在include/sched.h中。這是系統中主要的一個結構。在闡述調度器的實現之前,瞭解一下Linux管理進程的方式很有必

原创 深入Linux內核架構-進程管理和調度(三)

一、進程ID號 UNIX進程會分配一個號碼用於在其命名空間中唯一地標識它們。該號碼被稱作進程ID號,簡稱PID。用fork或clone產生的每個進程都由內核自動地分配了一個新的唯一的PID值。 1、進程ID 但每個進程除了PID之外,還有

原创 深入Linux內核架構-進程管理和調度(十一)

4、選擇下一個進程 選擇下一個將要運行的進程由pick_next_task_fair執行。代碼流程圖在圖2-21給出。 kernel/sched_fair.c 如果nr_running計數器爲0,即當前隊列上沒有可運行進程,則無事可做

原创 深入Linux內核架構-進程管理和調度(四)

一、進程管理相關的系統調用 討論 fork 和 exec 函數族(用來用指定的程序替換當前進程的所有內容)系統調用的實現。通常這些調用不是由應用程序直接發出 的,而是通過一箇中間層調用,即負責與內核通信的C標準庫。 從用戶狀態切換到核心態

原创 Android系統-Linux音頻驅動架構

簡介 LINUX下音頻驅動開發,要遵循標準的ALSA架構, 下面分別從硬件架構、軟件架構、驅動程序,3個方面分析。 硬件架構 硬件上音頻總線接口有很多,如I2S、PCM、TDM、SLIMBUS等,以I2S爲例分析:   播放流程 使用I

原创 ffmpeg庫簡介

請參考https://www.cnblogs.com/CoderTian/p/9061976.html

原创 如何增加Ubuntu的虛擬內存

1、創建SWAP文件(我的/HOME比較大,所以就放在HOME下了),命令如下: mkdir swap cd swap sudo dd if=/dev/zero of=swapfile bs=1024 count=4066544 2、把生