امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از static library در Keil
نویسنده پیام
salehjg آفلاین
مدیر بخش
*****

ارسال‌ها: 1,281
موضوع‌ها: 133
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 9560
( 8557 تشکر در 2603 ارسال )
ارسال: #12
RE: استفاده از static library در Keil
نقل قول: سر فرصت پروژه اش رو باید دانلود کنم ، هنوز درک درستی ازش ندارم، یعنی میکرو روشن هست، ما بیایم یه تکست به فرم همون اسکریپت ها رو فرضا با USART به MCU انتقال بدیم که از قبل هسته ی Squirrel روش پورت شده ، حالا این اسکریپت هایی رو که می فرستیم گویی هم زمان دارن کامپایل و اجرا می شن درسته؟ یا برداشتم اشتباه بوده؟
آره، فرض کن یه موتور اجرای اسکریپت روی میکرو هست، فقط کافیه از یه طریقی اسکریپت رو بهش برسونی تا اجرا کنه
حتی میتونی تابع C رو هم بهش بشناسونی، یعنی از اسکریپت بتونی یه تابع C رو فراخوانی کنی
این یعنی دسترسی به همه اجرای میکرو از اسکریپت!


نقل قول: یه سبک خاص مد نظر هست ، مثل سبک تعریف و استفاده thread توی C#
پروژه open source باید باشه که بشه ازش استفاده کرد ، اما احتمال زیاد برای همخون بودن با هسته ، بایستی نوشته بشه.
سیستم عامل بورد MBED رو می تونی یه نگاه بندازی، من چندتا مثال تو sparkfun ازش دیدم.
باشه



نقل قول: حرفه ای تر تا چی مهم تر باشه، keil خیلی روون تره ، اما قدرت اصلی مربوط به کامپایلر می شه که چقدر انعطاف پذیر باشه.
یادم نمی یاد کامپایلر IAR چی بود، اما برای cpp از کامپایلر GCC خیلی تعریف شنیدم.
Co IDE تو ورژن جدیدش خراب کرد، وگرنه می خواستم برم سمتش ...
البته هنوز تو فکر eclipse + GCC هستم ، اما دردسرش زیاده ...
هنوز که هنوزه نتونستم با KEIL این مشکل رو حل کنم(static lib)
ولی دقیقا همون کد هارو با IAR کامپایل کردم، شبیه سازی کردم، مثل ساعت کار کرد
ولی مشکل اینه که ظاهرا هدر فایل رجیسترهای میکرو برای IAR  با KEIL متفاوته و این یعنی فاجعه  Biggrin راستی مثل اینکه مثل KEIL فایل systemInit.c نداره که بشه فرکانس و PLL و اینچیزا رو تنظیم کرد

این لینک هم : http://www.keil.com/forum/23332/ 
یکی مثل من مشکل تقریبا مشابهی داره که آخر سر جواب نگرفته ازش  :whistle:


اسم فایل رجیسترهای میکرو برای lpc1768 در IAR اینه: iolpc1768.h که باز کنی داخلش همون فایل iolpc1766.h رو include میکنه
۱۶-اردیبهشت-۱۳۹۵, ۲۰:۳۱:۲۷
وب سایت ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #13
RE: استفاده از static library در Keil
نقل قول: آره، فرض کن یه موتور اجرای اسکریپت روی میکرو هست، فقط کافیه از یه طریقی اسکریپت رو بهش برسونی تا اجرا کنه
حتی میتونی تابع C رو هم بهش بشناسونی، یعنی از اسکریپت بتونی یه تابع C رو فراخوانی کنی
این یعنی دسترسی به همه اجرای میکرو از اسکریپت!
جالبه ، پس کاربردش برای کارای چند پردازنده ای می شه.


نقل قول: ولی مشکل اینه که ظاهرا هدر فایل رجیسترهای میکرو برای IAR  با KEIL متفاوته و این یعنی فاجعه  [تصویر:  biggrin.gif] راستی مثل اینکه مثل KEIL فایل systemInit.c نداره که بشه فرکانس و PLL و اینچیزا رو تنظیم کرد
آره IAR این قسمت تنظیمات pll رو آماده نداره ...


نقل قول: این لینک هم : http://www.keil.com/forum/23332/ 

