PDA

View Full Version : کامپایل برنامه توسط خط فرمان



mehran901
جمعه 15 دی 1391, 00:25 صبح
سلام دوستان
کسی میدونه چطوری برنامه های نوشته شده به زبان بسکام رو توسط کامپایلر خط فرمانش میشه کامپایل کرد ؟
و حتی اگه کسی درمورد هر کامپایلر خط فرمان دیگه ای اطلاعات داره که برنامه های میکرو های سری avr رو حداقل کامپایل کنه به هگز ممنون میشم توضیح بدین
ممنون از همگـــــــــــــــی

mehran901
یک شنبه 17 دی 1391, 21:02 عصر
خواهشا یکی کمک کنه

mehran901
چهارشنبه 20 دی 1391, 10:29 صبح
یعنی هیچکس دراین باره هیچی به گوشش نخورده ؟ دم مهندسای اینجا گرم
حالا احیانا اگه کسی میدونه چطوری با خط فرمان داس ی برنامه رو میشه کامپایل و هگز ازش گرفت ، بگه خوشحال میشم

SEZAR.CO
چهارشنبه 20 دی 1391, 17:49 عصر
واقعا خوب منظورتون نفهمیدم
کلید f7 رو بزنید، اگه برنامه تون مشکلی نداشته باشه کد هگزش تولید میشه.
منظورتون همین بود؟

mehran901
پنج شنبه 21 دی 1391, 15:39 عصر
ممنون از شما دوست عزیز جهت همکاری :
ببینید من قصد دارم یک ادیتور کد بنویسم... این ادیتور احتمالا به زبان C#‎ یا vb نوشته میشه و برای کامپایل کدها نیاز به یک کامپایلر دارم که تحت داس این کارو از طریق خط فرمان انجام بده ... ( البته از خود برنامه مثلا بسکام هم میشه با محیط گرافیکیش استفاده کرد ولی کار به شدت ضعیف میشه چون محیط گرافیکی بسکام باید توسط برنامه ادیتور من کنترل بشه ... ) برای این منظور درخواست کردم ببینم از دوستان کسی می تونن با استفاده از یک کامپایلری که ویژوال نیست ( مثل کامند لاین بسکام یا .. ) منو راهنمایی کنن ؟

مثلا فایل Bascomp.exe ، خط فرمان تحت داس برنامه بسکام هست ، که فایل هگز از سورس اصلی رو تولید نمی کنه ( یا من نتونستم .... اگه شما میدونید چطوریه؟ یا روش خاصی داره بهم بگید )


ممنون از شما دوست عزیز.... امیدوارم منظورم رو فهمیده باشین

SEZAR.CO
پنج شنبه 21 دی 1391, 15:49 عصر
من نمی دونم ولی با چند نفر کخ توی این کارها زبده ن مشکلتون در میان گذاشتم
امیدورم هم مشکل شما حل شه

farzadsw
پنج شنبه 21 دی 1391, 23:42 عصر
سلام دوستان
کسی میدونه چطوری برنامه های نوشته شده به زبان بسکام رو توسط کامپایلر خط فرمانش میشه کامپایل کرد ؟
و حتی اگه کسی درمورد هر کامپایلر خط فرمان دیگه ای اطلاعات داره که برنامه های میکرو های سری avr رو حداقل کامپایل کنه به هگز ممنون میشم توضیح بدین
ممنون از همگـــــــــــــــی
فکر کنم خودتون هم می دونید ولی به هر حال، GCC این کاری که شما می خواید رو انجام میده. برای مثال پروژه نسبتا قدیمی winAVR از gcc به همراه ide سفارشی شده notepad++ استفاده می کنه (winAVR رو نصب کنید متوجه منظورم می شید). کلا gcc تحت خط فرمان کار می کنه و انعطاف زیادی هم داره. همین winAVR و gcc رو میشه با ادیتور Eclipse هم استفاده کرد. خود شرکت اتمل هم چند وقتی هست بر اساس IDE ویژوال استدیو و با کامپایلر GCC، محیط توسعه برنامه AVRStudio رو معرفی کرده ( این رو هم امتحان کنید ضرر نداره، البته حجمش زیاده!).

