سلام
خواستم دور هم یه چیزایی رو یاد بگیریم:
vs مخفف کلمه versus یعنی در مقابل هم
اگه بازیهای کتک کاری مثل taken رو انجام داده باشید زیاد میبینید
حالا این چه ربطی به فیلیپس و اتمل داره
توی زبان انگلیسی هر وقت دو چیز یا دو کس با هم کل کل دارن میزنن vs
میخوام یه کل کل راه بندازم بین اتمل و فیلیپس توی مدل arm7
قبلا کلی بحث شد که کدوم چی داره چی نداره... چه نکته برجسته ای توی فلان مدل هست که اون یکی نداره
خود من هم کلی از این بحث ها کردم ... ولی تا اینجا منبع صحبتهام و انتخاب من مطالب توی اینترنت بود که رفتم فیلیپس رو انتخاب کردم ...
اگه توی اینترنت همین موضوع رو سرچ کنید چند جا بحث شده
الان با دست پر اومدم
اول اینکه چیا دیده بودم که فیلیپس رو انتخاب کردم:

این عکس مال یه کل کل بین سه مدل ARM7 از سه شرکته که روی Ethernet اومده مسابقه گذاشته ...
خوب بود نه :mrgreen: لذت بخشه که اتمل ناتوان ترینه ... ما که لذت بردیم
بعد اینکه ... میدونیم arm7 پرفرمنس 0.9 MIPS/MHZ رو داره یعنی اتمل با 55mhz میتونه 49.5MIPS کار کنه ... سری lpc23xx هم با 72mhz میتونه 64.8MIPS کار کنه (این سرعتها هم سرعت ماکزیمم این مدلهاست)
خوب میرسیم به ماجراهای داخلی این دو مدل
این نکته رو به خاطر داشته باشید : چون هر دو مدل از arm7 استفاده میکنن قاعدتا cpu باید در سرعت معادل پرفرمنس معادل داشته باشه
توی فیلیپس یه بخشی داریم به نام MAM یا Memory Accelerator Module که مثل یه cache از flash میخونه و cpu کد خودشو از MAM میگیره
اینطوری شد که یه اتفاق خیلی ناراحت کننده روی مدلهای اتمل افتاد
گفتیم 49.5mips در 55mhz که همینجا بیشتر از 14mips عقب تر از فیلیپسه (بیشتر از 20% سرعت بیشتر)
ولی ...
توی دیتاشیت ابلهانه اتمل نوشته 30mhz ماکزیمم سرعت flash ...
اگه بیشتر بخوایم باید wait state رو توی Memory control ببریم بالا
مثلا برای read میتونیم توی سرعت ماکزیمم Wait state معادل 2 رو انتخاب کنیم
یعنی cpu توی اتمل میاد دو کلاک وای میسته تا Flash کارشو انجام بده
خوب پس این دروغه بگیم اتمل میتونه با 49.5mips کار کنه
باید 55MHz رو بر 2 تقسیم کنیم
ضرب در 0.9 کنیم که بشه 24.75mips ........................... این اعدا و ارقام توجیه خوبی برای اون ستونهای اولین عکس این پسته (ستون فیلیپس تقریبا 3 برابر اتمله)
ولی باز هم اینجا ختم نمیشه ...
cpu پرفرمنس خودشو اینقدر آورد پایین تا flash بخونه ... ولی حساب نکردیم که cpu بعد از کار flash باید کار خودشو انجام بده
من معیار محاسبه خوبی ندارم.... نمیخوایم خیلی هم خوردش کینم که اتمل خیلی اوضاعش بده
میگیم به دیده اغماض یا مسامحه همون 24.75mips
این موضوع رو با یه کد تست کردم ولی چون مال یه شرکتی بود نمیتونم کد رو اینجا بذارم ولی
توش یه
while(i--);
هستش
که i=500000
و یکی از IO ها رو روشن خاموش میکنه با این تاخیری که while ایجاد میکنه
همین کد برای اتمل نوشته شد و هم برای فیلیپس ... خدا روشکر کار خاصی نبود که بخواد کدها فرق کنن (هر دو کد عین هم)
هر دو میکرو روی 50mhz تنظیم شده بودن و اون IO به یه led وصل بود
من اندازه نگرفتم که دقیقا چه اتفاقی میافته ولی (زمان رو با تایمر اندازه نگرفتم)
MAM توی فیلیپس Fully enable بود
ولی led توی فیلیپس با دو تا سه برابر سرعت چشمک میزد :mrgreen: :mrgreen: آبرو ریزی بود که اتمل اوضاعش اینقدر خراب بود
ولی سرعت رو ما چسبوندیم به حداکثری که دیتاشیتها گفته بود
اتمل تغییری نداشت(5mhz بالاتر خبری نباید بشه)
ولی فیلیپس دیگه led رو تقریبا نمیشد متوجه شد روشن خاموش میشه (تقریبا پیوسته بود)
.
.
.
.
.
خوب راه حل چیه؟ اگه بخوایم از تمام سرعت توی اتمل استفاده کنیم؟
آستینها رو بالا میزنیم ... صندوق جلو رو بالا میزنیم ... یه کپسول نیترو میزاریم روی موتور هر وقت خواستیم شتاب بگیریم با بنزین N2O4 میریزیم توی بنزین
باید کد رو روی RAM بیاریم بالا تا wait state نداشته باشیم
برای اینکار باید خیلی کارها انجام بدیم ... کلی کد بنویسیم ... کلی کامپایلر رو دست کاری کنیم ... کلی مسایل رو پیش بینی کنیم
مثلا ... رم حجمش محدود تر از flash
کد ما باید آدرس دهی وابسته داشته باشه ... یعنی آدرس دهی ها یه عدد ثابت نباشه ... مثلا jmp 0x3000 نباشه ... jmp pc+200 باشه
که توی تنظیمات کامپایلر هست... فضای اجرایی رو که روی انتخاب میکنیم از فضای در دسترس رم توی کامپایلر جدا کنیم
خیلی کارها باید انجام بشه
که من این کد رو روی اتمل نوشتم ... پیچیدگی کد خیلی بالاست ... اصلا هم کد داینامیک نیست و اگه دست به کد بزنیم باید یه بار دیگه یه بخشهایی رو develop کنیم
البته IAR اینکار رو مثل اینکه توش پیش بینی کردن ... من با این فاجعه زیست محیطی کار نکردم ... نمیدونم چطوریه ... ولی keil باید همه کارا رو خودمون انجام بدیم ... بوتلودر بنویسیم اول برنامه کد رو به رم منتقل کنیم و اونو صدا بزنیم
ولی کلی محدودیت رو به جون باید خرید تا سرعتمون طبیعی بشه ... تقریبا نابود میشی تا کد روی رم در برنامه keil بیاری بالا ...
ولی توی فیلیپس توی startup برنامه keil حتی MAM فعال هست و کاری لازم نیست انجام بدیم ... خودش بالاترین پرفرمنس رو داره
در کل باید یه کارایی رو اینجا انجام بدید توی keil

