Odpowiedź na Twoje pytanie jest dosyć prosta - protokół SWD nie ma rozkazu zapisu do flash i tego się po prostu nie da tak zrobić jak zapisu do RAM. Oprogramowanie na PC, które się komunikuje przez SWD z układem (np. program do ST-Linka, OpenOCD) wgrywa do RAMu specjalną procedurę, która fizycznie realizuje zapis (poprzez odpowiednią sekwencje zapisów...
Być może da się pokombinować z wyzwalaniem transferu timerem. Z drugiej strony nie bardzo rozumiem, jaki miałby być z tego pożytek - przesadzenia całego oprogramowania do RAM łatwe nie jest, a na czas zapisu procesor zatrzyma się przy dostępie do Flash, chyba że to model z dwoma bankami.
Witam Czy obsługa przerwań STM32F1 od UARTa nie koliduje z jednoczesnym zapisem do pamięci flash mikrokontrolera (czy podczas zapisu do pamięci flash nie są blokowane przerwania) ?
Mieszasz ze sobą dwie zupełnie oddzielne kwestie. Adresy w pamięci dotyczą komórek jednobajtowych, bo niby jak inaczej miałoby to być? Niemniej jednak fizyczny zapis dokonywany jest po 4 bajty na raz jeśli ustawiłeś zapis 32-bitowy.
Czy tak trudno odpowiedzieć na pytanie? Sam się czasami dziwie, że to taki trudne. Nie specjalizuje się w angielskim, a trudno przetłumaczyć/znaleźć zagadnienie w pdfie. Wszystko wynika ze specyfiki takiej pamięci. Pomijając aspekty fizyczne, czysta komórka pamięci flash odpowiada stanowi "1". Podczas zapisu do pojedynczej komórki można tylko i wyłącznie...
Witam. Zaopatrzyłem się niedawno w aplikację zwaną Flash loader demonstrator. Umożliwia ona m.in. zapis i odczyt pamięci programu mikrokontrolera STM32 przez bootloader poprzez RS232. Gdy chciałem odczytać pamięć flash i zapisać obraz pamięci w pliku hex mocno się zdziwiłem, gdyż plik miał rozmiar 319744 bajtów, a flash mojego STM32F103RB ma "tylko"...
Jestem nowy w STM32. Podłączyłem flash w25q128jv poprzez QSPI z poradnika https://controllerstech.com/w25q-flash-s... działa, ale podczas próby odczytu pamięci zwraca mi zawsze 0x88, lecz gdy odłączę GND do pamięci odczyt działa z artefaktami.
W sumie racja, bo wygenerowac sobie wartości potrafie tylko nie wiem właśnie jak ugryźć zapis do pamięci FLASH.
Witam! Chcę wgrać parę danych do pamięci mikrokontrolera STM32F107 (ustawienia domyślne). Nie wiem za bardzo jak powinien wyglądać kod linkera do takiego zapisu? Korzystam z CodeSourcery ze strony Freddiego. Nie posiadam debuggera, więc kod mogę wgrywać tylko poprzez bootloader na USART. Pamięć chciałbym zapisać paroma danymi 32bit, a następnie mieć...
http://obrazki.elektroda.pl/5451075700_1... Jakikolwiek ST-Link (tutaj St-LinkV2 z płytki testowej). Ustawienie tej opcji powoduje zablokowanie odczytu z FLASH aż do pełnego skasowania pamięci do 0xFF. Poniżej jest tabela z prawami zapisu do stron pamięci flash. Ustawienie tych opcji powoduje brak możliwości zapisu do pamięci flash...
W wyszukiwarce wpisz "stm32 eeprom emulation".
Na przykład Cypress, kiedyś Spansion: S25FL512Sxxxx to 512Mbit albo 64MB NOR Flash z interfejsem QSPI, Dual line or single line SPI. Inna opcja to N25Q512xxxx. Nie znalazłem pamięci o większej pojemności, które mogą współpracować z kontrolerami QSPI w STM32. Albo są podwójne NCS, ale pojedyncze linie danych, albo są to układy z zupełnie innym interfejsem....
Uruchomiłem kod, który wkleiłeś. Dopisałem tylko definicje dla Bank_NAND_ADDR ( 0x70000000 ), CMD_AREA ( 0x00010000 ), ADDR_AREA ( 0x00020000 ) i DATA_AREA ( 0x00000000 ). W funkcji FSMC_NAND_ReadID() pominąłem zapis do struktury i odczytuję zmienną data - mam w niej prawidłowe dane. Dodano po 8 Może nie włączyłeś taktowania dla FSMC? Ja mam to w innej...
Oczywiście, że można to zrobić bez użycia HAL, czy SPL. Kod, który tu przedstawiłeś wymaga bardzo wielu poprawek. Nie uważasz, że funkcja zapisu do pamięci jest zbyt skomplikowana? Długa na 88 linii, zawiera dziwne stałe typu: 1 << 14, 0xF3. Np co robi ta instrukcja: [syntax=c]FLASH->CR &= 0x1FFE;[/syntax], albo taka: [syntax=c]while(FLASH->SR...
Mam przed sobą Cortex™-M3 Revision r2p1 Technical Reference Manual i tam napisane jest iż MLA trwa dwa cykle a np ADD, MUL jeden czyli ja zysku nie widzę przy wykorzystaniu tego rozkazu (Czasowego bo to tylko chyba objętościowy zysk). Staram się w sposób świadomy pisać w C tak aby kod wykonywał się jak najszbiciej. ale jeśli nie ma różnicy w czasie...
Czy poprzez podanie adresu zmiennej która jest we flash'u rozumiesz podanie adresu zmiennej utworzonej w ten sposób? volatile short int d; volatile short int *c = &d; Jak mam się dowiedzieć jaki numer strony muszę podać do skasowania? Po podaniu 50 strony program nie wychacza ale to przypadek. FLASH->AR = 0x08028800;
Ciężko odpowiedzieć na tak zadane pytanie. To tak jakbyś zapytał jak sprawdzić wartość jakiejś komórki pamięci RAM (czyli powiedzmy jakąś zmienną). No po prostu odczytując ją :D Tak samo różne opcje zabezpieczeń. One są zapisane w pamięci, tyle że FLASH. Żeby je sprawdzić to trzeba je odczytać. No inaczej się nie na napisać. Ale mała podpowiedz: Option...
C-SKY Flash Programmer jest oprogramowaniem dostarczanym do pobrania przez XuanTie na stronie https://www.xrvm.cn/community/download?i... https://obrazki.elektroda.pl/1504579400_... Narzędzie to współpracuje z programatorami CK-Link do odczytu i zapisu w pamięci flash procesorów C-Sky z rdzeniem RISC. Procesory...
Nie ma właśnie nic więcej wspomniane o tym, przewija się raz jeszcze na początku ta fraza, ale żadnego objaśnienia Jest w DS objaśnienie (koło strony 500, "Theory of Operation" ) The EEPROM operates using a traditional Flash bank model which implements EEPROM-type cells, but uses sector erase. Additionally, words are replicated in the pages to allow...
Tutaj udokumentuję moją podróż z tanią płytką deweloperską / hobbystyczną STM32F103C8T6 "blue pill" zakupioną w Ali Express. Pomimo układu scalonego oznaczonego jako "STM32F103C8T6", wewnętrzna pamięć flash wydaje się mieć 128k zamiast 64k, co czyni go bardziej podobnym do STM32F103CBT6. Wydaje się, że nie jest to nieoczekiwane w przypadku podróbek/klonów...
W F030 strona ma wielkość 1kB co oznacza, że zmieści się tylko 256 zmiennych Jak to obliczyłeś? Pewnie 1024/4 bajty = 256, ale tutaj tak to nie działa. Strona 1024 bajty to 1024 bajty, inaczej 512 półsłów. Zapis do stron pamięci w STM32F0 wymaga zapisywania półsłów, do jednej strony oczywiście można zapisać 512 półsłów. W poniższym przykładzie zapisuję...
Jeśli ustawiłeś faktycznie drugi poziom zabezpieczenia, to jest po sprawie.
Bardzo często EEPROM jest emulowany w pamięci FLASH w sposób niewidoczny dla użytkownika. Nie można emulować funkcjonalności takiej jak wytrzymałość na ilość cykli zapisu/kasowania albo możliwość nadpisania pojedynczego bajtu. Jak nie można? Potrzeba 1kB EEPROM 100'000 zapisów (jak np w AVR), przeznacza się na pamięć 10kB FLASH, która ma ograniczenie...
Kontroler karty operuje na sektorach 512B nie blokach 128kB Czytaj uważnie. Ja pisałem o blokach w pamięciach NAND flash, a nie o tym co emuluje kontroler karty SD. Zbych_: skąd masz taką informację? Z lektury datasheetów pamięci NAND flash, które są wkładane do kart SD, np. pamięci ST (obecnie numonyx) 8Gb (1GB) mają bloki w rozmiarze 128kB.
Czy można to zrobić? - Oczywiście. Pytanie, czy trzeba? W miarę łatwo uzasadnić to, że np. jakieś dane konfiguracyjne są zapamiętywane w stałym miejscu pamięci Flash albo dane nie mają mocnego związku z kodem i są ładowane niezależnie od kodu dla każdego egzemplarza urządzenia, ale Twój przypadek jest zupełnie inny. Zamiast uczciwie wstawić dane do...
A są może gdzieś jakieś szczegóły tego rozwiązania (idea) w necie? Przeglądałem kilka not aplikacyjnych, ale rozwiązania tam pokazane bazują jedynie na zapisie "bloków" danych po kolei do FLASHa i szukaniu wolnego miejsca przy zapisie lub ostatniego zapisanego bloku przy odczycie. Czy rozwiązanie z tamtej książki jest tego samego typu? 4\/3!!
Okazało się, że podszedłem do tematu z niewystarczającą wiedzą. Przed każdym zapisem, należy określony sektor wyczyścić instrukcja Sector Erase. Chcialbym móc kasować pojedyncze komórki i aktualizować tam niektóre dane, jednakże pamięci flash tego nie umożliwiają, cóż coś za coś. Może uda się niektóre zmienne zapisywać do flashu procesora. Coś wymyślę,...
Temat jakoś umiera śmiercią naturalną. Pozwolę sobie nieco odświeżyć. Hardware: - HY-mini (Cortex M3) - LCD ze sterownikiem ssd1289 (FSMC) - karta sdhc (SDIO) Software: - fatfs R0.10 („testowałem” też wcześniejsze wersje) - „HAL” dla fatfs – silnie wzorowany na przykładach dołączonych do HY-mini i przykładach sugerowanych...
Witam, czy ktoś z forumowiczów wie jak umieścić w pamięci flash tablicę z wartościami przeskalowanego sinusa (wartości stałoprzecinkowe). Chcę, aby tablica miała np. 1024 elementów (od 0 do 2pi) dla tego zapis na sztywno wartości będzie nie wygodny. tj. [syntax=c]const s16 tab_sin[1024] = {wartosci}[/syntax] Wolałbym zapis: [syntax=c]const s32 tab_cos0[1024]...
Z tym rzutowaniem to wolę jednak "ręcznie" to robić....jakoś tak wydaje mi się bezpieczniej. U mnie akurat sizeof zawsze będzie mniejsze niż 256 gdyż jest to po prostu ilość bajtów do zapisania jednej zmiennej/tablicy/struktury i nie zamierzam robić większych :wink:. Biblioteki z ST są zakręcone..niestety. Zaletą mojego pomysłu jest to że struktura...
Strona ST. Emulacja eepromu.
Nie mam kodu na 407 bo zazwyczaj korzystam z zewnętrznej pamięci jeśli w ogóle. Ciężko coś powiedzieć bez analizy poszczególnych funkcji. Na F030 używałem takiej funkcji do zapisu i ewentualnego kasowania strony: [syntax=c]//EEPROM #define FLASH_END 0x0800 #define FLASH_ADDR 0x0803F800 //ostatnia strona (page 127) #define EEPROM ((uint16_t *)FLASH_ADDR)...
Embedded flash brzmi dokładnie tak samo jak zielona trawa. To tak jakby wątek był o rodzajach trawy a byś rozprawiał o tym tym dlaczego jest zielona. A co do aluzji do AVR, to tylko niektóre wynalazki muszą czytać flash za pomocą dedykowanych instrukcji i w tym przypadku ten wątek też nie jest o tym. W w AVR też masz pamięć "embedded" flash na kod i...
Jak już korzystasz z bibliotek ST to masz chociażby funkcje: FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data) i FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data) Operując na wskaźnikach możesz tam zapisać zmienne dowolnego typu, czy całe struktury.
Wprawdzie program mojego bootloadera napisałem korzystając z bibliotek ST, ale odblokowanie dowolnych stron FLASH'a do zapisu bardzo ładnie działa i nie mam z nim najmniejszych problemów. Zrobiłem to w następujący sposób (kolejność jest ważna): 1. Odblokowanie FLASH'a: FLASH_Unlock(); 2. Skopiowanie ustawień bitów rejestru USER OPTION BYTES: KopiaOBR...
Przy 40kB zastanów się jednak nad zastosowaniem zewnętrznej pamięci np. flash SPI typu M25Qxx, W25Qxx, AT45DBxx. Strony w STM32F1 są dość małe (2kB) do tego w emulacji używasz 2 stron na 2kB danych. Kasowanie takiej ilości też trwa kilka sekund. Sprawa naprawdę do przemyślenia.
To zapis np: [syntax=c]const uint8_t tablica[];[/syntax] Spowoduje że ta tablica będzie już umieszczona w pamięci FLASH?
Wcześniej użyłem volatile bo chciałem wymusić odczyt tych tablic za każdym razem z pamięci FLASH. A nie z jakiegoś rejestru gdzie wartość mogła by zostać zapamiętana. W tym celu, żeby po przeprogramowaniu pamięci, program na pewno operował na nowych wartościach. Ale mam rozumieć że w tym wypadku volatile nie pełni roli wymuszenia każdorazowego dostępu,...
Witam. Mam płytkę STM32F0discovey na której jest programator STLink/V2 i mikrokontroler STM32F051R8T6. Od kilku miesięcy bez problemu wgrywałem na niego kod, a dzisiaj nagle napotkałem problem. Środowisko po próbie wygrania nie napisało żadnego komunikatu, ani o powodzeniu ani o błędzie. Natomiast STLink Utility wyrzuca błąd "[0x00000000]: Invalid adress"....
Witam. Ostatnio staram się rozgryźć zapis do pamięci flash N25Q128A która jest podłączona do STM32F469 na płytce STM32F469I-DISCO. I niechodzi mi oto aby ktoś podał mi kod a o podanie jakie kroki mam przejść aby dokonać odczytu/zapisu. To jest ostatnia rzecz jaka mi została do rozgryzienia i jakoś nie idzie mi z tym. Korzystam z bibliotek HAL wygenerowanych...
Po każdym zapisie trzeba flash odczytać. Nie trzeba*. Jeśli masz na myśli PM0075 (2.3.3) to "Read the programmed value and verify" odnosi się tylko do weryfikacji i nie ma wpływu na programowanie, źle interpretujesz wspomniany rysunek. To samo masz w 2.3.4, na końcu masz "read & verify" po kasowaniu. Z tym odczytem chodzi tylko o to aby sprawdzić...
W jakiś sposób udało (?) mi się zainstalować bootloadera do mojego MC. Wygląda na to, iż Blinkiem arduino IDE działa. Nie napisałeś w jaki sposób podłączasz Blue Pill do komputera podczas programowania, bo opcji jest kilka. Co prawda nie jestem w stanie odtworzyć tej Twojej sytuacji u mnie, bo mnie osobiście zupełnie nie interesuje co jest wgrane do...
Oki dzięki rozumiem. Ale podczas zapisu do flash to chyba nie ma potrzeby czyścić cache? Bo przejrzałem funkcje HALowskie do obsługi Flash i tam czyszczą cache tylko podczas kasowania, więc podczas zapisu chyba nie ma potrzeby kasować cache? A jeśli chodzi o bufor prefetch to też trzeba go czyścić? Bo generalnie nie znalazłem w RMie żadnego bitu który...
Po pierwsze chciałbym powiedzieć, że nadwyrężenie pamięci flash jest raczej problematyczne - ile razy uda Ci się ją zaprogramować zanim dobijesz do tych 10000 czy 100000 zapisów? Po drugie - http://www.elektroda.pl/rtvforum/viewtop... 4\/3!!
Dzięki :) - właśnie tak wywnioskowałem z pliku *.h i napisałem coś takiego - chyba działa. Dziwi mnie tylko brak konsekwencji w nazewnictwie. Dodano po 1 Dalsze problemy: Nie potrafię nic zapisać do skonfigurowanej pamięci (LCD). Kontroler LCD nie jest fizycznie podpięty ale to chyba nie ma znaczenia. Podejrzewam,że należy załączyć stosowny bank pamięci...
Dziękuje za szybką odpowiedź W swojej aplikacji chciałem wykorzystać jakiegoś stm32 więc bœdę mógł skorzystać ze sprzętowego CRC tmf mógłbyś podać jakie inne sposoby można stosować do sprawdzania integralności ? Słyszałem jeszcze o March C ale to wymaga zapisu komórki więc nie bardzo wg mnie nadaje się do pamięci Flash. Pozdrawiam
Przykładowy linker dodany do cubef4 dla mikrokontrolera np. stm32f439NI ma tak podzielone obszary pamięci: We fragmencie kodu który pokazałeś widać "jak na dłoni", że pamięć flash _NIE_ jest podzielona, więc nie wiem w czym problem... Czy używając pamięci 2MB z dual bankiem mogę zapisać program na obydwu obszarach pamięci bez żadnych dodatkowych kroków...
Ależ jest napisane, żeby robić kalibrację after each power up :) Może kalibracja jest tylko po to, żeby wyeliminować fabryczne wady ? To, co tam się tak naprawdę kalibruje i po co, pozostanie chyba tajemnicą :) Jaki jest czas retencji danych w pamięci flash tych ARMów ? Dane we flashu zostaną na 10-30 lat (minimum), w zależności od temperatury pracy...
2) Jak się zabrać do tego by zrealizować taki zapis do flash (emulowanego EEPROM)? Nie mam pomysłu a niczego wartego uwagi nie znalazłem. Nie trzeba nic wymyślać bo STM ma własny, stosunkowo dobrze opisany algorytm na emulację EEPROM dla całego szeregu procesorów w tym F0. Który jest atrakcyjny, dlatego że w bardzo małym stopniu "zużywa" limit żywotności...
Przecież w kodzie powyżej nie ma żadnego zapisu do Flash... Jest w EE_Init(). Może źle się wypowiedziałem. EE_Init sprawdza czy wymagany na EEPROM obszar pamięci jest "sformatowany" jak nie to go "formatuje", czyli zapisuje na początku dwóch bloków ich jakby identyfikatory. I właśnie ich nie można zapisać. Wygląda to tak: pokaż, w jaki sposób wywołujesz...
Po wymianie pamięci na Am29LV640MB zapis ruszył, jednak zapisuje max 4KB. Każda próba zapisu większej ilości danych kończy się komunikatem : Error: flash write block failed status: 0x0 Error: error writing to flash at address 0x64000000 at offset 0x00000000 Runtime Error: flash1.script:8: in procedure 'script' at file "embedded:startup.tcl",...
Ja tak obecnie robię w STM32, tyle że na tych prockach zapis do pamięci Flash jest bardziej niż prosty, na LPC2xxx jest gorzej, a na Atmelach nie wiem jak jest. Generalnie można wykorzystać sprytne algorytmy "wear leveling" i pamięć jest praktycznie nie do zajechania... pdf: http://www.st.com/mcu/download2.php?file...
Pamięć NAND nie jest mapowana w przestrzeń adresową FSMC. Pamięć NAND wymaga wysyłania jej durnych rozkazów, i jest to ekwiwalentnie pokręcone jak obsługa kart SD/MMC (tyle że prościej). Dodatkowo zapomnij, że będziesz sobie w stanie tą pamięć ot tak zapisywać jak słowo pod wskaźnik do RAMu czy FRAMu. FSMC definiuje ci tylko adresy pod które mozesz...
Chciałbym móc zapisywać do pamięci Flash stringi i później operować na nich tak jak na każdych innych w programie. Stworzyłem kawałek kodu: sprintf(RxBuffer, "Przykladowy string"); FlashAddress = 0x08040000; while (RxBuffer[Index] != NULL) { FLASHStatus = FLASH_ProgramHalfWord(FlashAddress, RxBuffer[Index+0]...
Cześć :) W związku z tym, że w miejscu w którym pracuję istnieje potrzeba programowania pamięci SPI których wsad jest taki sam, stwierdziłem że zbuduję urządzenie, które będzie kopiowało zawartość jednej kości do drugiej. Niby nic, ale z czasem chciałbym zająć się zawodowo projektowaniem oraz programowaniem mikrokontrolerów, więc jako pierwszy projekt...
Po Co emulować eeprom flashem? Może nie rozumiem problemu, ale... skoro jest do zapisania ileś bajtów danych, to wypada po prostu je zapisać . W stm32 jest flash controller i maszynka do CRC, więc aż się prosi po prostu zapisywać dane po kolei , w międzyczasie wrzucając do to CRC->DR, na koniec kazdej strony doklejać CRC. Praktykuję taki zapis i sprawdza...
No to już jakaś pocieszająca informacja, choć raz już miałem problem wprowadzając w programie blokadę SWD i JTAG, musiałem trochę pokombinować z programatorem i przyciskiem RESET, żeby programator załapał kontakt z procesorem przed wykonaniem pierwszych rozkazów. Dodano po 7 Mam pytanie bardziej praktyczne - jak tego używać w ST_Link Utility. W Option...
Mam jeszcze pytanie odnośnie samego działania SWD i programowania... Jeśli BOOT0 = 0 to startuje ten kod który jest we Flash. Jak to się dzieje, że mimo działającego programu OpenOCD potrafi przerwać jego pracę i zacząć wgrywać program ? Jeśli dobrze doczytałem to jest to tylko możliwe jeśli są włączone sygnały SWDIO i SWCLK ? i drugie pytanie: Jeśli...
Nie przeczytałeś noty aplikacyjnej i dalej marudzisz. Po pierwsze zauważ więc, że nie ma obowiązku używania ARMów, Cortexów, STM32 czy ogólnie emulowania EEPROMu - jeśli masz przy tym cierpieć takie katusze, to przecież nie ma sensu męczyć siebie i nas. To jest ten najważniejszy punkt. Jeśli nie sprawia Ci to przyjemności, a wręcz sprawia "egzystencjalny...
Ok więc o co mi chodzi. - Plik wejściowy BMP lub co kolwiek - Format zapisu do LCD RGB 565 (np. zielony to 0x07E0) - Plik wyjściowy np. abcd.c - Obraz zapisywany w pamięci FLASH i wysyłany do LCD. Chodzi mi o zamianę pliku bmp na RGB 565. Dalej już myślę ze sobie poradzę.
Ustawienia zostają w wewnętrznym "EEPROM" - a raczej symulowanym bazującym na zapisie w pamięci FLASH. Producent dostarcza do tego bibliotekę, aczkolwiek jest ona zbyteczna - warto używać bezpośredniogo zapisu do FLASH za pomocą bibliotek peryferii. Zaoszczędzi się trochę miejsca jeśli to wymagane. Ale wracając do zegara, który odpowiada za włączanie...
Potrzebuję w moim projekcie zapisać do Flash w razie gdy by zabrakło prądu tablicę zmiennych: [syntax=c]uint8_t zamienna[20][/syntax]. Zapis najlepiej gdy by na końcu pamięci Flash, by nie kolidowało nic. Próbuję to zrobić przerabiając bibliotekę EEPROM od ST jak i na podstawie notki o emulacji, ale taki syf mi wyszedł, że przy próbie zapisu uC się...
Cześć, wczoraj testowałem program do zapisu danych w pamięci FLASH na STM32F051r8, korzystałem z programu przedstawionym w tym [url=http://www.elektroda.pl/rtvforum/to... Porgram jest pod STMa F103, który ma 128 kb pamięci, a mój tylko 64 no i przez przypadek nie zmieniłem adresu pod który maja być zapisywane dane, a więc pozostał...
Nie, pamięci nie rezerwowałem, nie wyłączałem bo ... nie umiem. Będę pilnie czytał Elektrodę, może się naumię. Ale program zajmuje 186Kb - to taka paga na górze się zostanie wolna. Środowisko CoCox . Z ukłonami Andrzej Korycki
Kurcze, zgłupiałem totalnie, proszę o wytłumaczenie jak to działa. Dla AVR mając np tablicę danych normalnie trafiała do RAM, często wykorzystując go w całości więc dodawało się PROGMEM, lądowała we FLASH (dosłownie zmniejszał się rozmiar zajętej pamięci RAM a zwiększał pamięci FLASH). Do tego używało się gotowych funkcji w stylu pgm_read_byte itp....
Nie wiem co Wy kombinujecie. Taki zapis w Keil'u http://obrazki.elektroda.pl/7469493700_1... http://obrazki.elektroda.pl/7398932100_1...
o tyle nie wiem w jaki sposób zapisać do pamięci FLASH np na i2c wymagane dane. Przydał by się więc system plików na dysku Flash. O ile zrobienie prostego systemu plików nie stanowi jakiegoś większego wyzwania, o tyle należy zwrócić uwagę, że "surowa" pamięć typu Flash ma szereg problemów: - często możliwy jest na niej zapis nawet pojedynczego bajtu,...
Jeśli nie chce używać rejestrów backupowych to zostaje Tobie tylko zapis do flasha. Twój uC ma 128KB flash, chcesz zapełnić całą pamięc programem? Zakłożę się, że nie, więc nie widzę problemu z poświęceniem mniej niż 1% pamięci na tą flagę. Inny sposób to zapis wybranej komórki EEPROMA jakąś znaną wartością po pierwszym zaprogramowaniu uC. Przed każdym...
Chciałem zrobić powtórny zapis dla pamięci flash w procesorze (bo z nieznanych mi jeszcze powodów nie zapisują sie poprawnie mimo braku zgłaszanych błędów programowania) i chciałem skasować tylko niektóre bity w zapisanym wcześniej słowie. Przykładowo mam juz wpisana wartość 0xFFF0 i teraz chce zapisać w tej samej komórce (bez kasowania!) 0xFF80. Teoretycznie...
Write protection jest ustawiany przez tzw. Option Bytes - najłatwiej chyba będzie go (jednorazowo) usunąć poprzez bootloader i programi Flash Loader Demonstrator albo przez JTAGa i OpenOCD - są specjalne komendy do tego celu. W nocie od ST - PM0042 Reading/programming the STM32F10xxx embedded Flash memory - jest opis sposobów odblokowania, u mnie strona...
Zauważyłem dziwną rzecz, W pamięci ROM znajduje się zakładamy prawidłowy kod który jest kopiowany do RAMu. Zauważyłem różnice między kodem we flashu i w ramie która najprawdopodobniej jest problemem (skąd ta różnica jeszcze nie wiem). W pliku *.lss pod adresem 0x20000010 jest prawidłowy skok do system_init(). W pamięci flash pod adresem (0x08000000...
W przypadku pamięci NOR Flash prędkość zapisu jest głównie ograniczona niską prędkością kasowania sektorów. W przypadku pamięci NAND Flash prędkość zapisu jest ograniczona prędkością interfejsu (np. 166 lub 133 MHz) i źródła danych (DMA i system arbitrażu). Interfejs QSPI w F7 i H7 może spokojnie przesłać przynajmniej 10 MB/s w krótkich seriach lub...
Zrobiłem coś takiego: - buforuję transmisję do STM32 (10 ramek * 400B = 4KB) i wtedy wykonuję zapis Niestety zapis na kartę 4KB trwa więcej niż 1 sekundę (raz na kilka minut) i mam overrun transmisji do STM32. A nie myślałeś, żeby łączyć się z kartą przez DMA? Wówczas odpalasz transfer tych 4KB i o nim zapominasz, idzie sobie asynchronicznie do programu....
Witam!!! Piszę program w języku C pod uC STM32F105 Zastanawiam się na rozwiązaniem takiego problemu a mianowicie: Chciałbym zdefiniować stałą, która będzie umieszczona w pamięci programu, a więc trafi do pliku .hex, który ładowany jest do flasha. Stałą będzie tablica znaków zawierająca poszczególne litery tekstu np: "Autor: Andrzej Brzozka" w programie...
dziekuje za wskazówki flash wydaje się być odblokowany ale nie mam pojecia dlaczego mój skompilowany program zajmuje aż tak duzo pamieci nie mieści się we flashu procka... (demko Freddiego dla STM32 blink_led) http://obrazki.elektroda.pl/4569227600_1... http://obrazki.elektroda.pl/4376227800_1... rozłączyłem połączenie...
...Ale tylko 30DMIPS :] Za mało, niestety... >tmf To akurat, że sporo ARMów nie ma wyprowadzonej magistrali, jest zaletą. Nie zawsze chce się uzywac 80 lub 100pin potwora. Dla porownania, taka mega32 tez zewn. magistrali nie ma... Zasadą jest, że powinno się dobierać procesor do zastosowania , a nie dobrać na pałę, a potem narzekać... Poza tym - na...
Witam, zwracam się do Was o pomoc, w jaki sposób zrealizować taki problem: Mam dwa pliki z oprogramowaniem na zewnętrzny układ. Zewnętrzny układ trzeba zaprogramować tymi firmware'ami za pomocą SPI podczas każdorazowego uruchomienia urządzenia. Docelowo będzie mikrokontroler np. STM32F103RCT6 ze względu na 256 kB pamięci FLASH. Czyli algorytm będzie...
NOP-y nie służą do tego w tych procesorach. To nie tak jak w AVR-ack. NOP jest od razy wywalany z pipelin-a i może nie spowodwać żanego opóżnienia. W takich zaawansowanych peockach jak H7 (M7 core) przy czytaniu 128 bitów z FLASH nawet 4 mogą nie spowodować żadnego opóźnienia. NOP-ów używa się do "paddingu". Używaj innych instrukcji do tego np barierowych...
Powiąż kod z nr seryjnym procesora. jest to jakieś rozwiązanie. W ARM można iść dalej. Część kodu może być ładowana z zewnętrznej pamięci, na zaszyfrowanej 1-Wire do ram uC i tam wykonywana. Problemem może być zmuszenie kompilatora do takiego zachowania (skompilowanie kodu pod określonym adresem w ram). Prościej, można dodatkowo, poza ID uC powiązać...
Chwilowo nie mam dostępu do urządzenia żeby podłaczyć debuger, moge korzystać wyłacznie ze zrzutu FLASH. Co do tego najmłodszego bitu to ja nie widzę w specyfikacji czy on decyduje czy procesor jest w stanie Thumb 16 bit czy Thumb 32 bit. Bardziej bym przypuszczał że to zaszłość z procesorów ARM z trybami ARM/Thumb. Według specyfikacji starych procesorów...
OpenCV uruchamiany jest głównie na wysokowydajnych platformach obliczeniowych czy mocnych mikroprocesorach, ale pakiet ten może wykonywać kilka rodzajów aplikacji do przetwarzania obrazu na prostych mikrokontrolerach. Przetwarzanie obrazu stało się częścią naszego życia. Nikogo nie dziwi rozpoznawanie twarzy w smartfonie czy wykrywanie pasa ruchu przez...
Ciekawostka: w ATTINY1614, 1616 i 1617 jest atomowa. A jakim to cudem jezeli: attiny nie ma bitbandingu. avr8 nie ma instrukcji jednocześnie czytajacych i zapisujących w pamięci Takim cudem: https://obrazki.elektroda.pl/2732534300_... Ma dużo więcej: Kontroler przerwań (2 poziomy, ,NMI) system zdarzeń mapowanie portów DAC 2 x ADC jak...
Jak procesor wykonuje kod już nie ma tam linkera, jak przekopujesz do tablicy kod działającej funkcji i ją wywołasz to ona się wykona, jak będzie w niej jakiś błąd to procesor to wyłapie Tak, tylko linker łączy pliki i tak powstaje kod maszynowy. Więc według Ciebie mogę wziąć funkcję z innego projektu (innej kompilacji) i też ma się poprawnie wykonać?...
To uporządkujmy: 1) Przede wszystkim chodziło mi o wskazanie kierunku jak można pisać do pamięci Flash z programu, dziękuję koledze tmf za wskazówki 2) Opisałem do czego jest mi to potrzebne, padło pytanie o liczby, więc odpisałem trochę na szybko i liczby podałem od czapki, co spowodowało ogólny zamęt. Mam wrażenie, że czytając na szybko nie zrozumiałem...
Przykład na STMa: http://www.st.com/en/embedded-software/s...
0. Konfiguracja FMC wymaga poprawy. Wszystkie czasy masz ustawione domyślnie, więc interfejs niepotrzebnie czeka z wykonaniem każdej operacji. Popatrz na parametry MEMxSET, MEMxWAIT, MEMxHOLD i porównaj z tym co może pamięć. Przykład: MEMxSET jest ustawiony na 0xFC, czyli jakieś 252 x 4,63ns = 1,16us. Pamięć potrzebuje około 20ns -12ns = 8ns. Dostosuj...
Bzdura. Do lock/fuse/itp są zupełnie inne komendy. Programowanie tego wygląda kompletnie inaczej niż flasha. Nie jest to żaden "oddzielny adres". Chyba nie do końca masz rację. Zrobiłem taki eksperyment. Wziąłem STM32L152RE (bo ma EEPROM) i spreparowałem jeden plik hex z trzema obszarami. Flash (od 0x08000000, blink jakiś), EEPROM (od 0x08080000, tekst...
Próbuję napisać obsługę pamięci AT45DB041D. Komunikacja z układem jest, ale zapis i odczyt nie działa poprawnie. Dane w pamięci zapisywane są w dziwnej kolejności. Podczas odczytu pokazuje tak jak bym odczytywał strony 0,2,2,6,4,10,6,14,... [syntax=c] uint8_t flash_busy() { uint8_t status; cs(); spi_put(0xd7); status=spi_get(); cd(); if(status&&0x80)//gdy...
Nie, kwarc nie jest potrzebny. STlink dostarcza wszystko co potrzeba,zasilanie i sygnał. Do prostych, podstawowych testów nie jest potrzebne zasilanie zewnętrzne. W pierwszej fazie działań nie ma potrzeby mierzyć żadnych napięć na pinach oprócz tych z zasilaniem, znakomita większość peryferiów przy starcie jest wyłączona, przeciwnie niż w takich AVR....
Rdzeń się wtedy zatrzymuje, oczekując na zakończenie operacji na pamięci flash. Chyba że kasujesz część programu, no to wtedy jest słabo [;
4,7k jest wyliczony raczej dla 5V, DS18B20 jak i STM32 może działać na 3.3V i wtedy proporcjonalnie to już jest ~3k. A jak zasilasz układ czujników jednak 5V to tym gorzej dla układu. Nie mam styczności z MacOS, sprawdzałeś to: http://macappstore.org/stlink/ ? Poza tym przy wgraniu bootloadera trzeba pamiętać o zworkach, bo się kasuje, może uległeś...
Hard Fault jest podczas czytania czy podczas zapisu? Jakoś trudno mi uwierzyć w błąd podczas czytania. A próbowałeś rozbić operację na odczyt do zmiennej tymczasowej i zapis do rejestru? Czy jesteś pewien, że zapisywana wartość jest zgodna z parametrami pracy pamięci vs. częstotliwość taktowania rdzenia?
Masz rację. Czyli ostatecznie błąd jest w tym szablonie dlatego nie bede sie nim zajmował. A takie mam pytanie jeszcze czy OpenOCD w tym pliku *.cfg ma defaultowo zapisane do jakiej pamięci ma wgrywać (w tym przypadku flash) i pod jaki adres? Zmienić da się to tylko za pomocą przełączników OpenOCD?
Witam, pozwolę sobie na wykopaliska archeologiczne, ale myślę, że to może się jeszcze komuś przydać. Większość przypadków Hard Fault podczas działania DMA w STM32F1 powstaje przez błędną konfigurację kanału DMA przy użyciu biblioteki standardowej. Błędny fragment kodu: hlayer.c:167:43: warning: assignment makes integer from pointer without...
https://obrazki.elektroda.pl/3479042800_... Efektem nocnych dłubanin jest sterownik taśm RGB/RGBW. https://obrazki.elektroda.pl/6143799100_... https://obrazki.elektroda.pl/6487351400_... https://obrazki.elektroda.pl/8955729600_... Głównym przeznaczeniem jest sterowanie oświetleniem...
Wybierz jedną z poniższych opcji: 1. używać do tego celu "option bytes" 2. współczynniki zapisywać na specjalnie przeznaczonej do tego stronie pamięci flash, której bootloader nie kasuje, a firmware nie używa 3. zapisywać te wielkości w pamięci podtrzymywanej bateryjnie (nie zawsze dobra opcja)
Chciałem się jeszcze zapytać, czy nucleo-F767ZI będzie odpowiednią płytką bazową do takiego projektu Trudno powiedzieć... Problem jest zarysowany dość ogólnie. Sam mikrokontroler to dość wydajna obliczeniowo jednostka i raczej powinna bez problemu sobie z takimi zadaniami poradzić. Mam nawet wrażenie, że jest nieco nadmiarowa a temat można by pociągnąć...
A po co chcesz do flasha zapisywać współczynniki stałe zakładam?
STMicroelectronics to jeden z najpopularniejszych producentów mikrokontrolerów w Polsce. Swoją renomę zawdzięcza nie tylko udanym konstrukcjom, ale i wdrażaniu najnowszych technologii oraz bogatej ofercie. W niniejszym artykule prezentujemy niektóre z ostatnio wprowadzonych układów ST oraz wybrane ciekawe modele, które od jakiegoś czasu cieszą się dużą...
Wystarczy jeden bootloader w pamięci Flash, obecny tam na stałe. Kasowanie całej pamięci Flash w nadziei, że przez parę sekund nie padnie zasilanie i zdąży się zapisać pamięć od nowa nie za dobrze rokuje dla niezawodności.
stm32 zapis flash zapis pamięci flash zapis flash stm32
dług kabel audio ekspres delonghi odwapnianie sterowanie wycieraczek astra
teltonika konfiguracja sprzedam tp118
Niewidoczny wyświetlacz w nawigacji Power Max - przyczyny i rozwiązania Boxer 2.2 Diesel 2018 - trudności z odpalaniem i błąd czujnika wałka rozrządu