پاسخ : فیلیپس ARM LPC23xx
سلام
یه پاسخ میدم واسه همه سوالا
در مورد usb والا من اصلا تغییری ندادم و همینطوری بدون درد و خونریزی کار میکنه
------------------------------------------------------------------------------------------------------------------------------------
در مورد کارهای بیتی یا bit wise هم دیگه قرار شد از avr که مخفف virtual risc به arm که مخفف Advanced risc برسیم
پس مفاهیم risc ماشینها رو باید پیاده کنن
یکی از بهترین راهها که شرکتهایی مثل arm برای کاهش instruction ها میکنن افتادن به جون این چیزاست
توی Avr دیدیم که تقسیم حذف شد که توی 8051 بود ... چون میشد اونو با شیفت و هزار کار دیگه نرم افزاری حذف کنیم
اینجا توی Arm دیگه به صورت بیتی چیزی نداریم .... چون بازم شیفت به کمک ما میاد...
البته اگه بخواید از پورتها بیتی استفاده کنید ... به معنای واقعی کلمه بیت وایز باید از mask توی فیلیپس استفاده کنید ... وگرنه مجبور میشید روی پورت مثلا 3 بیت رو 0 کنید بعد روش مقدار جدید بریزید
mask اینجا به شما کمک میکنه اون بیتی رو که میخواین 0 یا 1 کنید
پس میبینیم که بیت توی پورتها هم بی معنی شده
حتی برای صفر کردن یه رجیستر مجزا داره ... برای یک کردن هم یه رجیستر مجزا
(البته هر چند یه طورایی cortex ها چگالی کد بالاتری دارن ولی اونجا بجای اینه 3000 مدل دستور اسمبلی رایت توی فضای رم داشته باشیم ... 5000 مدل شرط بیت وایز جاش توابع ریاضی عجیب و غریب بعنوان یه instruction تعریف شده (داره به طرف پردازش سیگنال کسسته پیش میرن یا همون dsp))
-------------------------------------------------------------------------------------------------------------------
در مورد eeprom هم این فکر ابلهانه که محل eeprom توی IC پیاده بشه فکر کنم بازم این این اتمل تشت حموم شروع شد با یه سری از 8051 هاش که پسوند R2 و ... داشتن
توی avr هم که خدا رو شکر این محل بازم یکی از نا امن ترین مراکز ذخیره سازی داده های مهم بود
بطوریکه مثلا اگه بر اثر خطای نرم افزاری (بازگشت از استک نا معتبر) یا به خاطر نوسان تغذیه و ... از اونجایی که Avr بسیار قوی و reliable هستش دائما توی این وضعیتهاست مخصوصا حالت دوم ... هر لحظه میتونست میکرو بی دلیل روی eeprom خودش رایت کنه ... اینجا بود که داده های مهم ........ پ پ پ پ ر ر ر ر ر ر
پس محل قرار گیری چنین حافظه های غیر فرار کلا بیرون میکروکنترلر قرار میگیره
---------------------------------------------------------------------------------------------------------
در مورد AIP هم اینکه تمام میکروکنترلر هایی که flash از نوع single plan دارن رو نمیتونید به این راحتی ها روی فلششون چیزی بنویسید
single plan مدلیه که در لحظه فقط میشه از روش خوند یا فقط نوشت
وقتی میکروکنترلر کدشو از فلش میگیره پس نمیتونید این کار رو انجام بدید که روش بنویسید
برای اینکار باید تابع رایت رو با تمام توابعی که توش صدا میشن ... ببرید روی ram و از اونجا اجرا کنید ... حالا میشه روی فلش نوشت
کاریه که بوتلودر اول راه اندازی خودش این کار رو میکنه
اما
اما اگه فلش شما از نوع dual plan بود میتونید تابع رایت رو روی یه بخش بزارید و روی اون یکی بنویسید
مثلا .... شرمنده همه دوستان و محبان فیلیپس ... من مجبورم از این منحوس ... این تشت حموم دباره اسم ببرم
اتمل توی مدل sam7x512 فلشش دوتا 256 هستش که با دو تا مموری کنترلر کار میکنه ... اگه دومی رو هم فعال کنید ... میتونید از اولی روی 256 کیلوی دوم بنویسید
اما
در مورد فیلیس واقعیتش تا بحال تلاشی برای این کار نکردم ... این کار رو هم برای اتمل منحوس سر کار انجام دادم ... (فقط کپی کردن تابع روی رم و اجرا از اونجا و رایت روی فلش... در مورد dual plan این کار رو تا بحال نکردم ولی دیتاشیت نوشته که میشه ... البته خود دیتاشیت اتمل از این چیزا مبراست ولی میتونید نتیجه بگیرید میشه)
راستی یه نکته ای رو یادم رفت ... پاسخ رو ویرایشش کردم ...
چون فلشها سرعت پایینی دارن باید میکروکنترلر با سرعت پایین کار کنن ... واسه تشت حموم 30 مگاهرتزه (فکر کنم فیلیپس هم همین حدوده یه کم پایین تر) ... pll باید دوباره تنظیم بشه و بعد این کار دوباره برگرده به حالت اول
اما اگه از OS مثل rl-arm استفاده میکنید باید این نکته رو در نظر داشته باشید که احتمالا سیستم عاملتون قاطی پاتی میکنه (من بهش برخوردم ولی تلاشی نکردم ببینم راه حل چیه ... احتمالا با lock کردن سیستم عامل یا تسک بشه ولی تست نکردم ولی الی الاصول باید جلوی سوئیچ کردن تسکها رو بگیریم که فلش برای write فقط باشه)
موفق باشید
سلام
یه پاسخ میدم واسه همه سوالا
در مورد usb والا من اصلا تغییری ندادم و همینطوری بدون درد و خونریزی کار میکنه
------------------------------------------------------------------------------------------------------------------------------------
در مورد کارهای بیتی یا bit wise هم دیگه قرار شد از avr که مخفف virtual risc به arm که مخفف Advanced risc برسیم
پس مفاهیم risc ماشینها رو باید پیاده کنن
یکی از بهترین راهها که شرکتهایی مثل arm برای کاهش instruction ها میکنن افتادن به جون این چیزاست
توی Avr دیدیم که تقسیم حذف شد که توی 8051 بود ... چون میشد اونو با شیفت و هزار کار دیگه نرم افزاری حذف کنیم
اینجا توی Arm دیگه به صورت بیتی چیزی نداریم .... چون بازم شیفت به کمک ما میاد...
البته اگه بخواید از پورتها بیتی استفاده کنید ... به معنای واقعی کلمه بیت وایز باید از mask توی فیلیپس استفاده کنید ... وگرنه مجبور میشید روی پورت مثلا 3 بیت رو 0 کنید بعد روش مقدار جدید بریزید
mask اینجا به شما کمک میکنه اون بیتی رو که میخواین 0 یا 1 کنید
پس میبینیم که بیت توی پورتها هم بی معنی شده
حتی برای صفر کردن یه رجیستر مجزا داره ... برای یک کردن هم یه رجیستر مجزا
(البته هر چند یه طورایی cortex ها چگالی کد بالاتری دارن ولی اونجا بجای اینه 3000 مدل دستور اسمبلی رایت توی فضای رم داشته باشیم ... 5000 مدل شرط بیت وایز جاش توابع ریاضی عجیب و غریب بعنوان یه instruction تعریف شده (داره به طرف پردازش سیگنال کسسته پیش میرن یا همون dsp))
-------------------------------------------------------------------------------------------------------------------
در مورد eeprom هم این فکر ابلهانه که محل eeprom توی IC پیاده بشه فکر کنم بازم این این اتمل تشت حموم شروع شد با یه سری از 8051 هاش که پسوند R2 و ... داشتن
توی avr هم که خدا رو شکر این محل بازم یکی از نا امن ترین مراکز ذخیره سازی داده های مهم بود
بطوریکه مثلا اگه بر اثر خطای نرم افزاری (بازگشت از استک نا معتبر) یا به خاطر نوسان تغذیه و ... از اونجایی که Avr بسیار قوی و reliable هستش دائما توی این وضعیتهاست مخصوصا حالت دوم ... هر لحظه میتونست میکرو بی دلیل روی eeprom خودش رایت کنه ... اینجا بود که داده های مهم ........ پ پ پ پ ر ر ر ر ر ر
پس محل قرار گیری چنین حافظه های غیر فرار کلا بیرون میکروکنترلر قرار میگیره
---------------------------------------------------------------------------------------------------------
در مورد AIP هم اینکه تمام میکروکنترلر هایی که flash از نوع single plan دارن رو نمیتونید به این راحتی ها روی فلششون چیزی بنویسید
single plan مدلیه که در لحظه فقط میشه از روش خوند یا فقط نوشت
وقتی میکروکنترلر کدشو از فلش میگیره پس نمیتونید این کار رو انجام بدید که روش بنویسید
برای اینکار باید تابع رایت رو با تمام توابعی که توش صدا میشن ... ببرید روی ram و از اونجا اجرا کنید ... حالا میشه روی فلش نوشت
کاریه که بوتلودر اول راه اندازی خودش این کار رو میکنه
اما
اما اگه فلش شما از نوع dual plan بود میتونید تابع رایت رو روی یه بخش بزارید و روی اون یکی بنویسید
مثلا .... شرمنده همه دوستان و محبان فیلیپس ... من مجبورم از این منحوس ... این تشت حموم دباره اسم ببرم
اتمل توی مدل sam7x512 فلشش دوتا 256 هستش که با دو تا مموری کنترلر کار میکنه ... اگه دومی رو هم فعال کنید ... میتونید از اولی روی 256 کیلوی دوم بنویسید
اما
در مورد فیلیس واقعیتش تا بحال تلاشی برای این کار نکردم ... این کار رو هم برای اتمل منحوس سر کار انجام دادم ... (فقط کپی کردن تابع روی رم و اجرا از اونجا و رایت روی فلش... در مورد dual plan این کار رو تا بحال نکردم ولی دیتاشیت نوشته که میشه ... البته خود دیتاشیت اتمل از این چیزا مبراست ولی میتونید نتیجه بگیرید میشه)
راستی یه نکته ای رو یادم رفت ... پاسخ رو ویرایشش کردم ...
چون فلشها سرعت پایینی دارن باید میکروکنترلر با سرعت پایین کار کنن ... واسه تشت حموم 30 مگاهرتزه (فکر کنم فیلیپس هم همین حدوده یه کم پایین تر) ... pll باید دوباره تنظیم بشه و بعد این کار دوباره برگرده به حالت اول
اما اگه از OS مثل rl-arm استفاده میکنید باید این نکته رو در نظر داشته باشید که احتمالا سیستم عاملتون قاطی پاتی میکنه (من بهش برخوردم ولی تلاشی نکردم ببینم راه حل چیه ... احتمالا با lock کردن سیستم عامل یا تسک بشه ولی تست نکردم ولی الی الاصول باید جلوی سوئیچ کردن تسکها رو بگیریم که فلش برای write فقط باشه)
موفق باشید
دیدگاه