سلام. مشکل حل شد.با تشکر از همه عزیزانی که کمک کردند.
برای جمع بندی و استفاده ی دوستانی که تازه کارند توی مبحث FPGA توضیحات ساده ای در مورد مراحل انجام این کار میدم. توضیحات شاید خیلی جزیی باشند ولی برای افراد مبتدی راحتتره.
ابتدا فایل ضمیمه شده در پست های قبلی را extract میکنیم . فقط حواستون باشه اگر نام فولدر را عوض کنید با مشکلاتی مواجه میشید. اسمش باید همین باشه: spi-bootloader
در پوشه hw فایل ISE را باز کرده و از طریق آن فایل xps را اجرا میکنیم
Peripherals لازمه برای برنامه خودتونو اضافه کرده و پس از تغییر فایل UCF ، برنامه xps را میبندیم
در برنامه ISE ، Generate Top HDL Source را انتخاب میکنیم و سپس Export To SDK With Bitstream را انتخاب میکنیم.
پس از اتمام کار و باز شدن SDK مسیری جدید در همان مسیر، و با نام sw1مثلا برای برنامه انتخاب میکنیم.
یک پکیج standalone bsp میسازیم و کتابخانه xilisf ver 3.02a را برای آن فعال میکنیم. در تنظیمات این کتابخانه عدد مربوطه را روی 4 یا همان Winbond تنظیم میکنیم.
دو برنامه SREC bootloader و Hello World را با نام های bootloader و hello میسازیم. SREC Bootloader را با standalone bsp ساخته و برای Hello World یک پکیج bsp جدا درست میکنیم.
روی برنامه hello world کلیک راست کرده و از طریق گزینه Generate Linker Script ، اجرای برنامه را به حافظه فلش خارجی منتقل میکنیم.
SDK را میبندیم و در فولدر sw1 ،محتوای فولدر bootloader را حذف کرده و محتوای فولدر bootloader موجود در فولدر sw را جایگزین آن میکنیم.
SDK را باز میکنیم. برنامه جایگزین HelloWorld را مینویسیم. F5 را برای refresh شدن برنامه میزنیم و پروزه را Build میکنیم.
از گزینه Xilinx Tools گزینه Download FPGA را انتخاب میکنیم. در پنجره ی باز شده فایل bootloader.elf را برای دانلود در بلوک رام انتخاب میکنیم.
Download را میزنیم.برد نباید به کامپیوتر متصل باشد.
از Xilinx Tools گزینه Lunch Shell را انتخاب کرده و کدهای زیر را مینویسیم:
Cd hello\debug
mb-objcopy -O srec hello.elf hello123.srec
بعد از اجرای این کد ، یک فایل hello123.srec در مسیر sw1/hello/debug اجرا میشود. این فایل را در دسکتاپ کپی میکنیم.چون impact با مسیرهای طولانی مشکل دارد.
impact را باز میکنیم.Create PROM File را انتخاب میکنیم. از سربرگ SPI FLASH گزینه configure single FPGA را انتخاب مینیم. فلش سبز رنگ را زده و گزینه 64M را انتخاب میکنیم و Add Storage Device را انتخاب میکنیم. فلش سبزرنگ را زده و یک نام مشخص میکنیم. برای مسیر هم بهتر است همان sw1 انتخاب شود. گزینه add non-configuration data file را روی yes میگذاریم. OK را میزنیم.
در پنجره اول ، به مسیر sw1\microblaze_hw_platform رفته و فایل download.bit را انتخاب میکنیم. در جواب add other device? ، NO را میزنیم. برای Data هم همان فایلی که در دسکتاپ کپی کردیم را انتخاب میکنیم و آدرس 80000 را برای آن وارد میکنیم(همان ادرسی که درفایل blconfig.h موجود در برنامه bootloader وارد شده است.)
فایل data دیگری اضافه نمیکنیم. از سمت چپ Generate File… را میزنیم.
بورد را متصل میکنیم. در بخش Boundary Scan ، بعد از کلیک راست و انتخاب initialize chainروی FPGA کلیک راست کرده و Add SPI\BPI FLASH … را انتخاب مبکنیم. در پنجره باز شده فایل msc ساخته شده و موجود در فولدر sw1 را نتخاب کرده و بعد از انتخاب نوع حافظه (W25q64BV/CV) و گذاشتن Data Width روی عدد 4 ، OK را میزنیم.
برای احتیاط : روی حافظه فلش کلیک راست کرده سپس Erase را میزینم. بعد از اتمام بورد را جدا کرده مجددا نتصل میکنیم. تا مطمین شویم هیچ برنامه ای روز FPGA لود نمیشود.
روی FLASH کلیک راست کرده و program را میزنیم. بعد ار اتمام چند لحظه ای(فکر نکنم بیشتر از 20 یا 30 ثانیه بشه دیگه :-) ) باید صبر کنیم تا برنامه لود شود. پس از این انتظار برنامه اجرا خواهد شد.