SAI padding bits configuration on imx93

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

SAI padding bits configuration on imx93

跳至解决方案
331 次查看
julienblanc
Contributor III

I'm having a hard time correctly configuring the sai link between the imx and the codec under linux.

 

The codec is an AK4619, used in 4 channels TDM mode. Playback is ok at 48KHz / 32 bits TDM mode, MSB first and MSB justified.

For capture, the AK4619 only supports 24 bits. The data is MSB justified, which means that non significant bits comes after the relevant bits (significative bits are 8-31). On the other side, the sai sets the FBT to 23, which means that the significative bits are 0-23.

I tried to find the relevant settings, but could not. I understand that FBT tells where the relevant data starts, but i can't find which register sets the data size (which, in my case, is 24, as opposed to the word size which is 32).

What register needs to be set, or what config must be set in the device tree ? Here's the relevant config i actually use :

&sai3 {
#sound-dai-cells = <0>;
clocks = <&clk IMX93_CLK_SAI3_IPG>, <&clk IMX93_CLK_DUMMY>,
<&clk IMX93_CLK_SAI3_GATE>, <&clk IMX93_CLK_DUMMY>,
<&clk IMX93_CLK_DUMMY>, <&clk IMX93_CLK_AUDIO_PLL>;
clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k";
assigned-clocks = <&clk IMX93_CLK_SAI3>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai3>;
assigned-clock-parents = <&clk IMX93_CLK_AUDIO_PLL>;
assigned-clock-rates = <24576000>;
fsl,sai-mclk-direction-output;
fsl,sai-asynchronous;

status = "okay";
};
simple-audio-card,dai-link {
link-name = "AK-4CHANNELS";
format = "i2s";
dai-tdm-slot-num = <4>;
dai-tdm-slot-width = <32>;
fsl,mclk-equal-bclk;
cpu {
sound-dai = <&sai3>;
dai-tdm-slot-num = <4>;
dai-tdm-slot-width = <32>;
assigned-clocks = <&clk IMX93_CLK_SAI3>;
};
codec {
sound-dai = <&ak4619>;
system-clock-frequency = <24576000>;
assigned-clocks = <&clk IMX93_CLK_SAI3>;
dai-tdm-slot-num = <4>;
dai-tdm-slot-width = <32>;
};
};

I've checked with a scope, and the data on the sai line looks correct.

 

Any hints on this would be really appreciated.

0 项奖励
回复
1 解答
263 次查看
julienblanc
Contributor III

Actually, it seems that the extra bits do not cause any issue. I could get audio to work correctly after altering the driver to write the correct value in FBT.

Best regards,

在原帖中查看解决方案

0 项奖励
回复
3 回复数
311 次查看
JorgeCas
NXP TechSupport
NXP TechSupport

Hello,

Did you try to use -f S32_LE with ALSA during recording/playback?

This configuration is not done in device tree, if you want to configure it from the driver, you need to modify register TCR5/RCR5 here:

https://github.com/nxp-imx/linux-imx/blob/b096ce610e956cc2596006343df8a2a26ed6e019/sound/soc/fsl/fsl...

https://github.com/nxp-imx/linux-imx/blob/b096ce610e956cc2596006343df8a2a26ed6e019/sound/soc/fsl/fsl...

Best regards.

0 项奖励
回复
269 次查看
julienblanc
Contributor III

Thanks.

The problem is that i don't know what to write in this register. The only doc i can find is

julienblanc_0-1789720432684.png

I've highlighted the relevant line in my case. So yes, i should write 0b11111 in FBT, but how do i tell that only 24 bits are relevant ? My understanding is that i cannot use W0W and WNW as they tell the word size, which in my case is 32 bits. In can't find anything relevant in neither of the RCRx registers.

Regards,

Julien

0 项奖励
回复
264 次查看
julienblanc
Contributor III

Actually, it seems that the extra bits do not cause any issue. I could get audio to work correctly after altering the driver to write the correct value in FBT.

