1.配置内核
wujun@wj-vBox:~/freescale/linux-imx$ make menuconfig
2.修改dts
imx6ul-14×14-ddr3-arm2.dts
456 pinctrl_mqs: mqsgrp { 457 fsl,pins = < 458 MX6UL_PAD_JTAG_TDI__MQS_LEFT 0x11088 459 MX6UL_PAD_JTAG_TDO__MQS_RIGHT 0x11088 460 >; 461 };
imx6ul-14×14-ddr3-arm2-mqs.dts
***************** /* * Copyright (C) 2015 Freescale Semiconductor, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include “imx6ul-14×14-ddr3-arm2.dts” / { sound-mqs { compatible = “fsl,imx6ul-ddr3-arm2-mqs”, “fsl,imx-audio-mqs”; model = “mqs-audio”; cpu-dai = <&sai1>; asrc-controller = <&asrc>; audio-codec = <&mqs>; }; }; &clks { assigned-clocks = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>; assigned-clock-rates = <>; }; &sai1 { assigned-clocks = <&clks IMX6UL_CLK_SAI1_SEL>, <&clks IMX6UL_CLK_SAI1>; assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>; assigned-clock-rates = <0>, <>; status = “okay”; }; &mqs { pinctrl-names = “default”; pinctrl-0 = <&pinctrl_mqs>; clocks = <&clks IMX6UL_CLK_SAI1>; clock-names = “mclk”; status = “okay”; }; *****************
wujun@wj-vBox:~/freescale/linux-imx$ grep -rn “compatible” sound/soc/ | grep “mqs” sound/soc/codecs/fsl_mqs.c:208: { .compatible = “fsl,imx6sx-mqs”, }, sound/soc/fsl/imx-mqs.c:257: { .compatible = “fsl,imx-audio-mqs”, },
pinctrl_mqs: mqsgrp { fsl,pins = < MX6UL_PAD_GPIO1_IO01__MQS_LEFT 0x11088 MX6UL_PAD_GPIO1_IO00__MQS_RIGHT 0x11088 >; };
这里我们更换了两个pin,因为上面两个pin已经接出来了,可以方便连线。
关于GPIO的定义可以在imx6ul-pinfunc.h文件中搜索。
./imx6ul-pinfunc.h:86:#define MX6UL_PAD_GPIO1_IO01__MQS_LEFT 0x0060 0x02EC 0x0000 0x4 0x0 ./imx6ul-pinfunc.h:77:#define MX6UL_PAD_GPIO1_IO00__MQS_RIGHT 0x005C 0x02E8 0x0000 0x4 0x0
3.编译
wujun@wj-vBox:~/freescale/linux-imx$ make dtbs DTC arch/arm/boot/dts/imx6ul-14×14-evk-mqs.dtb
因为没有修改内核,所以可以不需要编译,如果有修改就要编译一下make -j8
将内核和dtb拷贝出来放到tftp的共享目录下。
wujun@wj-vBox:~/freescale/linux-imx$ cp arch/arm/boot/zImage ~/share-doc/ wujun@wj-vBox:~/freescale/linux-imx$ cp arch/arm/boot/dts/imx6ul-14×14-ddr3-arm2.dtb ~/share-doc/
4.更新系统
=> setenv ipaddr 192.168.56.6;setenv serverip 192.168.56.5; => mmc dev 1;setenv bootargs console=ttymxc0, root=/dev/mmcblk1p2 rootwait rw; switch to partitions #0, OK mmc1 is current device => tftp 0x zImage;tftp 0x81A00000 imx6ul-14×14-evk-mqs.dtb;bootz 0x – 0x81A00000;
内核启动后查看内核log
root@imx6ulevk:~# dmesg | grep mqs [ 2.] imx-mqs sound-mqs: fsl-mqs-dai <-> .sai mapping ok [ 2.] imx-mqs sound-mqs: snd-soc-dummy-dai <-> .asrc mapping ok [ 2.] imx-mqs sound-mqs: fsl-mqs-dai <-> .sai mapping ok [ 2.] #0: mqs-audio
设备已经有了实际上是在/dev/snd下,下面就是需要测试设备是否正常.
5.安装播放器
EVK上编译
wujun@wj-vBox:~/wavplay$ gcc wavplay.c -o wav-player /usr/lib/libasound.so wujun@wj-vBox:~/wavplay$ ./wav-player wav-test.wav
root@imx6ulevk:~# dmesg | grep mqs [ 2.] imx6ul-pinctrl 20e0000.iomuxc: pin MX6UL_PAD_GPIO1_IO01 already requested by .tsc; cannot claim for .aips-bus:mqs [ 2.] imx6ul-pinctrl 20e0000.iomuxc: pin-24 (.aips-bus:mqs) status -22 [ 2.] imx6ul-pinctrl 20e0000.iomuxc: could not request pin 24 (MX6UL_PAD_GPIO1_IO01) from group mqsgrp on device 20e0000.iomuxc
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199055.html原文链接:https://javaforall.net