یه بخشی از رم رو باید بدید به IROM2 بعد و یه ماژول از کد اجرایی بنویسید که قرار روی رم اجرا بشه. بعد از راست کلیک روی همون ماژول توی سلوشن options for file رو بزنید و مثل عکس پایین IROM2 رو که قبلا مقدار داده بودید برای این ماژول اختصاص بدید

تازه این برنامه فقط یه بار قابل اجراست چون کد شما بوسیله پروگرامر میره روی RAM و اگه ریست بکنید دیگه میکرو کار نمیکنه
پس باید بوت لودر بنویسید که کد رو اولش کپی کنه
در پرده میگم پون نمیتونم توضیح زیادی بدم ... ولی حرفه ای ها باید سر رشته کار اومده باشه دستشون
ولی کلا اگه arm یه 32 بیتی نبود اتملش با xmega زیاد فرقی نداشت ... الان هم شک دارم که xmega اوضاعش خوبه یا نه ... چون اون هم از این شرکت دوست داشتنیه اتمل طراوش شده
:mrgreen:
آقای الهی قمشه ای توی یه برنامه ای میگفت یه بابایی رفت از نقاشیهاش یه نمایشگاه زد ... یکی اومد گفت حیف رنگ روغن ... یکی اومد گفت حیف بوم نقاشی ... یکی اومد گفت حیف این نمایشگاه که اینا رو توش گذاشتن ... یکی هم اومد گفت حیف نون :mrgreen:
با اتمل خوش باشید
خواستم دور هم یه چیزایی رو یاد بگیریم:
vs مخفف کلمه versus یعنی در مقابل هم
اگه بازیهای کتک کاری مثل taken رو انجام داده باشید زیاد میبینید
حالا این چه ربطی به فیلیپس و اتمل داره
توی زبان انگلیسی هر وقت دو چیز یا دو کس با هم کل کل دارن میزنن vs
میخوام یه کل کل راه بندازم بین اتمل و فیلیپس توی مدل arm7
قبلا کلی بحث شد که کدوم چی داره چی نداره... چه نکته برجسته ای توی فلان مدل هست که اون یکی نداره
خود من هم کلی از این بحث ها کردم ... ولی تا اینجا منبع صحبتهام و انتخاب من مطالب توی اینترنت بود که رفتم فیلیپس رو انتخاب کردم ...
اگه توی اینترنت همین موضوع رو سرچ کنید چند جا بحث شده
الان با دست پر اومدم
اول اینکه چیا دیده بودم که فیلیپس رو انتخاب کردم:

