اطلاعیه

Collapse
No announcement yet.

معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

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

    معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

    با سلام

    در یک برنامه با کلی تابع شرطی if و داده هایی که روی sram ذخیره میشن ..................... ولی بعضی از متغییر ها مقدارشون عوض نمیشه یا گم میشه oo: oo:

    حالا میخام دقیقا بدوم که معنی واضع و دقیق اینا چی هستش
    $ swstack = 128 $hwstack = 128 $framesize = 1024

    اصلا فریم سایز که 1024 شده این 1024 چی هستش ؟؟؟

    استک سخت افزاری و نرم افزاری یعنی چی ؟؟؟

    ممنونم
    مهم نيست كه چه انديشه اي در سر و چه ترسي در دل داريد؛ مهم آن است كه بيكار ننشينيد و دست به كاري بزنيد و وارد ميدان عمل بشويد.

    نمي توانيد به كودكي بياموزيد كه از خود مواظبت كند، مگر آنكه او را آزاد بگذاريد تا براي مواظبت از خود بكوشد؛ ممكن است اشتباه كند، ولي دانايي او از ميان همين اشتباهات سرچشمه مي گيرد.

    #2
    پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

    سلام
    اقا اساتید منم همین سوالات رو دارم کسی هست که بتونه مفصل توضیج بده حداقل یه لینکی چیزی رو مغرفی کنین

    دیدگاه


      #3
      پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

      هلپ بیسکام کامل گفته
      صدایی از قلب آذربایجان

      Ya$a odlar yurdum AZERBAICANIM

      دیدگاه


        #4
        پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

        جسارتا این موارد بارها در فروم توضیح داده شده ولی خوب من هم اغلب عادت دارم اول کاری رو میکنم و بعد تازه یادم میاد که: اهه! اینجوری هم میشد ها! بگذریم.
        شاید مشکل از اینه که این فروم یک متولی اختصاصی مطالب نداره که مطالب رو از فروم دربیاره مرتب کنه و طبق بندی. (لااقل من فرومی ندیدم که اینجوری باشه.) از این هم بگذریم.

        برای شروع یه برنامه رو در نظر بگیرین. این برنامه از sram برای سه مورد منطقی ممکنه استفاده کنه. اول داده های عمومی که در زمان کامپایل در نظر گرفته میشه که در یک آدرس مشخص از حافظه قرار بگیرن. دوم heap که معمولا در کار با میکرو باهاش کاری نداریم. و سوم stack که برای نگهداری موقت داده ها استفاده میشه. این داده ها که در stack یا همون پشته گذاشته میشن و برداشته میشن میتونه آدرس برگشت از یک روال باشه. میتونه متغیر های محلی داخل روال باشه. میتونه پارامتر هایی باشه که به یک روال پاس میشن. و یا حتی محلی برای ذخیره موقت نتایج واسط در هنگام انجام یک محاسبه پیچیده باشه.

        اغلب این اطلاعات رو میشه در محلی غیر از پشته هم ذخیره کرد چرا؟ چون برای ذخیره یا بازیابی این تیپ اطلاعات از طریق اجرای دستورات دسترسی مستقیم یا غیر مستقیم به حافظه عملیات انجام میشه. جز یک مورد که اونهم موردی هست که به ازای دستور call آدرس برگشت در پشته قرار میگیره. مشابه این مورد موقعی هست که وقفه ای فعال میشه و کنترل اجرای برنامه به یک روال وقفه میره.

        در بعضی از طرح ها ممکنه مواردی پیش بیاد که شما حجم زیادی از حافظه رو بخوایین به پشته اختصاص بدین. در این صورت ممکنه میزان حافظه داخلی کم باشه و شما باید از رم خارجی استفاده کنین. اما یک مورد مهمی وجود داره. و اونم اینه:

        در طراحی اولیه avr ها باگی وجود داره که اگه آدرس پشته در رم خارجی واقع بشه و وقفه ای پیش بیاد؛ سیستم نمیتونه در هنگام برگشت از روال وقفه آدرس برگشت رو تشخیص بده و میکرو سرش به ناکجا آباد ختم میشه.
        برای رفع این مشکل بعضی از کامپایلر ها مثل bascom یا کد ویژن میان و پشته رو دو تیکه میکنن. یک قسمت برای ذخیره و بازیابی آدرس های برگشت و یک سری موارد کوچیک در پشته هست که باید الزاما داخل رم داخلی قرار بگیره که بهش میگیم "پشته سخت افزاری" یا hwstack و یک پشته دیگه که بقیه اطلاعاتی رو که قبلا گفتم داخلش میذارن و برمیدارن که بهش میگن "پشته نرم افزاری" یا sw stack.

        در این کامپایلر ها این وظیفه برنامه نویس هست که بسته به ساختار برنامه و میزان درگیری برنامه با هر کدوم از این پشته ها حجم تقریبی مورد نیاز برنامه رو با استفاده از این دستورات مشخص کنه.

        اون مورد سومی هم تا بحال نه اسمشو شنیدم و نه میشناسمش.

        دیدگاه


          #5
          پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

          اقا ممنون از لطفتون خیلی خیلی خوب بود
          فقط یه موضوع دیگه میتونین یه توضیج دیگه هم بدین که این اندازه ها رو ما بر چه اساسی میتونیم انتخاب کنیم ؟
          میبخشین اگه این سوالاتم در سطح مبتدی هست
          اما سواله دیگه :biggrin: :biggrin:

          دیدگاه


            #6
            پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

            ولله بهترین چیزی که اینجا میشه گفت اینه: سعی و خطا!
            چون متاسفانه برای چیزی مثل پشته سخت افزاری فقط تعداد وقفه های تودرتو و یک مقدار اضافه برای کد هایی که بجای استفاده از پشته نرم افزاری از دستورات push و pop استفاده میکنن در نظر بگیرین ممکنه کفایت کنه. اما حجم پشته نرم افزاری به خیلی چیزا ممکنه بستگی پیدا کنه. مثلا استفاده از روال های خود بازگشتی (نمیدونم ترجمه خوبی برای recursive هست یا نه). فرم تولید کد توسط کامپایلر برای پاس کردن پارامتر ها به یک روال. نحوه تولید کد که ممکنه میزان حجم حافظه محلی را کم و زیاد کنه و غیره.
            با این اوصاف شاید تعیین دقیق این مورد swstack نشدنی باشه و تعیین حدودی اش مشکل. پس برمیگردیم به همون مورد: سعی و خطا.

            دیدگاه


              #7
              پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

              ممنون اقا رضا خیلی خیلی لطف کردی ان شا ال... بتونیم در حد توانیمون جبران کنیم
              اقا رضا تا حالا با بهم ریختن eeprom داخلی avrهم مواجه شدی ؟

              دیدگاه


                #8
                پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

                بچه ها این یه چیز سخت افزاری هست و در تمامی میکرو کنترلر ها یکی هستش
                یعنی بستگی به کامپایلر نداره
                توی کتاب های میکر و کنترلر توضیح داده زیادم ارش نداره
                زیاد بودنش باعث پر شدن اس رم میکرو و
                کم بودنش باعث هنگ کردن میکرو میشه
                [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                دیدگاه


                  #9
                  پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

                  آقا حسام! نه؟ نمیفهمم منظورتون چیه!

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

                  دیدگاه


                    #10
                    پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

                    سلام اقا رضا حوبی
                    من با atmega 128 کار میکنم و از eeprom داخلی تو بعضی از پروژها نمی دونم به چه دلیل متغییر های که داخل eepromتعریف کردم و بهشون مقدار اولیه دادم بهم مریزه و مقدارهاشون تغییر میکنه و تمام سیستم مشکل دار میشه
                    فیوز بیت مربوطه مربوط به سطح ولتاژ برای ریست رو هم فعال کردم و روی 4 تنطیم هست نمی دونم دلیل این کار چیه می خواستم بدونم اگه تجربه ای تو این زمینه دارینلطف کنین و در خدمت ما هم بذارین

                    دیدگاه


                      #11
                      پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

                      ولله من تا بحال مشکلی با ایپرام نداشتم. حتی برای حالاتی که بر اساس باتری باید کار بشه. بنا براین وقتی میگین تجربه؛ باید بگم متاسفانه صفر هست. چون تا بحال باهاش دعوا و درگیری نداشتم.

                      دیدگاه


                        #12
                        پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

                        مشکل EEPROM در اینجاست که باید در فانکشنهایی که برای Read و Write نوشتید Global Interrupt Enable رو باید غیر فعال کنید تا در زمان نوشتن و یا خوندن اون Interrupt ی اتفاق نیفته، باید با استفاده از تکنیک Polling در زمان نوشتن و خواندن صبر کنید تا عملیات کامل انجام بشه و بعد از فانکشن Read یا Write خارج بشید، در ضمن Brown Out Detection رو هم رو ولتاژ مورد نظر تنظیم کنید تا ببینید در زمان Write که مصرفش بیشتر میشه، افت ولتاژ نداشته باشید که ظاهرا این کار رو قبلا انجام دادید.

                        موفق باشید.
                        اسمایل، تومورو ویل بی وُرس

                        دیدگاه


                          #13
                          پاسخ : معن

                          سلام من با این مشکل روبرو شدم.علتش نوشتن بیش از حد در ایپیرام بود. :mrgreen: من در برنامم دستوری داشتم که هر ثانیه یبار تو ایپیرام داده مینوشت و بعد از 10هزاربار که روش نوشتم دیگه خراب شد و اطلاعات رو نگه نداشت. :angry: برای چک کردنش میتونید بوسیله بسکام ایپیرامتون رو کامل پاک کنید و بعد اونو دوباره بخونید .اگه سالم باشه باید همه خونه های حافظش FF شده باشه.
                          وقتي همه نيروهاي جسمي و ذهني متمرکز شوند توانايي فرد براي حل مشکلات به طور حيرت انگيزي چند برابر مي شود .
                          نرمن وينسنت پيل

                          دیدگاه


                            #14
                            پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

                            ببین اقا رضا
                            من میگم تو میکرو کنترلر های هر کتابی بگردی این ها رو توضیح داده
                            اگر معماری میکرو توش باشه پس اینا هم هست
                            خط لوله معماری cpu توی طبقه بندی قسمت های ادرس دهی حافظه این هارو توضیح داده
                            بازم اگه قبول ندارین یه عکس از اون صفحه براتون میزارم
                            چون خیلی وقت پیش این درس رو خوندم دقیقا نمیدونم اسم کتاب چیه ولی تو همه کتاب های میکرو که از اول شروع کردن هستش :read:
                            [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                            دیدگاه


                              #15
                              پاسخ : معنی دقیق $ swstack = 128 $hwstack = 128 $framesize = 1024چیه ؟

                              ببین آقا حامد رحیمی گل.
                              من و شما که دعوا نداریم. اما لغات منظور ها رو مشخص میکنه. معماری میکرو یعنی چی؟ چه میکرویی؟ من این مورد پشته نرم افزاری و سخت افزاری رو فقط توی avr دیدم و بس. مثلا روی 8051 با اون حجم پایین حافظه اش هم با این موضوع برخوردی نداشتم. روی z80 و LPC2378 (حالا کاری نداریم که اولی اصلا میکروکنترلر نیست) هم با این موضوع برخوردی نداشتم. چون توجیهی نداره. ضمنا صرف چاپ شدن یک مطلب در یک کتاب دلیلی بر ثبوتش نیست.
                              از طرف دیگه این فرمایش شما رو در نظر بگیریم:
                              زیاد بودنش باعث پر شدن اس رم میکرو و کم بودنش باعث هنگ کردن میکرو میشه
                              زیاد بودن یعنی چی؟ مثلا 64 زیاده یا کم؟ چون ممکنه این مقدار روی یک میکرو با 128 بایت رم استفاده بشه یا روی اون یکی با 8 کیلو بایت رم. اصلا دلیل این هنگ کردن چیه؟ اینا باید توضیح داشته باشه و توضیحی منطقی.
                              از تمام اینا گذشته شما بزرگتری. من هم کوچکتر و مخلص شما هستم. میخواییم اینجا چیزایی رو که نمیدونیم از هم یاد بگیریم. دعوا که نداریم.

                              دیدگاه

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