استفاده از کلیدها و سایر پریفرال ها در V3S با لینوکس

سلام به همگی
میخواستم یک برنامه با C برای V3S بنویسم (تحت لینوکس)
توی این برنامه میخوام از کلیدهای ورودی (که به LRADC متصل شدن) و سایر GPIO ها بعلاوه سایر پریفرال ها (مثل uartو spi و i2c و …) استفاده کنم.

تا جایی که میدونم یک روش این هست که از فایل های درون /dev/ استفاده کنیم و با خوندن و نوشتن درون فایلهای مربوطه کار موورد نظرمون رو انجام بدیم.
یک روش دیگه هم این هست که از کتابخونه هایی که توی لینوکس وجود داره استفاده کنیم. مثلا از یه کتابخونه برای ارتباط با uart و از یکی دیگه برای gpio و … استفاده کنیم.

دوستانی که اطلاع دارن ممنون میشم برای هر کدوم از این روش ها راهنمایی کنن.

سلام alizx
شما میتونید چند روش رو برید سعی میکنم در ادامه براتون لینک های قرار بدم که میتونه براتون مفید باشه.

برای برنامه نویسی و راه اندازی پرفیرال ها تو برد مد نظر لینوکسی تون میتونید از کتاب های زیر استفاده کنید
(در این آموزش ها از لایه User-Space برای اجرای برنامه استفاده می شود که این برای شما میتونه مکفی باشه. ولی اگر بخواید عمیق تر کار کنید برنامه نویسی در سطح کرنل یعنی درایور نویسی رو میتونید هم کار کنید )
1- کتاب GNU/Linux Rapid Embedded Programming

2- کتاب اقای مایکل کریسک :
The Linux programming interface: a Linux and UNIX system programming handbook

3- ۲ فصل های پایانی ویدیو اموزشی Udemy – Embedded Linux Step by Step using Beaglebone Black 2022-12
از سایت دانلودلی رایگان دنلود کنید و ببنید.(بخش های انتهایی آموزش راه اندازی آیسی eeprom external از طریق I2c و راه اندازی 7 Segment و چیز های ساده ای از این قبلی که به شما مظمون قضیه رو سعی میکند یاد بدهد.

سلام
برای استفاده از LRADC درایور موجود هست به نام allwinner,sun4i-a10-lradc-keys
این درایور میاد و دکمه هایی که به LRADC وصل هست رو به عنوان یک Input event به لینوکس متصل میکنه
در ادامه نمونه ای از استفاده از این درایور برای برد sinux v3 رو میارم که توی دیوایس تری معرفی شده

&lradc {
	vref-supply = <&reg_vcc3v0>;
	status = "okay";

	button-200 {
		label = "DOWN";
		linux,code = <KEY_DOWN>;
		channel = <0>;
		voltage = <200000>;
	};

	button-400 {
		label = "UP";
		linux,code = <KEY_UP>;
		channel = <0>;
		voltage = <400000>;
	};

	button-600 {
		label = "TAB";
		linux,code = <KEY_TAB>;
		channel = <0>;
		voltage = <600000>;
	};

	button-800 {
		label = "ENTER";
		linux,code = <KEY_ENTER>;
		channel = <0>;
		voltage = <800000>;
	};
};

همونطور که در کد بالا مشاهده میکنید ، چهار تا کلید مختلف معرفی شده که هر کدوم یک linux,code مشخص و یک voltage مشخص دارند
برای بررسی همه linux code های قابل استفاده میتونید به این لینک مراجعه کنید

همچنین برای پیدا کردن رابطه voltage و مقدار مقاومت های استفاده شده در کد بالا میتونید به شماتیک برد sinux v3 یا licheepi zero مراجعه کنید

2 پسندیده