این عکس مال یه کل کل بین سه مدل ARM7 از سه شرکته که روی Ethernet اومده مسابقه گذاشته ...
خوب بود نه :mrgreen: لذت بخشه که اتمل ناتوان ترینه ... ما که لذت بردیم
بعد اینکه ... میدونیم arm7 پرفرمنس 0.9 MIPS/MHZ رو داره یعنی اتمل با 55mhz میتونه 49.5MIPS کار کنه ... سری lpc23xx هم با 72mhz میتونه 64.8MIPS کار کنه (این سرعتها هم سرعت ماکزیمم این مدلهاست)
خوب میرسیم به ماجراهای داخلی این دو مدل
این نکته رو به خاطر داشته باشید : چون هر دو مدل از arm7 استفاده میکنن قاعدتا cpu باید در سرعت معادل پرفرمنس معادل داشته باشه
توی فیلیپس یه بخشی داریم به نام MAM یا Memory Accelerator Module که مثل یه cache از flash میخونه و cpu کد خودشو از MAM میگیره
اینطوری شد که یه اتفاق خیلی ناراحت کننده روی مدلهای اتمل افتاد
گفتیم 49.5mips در 55mhz که همینجا بیشتر از 14mips عقب تر از فیلیپسه (بیشتر از 20% سرعت بیشتر)
ولی ...
توی دیتاشیت ابلهانه اتمل نوشته 30mhz ماکزیمم سرعت flash ...
اگه بیشتر بخوایم باید wait state رو توی Memory control ببریم بالا
مثلا برای read میتونیم توی سرعت ماکزیمم Wait state معادل 2 رو انتخاب کنیم
یعنی cpu توی اتمل میاد دو کلاک وای میسته تا Flash کارشو انجام بده
خوب پس این دروغه بگیم اتمل میتونه با 49.5mips کار کنه
باید 55MHz رو بر 2 تقسیم کنیم
ضرب در 0.9 کنیم که بشه 24.75mips ........................... این اعدا و ارقام توجیه خوبی برای اون ستونهای اولین عکس این پسته (ستون فیلیپس تقریبا 3 برابر اتمله)
ولی باز هم اینجا ختم نمیشه ...
cpu پرفرمنس خودشو اینقدر آورد پایین تا flash بخونه ... ولی حساب نکردیم که cpu بعد از کار flash باید کار خودشو انجام بده
من معیار محاسبه خوبی ندارم.... نمیخوایم خیلی هم خوردش کینم که اتمل خیلی اوضاعش بده
میگیم به دیده اغماض یا مسامحه همون 24.75mips
این موضوع رو با یه کد تست کردم ولی چون مال یه شرکتی بود نمیتونم کد رو اینجا بذارم ولی
توش یه
while(i--);
هستش
که i=500000
و یکی از IO ها رو روشن خاموش میکنه با این تاخیری که while ایجاد میکنه
همین کد برای اتمل نوشته شد و هم برای فیلیپس ... خدا روشکر کار خاصی نبود که بخواد کدها فرق کنن (هر دو کد عین هم)
هر دو میکرو روی 50mhz تنظیم شده بودن و اون IO به یه led وصل بود
من اندازه نگرفتم که دقیقا چه اتفاقی میافته ولی (زمان رو با تایمر اندازه نگرفتم)
MAM توی فیلیپس Fully enable بود
ولی led توی فیلیپس با دو تا سه برابر سرعت چشمک میزد :mrgreen: :mrgreen: آبرو ریزی بود که اتمل اوضاعش اینقدر خراب بود
ولی سرعت رو ما چسبوندیم به حداکثری که دیتاشیتها گفته بود
اتمل تغییری نداشت(5mhz بالاتر خبری نباید بشه)
ولی فیلیپس دیگه led رو تقریبا نمیشد متوجه شد روشن خاموش میشه (تقریبا پیوسته بود)
.
.
.
.
.
خوب راه حل چیه؟ اگه بخوایم از تمام سرعت توی اتمل استفاده کنیم؟
آستینها رو بالا میزنیم ... صندوق جلو رو بالا میزنیم ... یه کپسول نیترو میزاریم روی موتور هر وقت خواستیم شتاب بگیریم با بنزین N2O4 میریزیم توی بنزین
باید کد رو روی RAM بیاریم بالا تا wait state نداشته باشیم
برای اینکار باید خیلی کارها انجام بدیم ... کلی کد بنویسیم ... کلی کامپایلر رو دست کاری کنیم ... کلی مسایل رو پیش بینی کنیم
مثلا ... رم حجمش محدود تر از flash
کد ما باید آدرس دهی وابسته داشته باشه ... یعنی آدرس دهی ها یه عدد ثابت نباشه ... مثلا jmp 0x3000 نباشه ... jmp pc+200 باشه
که توی تنظیمات کامپایلر هست... فضای اجرایی رو که روی انتخاب میکنیم از فضای در دسترس رم توی کامپایلر جدا کنیم
خیلی کارها باید انجام بشه
که من این کد رو روی اتمل نوشتم ... پیچیدگی کد خیلی بالاست ... اصلا هم کد داینامیک نیست و اگه دست به کد بزنیم باید یه بار دیگه یه بخشهایی رو develop کنیم
البته IAR اینکار رو مثل اینکه توش پیش بینی کردن ... من با این فاجعه زیست محیطی کار نکردم ... نمیدونم چطوریه ... ولی keil باید همه کارا رو خودمون انجام بدیم ... بوتلودر بنویسیم اول برنامه کد رو به رم منتقل کنیم و اونو صدا بزنیم
ولی کلی محدودیت رو به جون باید خرید تا سرعتمون طبیعی بشه ... تقریبا نابود میشی تا کد روی رم در برنامه keil بیاری بالا ...
ولی توی فیلیپس توی startup برنامه keil حتی MAM فعال هست و کاری لازم نیست انجام بدیم ... خودش بالاترین پرفرمنس رو داره
در کل باید یه کارایی رو اینجا انجام بدید توی keil