SEZAR.CO
پنج شنبه 21 دی 1391, 23:44 عصر
شما برنامه ي "bascomp.exe" رو که اجرا ميکنيد يک سري ورودي ميخواد من فعلا ميگم با CMD چه جوري اجرا کنيد بعد توي برنامه هم همين طوري ميتونيد برنامه رو کامپايل کنيد
اول توي پوشه برنامه بسکام بريد
براي من اين هست "C:\Program Files (x86)\MCS Electronics\BASCOM-AVR"
بعد برنامه که bascomp باشه رو مينويسيم ادامه اون با يک فاصله آدرس کامل فايل بيسيک رو مينويسيد
مثلا
C:\Users\Behzad\Downloads\Compressed\tes\no.bas
بعد يک فاسله
کد:
ss=xجاي x بايد ميزان حافظه Sram رو مشخص کنيد
بعد يک فاصله
کد:
fr=xکه ميزان framesize هست
بعد يک فاصله
کد:
hw=xحالا x برابر ميزان حافظه سخت افزاري هست hardwarestack
بعد فاصله
کد:
chip=xحالا x بايد عددي متناظر با ميکرو ي شما باشه براي پيدا کردنش اول يک بار برنامه بالا رو بدون هيچ چيزي باز کنيد بهتون يه ليست ميده که ميکرو ي مورد نطر رو انتخاب کنيد براي من اين ليست رو داد
کد:
26=AT90S1200
0=AT90S2313
1=AT90S2323
2=AT90S2333
3=AT90S2343
4=AT90S4414
5=AT90S4433
6=AT90S4434
7=AT90S8515
8=AT90S8535
27=AT86RF401
81=AT90PWM216
80=AT90PWM3
15=ATtiny12
30=ATtiny13
30=ATtiny13A
16=ATtiny15
110=ATtiny167
64=ATtiny20
11=ATtiny22
31=ATtiny2313
31=ATtiny2313A
46=ATtiny24
36=ATtiny25
22=ATtiny26
58=ATtiny261
49=ATtiny4313
44=ATtiny44
35=ATtiny45
56=ATtiny461
91=ATtiny48
45=ATtiny84
38=ATtiny85
57=ATtiny861
90=ATtiny88
10=ATMega103
48=ATMega1280
21=ATMega128
47=ATMega1281
103=ATMEGA1284P
40=AT90CAN128
20=ATMega128
12=ATMEGA161
28=ATmega162
13=ATMEGA163
52=ATMEGA164P
42=ATMega165
34=ATmega168
61=ATmega168P
29=ATmega169
18=ATmega16
77=ATMEGA16U4
43=ATMega2560
41=ATMega2561
14=ATMEGA323
151=ATMEGA324PA
51=ATMEGA324P
105=ATMEGA3250P
100=ATMEGA325
60=ATmega328
60=ATmega328P
50=ATmega329
80=AT90CAN32
23=ATMEGA32
106=ATMEGA32M1
78=ATMEGA32U2
75=ATMEGA32U4
54=ATmega406
32=ATmega48
92=ATmega48P
9=ATmega603
55=ATMega640
37=ATMEGA644
59=ATMEGA644P
102=ATMEGA645
53=ATmega649
19=atmega64
24=ATmega8515
25=ATmega8535
33=ATmega88
62=ATmega88P
17=ATmega8
70=AT90USB1287
74=AT90USB162
71=AT90USB646
76=AT90USB82
200=ATXMega128A1
208=ATXMega128A3
212=ATXMega128D3
202=ATxmega16A4
209=ATxmega16D4
204=ATXMega192A3
213=ATXMega192D3
206=ATXMega256A3B
205=ATXMega256A3
214=ATXMega256D3
203=ATxmega32A4
210=ATxmega16D4
201=ATXMega64A1
207=ATXMega64A3
211=ATXMega64D3بعد اينتر رو بزنيد اگه فايل مشکلي نداشته يه فايل هگز در محل فايل بيسيک ميسازه
حالا شما هم توي برنامه بايد يک فايل بيسيک مثلا توي temp درست بکني و بهش بدي و بعد هم برنامه رو اجرا کني و فايل هگز رو به جايي که ميخواي ببري

mehran901
جمعه 22 دی 1391, 20:30 عصر
دوستان عزیز جدا ممنونم
دوست گرامی FarzadSW ، کم و بیش در جریان GCC بودم و ممنونم جهت یادآوری ( از اونجایی که من بیشتر کاربر Bascom بودم ، برای استفاده از WinAVR مراحل زیاد آموزشی لازم هست ؟ ... چون احساس می کنم شما با win avr کار کردین این سوال رو پرسیدم ... ، من تجربه کار با ایشون ! رو ندارم متاسفانه ممنون میشم راهنماییم کنین )
و اما دوست عزیز SEZAR.CO یعنی من نمی دونم چطوری تشکر کنم از شما .... ای کاش میشد من 50 60 بار این کلید تشکر کردن رو میزدم از خجالب شما 2 دوست عزیز بیرون بیام !
من دقیقا همین کارایی که شما کردین رو انجام دادم .... ولی به یک چیز توجه نمی کردم و اونم اینه که bascomp.exe رو تحت ادمین اجرا نکرده بودم و از اونجایی که فایل سورس داخل مسیری از درایو ویندوز بود که نیاز به دسترسی ادمین داشت ، متاسفانه موقع کامپایل نمی تونست هگز بسازه... و الان این کارو در آدرس دیگه ای تکرار کردم ! فایل هگز با موفقیت ساخته شد!!!! ممنونم