Best regards,

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2414378%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Eimx93%20%E4%B8%8A%E7%9A%84%20SAI%20%E5%A1%AB%E5%85%85%E4%BD%8D%E9%85%8D%E7%BD%AE%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2414378%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%88%91%E5%9C%A8%20Linux%20%E7%B3%BB%E7%BB%9F%E4%B8%8B%E9%85%8D%E7%BD%AE%20imx%20%E5%92%8C%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84%20sai%20%E8%BF%9E%E6%8E%A5%E6%97%B6%E9%81%87%E5%88%B0%E4%BA%86%E5%9B%B0%E9%9A%BE%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%E4%B8%BA%20AK4619%EF%BC%8C%E9%87%87%E7%94%A8%204%20%E9%80%9A%E9%81%93%20TDM%20%E6%A8%A1%E5%BC%8F%E3%80%8248KHz%20%2F%2032%20%E4%BD%8D%20TDM%20%E6%A8%A1%E5%BC%8F%E4%B8%8B%E6%92%AD%E6%94%BE%E6%AD%A3%E5%B8%B8%EF%BC%8CMSB%20%E4%BC%98%E5%85%88%E4%B8%94%20MSB%20%E5%AF%B9%E9%BD%90%E3%80%82%3C%2FP%3E%3CP%3E%E5%AF%B9%E4%BA%8E%E6%8D%95%E8%8E%B7%EF%BC%8CAK4619%20%E4%BB%85%E6%94%AF%E6%8C%81%2024%20%E4%BD%8D%E3%80%82%E6%95%B0%E6%8D%AE%E9%87%87%E7%94%A8%E6%9C%80%E9%AB%98%E6%9C%89%E6%95%88%E4%BD%8D%E5%AF%B9%E9%BD%90%EF%BC%8C%E8%BF%99%E6%84%8F%E5%91%B3%E7%9D%80%E9%9D%9E%E6%9C%89%E6%95%88%E4%BD%8D%E4%BD%8D%E4%BA%8E%E7%9B%B8%E5%85%B3%E4%BD%8D%3CSTRONG%3E%E4%B9%8B%E5%90%8E%3C%2FSTRONG%3E%EF%BC%88%E6%9C%89%E6%95%88%E4%BD%8D%E4%B8%BA%208-31%EF%BC%89%E3%80%82%E5%8F%A6%E4%B8%80%E6%96%B9%E9%9D%A2%EF%BC%8Csai%20%E5%B0%86%20FBT%20%E8%AE%BE%E7%BD%AE%E4%B8%BA%2023%EF%BC%8C%E8%BF%99%E6%84%8F%E5%91%B3%E7%9D%80%E6%9C%89%E6%95%88%E4%BD%8D%E4%B8%BA%200-23%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E5%B0%9D%E8%AF%95%E6%9F%A5%E6%89%BE%E7%9B%B8%E5%85%B3%E8%AE%BE%E7%BD%AE%EF%BC%8C%E4%BD%86%E6%B2%A1%E6%9C%89%E6%89%BE%E5%88%B0%E3%80%82%E6%88%91%E7%9F%A5%E9%81%93%20FBT%20%E6%8C%87%E7%A4%BA%E7%9B%B8%E5%85%B3%E6%95%B0%E6%8D%AE%E7%9A%84%E8%B5%B7%E5%A7%8B%E4%BD%8D%E7%BD%AE%EF%BC%8C%E4%BD%86%E6%88%91%E6%89%BE%E4%B8%8D%E5%88%B0%E5%93%AA%E4%B8%AA%E5%AF%84%E5%AD%98%E5%99%A8%E8%AE%BE%E7%BD%AE%E6%95%B0%E6%8D%AE%E5%A4%A7%E5%B0%8F%EF%BC%88%E5%9C%A8%E6%88%91%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%98%AF%2024%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E5%AD%97%E9%95%BF%2032%EF%BC%89%E3%80%82%3C%2FP%3E%3CP%3E%E9%9C%80%E8%A6%81%E8%AE%BE%E7%BD%AE%E5%93%AA%E4%B8%AA%E5%AF%84%E5%AD%98%E5%99%A8%EF%BC%8C%E6%88%96%E8%80%85%E9%9C%80%E8%A6%81%E5%9C%A8%E8%AE%BE%E5%A4%87%E6%A0%91%E4%B8%AD%E8%AE%BE%E7%BD%AE%E5%93%AA%E4%BA%9B%E9%85%8D%E7%BD%AE%EF%BC%9F%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%88%91%E5%AE%9E%E9%99%85%E4%BD%BF%E7%94%A8%E7%9A%84%E7%9B%B8%E5%85%B3%E9%85%8D%E7%BD%AE%EF%BC%9A%3C%2FP%3E%3CPRE%20translate%3D%22no%22%3E%26amp%3Bsai3%20%7B%3CBR%20%2F%3E%23sound-dai-cells%20%3D%20%26lt%3B0%26gt%3B%3B%3CBR%20%2F%3Eclocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX93_CLK_SAI3_IPG%26gt%3B%2C%20%26lt%3B%26amp%3Bclk%20IMX93_CLK_DUMMY%26gt%3B%2C%3CBR%20%2F%3E%26lt%3B%26amp%3Bclk%20IMX93_CLK_SAI3_GATE%26gt%3B%2C%20%26lt%3B%26amp%3Bclk%20IMX93_CLK_DUMMY%26gt%3B%2C%3CBR%20%2F%3E%26lt%3B%26amp%3Bclk%20IMX93_CLK_DUMMY%26gt%3B%2C%20%26lt%3B%26amp%3Bclk%20IMX93_CLK_AUDIO_PLL%26gt%3B%3B%3CBR%20%2F%3Eclock-names%20%3D%20%22bus%22%2C%20%22mclk0%22%2C%20%22mclk1%22%2C%20%22mclk2%22%2C%20%22mclk3%22%2C%20%22pll8k%22%3B%3CBR%20%2F%3Eassigned-clocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX93_CLK_SAI3%26gt%3B%3B%3CBR%20%2F%3Epinctrl-names%20%3D%20%22default%22%3B%3CBR%20%2F%3E%20pinctrl-0%20%3D%20%26lt%3B%26amp%3Bpinctrl_sai3%26gt%3B%3B%3CBR%20%2F%3E%20%20assigned-clock-parents%20%3D%20%26lt%3B%26amp%3Bclk%20IMX93_CLK_AUDIO_PLL%26gt%3B%3B%3CBR%20%2F%3E%20%20assigned-clock-rates%20%3D%20%26lt%3B24576000%26gt%3B%3B%3CBR%20%2F%3E%20%20fsl%2Csai-mclk-direction-output%3B%3CBR%20%2F%3E%20%20fsl%2Csai-asynchronous%3B%3CBR%20%2F%3E%3CBR%20%2F%3E%20%20status%20%3D%20%22okay%22%3B%3CBR%20%2F%3E%7D%3B%3CBR%20%2F%3Esimple-audio-card%2Cdai-link%20%7B%3CBR%20%2F%3E%20%20%20link-name%20%3D%20%22AK-4CHANNELS%22%3B%3CBR%20%2F%3E%20%20%20format%20%3D%20%22i2s%22%3B%3CBR%20%2F%3E%20%20%20dai-tdm-slot-num%20%3D%20%26lt%3B4%26gt%3B%3B%3CBR%20%2F%3E%20%20%20dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%3CBR%20%2F%3E%20%20%20fsl%2Cmclk-equal-bclk%3B%3CBR%20%2F%3E%20%20%20cpu%20%7B%3CBR%20%2F%3E%20%20%20%20%20%20sound-dai%20%3D%20%26lt%3B%26amp%3Bsai3%26gt%3B%3B%3CBR%20%2F%3E%20%20%20%20%20%20dai-tdm-slot-num%20%3D%20%26lt%3B4%26gt%3B%3B%3CBR%20%2F%3E%20%20%20%20%20%20dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%3CBR%20%2F%3E%20%20%20%20%20%20assigned-clocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX93_CLK_SAI3%26gt%3B%3B%3CBR%20%2F%3E%20%20%20%7D%3B%3CBR%20%2F%3E%20%20%20codec%20%7B%3CBR%20%2F%3E%20%20%20sound-dai%20%3D%20%26lt%3B%26amp%3Bak4619%26gt%3B%3B%3CBR%20%2F%3E%20%20%20%20%20%20system-clock-frequency%20%3D%20%26lt%3B24576000%26gt%3B%3B%3CBR%20%2F%3E%20%20%20%20%20%20assigned-clocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX93_CLK_SAI3%26gt%3B%3B%3CBR%20%2F%3E%20%20%20%20%20%20dai-tdm-slot-num%20%3D%20%26lt%3B4%26gt%3B%3B%3CBR%20%2F%3E%20%20%20%20%20%20dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%3CBR%20%2F%3E%20%20%20%7D%3B%3CBR%20%2F%3E%7D%3B%3C%2FPRE%3E%3CP%3E%E6%88%91%E7%94%A8%E7%A4%BA%E6%B3%A2%E5%99%A8%E6%A3%80%E6%9F%A5%E8%BF%87%E4%BA%86%EF%BC%8Csai%20%E7%BA%BF%E4%B8%8A%E7%9A%84%E6%95%B0%E6%8D%AE%E7%9C%8B%E8%B5%B7%E6%9D%A5%E6%98%AF%E6%AD%A3%E7%A1%AE%E7%9A%84%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E4%BB%BB%E4%BD%95%E6%8F%90%E7%A4%BA%E9%83%BD%E5%B0%86%E4%B8%8D%E8%83%9C%E6%84%9F%E6%BF%80%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2414526%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20SAI%26nbsp%3Bpadding%20bits%20configuration%20on%20imx93%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2414526%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E8%B0%A2%E8%B0%A2%E3%80%82%3C%2FP%3E%3CP%3E%E9%97%AE%E9%A2%98%E6%98%AF%E6%88%91%E4%B8%8D%E7%9F%A5%E9%81%93%E8%AF%A5%E5%9C%A8%E8%BF%99%E4%B8%AA%E7%99%BB%E8%AE%B0%E7%B0%BF%E9%87%8C%E5%86%99%E4%BA%9B%E4%BB%80%E4%B9%88%E3%80%82%E6%88%91%E8%83%BD%E6%89%BE%E5%88%B0%E7%9A%84%E5%94%AF%E4%B8%80%E4%B8%80%E4%BB%BD%E6%96%87%E4%BB%B6%E6%98%AF%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22julienblanc_0-1789720432684.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22julienblanc_0-1789720432684.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22julienblanc_0-1789720432684.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F396561iC297B84EEFD25F15%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22julienblanc_0-1789720432684.png%22%20alt%3D%22julienblanc_0-1789720432684.png%22%20%2F%3E%3C%2Fspan%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3Ejulienblanc_0-1789720432684.png%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3Ejulienblanc_0-1789720432684.png%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E6%88%91%E5%B7%B2%E5%B0%86%E6%88%91%E6%A1%88%E4%BE%8B%E4%B8%AD%E7%9A%84%E7%9B%B8%E5%85%B3%E8%A1%8C%E9%AB%98%E4%BA%AE%E6%98%BE%E7%A4%BA%E3%80%82%E6%89%80%E4%BB%A5%EF%BC%8C%E6%98%AF%E7%9A%84%EF%BC%8C%E6%88%91%E5%BA%94%E8%AF%A5%E5%9C%A8%20FBT%20%E4%B8%AD%E5%86%99%E5%85%A5%200b11111%EF%BC%8C%E4%BD%86%E6%88%91%E5%A6%82%E4%BD%95%E7%9F%A5%E9%81%93%E5%8F%AA%E6%9C%89%2024%20%E4%BD%8D%E6%98%AF%E7%9B%B8%E5%85%B3%E7%9A%84%E5%91%A2%EF%BC%9F%E6%88%91%E7%9A%84%E7%90%86%E8%A7%A3%E6%98%AF%EF%BC%8C%E6%88%91%E4%B8%8D%E8%83%BD%E4%BD%BF%E7%94%A8%20W0W%20%E5%92%8C%20WNW%EF%BC%8C%E5%9B%A0%E4%B8%BA%E5%AE%83%E4%BB%AC%E8%A1%A8%E7%A4%BA%E5%AD%97%E9%95%BF%EF%BC%8C%E8%80%8C%E6%88%91%E7%9A%84%E5%AD%97%E9%95%BF%E6%98%AF%2032%20%E4%BD%8D%E3%80%82%E6%88%91%E5%9C%A8%E4%B8%A4%E4%B8%AA%20RCRx%20%E5%AF%84%E5%AD%98%E5%99%A8%E4%B8%AD%E9%83%BD%E6%89%BE%E4%B8%8D%E5%88%B0%E4%BB%BB%E4%BD%95%E7%9B%B8%E5%85%B3%E4%BF%A1%E6%81%AF%E3%80%82%3C%2FP%3E%3CP%3E%E6%AD%A4%E8%87%B4%EF%BC%8C%3C%2FP%3E%3CP%3E%E6%9C%B1%E5%88%A9%E5%AE%89%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2414421%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20SAI%26nbsp%3Bpadding%20bits%20configuration%20on%20imx93%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2414421%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%EF%BC%8C%3C%2FP%3E%0A%3CP%3E%E6%82%A8%E5%9C%A8%E5%BD%95%E5%88%B6%2F%E6%92%AD%E6%94%BE%E6%97%B6%E6%98%AF%E5%90%A6%E5%B0%9D%E8%AF%95%E8%BF%87%E4%BD%BF%E7%94%A8%20ALSA%20%E7%9A%84%20-f%20S32_LE%20%E5%8F%82%E6%95%B0%EF%BC%9F%3C%2FP%3E%0A%3CP%3E%E6%AD%A4%E9%85%8D%E7%BD%AE%E5%B9%B6%E9%9D%9E%E5%9C%A8%E8%AE%BE%E5%A4%87%E6%A0%91%E4%B8%AD%E5%AE%8C%E6%88%90%EF%BC%8C%E5%A6%82%E6%9E%9C%E8%A6%81%E9%80%9A%E8%BF%87%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E8%BF%9B%E8%A1%8C%E9%85%8D%E7%BD%AE%EF%BC%8C%E5%88%99%E9%9C%80%E8%A6%81%E5%9C%A8%E6%AD%A4%E5%A4%84%E4%BF%AE%E6%94%B9%E5%AF%84%E5%AD%98%E5%99%A8%20TCR5%2FRCR5%EF%BC%9A%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fnxp-imx%2Flinux-imx%2Fblob%2Fb096ce610e956cc2596006343df8a2a26ed6e019%2Fsound%2Fsoc%2Ffsl%2Ffsl_sai.h%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgithub.com%2Fnxp-imx%2Flinux-imx%2Fblob%2Fb096ce610e956cc2596006343df8a2a26ed6e019%2Fsound%2Fsoc%2Ffsl%2Ffsl_sai.h%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fnxp-imx%2Flinux-imx%2Fblob%2Fb096ce610e956cc2596006343df8a2a26ed6e019%2Fsound%2Fsoc%2Ffsl%2Ffsl_sai.c%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgithub.com%2Fnxp-imx%2Flinux-imx%2Fblob%2Fb096ce610e956cc2596006343df8a2a26ed6e019%2Fsound%2Fsoc%2Ffsl%2Ffsl_sai.c%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2414627%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20SAI%26nbsp%3Bpadding%20bits%20configuration%20on%20imx93%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2414627%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E5%AE%9E%E9%99%85%E4%B8%8A%EF%BC%8C%E8%BF%99%E4%BA%9B%E9%A2%9D%E5%A4%96%E7%9A%84%E9%83%A8%E5%88%86%E4%BC%BC%E4%B9%8E%E5%B9%B6%E6%B2%A1%E6%9C%89%E9%80%A0%E6%88%90%E4%BB%BB%E4%BD%95%E9%97%AE%E9%A2%98%E3%80%82%E4%BF%AE%E6%94%B9%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%EF%BC%8C%E5%B0%86%E6%AD%A3%E7%A1%AE%E7%9A%84%E5%80%BC%E5%86%99%E5%85%A5%20FBT%20%E5%90%8E%EF%BC%8C%E9%9F%B3%E9%A2%91%E5%B0%B1%E8%83%BD%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%E4%BA%86%E3%80%82%3C%2FP%3E%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%3C%2FLINGO-BODY%3E