Pisanie do Flasha w LPC17xx

Witam, może ktoś pomoże linkiem do przykładowych procedur w C umożliwiających pisanie/czytanie flasha w LPC1768 z poziomu programu. Najlepiej tak żeby działało pod FreeRtosem (non-MPU). Potrzebuję zapisywać kilkanaście zmiennych we flashu. AVRy miały rozdzielone flash programu i eeprom i nie było z tym problemu. W LPC podobno trzeba użyć funkcje interfejsu ISP ale jakoś nie mogę znaleźć przykładów.

Reply to
Mario
Loading thread data ...

W dniu 2010-08-14 14:13 Mario napisał(a):

Wszystko dokładnie masz wyłuszczone w rozdziale 8 "IAP commands" dokumentu UM10360 "LPC17xx User manual". Niezbędne kawałki są napisane w C.

Reply to
Adam Dybkowski

W dniu 2010-08-16 21:22, Adam Dybkowski pisze:

Niby tak. Tylko jak w praktyce w Freertos uzyskać wspomniany poniżej warunek:

3.2.6 Interrupts during IAP The on-chip flash memory is not accessible during erase/write operations. When the user application code starts executing the interrupt vectors from the user flash area are active. The user should either disable interrupts,

Musiałbym chyba zatrzymać cały system. Tak sobie kombinuję bo jeszcze go zbyt nie poznałem.

Reply to
Mario

W dniu 2010-08-16 22:34 Mario napisał(a):

Pominąłeś z cytatu to co najważniejsze: "The user should either disable interrupts, or ensure that user interrupt vectors are active in RAM and that the interrupt handlers reside in RAM, before making a flash erase/write IAP call."

Nie możesz żyć przez chwilę bez przerwań? No to czeka Cię przeniesienie kodu ich obsługi do RAMu.

Reply to
Adam Dybkowski

W dniu 2010-08-17 22:29, Adam Dybkowski pisze:

Musiałbym zatrzymać scheduler. Z kolei na to żeby przenosić część systemu do ramu to jestem za cienki. Chyba sobie dołożę bateryjkę i skorzystam z rejestrów RTC.

Reply to
Mario

W dniu 2010-08-17 23:27 Mario napisał(a):

A to nie musisz koniecznie nic trzymać w wewn. Flashu? Bo zwykle zapisuje go bootloader (po otrzymaniu apgrejdu z zewnątrz np. przez USB) i tam da się radę żyć nawet bez przerwań.

A do podręcznych rzeczy jeżeli nie potrzeba jakiejś hiper wydajności to polecam podłączyć zwykły 8-nóżkowy EEPROM na I2C. Będzie jak w starym dobrym AVR. :-)

Reply to
Adam Dybkowski

W dniu 2010-08-18 00:03, Adam Dybkowski pisze:

Chciałem parę parametrów zmienianych przez użytkownika zapisywać z poziomu programu. W AVRach byłem przyzwyczajony, że są rozdzielone flash i eeprom. Na etapie projektowania w dokumentacji LPC zerknąłem, że da się zapisać w pamięci programu używając IAP. No i myślałem że sobie jakiś wyższy blok zajmę na przechowywanie zmiennych. Ale trochę mnie to przerasta biorąc pod uwagę, że sadzam to na Freertosie i nie chcę w nim za bardzo grzebać póki go nie znam.

Już po zawodach. Płytki już wykonane a terminy gonią. No chyba że w przyszłości ją przeprojektuję wciskając małego EEproma. Póki co mogę wykorzystać rejestry ogólne i rejestry alarmów w RTC tylko trzeba się przeprosić z bateryjkami :) Dzięki

Reply to
Mario

W dniu 2010-08-18 00:33 Mario napisał(a):

Ja w podobnym przypadku w ATSAM7S256 z powodzeniem wykorzystywałem kilka ostatnich stron Flasha do organizacji "niby EEPROMu". Ale mogłem pozwolić sobie na wyłączenie przerwań w takiej chwili no i nie używałem FreeRTOSa tylko innego systemu (firmowego wynalazku). A zapisy/kasowania są tam na tyle szybkie, że nie powodują dłuższych przycięć. AFAIR jedynym wymaganiem było tylko aby funkcje programowania chodziły z wewnętrznego RAMu (trzeba było skopiować z Flasha przed użyciem).

Tu widzę, że NXP w prockach LPC już udostępnia własne gotowe funkcje, które wystarczy wywoływać z wyłączonymi przerwaniami. Czyli czarna skrzynka i nie wiadomo co jak się programuje w środku. To już wolę jasny opis rejestrów do programowania Flasha w AT91SAM7xx.

Reply to
Adam Dybkowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.