یکی مثل من مشکل تقریبا مشابهی داره که آخر سر جواب نگرفته ازش  :whistle:
اون از سیستم عامل و RL-ARM استفاده کرده بود ها ، با قضیه ی شما متفاوته ...

کامپایلر IAR چی هست؟ مال Keil یه چیزی تو مایه های eabi نمی دونم چی چی بود...
فکر کنم بهتره startup.s رو از keil با IAR مقایسه کنی.
احیانا به حافظه دینامیک که احتیاج نداری؟
آخه اون برای allocate کردن حافظه هست ، حالا می خوای یه فضایی برای Heap_Size هم در start up در نظر بگیر باز امتحان کن.

۱۶-اردیبهشت-۱۳۹۵, ۲۱:۰۵:۴۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : salehjg
salehjg آفلاین
مدیر بخش
*****

ارسال‌ها: 1,281
موضوع‌ها: 133
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 9560
( 8557 تشکر در 2603 ارسال )
ارسال: #14
RE: استفاده از static library در Keil
نقل قول: جالبه ، پس کاربردش برای کارای چند پردازنده ای می شه.
آره تقریبا ولی روی میکرو هم میشه یه کارایی کرد براش
فقط یکمی تپل هه   Biggrin

باید پر و بالش رو بزنی تا روی میکرو sram و flash اش جا داشته باشه برای باقی برنامه


کامپایلر IAR چی هست؟ مال Keil یه چیزی تو مایه های eabi نمی دونم چی چی بود...
فکر کنم بهتره startup.s رو از keil با IAR مقایسه کنی.ع
نقل قول: احیانا به حافظه دینامیک که احتیاج نداری؟
آخه اون برای allocate کردن حافظه هست ، حالا می خوای یه فضایی برای Heap_Size هم در start up در نظر بگیر باز امتحان کن.
نه تست کردم، هیپ سایز هم غیر صفر گرفتم، باز نشد
احتمال میدم قضیه برمیگرده به embedded Cplus اینا
استاندارد های مختلفی از سی پلاس هست که IAR ساپورت میکنه ولی keil صحبتی نشده ازش
فعلا تونستم روی IAR یدونه helloWord ساده رو از طریق اسکریپت روی پورت سریال بفرستم
ولی نمیدونم دلیلش چیه که نمیشه لایبرری های مختلف squirrel رو load کرد(به محض load کردن، hardFault رخ میده)
شاید sram کم میاد

یه سوال: حین دیباگ کردن، از کجا باید بفهمم که چقدر از sram استفاده شده و چقدر حجم بلااستفاده مونده ازش؟(یا احیانا موقع کامپایل)
کیل بعد بیلد شدن، چند تا ریپورت میداد که ZI data, R/W data اینا فلان بایت هستن
ولی آخرش نفهمیدم کدومش مربوط میشه به sram?
ZI و RW هردوتاش روی SRAM هستن؟ یا روی flash memory هم هستن؟




راستی طبق تحقیقی که کردم، تابع main__ که از startup.s فراخوانی میشه، متغیر هایی که باید zero initبشن(ZI) رو مدیریت میکنه و برخی از متغییر های استاتیک اینا
keil اونجا یه کارایی کرده که احتمالا مشکل ساز میشه
سایتشون هم اطلاعات زیادی درموردش ندادن
تابع main__ بعد اجرا شدن خودش، تابع main رو که تابع C هست، فراخوانی میکنه
و مشکل من با keil این بود که دیگه تابع main فراخوانی نمیشد و اون وسط کما میرفت  Biggrin
۱۹-اردیبهشت-۱۳۹۵, ۱۳:۴۷:۲۷
وب سایت ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #15
RE: استفاده از static library در Keil
نقل قول: یه سوال: حین دیباگ کردن، از کجا باید بفهمم که چقدر از sram استفاده شده و چقدر حجم بلااستفاده مونده ازش؟(یا احیانا موقع کامپایل)
کیل بعد بیلد شدن، چند تا ریپورت میداد که ZI data, R/W data اینا فلان بایت هستن
ولی آخرش نفهمیدم کدومش مربوط میشه به sram?
ZI و RW هردوتاش روی SRAM هستن؟ یا روی flash memory هم هستن؟
همونطور که می دونی داستان sram قدری خاص هست. چون حین اجرای برنامه مقدار آزاد و مصرف شدش مداوم در حال تغییر هست و مثل flash نیست که بشه مقدارش رو دقیق دونست  Biggrin
تا جایی که یادمه بعد از کامپایل مجموع Code و Ro حافظه ی اشغال شده Flash رو نشون می ده.
به همین ترنیب RW-data و ZI-data مجموعش میزان اشغال شده ی SRAM رو نشون می ده.
دقت کن که در lpc1768 مقدار SRAM دردسترس 32KB هست، 32KB هم برای USB و MAC رزرو شده!

