原创 C語言:斷言assert函數完全攻略

對於斷言,相信大家都不陌生,大多數編程語言也都有斷言這一特性。簡單地講,斷言就是對某種假設條件進行檢查。 在 C 語言中,斷言被定義爲宏的形式(assert(expression)),而不是函數,其原型定義在 <assert.h>

原创 Linux ALSA聲卡驅動之三:PCM設備的創建

1. PCM是什麼 PCM是英文Pulse-code modulation的縮寫,中文譯名是脈衝編碼調製。我們知道在現實生活中,人耳聽到的聲音是模擬信號,PCM就是要把聲音從模擬轉換成數字信號的一種技術,他的原理簡單地說就是利用一

原创 vim字符串替換

vi/vim 中可以使用 :s 命令來替換字符串。以前只會使用一種格式來全文替換,今天發現該命令有很多種寫法(vi 真是強大啊,還有很多需要學習),記錄幾種在此,方便以後查詢。 替換 :s/vivian/sky/ 替換當前行

原创 Linux ALSA聲卡驅動之二:聲卡的創建

1. struct snd_card 1.1. snd_card是什麼 snd_card可以說是整個ALSA音頻驅動最頂層的一個結構,整個聲卡的軟件邏輯結構開始於該結構,幾乎所有與聲音相關的邏輯設備都是在snd_card的管理之

原创 C語言:inline,static inline

inline 函數被調用時,需要出棧入棧。當函數頻繁被調用時,則不斷地有函數出棧入棧,會造成棧空間或棧內存的大量消耗。所以引入了inline。 inline: 在函數聲明或定義中函數返回類型前加上關鍵字inline,即可以把函數指

原创 Linux ALSA聲卡驅動之四:Control設備的創建

1. Control接口 Control接口主要讓用戶空間的應用程序(alsa-lib)可以訪問和控制音頻codec芯片中的多路開關,滑動控件等。對於 Mixer (混音)來說,Control接口顯得尤爲重要,從ALSA 0.9.

原创 alsa 音頻庫的移植

alsa 是在LINUX出現比較晚的音頻處理庫,主要是針對原有的OSS的庫進行改進,性能更好,支持多個播放源等。但相應的,增加的編程的複雜性。 舊的oss是採用標準文件IO接口,設備打開採用open,聲音播錄是採用數據IO接口 (

原创 vim+ctags+cscope+Taglist+NERDTree打造成SourceInsight

參考:Vim神器 | vim+ctags+cscope+Taglist+Nerdtree打造成sourceinsight    vim+ctags+cscope+taglist+nerdtree    將Vim改造爲強大的IDE—

原创 C語言:命令行選項解析函數---getopt()和getopt_long()

上午在看源碼項目 webbench 時,剛開始就被一個似乎挺陌生函數 getopt_long() 給卡住了,說實話這函數沒怎麼見過,自然不知道這哥們是幹什麼的。於是乎百度了一番,原來是處理命令行選項參數的,的確,正規點的大型程序一

原创 C語言:堆和棧的區別是什麼?

首先,討論的堆和棧指的是內存中的“堆區”和“棧區”,OC語言是C語言的超集,所以先了解C語言的內存模型的內存管理會有很大的幫助。C語言的內存模型分爲5個區:棧區、堆區、靜態區、常量區、代碼區。每個區存儲的內容如下: 1、棧區: 存

原创 RT-thread相關

RT-thread官網: https://www.rt-thread.org/ RT-thread文檔官網: https://www.rt-thread.org/document/site/programming-manual/b

原创 編譯和鏈接的過程

參考:https://www.cnblogs.com/linhaostudy/p/8808967.html 程序要運行起來,必須要經過四個步驟:預處理、編譯、彙編和鏈接。接下來通過幾個簡單的例子來詳細講解一下這些過程。 對於上邊

原创 C語言:二級指針(指向指針的指針)詳解

摘自:《C語言入門》 http://c.biancheng.net/c/ 指針可以指向一份普通類型的數據,例如 int、double、char 等,也可以指向一份指針類型的數據,例如 int *、double *、char * 等

原创 Git學習(二):git-rev-parse命令初識

git rev-parse --git-dir //顯示版本庫.git命令所在的位置 執行命令 git rev-parse --git-dir git rev-parse --show-toplevel //

原创 Linux ALSA聲卡驅動之五:移動設備中的ALSA(ASoC)

1. ASoC的由來 ASoC--ALSA System on Chip ,是建立在標準ALSA驅動層上,爲了更好地支持嵌入式處理器和移動設備中的音頻Codec的一套軟件體系。在ASoc出現之前,內核對於SoC中的音頻已經有部分