NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3009 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 1 از 1

موضوع: بوت لودر

  1. #1
    تازه وارد
    تاریخ عضویت
    Jan 2016
    نوشته ها
    4
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض بوت لودر

    سلام
    میخوای یک برنامه بوت لودر خاص برای اتمگا 128 بنویسم، ولی برنامه اصلا چیزی رو نمینویسه روی حافظه فلش، برنامه مشابه ( با تغییر متغییرها و آدرس حافظه و .. ) روی اتمگا 8 و 32 کار کرده. ممنون میشم اگه راهنمایی کنید.
    کد:
    
    #define F_CPU 8000000UL
    
    
    
    
    #include <stdlib.h>
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <avr/pgmspace.h>
    #include <util/delay.h>
    #include <inttypes.h>
    #include <avr/boot.h>
    #include <avr/wdt.h>
    #include <avr/eeprom.h>
    
    
    
    
    void boot_program_page (uint32_t page, uint8_t *buf);
    
    
    int main(void)
    {
    	_delay_ms(100);
    	uint8_t A [ SPM_PAGESIZE ]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    								0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    								0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    								0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    								0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    								0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    								0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    								0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    	_delay_ms(100);
    	boot_program_page(0,A);
    	_delay_ms(100);
    	DDRC = 255;
    	PORTC = 1;
    	while (1)
    	{
    	}
    }
    
    
    void boot_program_page (uint32_t page, uint8_t *buf)
    {
    	uint16_t i;
    	uint8_t sreg;
    
    
    	// Disable interrupts.
    
    
    	sreg = SREG;
    	cli();
    	
    	eeprom_busy_wait ();
    
    
    	boot_page_erase (page);
    	boot_spm_busy_wait ();      // Wait until the memory is erased.
    
    
    	for (i=0; i<SPM_PAGESIZE; i+=2)
    	{
    		// Set up little-endian word.
    
    
    		uint16_t w = *buf++;
    		w += (*buf++) << 8;
    		
    		boot_page_fill (page + i, w);
    	}
    
    
    	boot_page_write (page);     // Store buffer in flash page.
    	boot_spm_busy_wait();       // Wait until the memory is written.
    
    
    	// Reenable RWW-section again. We need this if we want to jump back
    	// to the application after bootloading.
    
    
    	boot_rww_enable ();
    
    
    	// Re-enable interrupts (if they were ever enabled).
    
    
    	SREG = sreg;
    }

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

موضوعات مشابه

  1. تفاوت جوشکاری جریان متفاوت و مستقیم
    توسط esisafa در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 5
    آخرين نوشته: 09-09-2020, 16:57
  2. کتابخانه ریموت کدلرنینگ رایگان
    توسط Ma3ood در انجمن AVR
    پاسخ: 5
    آخرين نوشته: 21-04-2017, 12:52
  3. [درخواست] کمک در مورد ریموت مادون قرمز
    توسط mermnt در انجمن میکروکنترلرهای 8و16 بیتی
    پاسخ: 2
    آخرين نوشته: 16-07-2016, 16:16
  4. پاسخ: 0
    آخرين نوشته: 03-10-2014, 15:57

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •