اطلاعیه

Collapse
No announcement yet.

سوال در مورد stack pointer در bascom

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : سوال در مورد stack pointer در bascom

    آقا شرمنده من فعلا به کامپیوتر دسترسی ندارم نمیتونم جواب کاملی بدم اما در مورد iar تو تاپیک بررسی appnote اتمل ( سرچش بکنید) توضیح دادم اما winavr رو هنوز مطمئن نیستم انشالله اطلاعاتم کامل شد میام توضیح میدم البته امیدوارم تا اون موقع اساتید مستفیضمون کنند.

    دیدگاه


      #17
      پاسخ : سوال در مورد stack pointer در bascom

      با سلام مجدد
      آقا من یه چیزی در مورد نحوه محاسبه CSTACK و RSTACK با استفاده از فایل MAP تو کامپایلر IAR به نظرم امد گفتم بگم ؛
      خوب اگه تنظیمات لازم رو برای تولید فایل MAP انجام داده باشید بعد از عمل کامپایل و بیلد به همراه فایل هگزه یه فایل دیگه به نام MAP تولید میشه حالا برای اینکه مقدار CSTACK و RSTACK رو از روی اطلاعات این فایل استخراج کنیم میاییم چک میکنم که هر قسمت برنامه به چه مقداری CSTACK و RSTACK نیاز داره (مصرف میکنه ) برای اینکار تو پنجره ای که اون بالا برای سرچ کردن به صورت فیلد هست CSTACK و RSTACK رو مینویسیم و بعد با اینتر کردن هر جا که CSTACK و RSTACK هست ارجاع داده میشید ، خوب به این ترتیب میفهمیم که هر قسمت از برنامه به چه اندازه CSTACK و RSTACK مصرف کرده حالا ماکزیمم مقدار رو پیدا میکنیم و به همون اندازه یا مثلا چند تا بیشتر (به جهت احتیاط) از حافظه SRAM رو به این دو اختصاص میدیم .

      ادامه در پست بعدی ... (موقع ارسال با خطا مجاز نبودن اندازه ارسال مواجه شدم)

      دیدگاه


        #18
        پاسخ : سوال در مورد stack pointer در bascom

        مثلا فایل MAP یه برنامه است :

        remote.map

        خوب من با سرچ کردن CSTACK و RSTACK تو این فهمیدم که حداکثر CSTACK مصرفی برابر هست با : 23 بایت که معادل با 17 هگزه هست (تو تنظیمات باید مقدار CSTACK رو برحسب هگزه قرار بدید) و حداکثر RSTACK مصرفی برابر با :16 بایت که معادل با 10 هگزه هست ، تو تنظیمات ، مقدار RSTACK بر حسب LEVEL تعین میشه طوری که هر LEVEL معادل 2 بایت در نظر گرفته میشه مثلا اینجا باید مقدار RSTACK رو تو تنظیمات حداقل 8 بزاریم.

        این هم در مورد عواقب تعیین نامناسب فضای STACK از زبون داکیومنت IAR :


        Stack size considerations
        The compiler uses the internal data stack, CSTACK, for a variety of user program
        operations, and the required stack size depends heavily on the details of these
        operations. If the given stack size is too large, RAM is wasted. If the given stack size is
        too small, two things can happen, depending on where in memory you located your
        stack. Both alternatives are likely to result in application failure. Either program
        variables will be overwritten, leading to undefined behavior, or the stack will fall outside
        of the memory area, leading to an abnormal termination of your application.

        دیدگاه

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