سلام به همه!!! خدا رو شکر که منم بالاخره عقلم اومد سرجاش سفر خودم رو به لینوکس آغاز کردم! :wow: :applause:
الان نسبت به روز اولی که اوبونتو Lucid 10.04 رو نصب کردم کلی تغییر کردم و خیلی چیزا یاد گرفتم و خیلی مطالب مفید هم یاد گرفتم که اگر به همون ویندوز پر از process بیهوده! اکتفا می کردم هیچ وقت این شیرینی ها! نصیبم نمی شد... :nerd: :agree:
بعد از آماده سازی اساسی پارتیشن ها و درایور ها و.... هر چیزی که نیاز بود کم کم دارم میرم تو برنامه نویسی C و برای AVR و تقریبا میشه گفت به طور جدی برنامه نویسی رو الان دارم شروع می کنم.
خوب طبق چیزایی که فهمیدم کامپایلر avr-gcc رو نصب کردم (خود gcc هم که به صورت پیش فرض نصبه) ٬ avrlibc رو به عنوان لایبرری های استاندار کامپایلر avr-gcc نصب کردم٬ GUI های Code::Blocks و Kontroller lab رو نصب کردم و در آخر هم پروگرامرهای Avr-Dude ٬ UISP ٬ و USBProg (که GUI هست) رو نصب کردم.
به عنوان تست٬ از یکی از سایت ها یه برنامه ساده که پین ۱ از پورت B رو چشمک میزنه٬ تو gedit نوشتم ٬ با عنوان main.c و در پوشه test در دسکتاپ ذخیره کردم٬ فایل Makefile هم که از اون سایت گرفته بودم (و تو راهنماش گفته بود در پوشه حاوی فایل main.c خودتون قرار بدید) رو در پوشه test قرار دادم.
توسط دستور cd ~/Desktop/test به دایرکتوری مربوطه رفتم و توسط دستور make all برنامه نوشته شده به زبون c رو کامپایل کردم که ایجاد شدن فایل هایlinker و... همچنین فایل HEX در همون پوشه نتیجه این دستور بود.
خوب تو راهنما نوشته بود که (حالا توسط دستور make program میکروی شما پروگرام می شود) ولی این اتفاق برای من نیفتاد.
این خروجی terminal :
توضیحات : من از یه پروگرامر USBasp سالم که تو ویندوز باهاش پروگرام کردم و ۱۰۰ ٪ سالم هست استفاده می کنم.
تو خطوط آخر دستور program نوشته که نمیتونه پورت رو باز کنه٬ خوب این واضحه چون avrdude روی پورت موازی (lpt1) و برا پروگرامر stk200 تنظیم شده. بنابر این طبق راهنمایی هایی که برای avrdude وجود داره و توسط دستور ?- avrdude بهشون رسیدم سعی کردم مطابق زیر٬ avrdude رو برای USB و پروگرامر USBasp تنظیم کنم:
اما متاسفانه این اتفاق نمی افته و هر دفعه میگه اون یکی رو تنظیم نکردی (یعنی مثلا اگر نوع پروگرامر رو اولا مشخص کنم٬ میگه نوع IC رو انتخاب نکردی. اگر نوع IC رو اول انتخاب کنم٬ میگه نوع پروگرامر رو مشخص نکردی. نوع پورت رو اول مشخص کنم میگه نوع IC رو مشخص نکردی و ...... فیها خالدون!
و اگر هم سعی کنم ۳ تا تنظیم رو با هم طبق دستور بالا ( با تخلص از خروجی terminal هنگام پروگرام!) انجام بدم٬ ترمینال یه خطا میده و میگه : نمیتونم کارخانه سازنده رو جویا بشم. یعنی دقیقا این:
البته این توضیح رو بدم که سیستم پروگرامر منو شناخته و خروجی دستور lsusb گواه بر این موضوع:
که همون طور که در خط چهارم مشخصه سیستم این پروگرامر رو شناخته.
نرم افزارهای GUI هم دقیقا همین Error رو میدن.
-----------------------------------------------------------------------------------------------------------------------------------
خوب٬ حالا به نظر شما مشکل از کجاست؟ و در نهایت چجوری می تونم پروگرام رو انجام بدم؟
( البته من کلا تو برنامه نویسی به زبون C در داخل لینوکس یه سری سوالاتی دارم من جمله اینکه چرا دستور delay تو لینوکس فرق میکنه و یه Underline بهش اضافه میشهُ آیا امثال این بازم هست؟ اسم فایل های Header در Avr-Gcc مشابه با فایل های Header در ویندوز چیه؟ او اینکه کل فایل های هدر برای AVR در این ادرس هستند؟ : usr/lib/avr/include و ....)) که اگر یه توضیح کلی و جامع هم در این موارد بدین ممنون میشم
> من پوشه test رو که حاوی فایل main.c و Makefile و فایل هایی که بعد از کامپایل ایجاد شدند هستش رو به صورت zip براتون اینجا پ کردم:
http://engineer2012.persiangig.com/test.zip
ممنون از کمکتون
الان نسبت به روز اولی که اوبونتو Lucid 10.04 رو نصب کردم کلی تغییر کردم و خیلی چیزا یاد گرفتم و خیلی مطالب مفید هم یاد گرفتم که اگر به همون ویندوز پر از process بیهوده! اکتفا می کردم هیچ وقت این شیرینی ها! نصیبم نمی شد... :nerd: :agree:
بعد از آماده سازی اساسی پارتیشن ها و درایور ها و.... هر چیزی که نیاز بود کم کم دارم میرم تو برنامه نویسی C و برای AVR و تقریبا میشه گفت به طور جدی برنامه نویسی رو الان دارم شروع می کنم.
خوب طبق چیزایی که فهمیدم کامپایلر avr-gcc رو نصب کردم (خود gcc هم که به صورت پیش فرض نصبه) ٬ avrlibc رو به عنوان لایبرری های استاندار کامپایلر avr-gcc نصب کردم٬ GUI های Code::Blocks و Kontroller lab رو نصب کردم و در آخر هم پروگرامرهای Avr-Dude ٬ UISP ٬ و USBProg (که GUI هست) رو نصب کردم.
به عنوان تست٬ از یکی از سایت ها یه برنامه ساده که پین ۱ از پورت B رو چشمک میزنه٬ تو gedit نوشتم ٬ با عنوان main.c و در پوشه test در دسکتاپ ذخیره کردم٬ فایل Makefile هم که از اون سایت گرفته بودم (و تو راهنماش گفته بود در پوشه حاوی فایل main.c خودتون قرار بدید) رو در پوشه test قرار دادم.
توسط دستور cd ~/Desktop/test به دایرکتوری مربوطه رفتم و توسط دستور make all برنامه نوشته شده به زبون c رو کامپایل کردم که ایجاد شدن فایل هایlinker و... همچنین فایل HEX در همون پوشه نتیجه این دستور بود.
خوب تو راهنما نوشته بود که (حالا توسط دستور make program میکروی شما پروگرام می شود) ولی این اتفاق برای من نیفتاد.
این خروجی terminal :
کد:
mohammad@mohammad-laptop:~$ cd ~/Desktop/test mohammad@mohammad-laptop:~/Desktop/test$ make -------- begin -------- avr-gcc (GCC) 4.3.4 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Size before: avr-size: invalid argument to --format: avr Usage: avr-size [option(s)] [file(s)] Displays the sizes of sections inside binary files If no input file(s) are specified, a.out is assumed The options are: -A|-B --format={sysv|berkeley} Select output style (default is berkeley) -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex -t --totals Display the total sizes (Berkeley only) --common Display total size for *COM* syms --target=<bfdname> Set the binary file format @<file> Read options from <file> -h --help Display this information -v --version Display the program's version avr-size: supported targets: elf32-avr elf32-little elf32-big srec symbolsrec verilog tekhex binary ihex Size after: avr-size: invalid argument to --format: avr Usage: avr-size [option(s)] [file(s)] Displays the sizes of sections inside binary files If no input file(s) are specified, a.out is assumed The options are: -A|-B --format={sysv|berkeley} Select output style (default is berkeley) -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex -t --totals Display the total sizes (Berkeley only) --common Display total size for *COM* syms --target=<bfdname> Set the binary file format @<file> Read options from <file> -h --help Display this information -v --version Display the program's version avr-size: supported targets: elf32-avr elf32-little elf32-big srec symbolsrec verilog tekhex binary ihex -------- end -------- mohammad@mohammad-laptop:~/Desktop/test$ make program avrdude -p atmega16 -P lpt1 -c stk200 -U flash:w:main.hex avrdude: can't open device "lpt1": No such file or directory avrdude: failed to open parallel port "lpt1" make: *** [program] Error 1 mohammad@mohammad-laptop:~/Desktop/test$
توضیحات : من از یه پروگرامر USBasp سالم که تو ویندوز باهاش پروگرام کردم و ۱۰۰ ٪ سالم هست استفاده می کنم.
تو خطوط آخر دستور program نوشته که نمیتونه پورت رو باز کنه٬ خوب این واضحه چون avrdude روی پورت موازی (lpt1) و برا پروگرامر stk200 تنظیم شده. بنابر این طبق راهنمایی هایی که برای avrdude وجود داره و توسط دستور ?- avrdude بهشون رسیدم سعی کردم مطابق زیر٬ avrdude رو برای USB و پروگرامر USBasp تنظیم کنم:
کد:
avrdude -p atmega16 -P USB -c USBasp
اما متاسفانه این اتفاق نمی افته و هر دفعه میگه اون یکی رو تنظیم نکردی (یعنی مثلا اگر نوع پروگرامر رو اولا مشخص کنم٬ میگه نوع IC رو انتخاب نکردی. اگر نوع IC رو اول انتخاب کنم٬ میگه نوع پروگرامر رو مشخص نکردی. نوع پورت رو اول مشخص کنم میگه نوع IC رو مشخص نکردی و ...... فیها خالدون!
و اگر هم سعی کنم ۳ تا تنظیم رو با هم طبق دستور بالا ( با تخلص از خروجی terminal هنگام پروگرام!) انجام بدم٬ ترمینال یه خطا میده و میگه : نمیتونم کارخانه سازنده رو جویا بشم. یعنی دقیقا این:
کد:
mohammad@mohammad-laptop:~$ avrdude -p atmega16 -P USB -c USBasp avrdude: Warning: cannot query manufacturer for device: error sending control message: Operation not permitted avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc mohammad@mohammad-laptop:~$ ^C mohammad@mohammad-laptop:~$
البته این توضیح رو بدم که سیستم پروگرامر منو شناخته و خروجی دستور lsusb گواه بر این موضوع:
کد:
mohammad@mohammad-laptop:~$ lsusb Bus 008 Device 002: ID 147e:1000 Upek Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 010: ID 16c0:05dc VOTI USBasp AVR Programmer Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 002: ID 0c45:63e0 Microdia Sonix Integrated Webcam Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub mohammad@mohammad-laptop:~$
که همون طور که در خط چهارم مشخصه سیستم این پروگرامر رو شناخته.
نرم افزارهای GUI هم دقیقا همین Error رو میدن.
-----------------------------------------------------------------------------------------------------------------------------------
خوب٬ حالا به نظر شما مشکل از کجاست؟ و در نهایت چجوری می تونم پروگرام رو انجام بدم؟
( البته من کلا تو برنامه نویسی به زبون C در داخل لینوکس یه سری سوالاتی دارم من جمله اینکه چرا دستور delay تو لینوکس فرق میکنه و یه Underline بهش اضافه میشهُ آیا امثال این بازم هست؟ اسم فایل های Header در Avr-Gcc مشابه با فایل های Header در ویندوز چیه؟ او اینکه کل فایل های هدر برای AVR در این ادرس هستند؟ : usr/lib/avr/include و ....)) که اگر یه توضیح کلی و جامع هم در این موارد بدین ممنون میشم
> من پوشه test رو که حاوی فایل main.c و Makefile و فایل هایی که بعد از کامپایل ایجاد شدند هستش رو به صورت zip براتون اینجا پ کردم:
http://engineer2012.persiangig.com/test.zip
ممنون از کمکتون

دیدگاه