# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded >  نحوه ی برنامه نویسی برای آی سی های فلش ؟؟

## universityel

با سلام
می خواستم بدونم نحوه ی برنامه نویسی برای آی سی فلش که روی  یه برد الکترونیکی هست و به کامپیوتر با یو اس بی وصل میشه چه جوریه ؟
آیا کار با آی سی های فلش کد خاصی دارند ؟
از چه زبان برنامه نویسی باید استفاده کرد ؟
اصل مطلب :
یک تراشه هست که دارای آی سی فلش با مدل : M36P0R9070E0-ZAC است حالا از کجا نوع آی سی رو فهمیدم :
http://139.138.48.19/device/details....AK&HW_ID=63131
با سرچ در اینترنت متوجه شدم آی سی فلشه
قرار من برنامه ایی بنویسم که با این ای سی کار کنه : 1-یکسری اطلاعات موجود در این آی سی رو بخونه - و یکسری اطلاعات رو بنویسه . منظورم داده هایی هست که میشه خوند و نوشت
در ضمن درایور این کیت برای کامپیوتر وجود داره 
و فقط قراره من برنامش رو بنویسم
ممنون میشم کمک کنید

----------


## a1053r

سلام 
بله شما باید برنامه نویسی میکروکنترلر رو یاد بگیری که با زبان سی و یا وبی انجام میگیره و احتیاج به پروگرمر هست
ولی در حالت دیگه اگه منظورتون این این ای سی رو در سیستم کنترلر کنید باید بتونید API های ویندوز کار کنید و کمی هم دانش فنی میخواد که با سی شارپ خودمون میشه حلش کرد

----------


## universityel

با سلام
این آی سی روی برده و خودش پروگرامر داره
چه جوری بگم : یعنی خودش دارای این پروگرامر هست و احتیاج نیست آی سی جدا بشه از روی برد
خوب میشه بگید از کجا شروع کنم
ضمنا این برد با usb به کامپیوتر وصل میشه
در این باره چیزی نگفتید
ممنونم

----------


## a1053r

سلام سی دی پروگرمر رو میزاری ببین شرکت تولید کننده کدوم کامپایلر رو تعیین کرده و گذاشته داخل سی دی اونون نصب کن و تو قسمت انتخاب پروگرمر از نرم افزار اسم پروگرمر رو انتخاب کن متصل که شد کدها رو بنویس و مستقیم کامپایلش کن
بله این برد با USB به سیستم متصل میشه و شما اطلاعات رو از این طریق میفرستین رو ای سی مورد نظرتون

----------


## universityel

با سلام
دوست عزیز نکته دقیقا همین جا است .
پروگرامر رو قرار من کلاً برنامه نویسی کنم
به من گفتن :
اقایی که رشتتون کامپیوتره ما این برد رو ساختیم تو دانشگاه خودمون ساختن تمام مدارات و ای سی فلش و تمام چیزهای برد معلومه و کار می کنه یعنی مشکل سخت نداره
درایور این کیت رو هم دارن یعنی وقتی وصل می کنی به سیستم شناسایی میشه و با درایور ها نصب میشه .
خوب حالا : احتیاج به برنامه ایی دارن که بتونه از ای سی فلش روی این برد کار کنه همین .
به هیج جای برد کار ندارم من فقط به من گفتن برنامه ایی بنویس که بتونی با این ای سی کار کنی اطلاعات بنویسی و بخونی
خوده این کیت الان توسط کامپیوتر شناسایی شده و قراره فقط  من بتونم با این ای سی کار کنم همین
نمی دونم چه جوری باید :
1-اول این ای سی رو تشخیص بدم ؟
2-اطلاعات رو بنویسم ؟
3-اطلاعات رو خوندم ؟

----------


## Mehran.GH

درایور برای برد پروگرامر را در اختیار داری یا درایور برای  ای سی فلاش  ؟ این دوتا موضوع متفاوت هست که برای انجام این پروژه به هر دو نیاز هست البته

چون توضیحی درباره پروگرامر ننوشتی فرض می کنیم  یک میکروکنترلر در برد پروگرامر استفاده شده و این میکرو از طریق USB  به کامپیوتر متصل می شود و میکرو قرار است وظیفه ارتباط بین کامپیوتر و آی سی فلش را انجام دهد  

در این جا یک درایور سطح سخت افزاری  low-level drivers   در میکرو لازم داری که بتواند سیگنالهای کنترلی با تایمینگ صحیح را به فلش بفرستد مثلا برای خواندن دیتا چنین سیگنالهایی 



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

بله >  باید ببینی چه توابعی تولید کننده پروگرامر نوشته و با مطالع مستندات آن همان توابع را از طریق نرم افزار تحت ویندوز صدا کنی یعنی پورت USB  در وینوز به عنوان یک پورت سریال مجازی تعریف می شود و مستقیم می تواند با میکرو در تماس باشد و در سمت میکرو هم دستورات را از نرم افزار تحت کامپیوتر می گیرد و انجام می دهد.

خیر> کار اصلی همین بخش است و  باید درایور سطح پایین مورد نیاز را برای میکرو *پورت* کنی

