আমি এনএক্সপি এলপিসি 3250 মাইক্রোকন্ট্রোলারের জন্য এমবেডেড লিনাক্স (2.6.39.2) সিস্টেম তৈরি করতে বিলড্রুট ব্যবহার করছি।
এই মুহুর্তে, আমি ALSA / ASoC প্রস্তুত এবং চলমান করার চেষ্টা করছি, তবে মডিউলগুলি এক সাথে কাজ করার বিষয়ে আমার কিছু সমস্যা হচ্ছে। (আমি মনে করি!)
কিছু গুরুত্বপূর্ণ পটভূমি:
আমি যে বোর্ডের সাথে পরীক্ষা করছি তা হ'ল এম্বেডেড আর্টিস্টগুলি 3250 ভি 2 ডেভলপমেন্ট বোর্ড । ভি 2 ভি 1 এর থেকে পৃথক যে এটিতে এলসিডি স্ক্রিন নেই, তবে এতে একটি আই 2 এস অডিও কোডেক রয়েছে: এনএক্সপি ইউডিএ 1380। EA3250 V1 এর জন্য বোর্ড সমর্থন কার্নেলের এলপিসিএলিনাক্স সংস্করণে অন্তর্ভুক্ত রয়েছে । ফাইটেক 3250 নামে একটি পৃথক বিকাশ বোর্ড রয়েছে যা একই ইউডিএ 1380 কোডেক চিপ ধারণ করে। এলপিসিএলিনাক্স বিতরণে অডিও কোডেক চিপের পাশাপাশি ফাইটেক বোর্ডেরও সমর্থন রয়েছে। আমি যা বুঝতে পেরেছি সেগুলি থেকে, ফাইটেক 3250 বোর্ডের আই 2 সি অ্যাড্রেস 0x18 এ ইউডিএ 1380 কোডেক রয়েছে । আমার EA3250 ভি 2 বোর্ডে, অডিও কোডেক I2C ঠিকানা 0x1a এ অবস্থিত ।(আমি চিপটি চালিত হয়েছে যাচাই করেছি, এবং আমি এটি আই 2 সি-সরঞ্জাম প্যাকেজটি ব্যবহার করে যোগাযোগ করতে পারি It এটি i2cdetect এর প্রতিক্রিয়া জানায় এবং আমি চিপ থেকে রেজিস্টারগুলি সঠিকভাবে i2cget ব্যবহার করে পড়তে পারি))
উত্সটি সংশোধন করা হচ্ছে:
কোডেক চিপের ঠিকানা পরিবর্তন করতে আমার ফাইটেক 3250 ড্রাইভার ফাইলগুলি সম্পাদনা করতে হবে। আমি lpc3xxx-uda1380.c এর এই বিভাগটি সম্পাদনা করেছি :
static struct snd_soc_dai_link phy3250_uda1380_dai[] = {
{
.name = "uda1380",
.stream_name = "UDA1380 Duplex",
#if defined(CONFIG_SND_LPC32XX_USEI2S1)
.cpu_dai_name = "lpc3xxx-i2s1",
#else
.cpu_dai_name = "lpc3xxx-i2s0",
#endif
.codec_dai_name = "uda1380-hifi",
.init = phy3250_uda1380_init,
.platform_name = "lpc3xxx-audio.0",
//EDIT// .codec_name = "uda1380-codec.0-0018", //EDIT//
.codec_name = "uda1380-codec.0-001a",
.ops = &phy3250_uda1380_ops,
},
};
আমি এই পরিবর্তনটি করার পরে, আমি এগিয়ে গিয়ে আবার সিস্টেমটি তৈরি করেছিলাম এবং সবকিছু ঠিক আছে। সিস্টেমে বুট করার পরে আমার মধ্যে নিম্নলিখিত মডিউলগুলি রয়েছে (স্ট্যান্ডার্ড কোর মডিউলগুলি ছাড়াও) /lib/modules/2.6.39.2/kernel/sound
:
./soc/codecs: snd-soc-uda1380.ko <-- ASoC codec driver
./soc/lpc3xxx: snd-soc-lpc3xxx-i2s.ko <-- ASoC DAI
snd-soc-lpc3xxx-uda1380.ko <-- ASoC machine driver
snd-soc-lpc3xxx.ko <-- ASoC platform driver
এখন, আমি কীভাবে এই সমস্ত জিনিসকে একসাথে আবদ্ধ করব?
কেবল মডিউলগুলি সন্নিবেশ করা modprobe
আসলে ডিভাইসটি ALSA / ASoC এ দেয় না। আমি সাউন্ডকার্ড সনাক্ত করতে অক্ষম। এর অর্থ কি এখন আমি 0x1auda1380-codec
ঠিকানায় একটি নতুন ডিভাইস তৈরি করতে এবং এটি একটি ড্রাইভারকে আবদ্ধ করতে হবে? আমি নিম্নলিখিতগুলি করার চেষ্টা করেছি:
এবং পেয়েছি:
তারপরে আমি ড্রাইভারটিকে ডিভাইসে আবদ্ধ করার চেষ্টা করি:
এবং পেয়েছি:
আমি যা চেষ্টা করি তার জন্য এই ত্রুটিটি পাই! আমার একটি অনুভূতি রয়েছে যে আমি ডিভাইসটি সঠিকভাবে তৈরি করছি না, এবং তারপরে এটি সঠিক ড্রাইভারের সাথে কীভাবে আবদ্ধ করা যায় তা নিশ্চিত নই।
echo uda1380-codec 0x01a > /sys/bus/i2c/devices/i2c-0/new_device
i2c i2c-0: new_device: Instantiated device uda1380-codec at 0x1a
echo 0x1a > /sys/bus/i2c/drivers/uda1380-codec/bind
sh: write error: No such device
নোটা বেনি:
আমি গত রাতে এই সাথে খেলছিলাম এবং কোনওভাবে এএসওসি ঘুম থেকে উঠতে এবং কার্ডের জন্য অন্তত তদন্ত করতে সক্ষম হয়েছি। আমি বিভিন্ন বাইন্ডিং নিয়ে খেলছিলাম, আমার ধারণা। আমার পদক্ষেপগুলি মনে রাখা দেরী এবং কঠিন ছিল, তবে আমি অন্তত নিম্নলিখিত ত্রুটিটি কোনওভাবে পেতে পেরেছি:
uda1380-codec 0-001a: asoc: failed to probe CODEC uda1380-codec.0-001a: -22
asoc: failed to instantiate card LPC32XX: -22
আমি এই ত্রুটি পুনরায় তৈরি করতে অক্ষম!
সম্পাদনা:
আমি নিশ্চিত করেছি যে আমার সংশোধিত কোডটি সংকলিত হচ্ছে, তাই চালকের এখনই সঠিক ঠিকানার সাথে কথা বলা উচিত। মডিউল ম্যানুয়ালি লোড করার পরে, এর আউটপুট lsmod
:
Module Size Used by Not tainted
snd_soc_lpc3xxx_uda1380 2087 0
snd_soc_lpc3xxx 3089 0
snd_soc_lpc3xxx_i2s 4089 1
snd_soc_uda1380 10865 0
snd_soc_core 51549 4 snd_soc_lpc3xxx_uda1380,snd_soc_lpc3xxx,snd_soc_lpc3xxx_i2s,snd_soc_uda1380
snd_pcm 52098 2 snd_soc_lpc3xxx,snd_soc_core
snd_timer 15590 1 snd_pcm
snd_page_alloc 3021 1 snd_pcm
snd 37286 3 snd_soc_core,snd_pcm,snd_timer
এটা কি ঠিক দেখাচ্ছে?
এবং আমার ডিভাইস টেবিল:
# Audio stuff
/dev/audio c 666 0 29 14 4 - - -
#/dev/audio1 c 666 0 29 14 20 - - -
/dev/dsp c 666 0 29 14 3 - - -
#/dev/dsp1 c 666 0 29 14 19 - - -
#/dev/sndstat c 666 0 29 14 6 - - -
/dev/mixer c 666 0 29 14 0 - - -
/dev/snd d 755 0 29 - - - - -
/dev/snd/controlC0 c 666 0 29 116 0 - - -
/dev/snd/pcmC0D0c c 666 0 29 116 24 - - -
/dev/snd/pcmC0D0p c 666 0 29 116 16 - - -
/dev/snd/seq c 666 0 29 116 1 - - -
/dev/snd/timer c 666 0 29 116 33 - - -
alsa-devel
এবং কেউ সাড়া দেয়নি। (যা আমি বলতে পারি - আমি মেল-তালিকাগুলি ঘৃণা করি, সেগুলি সবচেয়ে খারাপভাবে পড়তে পারে)) এখন আমার মেলবক্সটি ALSA কৃপায় পূর্ণ এবং এখনও আমার কোনও সহায়তা নেই। এখানে আমি নিজেই আবার যাচ্ছি ...
alsa-devel
তালিকায় জিজ্ঞাসা করুন (যেখানে আপনাকে বলা হবে যে ২.6.৩৯ ভয়াবহভাবে পুরানো, এবং বোর্ড বিক্রেতাকে সমর্থন করার জন্য দায়ী)।