君正 X1000 音訊驅動架構

2021-08-17 10:10:22 字數 3280 閱讀 1640

使用開發板x1000_halley2_v2.0,原始碼為北京君正官方原始碼v7.0版本,與v6.0無太多差異

這是核心原始碼中設定所導致的,可能官方認為x1000這樣設定會最好,可是我們需要小於30ms 的週期設定,所以需要修改核心原始碼。需要修改檔案 asoc-dms-v13.c 中 page_size / 4 —> page_size / 8:

檢視編譯核心目錄,編譯進可執行程式中的關於音訊的檔案為:

./sound_core.o

./core/snd-page-alloc.o

./core/misc.o

./core/jack.o

./core/memalloc.o

./core/pcm_lib.o

./core/pcm_memory.o

./core/sound.o

./core/init.o

./core/device.o

./core/snd-compress.o

./core/snd-pcm.o

./core/pcm_native.o

./core/built-in.o

./core/snd-timer.o

./core/memory.o

./core/control.o

./core/info.o

./core/pcm_misc.o

./core/compress_offload.o

./core/pcm.o

./core/pcm_timer.o

./core/snd.o

./core/timer.o

./soundcore.o

./soc/soc-dapm.o

./soc/soc-compress.o

./soc/soc-jack.o

./soc/snd-soc-core.o

./soc/soc-io.o

./soc/soc-utils.o

./soc/soc-pcm.o

./soc/soc-cache.o

./soc/soc-core.o

./soc/ingenic/snd-asoc-pcm-dump.o

./soc/ingenic/snd-asoc-dmic-dump.o

./soc/ingenic/snd-asoc-aic-v12.o

./soc/ingenic/snd-asoc-icdc-d3.o

./soc/ingenic/snd-soc-phoenix-icdc.o

./soc/ingenic/asoc-board/phoenix_icdc.o

./soc/ingenic/icodec/icdc_d3.o

./soc/ingenic/icodec/dmic_dump.o

./soc/ingenic/icodec/pcm_dump.o

./soc/ingenic/snd-asoc-dmic-v13.o

./soc/ingenic/asoc-v13/asoc-i2s-v13.o

./soc/ingenic/asoc-v13/asoc-dma-v13.o

./soc/ingenic/asoc-v13/asoc-pcm-v13.o

./soc/ingenic/asoc-v13/asoc-dmic-v13.o

./soc/ingenic/snd-asoc-dma-v13.o

./soc/ingenic/snd-asoc-pcm-v13.o

./soc/ingenic/asoc-v12/asoc-aic-v12.o

./soc/ingenic/snd-asoc-i2s-v13.o

./last.o

根據asoc音訊架構,linux 核心中分為machine, platform, codec三部分,採用分隔的思想,這三部分之間的關係,下面的大神分析的很透徹,我就不重複了。

搜尋編譯的檔案,尋找出 machine 部分的**為 phoenix_icdc.c

以上為machine驅動檔案的platfoem driver結構體,當platform裝置與驅動都註冊掛接到 platform 匯流排上的時候,會呼叫驅動的probe所指向的函式,即snd_phoenix_probe;

其中 pdev->dev->platform_data 在platform裝置檔案中為

其中的巨集定義為:

音訊驅動中最重要的結構體snd_soc_dai_linkphoenix_dais:

其中,第乙個是常使用的音訊結構,採用內部i2s 介面,內部codec icdc-d3,搜尋相關的名字即可找到對應的裝置驅動;

第二個資料為藍芽使用的驅動,採用 pcm 介面通訊;

platform 部分驅動檔名為 asoc-dma-v13.c ,搜尋jz_asoc-dmic-dma即可:

platform 部分的主要作用在上面標註的部落格中描述的很詳細;

還有一些深入的研究,沒有寫出來,需要過段時間, 暫時寫這些,以後慢慢補。

君正X2000 X2000E在ORCAD下的庫共享

還是有幾點發現做得不錯的。1 本身共享了硬體主機板 硬體相機 硬體底板等原理圖和pcb圖。不過發現沒有orcad下的器件庫。於是只有自己硬著頭皮用了一天的時間建立起來了。下面共享出來方便後面的開發者。君正作為國內的ic企業理應共享最基礎的器件庫。覺得他這點做得同海思還是有明顯的差距。2 本身為ddr...

opensll zbar交叉編譯(君正平台)

一 openssl 交叉編譯 執行.config prefix pwd output no asm shared 修改makefile 1.platform linux x86 64 修改為 platform mips 君正平台為mips架構 2.增加 cross compile mips linu...

君正darwin原始碼同步教程

環境 ubuntu18.04 根據darwin原始碼獲取文件,使用 alt ctrl t 開啟命令視窗,輸入 ssh keygen一直回車,回車,回車 可以看上圖有生成了id rsa檔案,在 home n ssh id rsa位置 不同電腦位置不同,自己注意一下 需要將這個檔案複製給君正的工作人員新...