اطلاعیه

Collapse
No announcement yet.

کامپایلر IAR

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : کامپایلر IAR

    من میخوام بدونم اون تنظیماتی که جتاب کی نژاد فرمودند برای تولید این فایل MAP باید انجام بشه چیه ؟

    دیدگاه


      پاسخ : کامپایلر IAR

      نوشته اصلی توسط طراح
      شما نام پایه ها را در یک فایل header بر حسب سخت افزار define می کنید و در توابع هم از نام های تعریف شده استفاده می کنید که در صورت تغییر سخت افزار، تنها همان تعریف اولیه تغییر خواهد کرد و متن توابع به قوت خود باقی خواهد ماند. اگر منظور دیگری دارید بصورت مشخص تر و با ذکر مثال سوال کنید. اگر منظور از نوشتن header روش نوشتن فایل های با پسوند h باشد که در این فایل ها در ابتدا محافظ فایل و سپس include های لازم و define ها و prototype توابع نوشته می شود و متن توابع و تعریف متغیرها در فایل همنام و با پسوند c قرار داده می شود.

      در مورد 3 فایل با پسوند hex که در وضعیت release ایجاد می شود، یک فایل با نام ساده برای برنامه ریزی در flash و فایل با پسوند eeprom_ برای برنامه ریزی در eeprom تولید می شود. اما یک فایل سوم با پسوند data_ هم وجود دارد که مطابق توضیحات نه چندان واضح iar برای شرایطی تولید می شود که بخشی از فضای حافظه ram در اختیار یک حافظه غیر فرار قرار داده شود. شرایطی که برای تحقق چنین وضعیتی در خانواده avr قابل تصور است در زمانی است که در شماره هایی مانند mega128، در فضای ram خارجی مثلا یک eprom قرار داده شود و اطلاعات در زمان مقتضی از روی آن خوانده شود. به همین دلیل ظاهرا یک کپی از محتویات مقادیر اولیه فضای data در فایل جداگانه ای ذخیره می شود تا در صورت تحقق چنین شرایطی از آن برای برنامه ریزی اولیه استفاده شود.
      اینکه بتونم یک تابع داشته باشم که این تنظیمات رو انجام بده میشه؟
      +
      برای تبدیل عدد به رشته اسکی چه تابعی رو باید به کار برد؟

      دیدگاه


        پاسخ : کامپایلر IAR

        خوب آقا فهمیدم :

        دیدگاه


          پاسخ : کامپایلر IAR

          اگه میشه یک خورده در مورد XLINK , XLINK Commands توضیح بدید و اینکه اصلا چقدر لازم هست که با این کامند ها آشنا بود و اینکه نمیشه بجای نوشتن این کامند ها تنظیمات نرم افزاری انجام داد
          ممنون

          دیدگاه


            پاسخ : کامپایلر IAR

            نوشته اصلی توسط شهریار رجب زاده
            اینکه بتونم یک تابع داشته باشم که این تنظیمات رو انجام بده میشه؟
            برای بیان منظور خود یک مثال بزنید.

            نوشته اصلی توسط شهریار رجب زاده
            برای تبدیل عدد به رشته اسکی چه تابعی رو باید به کار برد؟
            پست شماره 74 در همین تاپیک را ببینید.

            نوشته اصلی توسط mojtaba_led
            و اینکه اصلا چقدر لازم هست که با این کامند ها آشنا بود
            در اکثر مواقع نیازی به دستورات linker بصورت مستقیم وجود ندارد و با انجام تنظیمات درست عمل کامپایل و لینک به درستی انجام می شود.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


              پاسخ : کامپایلر IAR

              هست نمیشه تنظیمات رو جوری انجام داد تا کامپایلر این ستون REF BY رو در فایل MAP پر کنه ؟


              Absolute parts
              ENTRY ADDRESS REF BY
              ===== ======= ======
              _..X_RSTACK_END 0000045F
              _..X_RSTACK_BASE 00000060
              _..X_CSTACK_END 0000045F
              _..X_CSTACK_BASE 00000060
              _..X_FLASH_BASE 00000054
              _..X_RSTACK_SIZE 00000020
              _..X_CSTACK_SIZE 00000020
              _..X_HUGE_HEAP_SIZE 00000000


              الان که به این سوالم نگاه میکنم میبنم اصلا ایده که برای پرسیدن این سوال توی ذهنم ایجاد شده بود به پاسخ دلخواهش نمیرسه چون فکر کنم REF مخفف REFERENCE هست نه PREFER oo:

              دیدگاه


                پاسخ : کامپایلر IAR

                نوشته اصلی توسط طراح
                برای بیان منظور خود یک مثال بزنید.
                ببینید مثلا یک تابع داشته باشم که دو تا ورودی داشته باشه و بیاد و پورت های دیتا و کنترل رو با مقدار دهی به تابع معین کنه
                نوشته اصلی توسط طراح
                پست شماره 74 در همین تاپیک را ببینید.
                دیده بودم ولی مشکل اینجاست که امتحان کردم ولی چرت و پرت روی lcd میاد بعد از یه مدت کوتاه
                در مورد چیز هایی که داخل " " در این تابع قرار میگیره لطفا بیشتر توضیح بدید ممنون

                دیدگاه


                  پاسخ : کامپایلر IAR

                  ببینید مثلا یک تابع داشته باشم که دو تا ورودی داشته باشه و بیاد و پورت های دیتا و کنترل رو با مقدار دهی به تابع معین کنه
                  در این مورد یه فایل تو وبلاگم هست به نام (دانلود اموزش مقدماتی برنامه نویسی به زبان c برای AVR) در مورد تابع نویسی هم گفته شاید به دردتون خورد،در ضمن فکر میکنم تو سورس های گذاشته شده برای lcd مثالش باشه.
                  دکتر شریعتی:

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

                  دیدگاه


                    پاسخ : کامپایلر IAR

                    نوشته اصلی توسط mojtaba_led
                    هست نمیشه تنظیمات رو جوری انجام داد تا کامپایلر این ستون REF BY رو در فایل MAP پر کنه ؟


                    Absolute parts
                    ENTRY ADDRESS REF BY
                    ===== ======= ======
                    _..X_RSTACK_END 0000045F
                    _..X_RSTACK_BASE 00000060
                    _..X_CSTACK_END 0000045F
                    _..X_CSTACK_BASE 00000060
                    _..X_FLASH_BASE 00000054
                    _..X_RSTACK_SIZE 00000020
                    _..X_CSTACK_SIZE 00000020
                    _..X_HUGE_HEAP_SIZE 00000000


                    الان که به این سوالم نگاه میکنم میبنم اصلا ایده که برای پرسیدن این سوال توی ذهنم ایجاد شده بود به پاسخ دلخواهش نمیرسه چون فکر کنم REF مخفف REFERENCE هست نه PREFER oo:
                    دوستان من برداشتم از نحوه محاسبه مقدار RSTACK , CSTACK از طریق فایل MAP استفاده از مقادیر زیر به عنوان حداقل سایز این دو ناحیه هست درسته ؟( این مسئله رو من توی چد تا برنامه اخیر که با این کامپایلر نوشتم تست کردم اما بعضی اوقات قاطی میکرد )


                    | Stack used : 00000012 00000010



                    دیدگاه


                      پاسخ : کامپایلر IAR

                      سلام من یه مشکلی با تابع sprintf دارم
                      میخوام یک متغیر unsigned int رو بریزم توی رشته ولی نمیدونم چجوری
                      برای انواع دیگر متغیر ها و نوع unsigned اون ها هم نمیدونم باید چی کار کنم

                      دیدگاه


                        پاسخ : کامپایلر IAR

                        نوشته اصلی توسط شهریار رجب زاده
                        سلام من یه مشکلی با تابع sprintf دارم
                        میخوام یک متغیر unsigned int رو بریزم توی رشته ولی نمیدونم چجوری
                        برای انواع دیگر متغیر ها و نوع unsigned اون ها هم نمیدونم باید چی کار کنم
                        سلام آقا شهریار
                        برای ارسال مقادیر عددی و کاراکتر ها میتونید اونها را با استفاده از دستور sprintf به رشته و سپس ارسال کنید :


                        char str [];
                        sprintf(str,"%width.precisionمقدار عددی یا تک کاراکتر یا یک عبارت رشته ای ",کاراکتر)


                        1. برای تک کاراکتر - - - > کاراکتر = c
                        2. برای عدد صحیح علامت دار - - - > کاراکتر = d
                        3. برای نمایش عدد ممیز شناور به صورت علمی - - - > کاراکتر = e
                        4 . برای عدد اعشاری - - - > کاراکتر = f
                        5. برای عبارت رشته ای واقع در sram - - - > کاراکتر = s
                        6. برای عدد صحیح بدون علامت - - - > کاراکتر = u
                        7. برای فرم هگزه با حروف بزرگ - - - > کاراکتر = X
                        8. برای فرم هگزه با حروف کوچک - - - > کاراکتر = x
                        9. برای عبارت رشته ای واقع در حافظه flash - - - > کاراکتر = P
                        10. برای نمایش علامت - - - > کاراکتر = %

                        دیدگاه


                          پاسخ : کامپایلر IAR

                          نوشته اصلی توسط mojtaba_led
                          سلام آقا شهریار
                          برای ارسال مقادیر عددی و کاراکتر ها میتونید اونها را با استفاده از دستور sprintf به رشته و سپس ارسال کنید :


                          char str [];
                          sprintf(str,"%width.precisionمقدار عددی یا تک کاراکتر یا یک عبارت رشته ای ",کاراکتر)


                          1. برای تک کاراکتر - - - > کاراکتر = c
                          2. برای عدد صحیح علامت دار - - - > کاراکتر = d
                          3. برای نمایش عدد ممیز شناور به صورت علمی - - - > کاراکتر = e
                          4 . برای عدد اعشاری - - - > کاراکتر = f
                          5. برای عبارت رشته ای واقع در sram - - - > کاراکتر = s
                          6. برای عدد صحیح بدون علامت - - - > کاراکتر = u
                          7. برای فرم هگزه با حروف بزرگ - - - > کاراکتر = X
                          8. برای فرم هگزه با حروف کوچک - - - > کاراکتر = x
                          9. برای عبارت رشته ای واقع در حافظه flash - - - > کاراکتر = P
                          10. برای نمایش علامت - - - > کاراکتر = %
                          خوب من برنامم اینه که مقدار یک متغیر unsigned int دقیقا روی lcd نشون داده بشه از کدوم حرف استفاده کنم "%o" رو هم استفاده کردم چرت و پرت نشون میده اما اول کار درسته CSTACK روی 0xff گذاشتم پایین تر میکرو مدام ریست میکنه
                          بنظرتون چی کار کنم؟

                          دیدگاه


                            پاسخ : کامپایلر IAR

                            نوشته اصلی توسط شهریار رجب زاده
                            خوب من برنامم اینه که مقدار یک متغیر unsigned int دقیقا روی lcd نشون داده بشه از کدوم حرف استفاده کنم "%o" رو هم استفاده کردم چرت و پرت نشون میده اما اول کار درسته CSTACK روی 0xff گذاشتم پایین تر میکرو مدام ریست میکنه
                            بنظرتون چی کار کنم؟
                            از حرف u

                            مقدار cstack و rstack رو با توجه به فایل map تنظیم کنید

                            دیدگاه


                              پاسخ : کامپایلر IAR

                              استفاده از sprintf توی این کامپایلر اصلا مغرون به صرفه نیست
                              حجم زیادی از فلش رو پر میکنه
                              سوال:برنامه نوشته شده که حجم فایل تولیدی بیشتر از 32 کیلو بایت هست
                              ایا خود iar نسبت به افزایش حجم خطا یا گزارشی نمیده
                              هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
                              بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
                              میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

                              تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

                              دیدگاه


                                پاسخ : کامپایلر IAR

                                نوشته اصلی توسط mojtaba_led
                                از حرف u

                                مقدار cstack و rstack رو با توجه به فایل map تنظیم کنید
                                حالا یه مشکل دیگه هست وقتی lcd رو توی while که گاهی وقت ها به وجود میاد پاک میکنم lcd چرت و پرت نشون میده ولی بیرون while درسته oo:

                                دیدگاه

                                لطفا صبر کنید...
                                X