و دوست عزیز درمورد Sram و FrameSIze و HardwareStack اطلاعاتی دارم ولی نه زیاد ... کلا میتونید این مسئله رو بیشتر بسط بدین تا شفاف تر بشه برای همه دوستان ؟

SEZAR.CO
شنبه 23 دی 1391, 21:20 عصر
ببینید شما بیشتر با sram برخورد میکنید در واقع همون رم می باشد
که فقط مربوط به برنامه شما هست یه قسمتی هم از رم مشتق میشه که hardwarestack هست (جمع این دوتا میشه رم - اگه stack و heap نداشته باشیم)
framesize هم اندازه ی صفحات میکرو هستند (برنامه شما در صفحاتی درون میکرو نوشته می شوند)
دو مورد آخری موارد کاربرد زیادی در موارد عادی ندارند شما میتوانید با مراجعه به دیتاشیت میکرو ها این هارو ذخیره کنید framesize هم مقداری ثابت است
البته توی فایل های خود بیسکام برای هر میکرو این مقدار ها نوشته شده اند
که باید ببینید می توانید استخراج کنید یا نه اگر حوصله دیدن دیتاشیت را هم ندارید codevision در قسمت تنظیمات هر پروژه مقدار این ها رو نوشته است و می توانید استفاده کنید
در کل طولانی هست اگر نیاز دارید به طور کامل توضیح دهم
اگه باز مشکلی بود درخدمتم

mehran901
یک شنبه 24 دی 1391, 15:07 عصر
ممنونم از پاسخ جامع شما ،
درصورت امکان آدرس کامل تری از بخش مورد نظر bascom یا codevision که مقدار این موارد رو مشخص می کنه بدین (البته اگه واسه آیسی های مختلف یک مقدار پیشفرض ارائه کرده ! ) ، تشکر ویژه میشه
منظور از رم رو واضح تر بیان می کنید ؟ توسط
و برای هر میکرو این ها مقدار ثابتی هست مگه ؟! برنامه های زیادی دوستان اجرا کردن و بنا به نیازشون از میزان stack کم و زیاد کردن ... چطور میشه که مقدار ثابتی برای میکرو در نظر گرفته شده باشه ؟

تو دیتاشیت تراشه ها من چیزی ندیدم ؟ با همین عنوان مشخص شدن ؟

تشکر

SEZAR.CO
دوشنبه 25 دی 1391, 17:28 عصر
برای اطلاعات کامل برید به دیتاشیت کامل atmega16 صفحه ی 16
به طور کامل تمامی حافظه هارو توضیح داده
-
اما اگر در ابتدای تمامی دیتاشیت هارو نگاه کرده باشید مقدار حافظه ها نوشته شده است


atmega16 datasheet نوشته شده توسط:– 16 Kbytes of In-System Self-programmable Flash program memory
– 512 Bytes EEPROM
– 1 Kbyte Internal SRAMهر میکرو دارای یک SRAM میباشد که به سه قسمت تقسیم شده است که یکی از این قسمت ها INTERNAL SRAM است
و مقدار بالا که 1 کیلو میباشد مربوط به این قسمت است و مقداری ثابت است
اما این حافظه خود به سه قسمت دیگر تقسیم میشود
1- حافظه برای متغییر ها و ...
2- HEAP
3- stack
که زمانی که در برنامه مقدار اسرم را تغییر میدهید در حقیقت مقدار اولی را تغییر می دهید
مورد سوم را مشخص نمی کنند و بقیه حافظه ی تخصیص داده نشده متعلق به آن قسمت است
اما مورد دوم که در برخی برنامه ها که به ان نیاز است تعریف میشود وگرنه در برنامه های ساده هیچ مقداری به آن اختصاص داده نمی شود توجه داشته باشید که اگر مجموع این سه از میزان حافظه (1 کیلو) بیشتر شود داده ها ذخیره نمیشوند و چون معمولا باقی مانده حافظه به استک تعلق میگیرد برنامه نمی تواند پس از بازگشت از توابع ادامه پیدا کند
به عدد های آدرس های هر قسمت این عکس توجه کنید و میزان حافظه را محاسبه کنید
http://s3.picofile.com/file/7619584187/ram.png
http://www.nongnu.org/avr-libc/user-manual/malloc-std.png
این مربوط به میکرویی دیگر است
http://www.hqew.net/files/Images/Article/Circuit_Diagram/Atmega128_external_ram_heap_only-300x155.png

mehran901
دوشنبه 25 دی 1391, 17:46 عصر
عالی :تشویق: