اطلاعیه

Collapse
No announcement yet.

کامپایلر IAR

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

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

    این کامپایلر واقعا نکات زیادی داره
    من میخوام داده ای تو eeprom برزم ولی خطا ی زیر رو میده
    Error[e133]: The output format intel-standard cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted
    هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
    بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
    میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

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

    دیدگاه


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

      با کتابخانه خوده اتمل و با دستورات زیر هم تست کردم
      رایت انجام میشود ولی مشکلی در برنامه پیش میاد
      حالا دقیق نمیدونم حجم برنامه بالا میرود یا چیزه دیگه ای هست(برنامه فعلی با اپتیمایز حجمی داخل میکرو ریخته میشه - فضای کم )

      کد:
      //EEPROM_FlushBuffer();
      //EEPROM_DisableMapping();
      //EEPROM_WriteByte(0,1, 42);
      هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
      بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
      میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

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

      دیدگاه


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

        :nice:
        نوشته اصلی توسط n340
        این کامپایلر واقعا نکات زیادی داره
        من میخوام داده ای تو eeprom برزم ولی خطا ی زیر رو میده
        Error[e133]: The output format intel-standard cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted
        در نسخه Debug اگر مقدار اولیه ای برای برنامه ریزی روی eeprom ایجاد شود و ایجاد فایل hex هم تنظیم شده باشد، این خطا ایجاد می شود. در این شرایط یک روش این است که بجای تولید فایل hex، در AVRStudio تیک مربوط به برنامه ریزی از خروجی پروژه برای flash و eeprom زده شود که در این شرایط هر دو ناحیه به درستی برنامه ریزی خواهند شد. یک روش دیگر فعال کردن نسخه Release است که فایل های flash و eeprom را بصورت مجزا ایجاد می کند. در این رابطه پست زیر را مطالعه کنید:

        http://www.eca.ir/forum2/index.php?t...3795#msg283795

        نوشته اصلی توسط n340
        با کتابخانه خوده اتمل و با دستورات زیر هم تست کردم
        رایت انجام میشود ولی مشکلی در برنامه پیش میاد
        حالا دقیق نمیدونم حجم برنامه بالا میرود یا چیزه دیگه ای هست(برنامه فعلی با اپتیمایز حجمی داخل میکرو ریخته میشه - فضای کم )

        کد:
        //EEPROM_FlushBuffer();
        //EEPROM_DisableMapping();
        //EEPROM_WriteByte(0,1, 42);
        در برخی شماره ها نوشتن روی eeprom در زمان اجرای برنامه موجب هنگ کردن میکروکنترلر می شود که برای رفع این مشکل باید روش خاصی در هنگام نوشتن روی eeprom پیاده شود. بنابراین نوع میکروکنترلر خود را اعلام کنید تا بر اساس آن برای رفع مشکل راهنمایی شود.
        اوژن: به معنای افکننده و شکست دهنده است
        دانایی، توانایی است-Knowledge is POWER
        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

        دیدگاه


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

          با تشکر از جناب طراح
          نوع میکرو از سری A3/D3/256A3B Revision B نیست
          چیپ مورد استفاده من 16A4 است
          در مورد تغییر به relaes فقط در workspase به relaes تغییر داده شود ؟
          در ضمن نیازی به مقدار اولیه های eeprom ندارم
          فقط دسترسی خود برنامه به این حافظه رو نیاز دارم
          هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
          بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
          میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

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

          دیدگاه


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

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

            دیدگاه


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

              با تشکر
              مثله اینکه حجمه برنامه از حجمه چیپم بالا زده و وقتی 16 رو انتخاب میکنم با خطای زیر مواجهم
              کد:
              Error[e16]: Segment NEAR_Z (size: 0x512 align: 0) is too long for segment definition. At least 0x488 more bytes needed. The problem occurred while processing the 
              segment placement command "-Z(DATA)NEAR_I,NEAR_Z,NEAR_N=_..X_SRAM_BASE-_..X_SRAM_END", where at the moment of placement the available 
              memory ranges were "DATA:2776-27ff"
              اما با تغییر به 32 از این خطا رفع می شود و برنامه بی مشکل در چیپ اجرا میشود
              ولی موقعی تغییر متغییر معمولی به __eeprom باز همون خطای در چند پست قبل تکرار می شود (در مد ریلیز)
              هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
              بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
              میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

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

              دیدگاه


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

                ببخشید بنده هم یک سوال در مورد همین خطای پست قبلی داشتم و اون اینه که دلیل به وجود اومدنش چیه؟ مخصوصا برای زمانی که به طور مثال مگا 32 برنامه نویسی میکنم با خطای NEAR_I که فکر کنم مربوط به متغیر های عمومی است مواجه میشم(اینطور که متوجه شدم وکتورها با هم تداخل پیدا میکنند). برای رفع این مشکل باید چه کار کرد؟ ممنون؟
                بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
                موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
                نلسون ماندلا

                دیدگاه


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

                  در مورد خطای فایل hex در مد Release، باید تیک Generate extra output file را بردارید و فایل های hex مربوط به flash و eeprom بصورت خودکار در این مد ساخته می شوند.
                  اما دستور
                  کد:
                  -Z(DATA)NEAR_I,NEAR_Z,NEAR_N=_..X_SRAM_BASE-_..X_SRAM_END

                  به این معنی است که سگمنت های NEAR_I و NEAR_Z و NEAR_N در محدوده sram قرار داده شوند. سگمنت NEAR_Z برای ذخیره سازی متغیرهای Global و static با مقدار صفر در محدوده 64 کیلوبایت SRAM و سگمنت NEAR_I برای همین نوع متغیرها و از نوع غیر صفر مورد استفاده قرار می گیرد. سگمنت NEAR_N هم محل ذخیره سازی این نوع متغیرها و بدون مقدار اولیه است. حال اینکه چرا چنین خطایی ایجاد شده، بدون مراجعه به متن برنامه و نوع و تعداد متغیر ها نمی توانم اظهار نظر کنم. اما به عنوان یک راهنمایی می توانید محتویات فایل map را با تیک زدن تمام گزینه های آن ببینید که در مورد محدوده و موارد استفاده این سگمنت ها در هر مرحله توضیح داده است.
                  اوژن: به معنای افکننده و شکست دهنده است
                  دانایی، توانایی است-Knowledge is POWER
                  برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                  وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                  قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                  اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                  ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                  دیدگاه


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

                    با تشکر از جناب طراح
                    بعد از برداشتن تیک Generate extra output file و کامپایل کردن بی ارور
                    فقط یک فایل در پوشه Release\Exe با پسونده d90 ایجاد شده
                    ولی ساختار فایل ایجاد شده hex نیست
                    و پروگرم کردن بی نتیجه است
                    در ضمن من برروی یک 64a3 تست کردم
                    هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
                    بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
                    میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

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

                    دیدگاه


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

                      نوشته اصلی توسط n340
                      فقط یک فایل در پوشه Release\Exe با پسونده d90 ایجاد شده
                      ولی ساختار فایل ایجاد شده hex نیست
                      شما احتمالا در مسیر Project/Options/Linker/Output در پنجره Format بجای گزینه Other گزینه Debugging information for C-spy را علامت زده اید.
                      اوژن: به معنای افکننده و شکست دهنده است
                      دانایی، توانایی است-Knowledge is POWER
                      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                      دیدگاه


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

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

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

                        دیدگاه


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

                          آقا سلام.
                          یه سوال داشتم ، آیا میشه یه ماتریس بیتی داشته باشیم ؟ مثلا bit test_array[1000] a
                          میخوام واقعا یک بیت جا بگیره.

                          دیدگاه


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

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

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

                            دیدگاه


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

                              نوشته اصلی توسط امیر . م
                              آقا سلام.
                              یه سوال داشتم ، آیا میشه یه ماتریس بیتی داشته باشیم ؟ مثلا bit test_array[1000] a
                              میخوام واقعا یک بیت جا بگیره.
                              سلام
                              فکر نکم bit جزو کلمات کلیدی iar یا کتابخونه های اون باشه

                              توی iar برای تعریف متغیر ها به صورت بیتی باید اول کتابخونه stdbool.h رو اینکلود کنید بعد بریا تعریف مثلا یه متغیر تک بیتی مثل test_array باید این جوری تعریفش کنید .

                              bool test_array[1000]


                              البته میشه رفت داخل فابل هدر stdbool.h و کلمه کلیدی رو تغییر داد این رو ببیند :

                              #define bool _Bool
                              #define true 1
                              #define false 0

                              دیدگاه


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

                                اما با این روش برای متغیر 1 بیت در نظر گرفته نمیشه بلکه 1 بایت جا میگیره.

                                دیدگاه

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