ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 27
  1. #1
    2012/10/28
    مشهد
    249
    16

    سوال مدیریت حافظه

    با سلام
    من همین 1 هفتس شروع کردم کار با arm و از همین تاپیک ها وارسال هایی که افراد با تجربه تو انجمن زده بودن برای شروع کمک گرفتم.
    چند سوال داشتم در مورد مدیریت حافظه.
    بچه های دانشگاهمون و یکی از اساتید مراجعه کردم کسی اطلاعی نداشت. براشون جدید بود. تو اینترنت هم گشتم ولی چون یکم تخصصیه راحت پیدا نمی شه. یک سرنخ های کوچیکی تو user manual میکروکنترلر پیدا کردم.
    می خوام با میکرو کنترلر lpc2103 کار کنم اونم تو شبیه ساز پروتئوس. با keil. بدون این برنامه های از قبل نوشته شده پیچیده.

    دوستان من انتظار پاسخ کامل ندارم. اگه یک اشاره کنید که لپ کلامو بفهمم(مثل اثبات طولانی که فقط چند نکته کوچیک داره) یا یک منبع سریح معرفی کنید ممنون می شم.

    1_ سرعت خوندن از روی حافظه فلش چه قدره؟ با رم فرق می کنه؟ سرعت خوندن , نه نوشتن.(در datasheet و user manual چیزی نبود) اگه سرعت خوندن از فلش میکروکنترلر بیشتر از حافظه رم هستش چه تکنیکی وجود داره که برنامه رو بعد از بارگذاری از حافظه فلش بندازیم تو حافظه رم و خظ اجرای برنامه رو ببریم رو رم؟ یعنی برنامه لود بشه و اجرا بشه. دقیقا شبیه همون چیزی که سیستم عامل میاد یک فایل exe رو بازگذاری می کنه روی رم. در مورد ram memmory allocation مشکلی ندارم تست کردم کار کرد. فقط heap رو تنظیم کردم و از تابع malloc() استفاده کردم.

    2_برای پروگرم کردن فلش نوشته بود می تونین به روش IAP استفاده کنیم. من تو اینترنت دیدم یکسری برنامه های بزرگ و هدر های حجیم و پر اضافات بودن که همچین کاری کنن ولی من می خوام اولا یک چیزی یاد بگیرم دوما چیزی بنویسم که دقیقا مناسب یک کار تخصصی خاص که می خوام برنامشو بنویسم باشه. نه یک چیز جامع. (یکبار نشستم تو C CONSOL از 0 رابط کاربری گرافیکی مثل Windows 3 نوشتم. مثل گرافیک bios ـ 2000 خط شد)
    اصلا من مرض دارم می خوام چرخو از اول بسازم. :rolleyes:
    من چه طور می تونم روی flash بنویسم؟ تو codevisionavr که برای نوشتن رو EEPROM فقط کافی بود تعریف کنیم متغیر eprom و مثل بقیه متغیر ها از روش بخونیم و بنویسیم و سیستم خودش کاراشو می کرد. اینجا باید چیکار کرد؟ register خاصی داره؟ یا باید معمولی رو آدرس حافظه بنویسیم؟

    3_ چه الگوریتمایی برای تخصیص حافظه و مدریتش وجود داره؟ یعنی یک تابع بنویسم مثل malloc() برام بیاد حافظه فلش رو بلوک بندی کنه و بلوک های استفاده شده و خالی رو بدونه و هروقت خواستم چند بلوکو آزاد کنه یا چند بلوک بهم بده. برای هر دسته بلوک هم اگر لازم شد یک اسم مثل فایل در نظر بگیره. بعدم اگر لازم داشتم بزنم حافظه رو دیفرگ کنه.

    4_ من heap و stack رو می دونم تو سیستم pc چی هستن ولی نمی فهمم وقتی میکروکنترلر سیستم عامل نداره این 2 چه معنی دارن؟
    یک تنظیم سخت افزاریه؟ یا توی برنامه startup یکسری برنامه شبهه سیستم عامل گذاشتن؟ یعنی چی که حتما باید heap تعیین کنیم که بتونیم allocation انجام بدیم؟؟؟ ثانیا حافضه stack در سیستم های pc خودش یکجور heap سطح پایین تر allocate شده توسط سیستم عامل است.اصلا کل حافظه ram به غیر از بخش اصلی که مربوط به سیستم عامل می شه heap است.
    حالا ایناشو دیگه واقعا نفهمیدم چرا stack یکسری تنظیمات داره؟ این تنظیمات دیگه چیه؟6 تا تنظیم داره تو keil قسمت startup که نوشته فلان فلان mode.
    stack ... mode دیگه چیه؟ اصلا کلا حافظه رو میدادن دست خود کاربر , خودم یک برنامه واسه مدیریتش می نوشتم منظم تر می شد.

    5_من لازم دارم یک سری lookup table بزرگ جهت انجام محاسبت سریع ریاضی و یکسری الگو های 2 بعدی یا چند بعدی مثل تصویر بریزم داخل حافظه فلش ( حالا فراخوانیش به رم که کاری نداره )
    مثلا این اطلاعات رو میام تو کامپیوتر با یک برنامه ای می سازم و میریزم تو یکسری فایل با پسوند BIN . حالا می خوام این فایل هارو کنار برامه اصلی با پروگرامر بریزم توی حافظه فلش میکروکنترلر که اولا آدرسشو داخل برنامه داشته باشم دوما این اطلاعات حجیم نیفتن روی برنامه اصلی.
    چه باید کرد؟ کسی نظری تجربه ای چیزی داره؟ یک راه حل ساده اینه که بیایم یک دونه متغیر تعریف کنیم و تو یک هدر بزاریم ولی فکر کنم اگه اطلاعات فقط 20kb رو بزارم توش تو موقع کپی پیست که یک دور سیستم هنگمی کنه و شاید complie هم یک ساعتی طول بکشه. بعد اگه بخوام دیباگ کنم دیگه وقت نمی شه.
  2. #2
    2012/12/30
    بوشهر
    3,211
    1,137

    پاسخ : سوال مدیریت حافظه

    سلام
    1- چه اهمیتی داره؟ اینا مسائلی هستش که برای سازنده مهمه نه ما! ما فقط قطعاتی که لازممون میشه رو می خریم(با توجه به انتظاراتی که ازش داریم). انتظارش هم میره که اطلاعات درست و کاملی گیرت نیاد. چون اینا باید جزو اطلاعات سکرت شرکت باشه و اونا هم نمی خوان این چیزا رو بگن. البته شاید با ایمیل زدن به شرکت مربوطه یا پرسیدن سوال در فرومشون پاسخ این سوالات رو بگیرد(البته بازم فکر نکنم کامل باشه).
    2- EEPROM توی سری AVR محصولات اتمل یه قسمت جدای از حافظه فلش هستش. مثل یه پریفرال
    3- شاید لازم باشه یه سری اطلاعات راجب ساختمان داده ها جمع آوری کنید و بخونید. (Data structures)
    4- Stack که کارش ذخیره یه نوع متغیر و مقادیر مربوط به یه تابع و آدرس و... هستش ولی heap برای اختصاص یه قسمت از حافظه به صورت دینامیکی هستش. شما ممکنه وسط برنامه نیاز به یه مقدار از حافظه داشته باشید. اصلا این دو موضوع دو مبحث جدا هستن. گوگل کنید و توضیحات مربوط به این دو رو بخونید.
    در مورد تنظیمات به help کیل مراجعه کن. اونجا حتما نوشته که چیکار میکنن. اگه موردی بود بعد اینجا بپرس.(اگه سوادمون برسه جوابتون رو میدیم)

    5- در مورد این قسمت بیشتر توضیح بدید. درست و واضح توضیح بدید که چیکار می خوایید بکنید.
  3. #3
    2012/10/28
    مشهد
    249
    16

    پاسخ : سوال مدیریت حافظه

    1_ اهمیتش برای من سرعته. مثلا اگر خوندن از روی فلش با فرکانس 100MHz بشه 2 کلاک و از روی رم بشه 1 کلاک , اونوقت برنامه که خط به خط از روی فلش اجرا می شه به ازای هر خط اجرا باید اول نمی دونم 2 یا 4 بایت رو از فلش برداره و execute کنه. اونوقت اگر سرعت خوندن از روی فلش بیشتر از رم باشه معقوله که برنامه رو ببریم تو رم اجرا کنیم.
    من تنها ایده ای که دارم اینه که کل بخش برنامه رو از آدرس 0 تا قبل از این که به 4 بایت 0xFF برسیم رو ببریم تو رم. یک چیزی تو C بود به نام اجرای تابع از روی آدرس خط تابع. خوب بعد بیایم برنامه رو از همون آدرسی که تو رم گذاشتیم اجرا کنیم ولی اینبار یک متغییر flag رو عوض کنیم که تعیین می کنه اطلاعات از روی فلش بره رو رم. حالا دوباره برنامه startup باید اجرا بشه تا برسه به همون برنامه که برنام رو میندازه تو رم ولی چون flag غیر فعاله دیگه بقیه برنامه عادی اجرا می شه.
    البته چند مسئله هست اولا می شه 2 بار startup اجرا بشه؟ سوما در خطوط زبان ماشین یک برنامه اشاره گر ها به خود آدرش ها به صورت دقیق اشاره می کنند یا میزان شیفت آدرس خط برنامه رو تعیین می کنند؟ اگر به صورت شیفت باشه مشکلی نیست. ولی اگر به مقدار مطلق آدرس ها اشاره کنند حتما به آدرس های flash اشاره خواهند کرد و برنامه دیر یا زود دوباره بر می گرده رو فلش.

    2_بله خودم متوجه هستم. البته در نظر بگیرین که حافظه flash یک نوع خاصی از EEPROM هستش.
    حالا چه طور با IAP (in aplication programming) بایت به بایت بریزم رو فلش؟

    4_بله کامل درسته ولی سیستم عامل میاد از کل حافظه سیستم به غیر جایی که مل خودشه که می شه heap یک تیکه حافظه رو اختصاص می ده به stack یک برنامه exe . یعنی یک تیکه از حافظه دینامیکی (که حافظه دینامیک تغریبا کل حافظه سیستم رو شامل میشه )برای stack یک برنامه اختصاص یافته می شه بعد برنامه بازم می تونه حافظه از سیستم درخواست کنه. گوگل کرده بودم.
    در واقع یک تابع که اجرا می شه یکسری متغیر local اول از رم allocate می شن و استفاده می شن ولی فرقش با allocate گلوبال اینه که همون جایی که تابع قبلی بود allocate می شن. و وقتی تابع خارج شد کل اون حافظه free می شه. ولی در سطح پایین در در نظر گرفته شده که این حافظه مال برنامه exe مورد نظره و کسی حق دسترسی بهش نداره.
    این heap و stack فقط 2 تا اصطلاح هستن. یا می شه گفت روش استفاده از حافظه. واقعیت اینه که کل حافظه سیستم دینامیکی هستش و همشون به صورت یک heap بزرگ از دید سیستم عامل هستن.
    تو help چیزی درباره stack و startup نبود!!!!

    5_شما درباره روش های محاسبات ریاضی با lookup table اطلاع دارین؟ تو گوگل بزنین بهترین و کامل ترین اطلاعاته. چیز خاصی نیست. فقط درصدی از محاسبات ریاضی رو به صورت حفظی به خورد سیستم می دیم که سرعت محاسبه بیشتر بشه. مثلا ما انسان ها 100 عدد از جدول ضرب رو حفظ می کنیم. البتته بعدا مضارب بیشتری هم حفظ می شیم. وقتی می گم 2*2 شما نمیای مثل ALU ـ یک 2 بزاری و یک 2 دیگه بزاری شیفت بدی و بعد با هم جمع کنی بشه 4. ما از روی حافظه درجا مقدارو برمی داریم.
    حالا کامپیوتر جدول سینوس و لگاریتم و نمایی و ... رو می تونه حفظ کنه. برای افضایش دقت هم می شه حافظه بیشتری رو اختصاص داد هم می شه از درون یابی استفاده کرد با مرتبه 2 به بالا. حالا می تونیم سینوس رو با دقت یکسان تو 1 کلاک حساب کنیم.
    حالا من برای کار گرافیکی هم یکسری تصویر لازم دارم . درواقع اینم یک جور lookup table هستش. چند بعدی هم می تونه یک تابع چند متغیره باشه.
    همه اینارو مثلا برای lpc2103 در حد 20Kb درمیارم. بعد میام در PC اینارو با یک برنامه با فرمتی که خودم لازم دارم می سازم و میریزم تو یک فایل BIN و حالا می خوام این بانک اطلاعاتی رو بریزم تو میکروکنترلر. با همون ترتیب. آدرس خونه اولشو که داشته باشم آدرس بقیه خونه ها رو هم دارم.
  4. #4
    2012/12/30
    بوشهر
    3,211
    1,137

    پاسخ : سوال مدیریت حافظه

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

    2- نگفتم که چه نوعیه، گفتم یه چیز جداست. این یعنی اینکه شما اگه بخوای روش بنویسی زیاد مشکلی نداری، مشکل اینجاست که میکروهای ARM توی کشور EEPROM نداره و شما باید یه جداگانه ش(نمونه اکسترنال) رو نصب کنید. اگه هم می خوای رو خود همین حافظه فلش که داری روش برنامه رو می خونی، بنویسی موضوع خیلی پیچیده میشه. شاید بحث بوتلودر پیش بیاد.

    3- برای پروگرم کردن حافظه فلش روش های متفاوتی وجود داره. چرا این روش(IAP) رو انتخاب کردین؟

    4- ما به سیستم عامل کاری نداریم. اینجا Stack یه وظیفه داره که انجامش میده. ما هم بهش کاری نداریم. ما اگه لازم باشه فقط با heap سر و کار داریم. اصلا شما فکر کن ما Stack نداریم.

    5- بله، بسیار. موضوع بسیار پرکاربردی خصوصا برای کتابخانه نویسی هستش.
  5. #5
    2012/10/28
    مشهد
    249
    16

    پاسخ : سوال مدیریت حافظه

    هدف من داشتن بیشترین سرعت پردازش همراه توانایی پردازَ بعضی چیزای پیچیده با ارزانترین میکروکنترلر هاست.
    البته کارایی که می خوام با میکروکنترلر انجام بدم شاید بگین FPGA یا مدار الکترونیکی بهتر انجام بده ولی مزیت برنامه نویسی و انعطاف پذیری میکروکنترلر یکچیز دیگست. و در ضمن سادگی.
    البته مجبورم از حداکثر پتانسیل و توانایی میکروکنترلر استفاده کنم. در بعضی موارد هم شاید میکروکنترلر به کلی از FPGA یا مدار الکترونیکی بسیار ارزان تر و بهتر عمل کنه.
    فعلان پروژه خاصی در نظر ندارم که با میکروکنترلر راه بندازم ولی می خوام یاد بگیرم از حداکثر پتانسیل میکروکترلر استفاده کنم.(منظورم ARM)
    قبلان که با AVR کار می کردم تا سرحد مرگ ازش کار می کشیدم. flash رو تا ته پر می کردم و از حداکثر سرعت پردازشش استفاده می کردم. البته همش جهت تست.

    1_من تو شبیه ساز Proteus سرعت خوندن از فلش و رم رو تست کردم. خیلی ساده 2 تا متغیر تعریف کردم. یکی کنستانت که دقیقا می ره تو حافظه فلش. و یکی local که دقیقا رفت تو خونه اول رم.(تو نمایشگر حافظه رم و فلش شبیه ساز Proteus دیدم) بعد یک چشمک زن تعریف کردم که 17 بار از روی فلش برداره و جمع و تفریق کنه و دفعه بعد 17 بار از روی رم. نتیجه رو بریزه تو بافر IO. البته متغیر ها رو volatile تعریف کردم که تو کامپایلر تو کارم دخالت نکنه.
    با درنظر گرفتن زمان انجام محاسبه که درواقع چند ریجیستر همزمان با هم کار می کنن و در وسط کار میریزن رو رم و دوباره می خونن و جمع می کنن و ...
    نتیجتا تغریبا زمان انجام محاسبات از روی متغییر کنستانت که درواقع روی فلش بود 3-4 برابر زمان محاسبات با متغیر روی رم شد.
    من سرعت کار CPU رو از 10MHz به 60MHz رسوندم زیاد تغییری نکرد.
    پس با در نظر گرفتن انجام کار های دیگه به غیر از خوندن از فلش , باید سرعت خوندن فلش حدودا حداقل بیشتر از 3 برابر سرعت خوندن از رم باشه.
    بهتره به صورت عملی تست بشه. اونم نه با این متغیر ها بلکه خود برنامه از روی رم اجرا بشه.
    پس یعنی شما شاید بتونی با اجرای برنامه از روی رم حداقل 2 برابر سرعت برنامه رو افزایش بدی.

    2_ در نظر دارین که program کردن یعنی صرفا نوشتن بایت به بایت روی حافظه فلش نه چیز دیگر. خوب منم می خوام رو فلش بنویسم. ولی حین اجرای برنامه. روش های خارج برنامه فقط به درد update کردن یا عوض کردن کد برنامه می خوره. من می خوام اطلاعاتی رو در حافظه فلش ضبت کنم در حین اجرای برنامه. مثل hard disk کامپیوتر PC . من تو user manual خوندم یه چیزیای گفته ولی یکم برام مبهمه. (خیلی مبهمه) :angry:
    کسی می تونه شرح بده چه طور IAP راه بندازم؟

    4_ پس منظور شما اینه که stack config خیلی مهم و تاثیر گذار نیست؟ پس چیه؟ چرا گذاشتنش؟ من بازم سرچ می کنم ببینم به کجا می رسم.

    5_حالا به نظر شما چه طور بیام این بانک اطلاعاتی رو به برنامه فلش که همون فایل HEX هستش اضافه کنم؟
    یک راه حل به نظرم رسید و اون این که بیام یک بار فایل HEX تولید شده رو با یک برنامه console باز کنم ببینم توش چیه. اگر دقیقا همون چیزیه که می ره تو فلش میکروکنترلر شاید بشه بیام بازش کنم و به تهش اطلاعاتمو اضافه کنم و دوباره ببندمش بدم به پروگرامر بریزه تو میکرو. آدرسش هم می شه یک جوری نوشت. مثلا یک متغیر تعریف می کنم : const chat*="PUT FLASH POINTER HERE" و بعدش بیام تو برنامه console اینو پیدا کنم و 4 بایت اولشو عوض کنم و آدرس lookup table های اضافه شده رو تزریق کنم.
  6. #6
    2007/08/04
    اصفهان
    577
    5

    پاسخ : سوال مديريت حافظه

    نقل قول نوشته اصلی توسط Aryan_M
    هدف من داشتن بيشترين سرعت پردازش همراه توانايي پردازَ بعضي چيزاي پيچيده با ارزانترين ميکروکنترلر هاست.
    البته مجبورم از حداکثر پتانسيل و توانايي ميکروکنترلر استفاده کنم. در بعضي موارد هم شايد ميکروکنترلر به کلي از FPGA يا مدار الکترونيکي بسيار ارزان تر و بهتر عمل کنه.
    فعلان پروژه خاصي در نظر ندارم که با ميکروکنترلر راه بندازم ولي مي خوام ياد بگيرم از حداکثر پتانسيل ميکروکترلر استفاده کنم.(منظورم ARM)
    سلام
    در اين صورت براي استفاده از حداکثر توان پردازشي ميکرو مي توانيد با اسمبلي کد بزنيد که بهينه باشد.
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...
  7. #7
    2012/10/28
    مشهد
    249
    16

    پاسخ : سوال مديريت حافظه

    نقل قول نوشته اصلی توسط mzarkoob
    سلام
    در اين صورت براي استفاده از حداکثر توان پردازشي ميکرو مي توانيد با اسمبلي کد بزنيد که بهينه باشد.
    فرمایش شما درسته ولی سادگی و سرعت عمل هم برای من مهمه. مثلا وقت ندارم 1 هفته وقت بزارم رو یک برنامه اسمبلی بنویسم.
    اصلا اسمبلی بلد نیستم. من برقم . من و چه به این چیزا... :rolleyes:
    در ضمن اگر برنامه اسمبلی هم باشه باز هم با انتقال کد برنامه به رم سرعت بیشتر خواهد شد.
    زبان C به نظر من بهینه است. البته کارای ساده تری هم هست که سرعتو افزایش بدیم.

    کسی هست بتونه پروگرمینگ به روش IAP رو توضیح بده؟
    همینم یکی بتونه برام توضیح بده ممنون می شم.
  8. #8
    2007/03/15
    تبريز
    2,709
    154

    پاسخ : سوال مدیریت حافظه

    نقل قول نوشته اصلی توسط Aryan_M
    1_ سرعت خوندن از روی حافظه فلش چه قدره؟ با رم فرق می کنه؟
    چیری در حد 1 الی 9 مگابیت درثانیه .مثلا الان هارد های جامد تا 32 مگابیت رو با usb3 ساپرت میکنه . بلی با رم فرق میکنه . رم ها پارالل هستند و فلش ها سریال
    مثلا با سرعت 100 مگابیت برثانیه در یک میکرو 32 بیتی با هر 2 پالس میتونی 32 بیت رو از رم تو ریجستر AH بخونی .که میشه 1.6 گیگا بیت برثانیه . البته دقت کن با این سرعت فقط میتونی بخونی حالا بعد خوندن دیتا رو باید پردازش کنی اون دیگه بحث سرعت نیست .



    نقل قول نوشته اصلی توسط Aryan_M
    سرعت خوندن , نه نوشتن.(در datasheet و user manual چیزی نبود) اگه سرعت خوندن از فلش میکروکنترلر بیشتر از حافظه رم هستش چه تکنیکی وجود داره که برنامه رو بعد از بارگذاری از حافظه فلش بندازیم تو حافظه رم و خظ اجرای برنامه رو ببریم رو رم؟ یعنی برنامه لود بشه و اجرا بشه. دقیقا شبیه همون چیزی که سیستم عامل میاد یک فایل exe رو بازگذاری می کنه روی رم. در مورد ram memmory allocation مشکلی ندارم تست کردم کار کرد. فقط heap رو تنظیم کردم و از تابع malloc() استفاده کردم.
    سرعت خوندن با نوشتن هیچ فرقی نداره . برای بار گذاری برنامه از فلش یا هارد جانبی یا cdrom تو sdram هم هیچ تکنیک خاصی نداره . فقط از هارد میخونی تو حافظه و با دستورات پرش میپری توآدرس حافظه مورد نظر

    3_ چه الگوریتمایی برای تخصیص حافظه و مدریتش وجود داره؟
    جواب شما یک سوال دیگه است .
    کجا ؟
    تخصیص حافظه با سیتم عامل معنی داره . مثلا سیستم عامل لینوکس از حافظه شناور استفاده میکنه . ولی ویندوز از تکنیک کوچکترین دیتا در بزرگترین تکه استفاده میکنه


    بقیه بمونه برا بعد



    تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
    داشتن عقله زيادتر از دیگر آدم ها است
  9. #9
    2012/10/28
    مشهد
    249
    16

    پاسخ : سوال مدیریت حافظه

    نقل قول نوشته اصلی توسط aliila
    چیری در حد 1 الی 9 مگابیت درثانیه ...
    پس این حرف شما آزمایش منو تو Proteus تعیید می کنه. البته من تو ویکیپدیا دیدم فلش تا فلش سرعتشون فرق می کنه. بستگی به نحوه ساخت سلول ها و پروتکل ارتباطی...
    پس یعنی من فقط برنامه رو از فلش بریزم تو رم و خط برنامه رو بیارم رو رم درست می شه دیگه؟
    حالا مشکل من اینجاست که نمی دونم خطوط برنامه اصلی بعد از startup از کجا شروع می شن؟ یعنی کجا رو باید بیارم؟
    اگر کل فلش رو بیارم (البته به غیر بانک های اطلاعاتی) اونوقت STARTUP دوباره اجرا می شه.
    دوم در زبان C برای اندختن خط برنامه در نقطه آدرس مورد نظر باید چیکار کنیم؟ من فقط بلدم یک تابع رو با پوینترش فراخوانی کنم.
    یک مشکل ثالث هم هست این که حالا اگر شاید برنامه من خیلی بزرگ شد از حجم رم ممکنه بیشتر بشه یا اونقدر رم بگیره که جایی برای STACK و HEAP نمونه. اونوقت مجبورم فقط توابعی که زیاد اجرا می شن رو بریزم تو رم.
    این 2 تا الگوریتم رو می شه یکم باز تر توضیح بدین؟
    البته در نظر داشته باشین که من می خوام یک حافظه مثلا 32Kb رو مدیریت کنم. البته شاید یک حافظه جانبی هم اضافه کردم که مثلا شاید حد اکثر شد چند مگا بایت. یک الگوریتم خفن نباشه...
    من نمی دونم تو این دانشگاه درندشت فردوسی که از کره ماه قابل رویته یک نفر پیدا نمی شه که الگوریتم های مدیریت حافظه رو بلد باشه یا حد اقل بدونه که کی می دونه یا کجا می شه این اطلاعاتو بدست اورد. (منهای اینترنت که خود اینترنت هم نمی دونه این اطلاعات کجاست. درست Allocate نشدن)
    یکجور جهل مرکب در این ضمینه در دانشگاه حاکمه.
  10. #10
    2012/10/28
    مشهد
    249
    16

    پاسخ : سوال مدیریت حافظه

    سوال شماره 5 حل شد.
    راه حلشم سادست. فایل HEX تولید شده توسط کامپایلر رو می شه خیلی راحت دستکاری کرد و اطلاعات مورد نیاز رو بهش اضافه کرد.
    فرمت فایل intel HEX رو می تونید از wikipedia ببینین خیلی سادست.
    http://en.wikipedia.org/wiki/Intel_HEX
    برای نمونه من فایل hex رو با notepad باز کردم و 8 بایت رو بهش اضافه کردم و در برنامه اون 8 بایت اضافه شده در موقعیت مورد نظر قرار گرفت.
    حالا برای تعمیم فقط کافیه بیام اطلاعات مورد نیاز رو به مبنای 16 دربیارم و اون هدر و فوتر های فرمت intel hex رو بهش اضافه کنم و به انتهای فایل hex تولید شده توسط کامپایلر اضافه کنم.
    شاید به درد شما هم بخوره. می تونید در فایل HEX تولید شده دستی تغییرات بدین. فقط با notepad و یک ماشین حساب.
صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 27

موضوعات مشابه

  1. سوال در مورد حافظه ها
    توسط vahidabedi در انجمن میکروکنترلرهای AVR
    پاسخ: 4
    آخرين نوشته: 2015/01/27, 21:27
  2. مدیریت اجرایی یا مدیریت بازرگانی؟
    توسط electronic_eng در انجمن دروس و مباحث دانشگاهي
    پاسخ: 3
    آخرين نوشته: 2013/06/24, 19:20
  3. پاسخ: 4
    آخرين نوشته: 2012/01/31, 20:41
  4. سوال :کمبود حافظه فلش avr
    توسط M_0125_n در انجمن میکروکنترلرهای AVR
    پاسخ: 23
    آخرين نوشته: 2011/08/21, 05:53
  5. سوال در مورد حافظه MMC
    توسط shahin_t67 در انجمن مباحث دیگر علم الکترونیک
    پاسخ: 2
    آخرين نوشته: 2010/10/03, 22:59

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •