اطلاعیه

Collapse
No announcement yet.

memory map

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

    memory map

    سلام
    من دارم از برد آموزشی lpc1768 فروشگاه استفاده می کنم
    توی برنامه داده های رو از یک کانال ADC می خونم و توی یک آرایه می ریزم و با پورت سریال به کامپیوتر ارسال می کنم
    آرایه از نوع INT هست.
    وقتی اندازه آرایه 100 باشه برنامه خیلی خوب کار می کنه
    اما وقتی اندازه رو 200 می کنم کامپایل و پروگرام می شه اما کار نمی کنه
    با دیباگ keil و با سیمولاتور برنامه رو تست کردم و متوجه شدم وقتی اندازه آرایه 200 هست خطای زیر رو میده
    error 65: access violation at 0x0FFFFF18 : no 'read' permission
    به نظرتون چه کاری می تونم انجام بدم که این مشکل رفع بشه؟

    نوعش رو هم به short تغییر دادم اندازه 200 رو قبول می کنه اما اندازه 1000 رو بازم قبول نمی کنه
    جدیدترین ویرایش توسط habibnia; ۱۵:۲۵ ۱۳۹۵/۰۶/۱۷.

    #2
    پاسخ : memory map

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

    دیدگاه


      #3
      پاسخ : memory map

      آرایه 200 تایی بزرگ نیست. من قبلا این کار رو با at91sam7s64 انجام دادم. سه تا آرایه 1000 تایی تعریف کرده بودم مشکلی هم نبود.



      int main(void)
      {
      short i,j;

      int adcbuffer[8];
      int value[100];
      LPC_GPIO2->FIODIR=1 ; //P2.0


      SystemInit();
      UART0_Init();

      ADC_Init();
      Delay(1000);
      LPC_GPIO2->FIOSET=1;
      Delay(1000);
      LPC_GPIO2->FIOCLR=1;
      for (j=0;j<100;j++)
      {
      for (i=1;i<8;i++)
      {
      adcbuffer[i]=read_adc();
      Delay(2);
      value[j]+=adcbuffer[i];
      }
      }

      for (j=0;j<100;j++)
      {
      LPC_GPIO2->FIOSET=1;
      Delay(50);
      LPC_GPIO2->FIOCLR=1;
      Delay(50);
      }
      }

      الان این یه قسمت از کد هست و کل برنامه کار می کنه.
      اما طول آرایه که 200 می شه کار نمی کنه. البته بدون خطا کامپایل مشه و میکرو هم پروگرام می شه. اما میکرو اصلا کار نمی کنه. وقتی که با شبیه ساز keil دیباگش می کنم پیغام زیر رو می ده:

      *** error 65: access violation at 0x0FFFFF1C : no 'read' permission
      و روی خط زبر گیر می کنه:
      value[j]+=adcbuffer[i];
      جدیدترین ویرایش توسط habibnia; ۱۶:۳۹ ۱۳۹۵/۰۶/۲۸.

      دیدگاه


        #4
        پاسخ : memory map

        سلام
        ببخشید طول کشید جواب بدم. حسابی سرم شلوغه. سریم میرم سر اصل مطلب. اینا رو دیدی؟
        این خیلی خوب توضیح داده:




        اینا هم هست:

        I tried to run LCD software in Keil for STM32, but I got *** error 65: access violation at 0x60000000 : no 'write' permission Do you know how to solve that error ? I saw that I can create a MAP, ...






        ببینید اگه نقشه حافظه مشکلی نداره و این رنج درسته پس تغییرش بدید. البته احساس میکنم یه اشتباهی شده؟ شما کد اسمبلی تون رو دیدید؟(نحوه قرار گرفتن کدها و کجا قرار گرفتنشون و غیره. آیا رم میکرو مشکلی نداره؟)

        دیدگاه


          #5
          پاسخ : memory map

          سلام.
          متغییر رو به خارج برنامه منتقل کنید(بصورت عمومی تعریف کنید) ان شا الله مشکل حله
          جدیدترین ویرایش توسط MM320; ۱۴:۲۵ ۱۳۹۵/۰۶/۳۰.

          دیدگاه


            #6
            پاسخ : memory map

            آقای روح الامین عزیز. ممنون از توجه شما.
            قبل از این که این سوال رو مطرح کنم خیلی سرچ کردم و این پیجها رو هم دیدم. اما واقعا برام یه مقدار گنگ بود ( و هنوزم هست ) . مثلا نمی دونم اون فایل INI رو چجوری میشه تعریف کرد.
            از طرفی نمی خواستم با دستکاری نقشه حافظه کاری کنم که رفتارای غیر قابل پیش بینی بروز بده. چون توضیحاتی که توی صفحات پیشنهادی شما ذکر شده بود زیاد برام قابل درک نبود.

            دلیل: ادغام دو پست برای جلوگیری از اسپم

            نوشته اصلی توسط MM320 نمایش پست ها
            سلام.
            متغییر رو به خارج برنامه منتقل کنید(بصورت عمومی تعریف کنید) ان شا الله مشکل حله
            خیلی از جوابتون سپاسگزارم. طبق پیشنهاد شما آرایه رو بردم قبل از تابع main و قبل از همه توابع تعریفش کردم و فعلا توی دیباگر که مشکلش رفع شده.
            حالا میکروکنترلر رو هم پروگرام می کنم و نتیجه رو همینجا اطلاع می دم.

            دیدگاه


              #7
              پاسخ : memory map

              من فکر کردم شما نمی خوایید متغییر رو گلوبال تعریف کنید.

              دیدگاه


                #8
                پاسخ : memory map

                نوشته اصلی توسط روح الامین نمایش پست ها
                من فکر کردم شما نمی خوایید متغییر رو گلوبال تعریف کنید.
                بابت توضیحات ناقص عذر می خوام واقعا.
                الان برنامه رو پروگرام کردم و مشکلش رفع شد.
                تا 8000 می شه طول آرایه رو افزایش داد
                8100 تا که می ذارم کامپایل نمی شه و خطا می ده.
                دستتون درد نکنه

                دیدگاه

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