راه اندازی درایور gpio-sunxi

این درایور برخلاف درایورهای قبلی ویژگی های بیشتری داره و می توان پایه ها را هم به عنوان ورودی و هم خروجی تعریف کرد. الان که دارم این مطلب را می نویسم تونستم با کد نویسی داخل خود ترمینال یکی از پایه ها را خاموش و روشن بکنم.

مراحل انجام کار با کمی تفاوت مشابه فصل7/Basic Input and Output  کتاب Getting Started with Raspberry Pi است که می تونید از این لینک دانلودش کنید.

اولین کار ساخت یه ایمیج و فعال کردن درایور gpio-sunxi است. برای این کار مراحل زیر را انجام می دهیم.

با این دستور سورس کامل sunxi را می گیریم.

git clone –recursive git://github.com/linux-sunxi/sunxi-bsp.git

حالا می خواهیم یک hardwarepack بسازیم که شامل uboot کرنل و ماژول های مورد نیاز هست.

cd sunxi-bsp

./configure cubieboard

اگر بردتون مارسه بجای دستور اخر از دستور زیر استفاده کنید

./configure a10_mid_1gb

با دستور زیر تنظیمات کرنل را انجام می دهیم.

make linux-config

از طریق مسیر زیر درایور gpio-sunxi را با زدن کلید M روی حالت ماژول قرار می دهیم.

Device Driver > Misc devices > GPIO Support > GPIO Support for sunxi platform

تنظیمات را ذخیره کرده و خارج می شویم.

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

make

بعد از تمام شدن داخل پوشه زیر فایل cubieboard_hwpack.tar.xz برای کیوبی یا a10_mid_1gb_hwpack.tar.xz برای مارس ساخته میشه.

/sunxi-bsp/output/

حالا با استفاده از آموزش زیر و این فایل ایمیج لینوکس را می سازیم.

ساخت uSD لینوکس لینارو

فایل script.bin جدید مطابق این لینک را جایگزین فایل قبلی می کنیم.

بعد از بالا اومدن لینوکس با دستور زیر این ماژول را به کرنل اضافه می کنیم.

modprobe gpio-sunxi

حالا با دستور زیر یک فایل درست می کنیم و دستورات زیر را داخل اون تایپ می کنیم.

#!/bin/bash

echo $1 > /sys/class/gpio/export #

GPIO=$(basename /sys/class/gpio/gpio$1_*)

echo Exporting pin $GPIO #

echo Setting direction to out.

echo out > /sys/class/gpio/$GPIO/direction #

echo Setting pin high.

echo 1 > /sys/class/gpio/$GPIO/value

اسم اون را on.sh می زاریم و ذخیره می کنیم و با دستر زیر اجازه دسترسی و اجرا به اون می دهیم.

chmod u+x on.sh

حالا برای مثال برای set کردن پایه 12  که معادل gpio12_pi6 پایه 26 U15 کیوبی است دستور زیر را انجام می دهیم

./on.sh 12

بعد از اجرا این اطلاعات روی صفحه میاد.

Exporting pin gpio12_pi6

Setting direction to out.

Setting pin high.

می تونید با استفاده از یک LED خروجی را ببینید.

برای خاموش کردن از  اول یک فایل با اسم off.sh بسازید و دستورات زیر را داخلش تایپ کنید و مشابه قبل اجازه اجرا بهش بدهید.

#!/bin/bash

echo Setting pin low.

GPIO=$(basename /sys/class/gpio/gpio$1_*)

echo 0 > /sys/class/gpio/$GPIO/value

echo Unexporting pin $1

echo $1 > /sys/class/gpio/unexport

با دستور زیر پایه 12 را خاموش می کنیم.

./off.sh 12

اگر درست اجرا کرده باشید پیام های زیر نمایش پیدا می کنه.

Setting pin low.

Unexporting pin 12

برای کسانی که می خوان خیلی سریع به جواب برسند فایل های مورد نیاز را می تونند از لینک زیر دانلود کنند.

 gpio-sunxi.rar

در پست های بعدی اسکریپ خواندن از یک پایه را هم روی سایت قرار می دم.

انشالله در اینده نزدیک بتونیم API این درایور را برای یک زبان مثل پایتون یا جاوا بنویسیم و بتونیم بریم سراغ اصل مطلب.

برچسب خورده : , , . Bookmark the پیوند یکتا.

4 Responses to راه اندازی درایور gpio-sunxi

  1. Mahdi Chamani میگوید :

    سلام

    می‌شه مراحل رو برای مارس هم بگید اون اولش گفتین اونایی که مارس دارن از a10_mid_1gb استفاده کنن من متوجه این بخش نشدم

  2. milad_kkt میگوید :

    با سلام
    جناب mahdichi راستش سورس sunxi خیلی پر حجم است من متوجه نشدم که کرنل از خود برد باید کانفیگ شه یا این سورس را میشه توی لینوکس x86 نصب کرد و از اونجا خروجی بگیریم
    در ضمن آیا راهی وجود دارد که بتوانیم بدون دردرسر ساخت ایمیج کرنل کانفیگ کرد یا ماژول و درایور مورد نظر دانلود کرد در ضمن آیا ایمیج های جدید a20 این ماژول gpio به صورت پیش فرض نصب است راستش من در بخش sys/class/gpio دیدم آیا ربطی به این ماژول دارد؟

    • mahdichi میگوید :

      سورس sunxi در واقع برای کامپایل کرنل بکار میره. میتونید اون را دانلود کنید و بعد از کامپایل کانفیگ مورد نظرتون را اعمال کنید.
      اگر ادرس sys/class/gpio وجود داره پس درایور gpio فعاله، یکم سایت را بگردید، آموزش زیاد هست.

دیدگاهتان را بنویسید