یه سری ترفند راجع به تشخیص علت hard fault خوندم که اون هم درش ارجاء داده بود به یه مقاله دیگه که با چه تکنیک هایی می شه مصرف sram یا stack و یا نشت حافظه رو مدیریت کرد داده بود که دقیق یادم نمی یاد کدومش بود، اما به هر حال چون مشکلم رفع شده بود بیشتر ادامه اش ندادم  Biggrin


نقل قول: راستی طبق تحقیقی که کردم، تابع main__ که از startup.s فراخوانی میشه، متغیر هایی که باید zero initبشن(ZI) رو مدیریت میکنه و برخی از متغییر های استاتیک اینا
keil اونجا یه کارایی کرده که احتمالا مشکل ساز میشه
سایتشون هم اطلاعات زیادی درموردش ندادن
تابع main__ بعد اجرا شدن خودش، تابع main رو که تابع C هست، فراخوانی میکنه
و مشکل من با keil این بود که دیگه تابع main فراخوانی نمیشد و اون وسط کما میرفت 
ایول ... ، که اینطور ...
کلا مثل اینکه خود keil یه سری حافظه هایی رو map کرده و استفاده رو راحت کرده، برای تغییرات واقعا باید بدونی داستان حافظه هاش کی به کیه ...!

۱۹-اردیبهشت-۱۳۹۵, ۱۶:۵۴:۱۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : salehjg
salehjg آفلاین
مدیر بخش
*****

ارسال‌ها: 1,281
موضوع‌ها: 133
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 9560
( 8557 تشکر در 2603 ارسال )
ارسال: #16
RE: استفاده از static library در Keil
بعد یه مدت که با IAR کار کردم باید اعتراف کنم که خیلی خیلی حرفه ای تره نسبت به keil
از لحاظ پشتیبانی هم بهتره


اینو ببین:
https://www.iar.com/kr/support/resources...liability/

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

راستی:
طبق تحقیقات بعمل آمده، اپراتورهایی مثل new و delete دز ++c با فضای heap memory کار میکنن، یعنی اگه استاتیک لایبرری داشته باشی که با ++c نوشته شده، heap size نمیتونه صفر باشه
۲۲-اردیبهشت-۱۳۹۵, ۰۰:۲۶:۱۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : sharin
salehjg آفلاین
مدیر بخش
*****

ارسال‌ها: 1,281
موضوع‌ها: 133
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 9560
( 8557 تشکر در 2603 ارسال )
ارسال: #17
RE: استفاده از static library در Keil
ای جماعت یه تاپیک هم برای استک مموری داشتیم قبلا ها:
http://www.iranled.com/forum/thread-28830.html
۲۲-اردیبهشت-۱۳۹۵, ۰۰:۲۸:۳۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : sharin
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #18
RE: استفاده از static library در Keil
نقل قول: بعد یه مدت که با IAR کار کردم باید اعتراف کنم که خیلی خیلی حرفه ای تره نسبت به keil
از لحاظ پشتیبانی هم بهتره
اینو ببین:
https://www.iar.com/kr/support/resources...liability/
چند تا تکنیک جالب برای فهمیدن مقدار استک مصرفی رو با استفاده از آدرس اشاره گر به متغیر حساب میکنه
جالبه ... ، اتفاقا تو فروم keil یه بحث اینجوری شده بود که بتونی بفهمی چقدر استک مصرف شده اما خیلی سر بسته و درست سر در نیوردم، یه مورد دیگه جهت افزایش stack و heap خلاف هم بود آره؟ تا جایی که خوندم اگر از heap هم استفاده کنیم ممکنه اطلاعات heap و stack قاطی بشه ، یجورایی حد نهایی مثل ایتکه براش در نظر گرفته نمی شه و یه همچین چیزایی ...
اینه که این روش برای خوندن مقدار حافظه stack تاجایی که غهمیدم راه حل نهایی نیست، چون بستگی به شرایط اجرا هم داره ، مثلا شاید تو یه برهه از زمان کلی وقفه یه هویی رخ داد و ... ، یه بحث دیگه هم نشت حافظه هست که sram خوره و باید خیلی دقت بشه حافظه های گرفته شده آزاد بشن. که تو بحث اشاره گرها خودش رو نشون می ده.
اینه که بنظرم راه حل قطعی نداره ...


