原创 linux內核對於指令異常的處理

1.處理流程 以arm64來介紹一下流程,如果在用戶層發生指令異常時,首先進入入口el0_undef ( arch/arm64/kernel/entry.s ) el0_undef: /* * Undefine

原创 linux時間子系統 - hrtimer

1. hrtimer對象 1.1 hrtimer結構體 struct hrtimer { struct timerqueue_node node;----------------------------紅黑樹的

原创 linux進程創造 - 內核進程初始化及創建

1. 內核進程初始化 1.1 idle/swapper進程 - (pid:0) 內核的第一個進程叫idle進程或者swapper進程,這是初始化階段從無到有創建的第一個內核進程,每個cpu都有一個進程0,當內核中沒有其他進程運行

原创 linux時間子系統 - 週期性任務

如果內核是有生命的話,那麼時間就是內核的心臟,控制着內核的脈搏,但是這顆心臟跳動的方式根據硬件的配置會有不同的跳動方式。內核中有大量的需求需要時間的幫助,比如:定時、進程調度、獲得時間等等,在內核中時間子系統就是來實現這部分功能

原创 zephyr系統學習

不錯的學習資料 官網文檔 中文版 一個值得學習的BLOG

原创 shell命令-awk

|–awk命令行 awk的調用可以定義變量、提供程序、指定輸入文件 awk [-F fs] [-v var=value … ] ‘program’ [ – ] [ var=value … ] [ file(s) ] awk [-F

原创 git某些操作

回退到某個commit,然後強推到服務器 1.回退到某個commit git reset --hard HEAD^ 回退到上個版本 git reset --hard HEAD~3 回退到前3次提交之前,以

原创 linux音頻子系統 - ASoc框架

爲什麼要設計ASoC 引用linux Document中的解釋: The overall project goal of the ALSA System on Chip (ASoC) layer is to provide bette

原创 linux音頻子系統 - ASoC-PCM之codec和platform

從前面的文章已經知道platform和codec分別代表不同的組件,對於不同廠家各個芯片,只要註冊相應的驅動到codec和platform中,然後具體使用哪個驅動,只要在machine中匹配就好,那麼關於platform和codec的註

原创 FAT文件系統協議

FAT(File Allocation Table) FAT,文件配置表。主要分FAT12/FAT16/FAT32,這三者可支配的大小越往後越大,不過協議大體相同。 FAT的整體結構圖: MBR MBR是整個硬盤的起始引導處,不過對於

原创 clk子系統 - 代碼分析

通過clk驅動框架可以看出,clk主要分core和hardware兩層,而core層的主要函數是clk_register,它是把clk註冊到系統中,而hardware層的註冊函數因種類而異,不過最終都會統一調用clk_register來

原创 clk子系統 - 驅動框架

clk子系統負責爲整個系統硬件提供時鐘信號,這個要和linux的時鐘系統區別開來;現在的ASoC上包含許多clk模塊,比如晶振,pll,divider等,那麼clk子系統就把這些模塊抽象出來,並形成一個驅動框架,這樣對於其他驅動開發人員

原创 linux設備驅動模型 - regmap

1. regmap介紹 regmap主要是爲了方便操作寄存器而設計的,它將所有模塊的寄存器(包括soc上模塊的寄存器和外圍設備的寄存器等) 抽象出來,用一套統一接口來操作寄存器 比如,如果要操作i2c設備的寄存器,那麼就要調用i2c_t

原创 linux音頻子系統 - ASoC-PCM之machine

對於ASoC框架來說,machine就相當於card,soc-card的註冊就在machine的相關文件中操作,machine相當於整個聲卡,而platform和codec是聲卡的附屬部件 1. struct snd_soc_car

原创 linux音頻子系統 - control設備

control設備主要是能控制音頻設備的音量、開關等,在驅動中有兩個主要的結構體:snd_kcontrol_new和snd_kcontrol,驅動開發者主要是定義這兩個結構體,來進行control設備的開發 結構體 struct sn