Difference between revisions of "Audio: MEMS Digital Microphone"
Line 12: | Line 12: | ||
dmesg | dmesg | ||
arecord -D hw:0 -c2 -r 48000 -f S32_LE -t wav -v file.wav | arecord -D hw:0 -c2 -r 48000 -f S32_LE -t wav -v file.wav | ||
+ | |||
+ | Before insmod: | ||
+ | |||
+ | # lsmod | ||
+ | Module Size Used by | ||
+ | bnep 12051 2 | ||
+ | hci_uart 19956 1 | ||
+ | btbcm 7916 1 hci_uart | ||
+ | bluetooth 365511 22 hci_uart,bnep,btbcm | ||
+ | 8192cu 582217 0 | ||
+ | brcmfmac 222720 0 | ||
+ | brcmutil 9092 1 brcmfmac | ||
+ | cfg80211 543027 2 8192cu,brcmfmac | ||
+ | rfkill 20851 5 bluetooth,cfg80211 | ||
+ | snd_soc_bcm2835_i2s 6546 0 | ||
+ | snd_soc_core 179915 1 snd_soc_bcm2835_i2s | ||
+ | snd_compress 10384 1 snd_soc_core | ||
+ | snd_pcm_dmaengine 5894 1 snd_soc_core | ||
+ | snd_pcm 97226 2 snd_pcm_dmaengine,snd_soc_core | ||
+ | snd_timer 23904 1 snd_pcm | ||
+ | snd 70032 4 snd_compress,snd_timer,snd_soc_core,snd_pcm | ||
+ | bcm2835_gpiomem 3940 0 | ||
+ | uio_pdrv_genirq 3923 0 | ||
+ | fixed 3285 0 | ||
+ | uio 10204 1 uio_pdrv_genirq | ||
+ | i2c_dev 6913 0 | ||
+ | fuse 99603 3 | ||
+ | ipv6 406279 70 | ||
+ | |||
+ | After insmod: | ||
+ | |||
+ | Module Size Used by | ||
+ | snd_soc_simple_card 6297 0 | ||
+ | snd_soc_simple_card_utils 5196 1 snd_soc_simple_card | ||
+ | asoc_i2s_loader 2761 0 | ||
+ | bnep 12051 2 | ||
+ | hci_uart 19956 1 | ||
+ | btbcm 7916 1 hci_uart | ||
+ | bluetooth 365511 22 hci_uart,bnep,btbcm | ||
+ | 8192cu 582217 0 | ||
+ | brcmfmac 222720 0 | ||
+ | brcmutil 9092 1 brcmfmac | ||
+ | cfg80211 543027 2 8192cu,brcmfmac | ||
+ | rfkill 20851 5 bluetooth,cfg80211 | ||
+ | snd_soc_bcm2835_i2s 6546 2 | ||
+ | snd_soc_core 179915 3 snd_soc_simple_card_utils,snd_soc_bcm2835_i2s,snd_soc_simple_card | ||
+ | snd_compress 10384 1 snd_soc_core | ||
+ | snd_pcm_dmaengine 5894 1 snd_soc_core | ||
+ | snd_pcm 97226 2 snd_pcm_dmaengine,snd_soc_core | ||
+ | snd_timer 23904 1 snd_pcm | ||
+ | snd 70032 4 snd_compress,snd_timer,snd_soc_core,snd_pcm | ||
+ | bcm2835_gpiomem 3940 0 | ||
+ | uio_pdrv_genirq 3923 0 | ||
+ | fixed 3285 0 | ||
+ | uio 10204 1 uio_pdrv_genirq | ||
+ | i2c_dev 6913 0 | ||
+ | fuse 99603 3 | ||
+ | ipv6 406279 54 | ||
+ | |||
+ | |||
+ | static struct asoc_simple_card_info snd_rpi_simple_card_info = { | ||
+ | .card = "snd_rpi_simple_card", // -> snd_soc_card.name | ||
+ | .name = "simple-card_codec_link", // -> snd_soc_dai_link.name | ||
+ | .codec = "snd-soc-dummy", // -> snd_soc_dai_link.codec_name | ||
+ | // Available codecs can be found in /sys/kernel/debug/asoc/codecs | ||
+ | // .platform = "20203000.i2s", // -> snd_soc_dai_link.platform_name | ||
+ | .platform = "3f203000.i2s", // | ||
+ | // ASoC platform strings can be found in /sys/kernel/debug/asoc/platforms | ||
+ | |||
+ | // Note: use SND_SOC_DAIFMT_CBS_CFM instead of SND_SOC_DAIFMT_CBS_CFS | ||
+ | // if I²S device must be in slave state. | ||
+ | .daifmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS, | ||
+ | .cpu_dai = { | ||
+ | // .name = "20203000.i2s", // -> snd_soc_dai_link.cpu_dai_name | ||
+ | .name= "3f203000.i2s", | ||
+ | .sysclk = 0 | ||
+ | }, | ||
+ | .codec_dai = { | ||
+ | .name = "snd-soc-dummy-dai", | ||
+ | // Available dais can be found in /sys/kernel/debug/asoc/dais | ||
+ | .sysclk = 0 | ||
+ | }, | ||
+ | }; |
Revision as of 12:21, 24 May 2017
To compile module:
http://raspberrypi.stackexchange.com/questions/39845/how-compile-a-loadable-kernel-module-without-recompiling-kernel
Edit asoc-i2s-loader.c
vi asoc-i2s-loader.c make insmod asoc-i2s-loader.ko dmesg arecord -D hw:0 -c2 -r 48000 -f S32_LE -t wav -v file.wav
Before insmod:
# lsmod Module Size Used by bnep 12051 2 hci_uart 19956 1 btbcm 7916 1 hci_uart bluetooth 365511 22 hci_uart,bnep,btbcm 8192cu 582217 0 brcmfmac 222720 0 brcmutil 9092 1 brcmfmac cfg80211 543027 2 8192cu,brcmfmac rfkill 20851 5 bluetooth,cfg80211 snd_soc_bcm2835_i2s 6546 0 snd_soc_core 179915 1 snd_soc_bcm2835_i2s snd_compress 10384 1 snd_soc_core snd_pcm_dmaengine 5894 1 snd_soc_core snd_pcm 97226 2 snd_pcm_dmaengine,snd_soc_core snd_timer 23904 1 snd_pcm snd 70032 4 snd_compress,snd_timer,snd_soc_core,snd_pcm bcm2835_gpiomem 3940 0 uio_pdrv_genirq 3923 0 fixed 3285 0 uio 10204 1 uio_pdrv_genirq i2c_dev 6913 0 fuse 99603 3 ipv6 406279 70
After insmod:
Module Size Used by snd_soc_simple_card 6297 0 snd_soc_simple_card_utils 5196 1 snd_soc_simple_card asoc_i2s_loader 2761 0 bnep 12051 2 hci_uart 19956 1 btbcm 7916 1 hci_uart bluetooth 365511 22 hci_uart,bnep,btbcm 8192cu 582217 0 brcmfmac 222720 0 brcmutil 9092 1 brcmfmac cfg80211 543027 2 8192cu,brcmfmac rfkill 20851 5 bluetooth,cfg80211 snd_soc_bcm2835_i2s 6546 2 snd_soc_core 179915 3 snd_soc_simple_card_utils,snd_soc_bcm2835_i2s,snd_soc_simple_card snd_compress 10384 1 snd_soc_core snd_pcm_dmaengine 5894 1 snd_soc_core snd_pcm 97226 2 snd_pcm_dmaengine,snd_soc_core snd_timer 23904 1 snd_pcm snd 70032 4 snd_compress,snd_timer,snd_soc_core,snd_pcm bcm2835_gpiomem 3940 0 uio_pdrv_genirq 3923 0 fixed 3285 0 uio 10204 1 uio_pdrv_genirq i2c_dev 6913 0 fuse 99603 3 ipv6 406279 54
static struct asoc_simple_card_info snd_rpi_simple_card_info = { .card = "snd_rpi_simple_card", // -> snd_soc_card.name .name = "simple-card_codec_link", // -> snd_soc_dai_link.name .codec = "snd-soc-dummy", // -> snd_soc_dai_link.codec_name // Available codecs can be found in /sys/kernel/debug/asoc/codecs // .platform = "20203000.i2s", // -> snd_soc_dai_link.platform_name .platform = "3f203000.i2s", // // ASoC platform strings can be found in /sys/kernel/debug/asoc/platforms
// Note: use SND_SOC_DAIFMT_CBS_CFM instead of SND_SOC_DAIFMT_CBS_CFS // if I²S device must be in slave state. .daifmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS, .cpu_dai = { // .name = "20203000.i2s", // -> snd_soc_dai_link.cpu_dai_name .name= "3f203000.i2s", .sysclk = 0 }, .codec_dai = { .name = "snd-soc-dummy-dai", // Available dais can be found in /sys/kernel/debug/asoc/dais .sysclk = 0 }, };