(۲۲-اردیبهشت-۱۳۹۵, ۰۰:۲۸:۳۴)salehjg نوشته است: ای جماعت یه تاپیک هم برای استک مموری داشتیم قبلا ها:
http://www.iranled.com/forum/thread-28830.html

اون موقع زیر پرچم بودم، ندیدمش ، دمت گرم !
من قضیه ی heap رو تازه چند ماه پیش نیازم شد فهمیدمش  Biggrin

(آخرین ویرایش در این ارسال: ۲۲-اردیبهشت-۱۳۹۵, ۰۱:۵۵:۳۶، توسط sharin.)
۲۲-اردیبهشت-۱۳۹۵, ۰۱:۵۳:۱۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : salehjg
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #19
RE: استفاده از static library در Keil
نقل قول: یه سوال: حین دیباگ کردن، از کجا باید بفهمم که چقدر از sram استفاده شده و چقدر حجم بلااستفاده مونده ازش؟(یا احیانا موقع کامپایل)
کیل بعد بیلد شدن، چند تا ریپورت میداد که ZI data, R/W data اینا فلان بایت هستن
ولی آخرش نفهمیدم کدومش مربوط میشه به sram?
ZI و RW هردوتاش روی SRAM هستن؟ یا روی flash memory هم هستن؟

جوابیه ی بالام باید اصلاح بشه. لینک ذیل چک شود ...  017
http://stackoverflow.com/questions/54302...ram-in-arm

۳۰-اردیبهشت-۱۳۹۵, ۲۳:۳۹:۵۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : salehjg
salehjg آفلاین
مدیر بخش
*****

ارسال‌ها: 1,281
موضوع‌ها: 133
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 9560
( 8557 تشکر در 2603 ارسال )
ارسال: #20
RE: استفاده از static library در Keil
ایول ایول

خیلی خوب بود


اینجا نقل قول کنم، دم دست باشه:

to calculate the used ROM (flash) space, you need to add up code, RO-data and RW-data. Used RAM will be the sum of RW-data and ZI-data.
(آخرین ویرایش در این ارسال: ۳۰-اردیبهشت-۱۳۹۵, ۲۳:۵۸:۲۸، توسط salehjg.)
۳۰-اردیبهشت-۱۳۹۵, ۲۳:۵۶:۵۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : sharin


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مشکل با bootloader در lpc1768 و keil sam37 9 9,673 ۰۸-شهریور-۱۳۹۵, ۲۱:۰۳:۲۱
آخرین ارسال: md3848
  ویدئو: نحوه ی گرفتن خروجی مستقیم bin از Keil sharin 0 2,267 ۰۸-دى-۱۳۹۴, ۱۰:۲۷:۴۰
آخرین ارسال: sharin
  ویدئو: شروع کار با keil برای LPC1768 sharin 0 2,281 ۱۲-آذر-۱۳۹۴, ۰۹:۵۱:۱۷
آخرین ارسال: sharin
  شبیه سازی DMA در محیط keil majid_avr 0 2,013 ۱۵-مرداد-۱۳۹۴, ۱۹:۳۸:۲۸
آخرین ارسال: majid_avr
  [آموزشی] KEIL UVISION + STACK SIZE salehjg 0 2,361 ۱۶-شهریور-۱۳۹۳, ۰۲:۲۵:۲۷
آخرین ارسال: salehjg
  [سوال] مشکلاتی که با دیباگر keil و j link داریم... salehjg 2 4,311 ۱۳-خرداد-۱۳۹۰, ۱۷:۳۴:۲۲
آخرین ارسال: salehjg
Sad ارور عجیب در keil!!! micro-m 4 7,378 ۰۴-مهر-۱۳۸۹, ۱۴:۴۲:۲۲
آخرین ارسال: micro-m

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS