تجربه هایی از یک پروژه – StrongPC

پروژه های فان، که یک دفعه جدی میشن، همیشه هستند. بعضی وقتا ممکنه یک عده دانشجو بشینن دور هم و بگن خب ما میخوایم یک سیستم عامل بنویسیم و … ، نتیجه‌ش بشه سیستم عاملی که همه بهش یه طوری محتاجن! و خب از این دست پروژه ها در هر رشته و گرایشی در دنیا، کم نیستند. حالا من هم از این قاعده مستثناء نبودم در ایجاد این پروژه های فان و خب پروژه هایی هم بودند که جدی شدند و کمک های زیادی هم برای من بودند. یکی از این پروژه ها، پروژه StrongPC هست که البته اوایل به اسم LadyBug ایجاد شده بود.این پروژه خیلی خیلی آکادمیکه و خب، اولین قدم هاش هم کاملا فان برداشته شد. در این پست، تقریبا تجربیات مفید این پروژه رو میگم و همچنین مطرح میکنم که «چرا باید ادامه‌ش بدم».

اولین قدمها

همیشه اولین قدمها مهم ترین قدم ها در شکل گیری یک ایده یا پروژه هستند، چیزایی که باعث میشن شما بیش از پیش علاقمند به تحقیق و توسعه بشید و بیش از پیش؛ کار کنید. اولین قدم های پروژه هم از اینجا زده شد : طراحی یک کامپیوتر ساده. دوست عزیزی، کتابی با عنوان But How Do it know رو بهم داده بود که معماری کامپیوتر رو خیلی ساده توضیح میداد و چیزایی که من از کتاب یاد گرفتم، همه‌ش در این پروژه ساده پیاده شد. یادگیری معماری کامپیوتر با اون کتاب، نه تنها کمک کرد که این پروژه ساخته بشه، بلکه در درسهای مدار منطقی؛ معماری، ریزپردازنده، الکترونیک دیجیتال و حتی زبان ماشین هم کمک بسزایی به من کرد. در سال ۲۰۱۶ بود (طبق چیزی که از وبسایت StrongPC هم بر میاد ، ژوئن ۲۰۱۶) که پروژه StrongPC با اسم LadyBug استارت خورد و خب این اولین دیزاینی هست که برای پروژه انجام شده. و حتی دیزاین رو صفحه اول وبسایت هم قرار دادم :

 

و همونطور که می بینید، یک دیزاین ساده از یک پردازنده RISC هست. این ها اولین قدم ها بودن و خب همیشه خوشحالم که این قدم ها رو برداشتم. اما بعدش چه کردم؟

هدف پروژه

شاید هدفی مثل «تولید کامپیوتر» یا حتی تولید بخشی از اون، اون هم در ایران کمی دور از ذهن باشه. گرچه نشدنی نیست ولی خب کمی دورتر از چیزی هست که الان داریم. شاید خب این که یکی از ایده هایی که هزاران بار پیاده شدند رو برای بار ۱۰۰۱م پیاده کنیم، یک اپ آندروید بزنیم و روز دوم سقوط کنیم و بعد ۴ سال توی لینکدین بنویسیم «دارای سابقه ۶۲ استارتاپ شکست خورده» ، بسیار ساده تر باشه. اما بهرحال عقیده شخصی من اینه که «مطالعات و کارهای آکادمیک» همیشه نیازن. این ها نباشن، اون ها (استارتاپ ها و …) هم نیستند. هدف پروژه هم مطلقا چیزی مثل تولید CPU نیست چون مطمئنا بازار قوی ای مثل اینتل نخواهد داشت. ولی یک «معماری آزاد» میتونه داشته باشه که خب این خودش به خودی خود، قابل قبول و خوبه! و این «معماری آزاد» میتونه بیاد روی FPGA و … اجرا بشه. یه جورایی هدف پروژه این شد که بشه یک مرجع آکادمیک یا بهتر بگم «بستری برای یادگیری».

دستاورد پروژه؟

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

چرا باید ادامه پیدا کنه؟

دلیل ادامه پیدا کردن اینه که هرچی بیشتر برم جلو، بیشتر یاد میگیرم و میتونم بیشتر پیاده سازی کنم؛ به این شکل میشه گفت خیلی از مباحثی که در مهندسی سخت افزار مطرح شده رو به خوبی میتونم پوشش بدم و خب اگر بعدها کسی پرسید «چرا سخت افزار بخونم؟» جواب درستی براش داشته باشم. یا اگر کسی پرسید «سخت افزار چطور ساخته میشه؟» باز هم بتونم جواب درست و درمونی بهش بدم. امیدوارم که این پست، برای شما هم مفید واقع شده باشه!

FacebookTwitterGoogle+Share

پیشنهادهای شما برای پیاده سازی یک ایده سخت افزاری

با سلام. خیلی وقت بود وبلاگ نویسی نکرده بودم و حالا پس از مدتها اومدم که بنویسم! شاید بگید الان که فرجه امتحانات هست و بهتره برم به زندگیم برسم، ولی خب توی همین فرجه هم وقت آزاد فراوان هست.

