یک کنجکاو!

مختصر نوشت هایی از یک کنجکاو...

درود!

برای صرفه‌جویی در وقت ارزشمندتان و استفادۀ بهتر و بهینه‌تر از مطالب وبلاگ، لطفاً از بخش موضوعات برای دسترسی به موضوع مورد علاقه‌تان استفاده فرمایید.

۲ مطلب در ارديبهشت ۱۳۹۵ ثبت شده است

راه اندازی اولیه پورت سریال RPi در Raspbian

از مجموع پست های بنده در گروه های اجتماعی:

#راه_اندازی_اولیه_سریال_در_rpi

برای rpi، برای مشخص شدن اسم پورت سریال، میشه دستور زیر روی توی ترمینال زد:
dmesg | grep tty
توی خروجی داده شده میبینین نوشته:
console [ttyAMA0] enabled
همونطور که گفتم این باعث میشه محتویات کنسول رو بریزه روی پورت سریال برای دیباگ کردن، چون rpi برخلاف CubieBoard و BeagleBone فقط یک پورت سریال داره، نمیتونیم اسرافش کنیم 😁 و باید غیر فعال بشه.
خب برای اینکار اگر محیط گرافیکی رو دارین، میتونین خیلی راحت در محیط ترمینال بزنید:
sudo raspi-config
و از گزینه های اومده
Advanced Options
رو میزنین، بعد از اون
Serial
بعد لوگین توسط شل رو بزنید
No
OK
و در نهایت
Finish

حالا یه ریست بکنید رسپری رو
(توی ترمینال با دستور sudo reboot میشه اینکارو بکنید)

وقتی سیستم بالا اومد وقتی
dmesg | grep tty
رو بزنید، میبینید دیگه کنسول روی ttyAMA0 نیست.


اگر محیط گرافیکی رو ندارین، خب مشکلی نیس! SSH و ترمینال مثل مرد هستن!
باید محتویات فایل /etc/inittab رو تغییر بدیم
توی ترمینال با استفاده از nano بازش میکنیم:
sudo nano /etc/inittab
، حالا داخل این فایل باید یه خطی به این صورت پیدا کنید:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
و با گذاشتن یه # اول خطش اون رو کامنت کنید.
در نهایت هم ذخیره (Ctrl+O) و خروج (Ctrl+X)

حالا برای اینکه اطلاعات زمان بوت شدن هم نیاد روی سریال باید فایل /boot/cmdline.txt رو هم ویرایش کنیم
دوباره:
sudo nano /boot/cmdline.txt

باید شامل این محتویات باشه:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

هر چیزی که ربطی داشته باشه به پورت سریالمون (ttyAMA0) رو باید پاک کنیم، در نتیجه میشه این:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

و در نهایت ذخیره، خروج و ریبوت!

حالا برای اینکه بخواین پورت یوزارتتون رو تست کنید میتونین از یه (هایپر ترمینال!) استفاده کنیم به نام minicom
پس دوباره میریم سراغ ترمینال عزیز و
sudo apt-get install minicom

بعد از اینکه نصب شد با دستور زیر اون رو باز میکنیم و اتصال رو برقرار میکنیم:
minicom -b 9600 -o -D /dev/ttyAMA0

حالا میتونین دیتا بریزین و بخونین. (با باودریت 9600)

  • ۱ پسندیدم
  • ۰ نظر
    • مصطفی سپهریان
    • سه شنبه ۷ ارديبهشت ۹۵

    معرفی کتابخانه ای برای مد PDU در GSM

    * مطلب زیر را برای پاسخ در یکی از گروه های الکترونیکی تلگرام نوشتم، و در اینجا نیز به اشتراک میگذارم.


    یک برنامه ساده و خوب برای Encode و Decode پیام های #PDU و Text - - - #سیم #Sim

    http://www.masterminds.sk/?p=166

    پ.ن: از توابع و کتابخونه های استاندارد C استفاده شده، روی AVR ممکنه کمی سنگین عمل کنه اما روی میکروهای ARM خیلی خوب و راحت جواب میده. (من با F103RBT6 کار کردم)

    پ.ن2: داخل Keil چون ssize_t (که نسخه علامتدار size_t هست) رو نمیشناسه، من بجای -1 مثلاً 0 رو برگردوندم که بتونم از size_t استفاده کنم. (تابع sms_write)

    پ.ن3: تابع bzero از توابعیه که در کمپایلرهای گنو/لینوکسی موجوده و در Keil نمیشناسه. کار این تابع نوشتن 0 در رشته است. (خالی کردن رشته)؛ بجای اون از تابع memset استفاده کنید به صورت:
    memset(sms,0,sizeof(sms_t));

    پ.ن4: بعضی جاها در کد به اشتباه بجای telnum_length نوشته شده  sender_length که اصن از اعضای ساختار sms_t نیست. این رو هم اصلاح کنید.

    پ.ن5: کتابخونه/کدهای معرفی شده نمونه ی ساده ای هستن که با دقت در اونها و کمی ویرایششون میتونین نسخه های شخصی سازی شده و حرفه ای تری رو بنویسین خودتون.

    پ.ن6: اگه از AVR استفاده می کنید و سرعتش راضیتون نمیکنه، بجای استفاده از این کتابخونه میتونین با شیفت دادن Bit ها و البته قبلش خوندن کامل اصول کاری PDU بنویسین.



  • ۰ پسندیدم
  • ۰ نظر
    • مصطفی سپهریان
    • سه شنبه ۷ ارديبهشت ۹۵