و این درایور باید توابعی را  مثلا با عملکردهای ذیل در اختیار قرار دهد :

NAND_SetWriteProtect
NAND_DataInput
NAND_CommandInput
NAND_AddressInput
.........

نرم افزار اصلی کار با این آی سی با نام TASKLINK  موجود است و احتمالا منظور این پروژه این بوده که نرم افزار مشابهی را تهیه کنی بنابراین شاید اگر دموی TASKLINK را دانلود کنی بتوانی ایده بگیری .
 همچنین درایور آی سی فلاش در کرنرل لینوکس وجود دارد و فایل آن هست cfi_cmdset_0001.c  که در اینترنت جستجو کنی می توانی پیدا کنی و با مطالعه کد آن می توان با مرا حل نوشتن درایورتحت لینوکس  برای آی سی فلاش آشنا شد.

 نحوه عملکرد پروگرامر و کارهایی که در آن بخش پروژه انجام شده تعیین کننده است  اینطوری نیست که بگوییم سخت افزار موجود است و درست کار می کند و  فقط  باید یک نرم افزار در این طرف نوشته شود , نوشتن نرم افزار برای خواندن و نوشتن اطلاعات روی ای سی فلاش بدون اطلاع دقیق از نحوه عملکرد پروگرامر ممکن نیست.

----------


## universityel

با سلام
ممنون از توجهتون
درایور برای برد رو دارم : منظورم کل برده دیگه اطلاع ندارم که مربوط به ای سی هست یا میکرو کنترلر .
چه طوری میکرو کنترلر رو تشخیص بدم روی برد ؟
ضمنا درایور برد رو دارم اره فکر کنم درایور همون چیزیه که قراره با ای سی فلش کار کنه
خودم نمی تونم توابع موجود در ای سی میکرو کنترلر رو بخونم ؟
دوست عزیز فهمیدم : یه آی سی سی پی یو وجود داره اگه اشتباه نکنم روش نوشته DB2020
همچین چیزی هست ؟
خوب حالا با توجه به نوع سی پی یو Db2020 هست باید چه جوری با ای سی فلش ارتباط برقرار کنم ؟

----------


## Mehran.GH

منظور از low-level drivers   کدی است که میکرو کنترلر برای ارتباط با فلش نیاز دارد و این کد درایور سطح سخت افزاری نامیده می شود .  

DB2020  را در گوگل که سرچ کنیم  مطلبی که مربوط به میکرو کنترلر باشد پیدا نمی کند.  متاسفانه حداقل اطلاعاتی که برای انجام این کار لازم است را در اختیار نداری , یعنی نحوه عملکرد پروگرامر و حتی یک شماتیک  که ساده ترین مطلب است و همچنین کارهایی که  طراح سخت افزار قبلا انجام داده و امکاناتی که درایور در اختیار برنامه نویس بخش ویندوز قرار می دهد و ....   این موارد باید روشن باشد.

----------


## ژوپیتر

> با سلام
> می خواستم بدونم نحوه ی برنامه نویسی برای آی سی فلش که روی  یه برد الکترونیکی هست و به کامپیوتر با یو اس بی وصل میشه چه جوریه ؟
> آیا کار با آی سی های فلش کد خاصی دارند ؟
> از چه زبان برنامه نویسی باید استفاده کرد ؟
> اصل مطلب :
> یک تراشه هست که دارای آی سی فلش با مدل : M36P0R9070E0-ZAC است حالا از کجا نوع آی سی رو فهمیدم :
> http://139.138.48.19/device/details....AK&HW_ID=63131
> با سرچ در اینترنت متوجه شدم آی سی فلشه
> قرار من برنامه ایی بنویسم که با این ای سی کار کنه : 1-یکسری اطلاعات موجود در این آی سی رو بخونه - و یکسری اطلاعات رو بنویسه . منظورم داده هایی هست که میشه خوند و نوشت
> ...


 سلام،
بهتر بود سوالتون رو در سایت ECA.IR مطرح میکردید، اونجا دوستان سخت افزاری فعالیت بیشتری دارن و در این موارد هم اطلاعات خوبی دارن.
در مورد این چیپ فلش هم، اکثر بردهای ST با STMicroconnect برنامه ریزی میشن(همون فلش روی برد) که هم USB هست و هم پورتهای دیگه.
در این مورد که چطوری میخواین از طریق USB به چیپ فلش دسترسی داشته باشید، کاملا بستگی به اینترفیس ارتباطیتون داره، آیا اون چیپ روی باس EMI هست؟ چیپ اصلی برد که ارتباط USB رو فراهم میکنه چه شماره ای داره؟ اکثر این فلشها به صورت سکتوری عمل میکنن و باید با پروسسور داخلی فلش به صورت دستور العملی کار کنین و اینطور نیست که فقط دیتا و آدرس بدین و پایه رایت و چیپ سلکت رو کلاک بزنید. اگه چیپ اصلی روی برد ارتباط با فلش رو فراهم میکنه باید در رجیسترهای اون چیپ بنویسید و دیگه خودش رید و رایت و هندل میکنه. تا اطلاعات کامل ندید نمیشه جواب کاملی هم داد.

موفق باشید. :چشمک:

----------