بگذریم، جادی چند وقت پیش در مورد ایده ای که بشه ازش استارتاپ ساخت صحبت کرد. البته ایده و همچنین پیاده سازی که بعد ها به کار گرفت یا همون استارتاپ بستون، کاملا نرم افزاری و بر پایه وب پیش رفت. حالا چرا من اینجا دارم این مطلب رو مینویسم؟

توی پست های جادی چند مساله جالب به چشم میخوره، اولیش اینه «چی نداریم؟! آیا وسیله ای هست اون کار رو انجام بده؟ اگر نیست، خودم میسازمش». و دومین نکته هم «پیاده سازی ایده و تبدیل کردنش به استارتاپ و حتی تا حدی به پول رسوندنش، اونقدر ها هم که فکر میکنیم سخت نیست». و حتی شاید سومیش این باشه که «معطل نکن، شروع کن به پیاده سازی». خب، حالا بیایم ببینم که من میخوام چی کار کنم؟ جادی به من ایده داد که ایده جمع کنم برای یک محصول سخت افزاری! اما محصولی که بشه به در یک مدت زمان نه چندان کوتاهی پیاده سازیش کرد و بعد ازش به پول رسید (بر خلاف StrongPC که بیشتر فاز تحقیقی داره).

ایده هایی که در ذهن خودم هستن اینان :

  • پیاده سازی یه دستگاه ساده با استفاده از میکروکنترلرهایی که توی بازار موجودند، و روبرو شدن با چالش هایی مثل مطالعه معماری، برنامه نویسی برای ریزپردازنده، طراحی مدارهای واسط و … .
  • پیاده سازی یه دستگاه ساده با استفاده از آردوینو و ماژول هاش
  • پیاده سازی یک دستگاه ساده IoT طور با استفاده از Cubieboard یا رزبری
  • و …

حالا از شماها که این پست رو میخونید، میخوام در این باره کمک بدید. اول این که «دستگاه ساده» چی میتونه باشه (مثلا ساعت؟! تقویم رومیزی؟ سیستم اطفاء حریق و …) و دوم این که با چی و چطوری پیاده سازی بشه. بعد از این که ایده مشخص بشه، مرحله مرحله پیاده سازیش در همین وبلاگ، گزارش میشه.

FacebookTwitterGoogle+Share

دیدار با 8086 + کد روشن و خاموش کردن LED

نرم افزارهای زیادی برای کار با مدارات، تراشه ها و سایر دیوایس های الکترونیکی ساخته شده، ولی دو روزی هست که با Proteus دارم کار میکنم و میتونم بگم در این زمینه، از بهترین هاست. یکی از خوبی هاش داشتن تراشه های متعدد، با قابلیت اجرای برنامست. یکی از معروف ترین ریزپردازنده هایی که در این نرم افزار به کار رفته، پردازنده 8086 از اینتل هست. من این رو با این پردازنده ساختم (البته اصلا و ابدا مطمئن نیستم که مدارم درست باشه! ولی خود برنامه ایرادی ازش نگرفت) :

8086led

 

خب این مدار قراره چه کنه؟! قراره به کمک 8086 و یک مدار مجتمع 8255 ، چند تا LED رو به ترتیب خاموش و روشن کنه. یکی از ویژگی های پرتئوس اینه که تراشه هایی که داخلش هستند، همه برنامه پذیرند. البته شما باید برنامه هاتون رو بنویسید بعد اسمبل (یا کامپایل، بسته به نوع برنامه) کنید و بعد فایل اجراییتون رو به خورد تراشه بدید. بسیار خوب، برنامه ای که برای روشن و خاموش کردن LED نوشتم اینه :

کد   
.MODEL SMALL
.8086
.STACK
.CODE
MOV AL, 80
MOV DX, 0FF36h
OUT DX, AL
BEGIN: MOV AL,00
MOV DX, 0FF30h
OUT DX, AL 
CALL DELAY
MOV AL, 0FFh
OUT DX, AL 
CALL DELAY 
JMP BEGIN 
DELAY: MOV CX, 0FFFFh
P0 : DEC CX 
JNE P0 
RET
.DATA
END

خب، این برنامه رو باید با masm32 اسمبل کنید، که مراحلش به این شکله (مراحل اسمبل و لینک کردن در سیستم عامل ویندوز اینطوره، برای لینوکس هم سعی میکنم راه حلش رو پیدا کنم) :

کد   
ml /c /Zi /Zd LED.asm
link16 /CODEVIEW LED.obj,LED.exe,,, nul.def

دقت کنید که کد ها باید پشت سر هم وارد شن، همچنین ، بعد از این عملیات، چنانچه OpCode ها رو بخواید بخونید، میتونید از فایل LST تولید شده توسط اسمبلرتون استفاده کنید، که من اینجا OpCode رو میذارم (حواستون باشه این فقط برای کد سگمنت هست) :

OpCode

این هم از آپکد های این برنامه.

حواستون باشه مداری که کشیده شده ممکنه درست نباشه، در صورتی که برنامه درست اجرا میشه (برنامه تست شده و از این بابت مطمئنم).

