Merhabalar değerli Pic proje üyeleri,
Benim uğraştığım bir projede programım, S-RAM de koşarken dışarıdan aldığım 3 kbyte lık bir datayı işlemci güçten kesilse de içinde kayıtlı datanın kalmasını istiyorum ve bu yüzden Flash belleğine yazmalıyım kodun tamamını ya da sadece veri dizisini.
avr nin <avr/boot.h> isimli kütüphanesini kullanarak yazılan örnek bir kodu da derledim fakat proteus da debug ettiğimde halen daha ram e yazıldığını gördüm datanın, sadece flasha yazmak için ne yapmalıyım? , proteus da debug modunun altındaki flash bytelarına ve rame baktıgım kısımdan kontrol ettim. Kod asıl atmega8 için geliştirileceğinden ram kısıtlı kalıyor benim için.
________________________________________________________________________
#include <avr/io.h>
#include <avr/boot.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
void boot_program_page (uint32_t page, uint8_t *buf) BOOTLOADER_SECTION;
uint8_t c[256] = "0123456789";
int main (void)
{
uint32_t i=0;
for(i = 10; i < 256; i++)
c = 0x00;
boot_program_page(0x100, c);
return (0);
}
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).
sei();
SREG = sreg;
}
___________________________________________________________________________________
AVR nin AVR106 application notunu da inceledim ve GCC kullandığım için IAR ile derlenen bu kodu kullanmam benim için sıkıntı oluşturdu. bu app note u kullanarak GCC de kod derleyen veya yönlendirebilicek biri var mı?
Teşekkürler şimdiden yardımlarınız için ;)
Probleme asina olan yok mu ya da benzer bir topic vardi da ben mi
Bu konuda bende takıldım. Bilgisi olan varmı?