یه بخشی از رم رو باید بدید به IROM2 بعد و یه ماژول از کد اجرایی بنویسید که قرار روی رم اجرا بشه. بعد از راست کلیک روی همون ماژول توی سلوشن options for file رو بزنید و مثل عکس پایین IROM2 رو که قبلا مقدار داده بودید برای این ماژول اختصاص بدید

تازه این برنامه فقط یه بار قابل اجراست چون کد شما بوسیله پروگرامر میره روی RAM و اگه ریست بکنید دیگه میکرو کار نمیکنه
پس باید بوت لودر بنویسید که کد رو اولش کپی کنه
در پرده میگم پون نمیتونم توضیح زیادی بدم ... ولی حرفه ای ها باید سر رشته کار اومده باشه دستشون
ولی کلا اگه arm یه 32 بیتی نبود اتملش با xmega زیاد فرقی نداشت ... الان هم شک دارم که xmega اوضاعش خوبه یا نه ... چون اون هم از این شرکت دوست داشتنیه اتمل طراوش شده
:mrgreen:
آقای الهی قمشه ای توی یه برنامه ای میگفت یه بابایی رفت از نقاشیهاش یه نمایشگاه زد ... یکی اومد گفت حیف رنگ روغن ... یکی اومد گفت حیف بوم نقاشی ... یکی اومد گفت حیف این نمایشگاه که اینا رو توش گذاشتن ... یکی هم اومد گفت حیف نون :mrgreen:
با اتمل خوش باشید
دیدگاه