سلام دوستان من میخوام یه برنامه واسه بوتلودر بنویسم صرفا جهت یادگیری اما دیگه مخم نمیکشه میشه لطفا شما هم به من کمک کنید برنامه زیر شده نتیجه نهایی برنامه من ; برنامه رو قراره از eeprom بخونه و تو حافظه فلش بنویسه اما چرا کار نمیده اونو دیگه نمیدونم چرا; بکوب یه ماهه دارم دربارش مطالعه میکنم ده ها بار برنامه رو برسی کردم مقدار از eeprom درست خونده میشه و تو رم ذخیره میشه به صورت عملی تست کردم مشکل تو قسمت نوشتن برنامه تو قسمت فلش میکرو که دقیقا نمیدونم مشکل از کجاشه همه چیزم تنظیم کردم برنامه برای قسمت بوتلودر تولید میشه و اجرا هم میشه اما بعد از پرش به ادرس 0x0000 فلش دوباره همین برنامه رو اجرا میکنه با تشکر از دوستان
فایل eeprom:
توضیحات فایل boot.h:
فایل پروژه:
http://www.0up.ir/do.php?downf=New-folder_cdf69.rar
کد:
#define F_CPU 8000000UL #define page_1 17 #define D4 eS_PORTC3 #define D5 eS_PORTC2 #define D6 eS_PORTC1 #define D7 eS_PORTC0 #define EN eS_PORTD0 #define RS eS_PORTD1 #include <avr/io.h> #include <stdio.h> #include <inttypes.h> #include <util/delay.h> #include <avr/eeprom.h> #include <stdint.h> #include <avr/boot.h> #include <avr/pgmspace.h> #include <string.h> #include "lcd.h" uint8_t EEMEM flashodata[page_1][SPM_PAGESIZE]; void flashdata_00(uint8_t *pointer_ss,uint8_t ss_size); int main(void) { uint8_t flashdata[SPM_PAGESIZE]; uint8_t u=0; uint8_t n=page_1-1; uint8_t *buf=&flashdata[0]; uint16_t w=0; uint32_t page=0; DDRD=0xff; DDRC=0xff; Lcd4_Init(); Lcd4_Clear(); Lcd4_Write_String("start"); _delay_ms(5000); while (1) { flashdata_00(flashdata,SPM_PAGESIZE); eeprom_read_block((void *)flashdata,(const void *)flashodata[u],SPM_PAGESIZE); Lcd4_Clear(); Lcd4_Write_String("read eeprom ok"); _delay_ms(500); if(u!=n) u++; else { u=0; Lcd4_Clear(); Lcd4_Write_String("end"); _delay_ms(500); asm ( "ret" ); }; page=(u<<6); boot_page_erase(page); boot_spm_busy_wait(); for(uint8_t a=0;a<SPM_PAGESIZE;a+=2){ w=*buf++; w+=(*buf++)<<8; boot_page_fill(page+a,w); } boot_page_write(page); boot_spm_busy_wait(); boot_rww_enable(); Lcd4_Clear(); Lcd4_Write_String("write page ok"); _delay_ms(500); } } void flashdata_00(uint8_t *pointer_ss,uint8_t ss_size){ for (;ss_size!=0;ss_size--,*pointer_ss=0x00,*pointer_ss++); }
کد:
:100000000C942A000C943F000C943F000C943F0089 :100010000C943F000C943F000C943F000C943F0064 :100020000C943F000C943F000C943F000C943F0054 :100030000C943F000C943F000C943F000C943F0044 :100040000C943F000C943F000C943F000C943F0034 :100050000C943F0011241FBECFE5D4E0DEBFCDBF1E :1000600010E0A0E6B0E0E8E7F4E002C005900D92F1 :10007000A636B107D9F70E9425020C943A020C94D7 :100080000000672B09F078C08A30910511F4C09800 :1000900008958B30910511F4C19808958C30910525 :1000A00011F4C29808958D30910511F4C398089504 :1000B0008E30910511F4C49808958F30910511F494 :1000C000C59808958031910511F4C698089581313D :1000D000910511F4C79808958431910511F4A898F9 :1000E00008958531910511F4A998089586319105F7 :1000F00011F4AA9808958731910511F4AB980895E9 :100100008831910511F4AC9808958931910511F465 :10011000AD9808958A31910511F4AE9808958B3108 :10012000910511F4AF9808958E31910511F49098CE :1001300008958F31910511F49198089580329105B9 :1001400011F4929808958132910511F493980895CD :100150008232910511F4949808958332910511F437 :10016000959808958432910511F49698089585978D :1001700009F078C0979808958A30910511F4C09AD3 :1001800008958B30910511F4C19A08958C30910532 :1001900011F4C29A08958D30910511F4C39A08950F :1001A0008E30910511F4C49A08958F30910511F4A1 :1001B000C59A08958031910511F4C69A0895813148 :1001C000910511F4C79A08958431910511F4A89A04 :1001D00008958531910511F4A99A08958631910504 :1001E00011F4AA9A08958731910511F4AB9A0895F4 :1001F0008831910511F4AC9A08958931910511F473 :10020000AD9A08958A31910511F4AE9A08958B3113 :10021000910511F4AF9A08958E31910511F4909AD9 :1002200008958F31910511F4919A089580329105C6 :1002300011F4929A08958132910511F4939A0895D8 :100240008232910511F4949A08958332910511F444 :10025000959A08958432910511F4969A0895859798 :1002600009F4979A0895CF93C82F80FF07C061E0E3 :1002700070E087E190E00E94410006C060E070E01D :1002800087E190E00E944100C1FF07C061E070E09B :1002900086E190E00E94410006C060E070E086E1E7 :1002A00090E00E944100C2FF07C061E070E085E17C :1002B00090E00E94410006C060E070E085E190E0BF :1002C0000E944100C3FF07C061E070E084E190E05C :1002D0000E94410006C060E070E084E190E00E946E :1002E0004100CF910895CF93C82F60E070E08FE177 :1002F00090E00E9441008C2F0E94330161E070E089 :100300008EE190E00E9441008FEC97E00197F1F7B9 :1003100000C0000060E070E08EE190E00E944100CB :100320008FEC97E00197F1F700C00000CF9108959E :1003300080E00E94730181E00E947301089580E0D3 :100340000E9433018FE39CE90197F1F700C00000A0 :1003500083E00E9473018FE097E20197F1F700C0FC :10036000000083E00E9473018FEE95E50197F1F79D :1003700000C0000083E00E94730182E00E947301CC :1003800082E00E94730188E00E94730180E00E9475 :1003900073018CE00E94730180E00E94730186E08B :1003A0000E9473010895CF93C82F61E070E08FE140 :1003B00090E00E9441008C2F82958F700E94330143 :1003C00061E070E08EE190E00E9441008FEC97E0E8 :1003D0000197F1F700C0000060E070E08EE190E06E :1003E0000E9441008FEC97E00197F1F700C00000F8 :1003F0008C2F8F700E94330161E070E08EE190E0FD :100400000E9441008FEC97E00197F1F700C00000D7 :1004100060E070E08EE190E00E9441008FEC97E098 :100420000197F1F700C00000CF910895CF93DF93BB :10043000EC018881882331F021960E94D3018991B3 :100440008111FBCFDF91CF9108958FEF81BB84BBEA :100450000E949F010E94980180E690E00E9416028F :100460002FEF83ED90E3215080409040E1F700C0F2 :100470000000F0CFF894FFCF73616A61640060 :00000001FF
فایل پروژه:
http://www.0up.ir/do.php?downf=New-folder_cdf69.rar
دیدگاه