امیدوارم شما هم با 8086 لحظات شادی رو تجربه کنید، درسته که یه پردازشگر قدیمیه، ولی کار باهاش شدیدا فانه!

موفق باشید :)

FacebookTwitterGoogle+Share

نخستین دیدار با تکشاخ کنونیکال

Screenshot from 2014-10-25 22:16:00

خب، نسخه ۱۴.۱۰ از سیستم عامل گنو/لینوکس، توزیع اوبونتو، که توزیع محبوب و مورد  استفاده من هست هم منتشر شد. نام این نسخه Utopic Unicorn یا «تکشاخ اتوپیایی» گذاشته شده. شاید چون قراره که اوبونتو در این نسخش، به اتوپیای خودش برسه، این نام رو براش انتخاب کردن.

در این نسخه، هسته 3.16 مورد استفاده قرار گرفته و طبق معمول، همه قطعات لپتاپ Lenovo G510 من رو شناخت، البته به جز کارت شبکه بی‌سیم که broadcam هست و درایورهای انحصاریش رو از مخازن نصب کردم و کار کرد و الان دارم این مطلب رو برای شما مینویسم. طبق عادت مالوف، در این میان چندین شات قرار میدم :

Screenshot from 2014-10-25 22:14:05

تصویر بالا، اولین سکانسی هست که هر اوبونتو کاری مشاهده میکنه!!! محیط اصلی یونیتی به اضافه والپیپر چند رنگ اوبونتو که تم بنفش داره :)

Screenshot from 2014-10-25 22:14:13خب، این صحنه هم آشناست، Dash که بعد از فشردن کلید سوپر (که روی اکثر کیبرد ها با لوگوی ویندوز مشخص شده) ، باز میشه و میتونید آخرین فایلها و اپلیکیشن های باز شده، موزیک ها، ویدئوها و … رو از این طریق ببینید.

Screenshot from 2014-10-25 22:14:36با این که عمدتا ترجیح میدم از ترمینال برای دانلود و نصب برنامه ها استفاده کنم، اما این هم مرکز نرم افزار محترم، یعنی همون Software Center هست که در تمامی نسخه های اوبونتو عمدتاً با همین شکل و قیافه ظاهر میشه.

Screenshot from 2014-10-25 22:15:18و در آخر، مرورگر فایرفاکس که ذهن زیبا رو باهاش باز کردم. این هم به نوبه خودش جالبه، نه؟! مرورگر فایرفاکس هم در اوبونتو، حق آب و گل داره و از ابتدا باهاش بوده. البته فایرفاکس در توزیع های دیگری هم مرورگر پیشفرض هست، اما اوبونتو و فایرفاکس دو یار دیرینه هستند.

در پایان، باید بگم که این نسخه هم در ابتدای امر بسیار خوب و روان اجرا شده و هیچ مشکلی برای شخص من نداره، فقط باید دوباره طبق معمول برم سراغ اوکی کردن بوت ویندوز ۸.۱ که همراه این سیستم عامل، روی لپتاپ Lenovo G510 من نصب شده. راستی، تا یادم نرفته بگم که با کلید های ترکیبی Super + Space میتونید زبان رو عوض کنید. سعی کردم به Alt + Shift تغییرش بدم، اما نشد.

موفق باشید :)

FacebookTwitterGoogle+Share

کتاب جدید اوبونتو برای تازه واردها

خب، خیلی از خوانندگان این وبلاگ میدونن اوبونتو چیه و چی کار میکنه. اوبونتو در کل سیستم عامل ساده ای هست، ولی همین سادگی باعث میشه که خیلی ویژگی های این سیستم عامل قدرتمند، به چشم نیاد. بچه های وبسایت آزاد راه که یکی از بهترین منابع لینوکسی و در کل اوپن سورس فارسی هم محسوب میشه، کتابی تحت عنوان «اوبونتو برای تازه واردها» منتشر کردند. این کتاب الکترونیکی هست و به صورت PDF قابل دریافت و خواندن هست. همچنین به گفته وبسایت خود کتاب، نسخه ePub هم در حال انتشار هست (یک امتیاز مثبت برای ساسان، نوا و احمد، چرا که ePub به خوبی با اکثر دستگاه های هندست، مثل اکثر گوشی های موبایل و تبلت ها سازگار هست).

خب، من این کتاب رو دانلود کردم و فهرستش رو خوندم، هنوز خودش رو نخوندم (یه بار یه کتاب فروش به من گفت که کتاب خوب از فهرستش مشخص میشه). در این کتاب همه چیز به خوبی آموزش داده شده (با توجه به فهرستش + کتاب اوبونتو ۱۲.۰۴) پس مشکلی برای تازه کار ها نخواهد بود.

برای این که این کتاب رو به اشتراک بگذارید این پست آزاد راه رو میتونید جاهای مختلف به اشتراک بگذارید. البته، این هم وبسایت خود کتاب هست و میتونید کتاب رو دانلود کنید و لینک دانلودش رو هم به بقیه بدید :).

 

FacebookTwitterGoogle+Share