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...
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"...
No tak, ale jak jest z szybkością odczytu do 24MHz gdy porównujemy te pamięci? Dokładnie tak, jak napisano w RefMan.
W wyszukiwarce wpisz "stm32 eeprom emulation".
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...
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...
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!!
to tablicy unsigned charow w flashu stm32 juz nie mozna trzymać? sprawdzilem na tablicy uint8_t zarówno zapis jak i odczyt działa bez zarzutów. W takim razie nie wiem co mogło być przyczyną problemów w przypadku pojedynczych zmiennych. To, że ci nie działa tak jak trzeba to jest wina twojego softu, nie flasha ani kompilatora. Sprawdź jak zmusić GCC...
Zdecydowanie w rejestrze SR procesor zapisuje wszystko co go boli a również poprawność operacji. Zapis do flash'a jest dość mocno "strzeżony" i jeżeli pominiesz coś po drodze to się skończy odmową ( a czasem procesor może "polecieć"do wyjątku). Akurat w przypadku obsługi tej pamięci można podejrzeć biblioteki standardowe ST. A tak na marginesie to bez...
No to wyjątkowo słabo tą dokumentację przeglądałeś (; Na pierwszej stronie manuala masz coś takiego: For information on programming, erasing and protection of the internal Flash memory please refer to: ● PM0075, the Flash programming manual for low-, medium- high-density and connectivity line STM32F10xxx devices ● PM0068, the Flash programming...
Witam, Używam openocd, gcc, eclipsa i chciałbym za każdym razem gdy programuje nie kasować dwóch ostatnich stron pamięci (mam tam zapisaną np. kalibracje touch screena). domyślam się, ze jest to związane z komendą stm32x mass_erase 0 w skrypcie do programowania.... z góry dziękuje za pomoc. Krzysiek
Witam. Przejrzałem prawie całe google i nie potrafię znaleźć dlaczego nie działa mój prosty kod. 1. Wpisuje ręcznie przy wgrywaniu programu losowe dane w komórce 0x08014310 2. Program do kasowania uruchamiam 3. Sczytuję program z mikrokontrolera i wpisane losowe dane nadal są. Kod programu: [syntax=c]FLASH_Unlock(); //FLASH_OB_Unlock(); FLASH_ClearFlag(FLASH_FLAG_EOP...
Witam ,Posiadam pilot od łódki Viking Boat. Podczas próby wgrania oprogramowania przez pomyłkę została usunięta cała pamięć z układu. Mam pytanie: Czy istnieje możliwość zgrania całej zawartości flash z układu STM32L dawcy i wgrania go ponownie? Nadmienię, że posiadam kopie plików BIN i HEX, ale po próbie ponownego wgrania programem STM32 ST-LINK UTILITY...
Robię projekt na procesorze Atmega328p. Mam już zrobioną całą płytkę PCB, wszystko polutowane i jestem w trakcie końca pisania programu. Nie spodziewałem się, że program będzie musiał być taki rozbudowany i aktualnie zajmuje 90% całej pamięci. Są jakieś uniwersalne sposoby jak optymalizować programy, albo w jakiś inny sposób zaoszczędzić trochę miejsca?...
Chodzi mi o umieszczeni np: static const uint8_t myArray[] = "taki sobie string"; we FLASH ale gdy się nigdzie tego nigdzie nie użyje. Żeby kompilator umieścił to we FLASH to muszę to gdzieś użyć.
Witam, Potrzebuje pomysł na zgrabne programowanie zewnętrznej kości EEPROM podpiętej przez I2C z STM32F103RB. Chcę żeby to się odbywało mniej więcej jak to ma miejsce w AVR, czyli jeżeli programuje procesor to i EEPROM. W STM na początku programu mam funkcję która programuje mi EEPROM domyślnymi wartościami, ale wiadomo że tak nie może zostać na stałe,...
Witam Czy ma ktos moze pomysł w jaki sposob wykorzysac pamiec programu w Atmedze128 do zaladowania danych. Chodzi o uzycie okolo 60k pamieci program flash do zaladowania plikow z danymi uzywanumi w programie i najlepiej aby odwolanie bylo poprzez jakas zmienna. Czy ktos wie jak lub robil cos takiego w srodowisku AVRStudio i WinGCC? Dzieki badzo za wszelkie...
Dzień dobry Po wielu dniach podchodzenia jak do jeża zabrałem się na serio do zapisu paru danych (siedmiu liczb uint32_t (słownie 7) ) do pamięci flash. Ponieważ bez Was by się to nie udało postanowiłem się podzielić moim "osiągnięciem". Muszę zapisać jasność ekranu i skalowanie ekranu dotykowego. Wyszło tak : [syntax=c]/* * 6 wspolczynnikow kalibracji...
Z racji że STM32 ma liniową pamięć oraz możliwość zapisu do flasha danych z poziomu aplikacji postanowiłem wykorzystać go do symulacji eeprom. Zapis danych do flash działa OK. Natomiast mam problem z zainicjowaniem struktury pod konkretnym adresem. const D DFLASH __attribute__ ((section(".variables&q... = { {{40,20},26},...
Witam. Na początek trochę poopowiadam. W pracy pewien człowiek zajmował się projektem części urządzenia tj płytki z wyświetlaczem tft , z prockiem stm32f103zet6 i pamięcią nand hynixa . Zwolnił się i ja przejąłem "robienie" tego. Wyświetlacz działa i wszystko jest ok ,umiem robić pewne potrzebne modyfikacje, ale mam pewne problemy. Do tej pory wrzucanie...
Niezależnie od tego, co z nimi potem robisz, najwygodniej czytać je zwyczajnie przez adresy po jednokrotnym ustawieniu odwzorowania QSPI w przestrzeni adresowej, a nie poleceniami odczytu pamięci. W EP możesz kupić elektronicznie dowolny numer.
Ależ jest i to znacznie lepszy mechanizm bo zabezpieczyć procesor można zarówno programatorem jak i z poziomu programu a odbezpieczenie wymaga skasowania całej pamięci i odblokowanie nie nastąpi do momentu kiedy cała pamięć nie będzie wykasowana (algorytm sprawdza wszystkie komórki - zabezpieczenie przed trikiem z wyłączeniem zasilania po rozpoczęciu...
Nie mogę sobie poradzić z odczytem pamięci która jest podpięta pod stm32discovery. Funkcja którą mam odczytuje jedynie 1 stronę z pamięci NAND. Patrzyłem na przykłady które są dołączone do stlink utylity lecz przykładu do NAND nie znalazłem. Może ktoś posiada źródła do przykładu z kością NAND512W3A lub podpowie co dodać do mojej funkcji żeby czytała...
Zacznijmy od tego, że OpenOCD nie uruchamia się poprawie, wiec warto byłoby dochodzić do sprawy "krok po kroku". Przede wszystkim plik lpc2xxx.cfg NIE JEST przeznaczony do uruchamiania bezpośredniego, należy ZAWSZE użyć któregoś z konkretnych plików. Tymczasowo możesz użyć pliku lpc2148.cfg, ale najlepiej przerób go sobie na lpc2146 - komentarze w środku...
Widać, że coś się odczytało i jest czysta pamięć. Nowy układ nie będzie zabezpieczony przed odczytem. A jeszcze dopytam, z tego starego STM32 zero szans żeby coś odczytać? Jedyne co o nim wiem że robi zwarcie pomiędzy 3.3V a GND. Jeżeli jakiś np. port jest uszkodzony nie oznacza to, że na 100% rdzeń się uszkodził i interfejs do pamięci flash również....
Aktualizacja z września 2025: zobacz tutaj, aby uzyskać szczegółowe informacje na temat konwersji STM32 przez UART zamiast J-Link (tj. J-Link nie jest wymagany) https://www.elektroda.com/rtvforum/viewt... (dzięki (at)max4elektroda!) zobacz tutaj, aby uzyskać wyższą wersję przekonwertowanego oprogramowania CK-Link Lite dla STM32...
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.
Znalazłem kod obsługi wyś 7-segmentowego, pozmieniałem rejestry pod swój mikro procesor (ATmega32). Tylko mam problem z linia " static const uint8_t __flash DIGITS To standardowy błąd eclipse i pluginu do AVR, nie wpływa ten błąd na kompilację, jedynie na "podkreślanie" składni w Eclipse. Rozwiązanie tego problemu znajdziesz m.in. w tym wątku: https://forum.atnel.pl/topic15543.html#p...
Czy da się zrobić tak, aby wszystko działało, ale aby pamięc nie była widziana? Jedno drugiemu przeczy. Ma działać debuger a odczyt pamięci ma być niemożliwy? Po co więc zabezpieczenie przed odczytem, skoro podłączając debuger można odczytać pamięć? W drugą stronę, skoro nie da sie pamięci odczytać, to jak ma to zrobić debuger?
jakąś pamięć na ustawienia Możesz ustawienia przechowywać w NVS (wydzielona partycja we flash). Jest to o tyle wygodne, że konkretny obiekt do odczytu/zapisu jest szukany wg klucza i nie trzeba się martwić o jego konkretną lokalizację. https://docs.espressif.com/projects/esp-...
Yup. O wiele lepszy będzie jakiś odczyt z pamięci czy coś takiego. 4\/3!!
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...
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...
Podczas zapisu do Flash w uC, które mają jeden bank Flash, próba odczytu powoduje zatrzymanie procesora i poczekania do końca zapisu. Nie jest to problemem przy obsłudze przerwań UART, bo czas zapisu jest krótszy, niż czas transmisji znaku przez UART.
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...
Szanowni, Napotkałem na problem z zabezpieczeniem pamięci Flash przed odczytem. Pracuję na płytce testowej STM32F103 Nucleo, piszę w C z użyciem SPL, edytor: System Workbench for STM32. Mianowicie, po zaprogramowaniu procesora za pomocą ST-LINK Utility v4.1.0 swoim kodem, w opcjach oprogramowania Target->Option Byts ustawiam opcję Read Out Protection...
Jak jest zablokowany to nie odczytasz. kontroler potrzebował odblokowania, i nawet coś odczytuje. Jeżeli możliwe było odblokowanie to znaczy ze był RDP Level 1, którego zdjęcie powoduje skasowanie pamięci - więc i tak nie będzie co czytać - bo po co czytać pustą pamięć FLASH. Wiadomo, że tam są same 0xff
Nie mam żadnej płytki z STM32F072CBxx, dlatego sprawdzić na żywym nie mogę. Odczyt rejestru nie może generować błędu, jeżeli projekt jest skompilowany dla tego właśnie mikrokontrolera. Jeżeli błąd jest podczas odczytu, a projekt zawiera definicjami rejestrów dla stm32f072xb, to sprawdziłbym co jest podłączone do programatora. Czy to na pewno jest STM32F072CBTx?...
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ę,...
(at)JacekCz Przejrzyj ofertę pamięci dataFLASH, są pamięci z intgefejsem SPI (obudowy zazwyczaj SO08) lub równoległym (większe obudowy). Odczyt sekwencyjny jest szybki (do kilkunastu MB/s), zapis odbywa się blokami o stałej długości dla danego typu pamięci i jest raczej wolny (do kilkuset kB/s przy zapisie do wcześniej skasowanych bloków). Masz też...
Występuje wyjątek bo nastepuje dostęp RW do pamięci flash ktora jest tylko do odczytu a wszystkie stałe umieszczane są bezpośrednio we flash. Najprościej do funkcji dodać jeszcze jeden argument ze wskaźnikiem na bufor wyjściowy. [syntax=c]char *STRING_DeleteStr(char * dst, const char *string, const char *del, u8 mode)[/syntax]
Kontaktował się ktoś z ST w tej sprawie? Ciekaw jestem co oni na to? Mają zamiar to poprawić, czy będą udawać że nic się nie dzieje? Pisałem już wcześniej, że z ST się kontaktowałem i razem doszliśmy do wniosku, że przyczyną zakłóceń jest odczyt z pamięci flash. Teoretycznie gdyby napisać program działający z RAMu powinno być ok, ale już nie miałem...
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]...
To, w jaką obudowę producent układ "upchnie" nie ma żadnego znaczenia. Ma znaczenie i to nie małe. Jak by nie miało to robić różnicy to producenci nie robili takiej różnorodności bo to dla nich koszty. Obudowa układu i rodzaj może zależeć od przeznaczenia modułu, sposobu chłodzenia i innych aspektów konstrukcyjnych których możesz nie rozumieć. Choć...
Bazując na https://obrazki.elektroda.pl/4178510200_... https://obrazki.elektroda.pl/8769073400_... main.c [syntax=c] /* Virtual address defined by the user: 0xFFFF value is prohibited */ uint16_t VirtAddVarTab[NB_OF_VAR]={0}; uint16_t Virtval[NB_OF_VAR]={0}; uint16_t VarValue= 0; int main(void) { HSE_init(); //systick_init();...
W moim kodzie jest (w zasadzie będzie bo to testy na razie) dużo skoków i odczytywania stałych z pamięci. Rozumiem działanie waitstat-ów, których zadaniem jest "dopasowanie" wolniejszej pamięci Flash do szybkiego rdzenia, pobierającego dane z większą szybkością niż ta na to pozwala. Niestety dalej nie bardzo rozumiem działanie instrumentu prefetch...
Przeczytałem dział o RDP. Widzę, że są trzy poziomy zabezpieczeń. Level0 -brak; Level1 - zabezpieczony przed debugowaniem i odczytem z wew. bootloader'a oraz przy pracy z ramu Level2 - całkowicie zabezpieczony, brak możliwości przejścia na niższe poziomy zabezpieczeń, wyłączony JTAG i SWD. Czy to znaczy, że w Level2 nie będę wstanie w ogóle już zmienić...
wiem że niektóre uC potrzebują kilku taktów zegara aby ustawić stan logiczny na porcie. W starszych LPC opartych o ARM7 porty IO były bardzo wolne... W nowszych LPC21xx poprawiono to. Chciałem się dowiedzieć jak w tej kwestii wypadają STM32 (przy różnych zegarach) i chciałbym mieć porównanie do Atmegi8 bo na razie takie programuje. Zależy mi na szybkim...
Witam Próbuje od jakiegoś czasu zmusić jeden procesor do zaprogramowanie części pamięci w drugim za pomocą protokołu swd. Bazowałem na początku na dokumentacji odnośnie EFM32 (jedyny cortex m3 który znalazłem w miarę opisany). Niestety zatrzymałem się na etapie, możliwości odczytu, zapisu do pamięci ram oraz odczytu z pamięci flash. Niestety nie jestem...
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...
http://obrazki.elektroda.pl/7258579400_1... Witam. Chciałem dzisiaj przedstawić kolejny projekt z cyklu "inni mają - mam i ja" ;) Tym razem jest to miniaturowy sterownik ethernetowy - " uWebServer ". Układ zbudowany został w oparciu o mikrokontroler Cortex-M3 - STM32F103C8T6, do tego kontroler ethernetu "znany i lubiany" - ENC28J60. Całość...
Witam, Do poruszenia tego tematu zachęcił mnie sąsiedni wątek, w którym kolega pisze, że wyrabia się z kodem wynikowym poniżej 32kB (ograniczenie darmowej wersji Keila). A że nie chcę mu zaśmiecać wątku, to otwieram nowy....;-) Sprawdziłem swój "szkieletowy" program, w którym zaimplementowana jest póki co obsługa kilku peryferiów (klawiatura 4x4, wyswietlacz...
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żą...
Bzdura. Do lock/fuse/itp są zupełnie inne komendy. Programowanie tego wygląda kompletnie inaczej niż flasha. Nie jest to żaden "oddzielny adres". Jak pisałem, zażyj sobie magnezu, napij się czegoś mocniejszego lub użyj innej metody, która cie uspokaja zanim coś napiszesz. Bo niestety bzdury sam opowiadasz i wykazujesz się nieznajomością toolchaina...
Witam, Po paru dniach ślęczenia udało mi się - tak myślę :) , skonfigurować rcc na 72MHz. : void rcc_init(void) //RCC init włączający procesor na 72MHz { RCC->CR|=0x1; //wlacz HSI wewnętrzny oscylator, włączany jako pierwszy po zasilaniu. while(!(RCC->CR&0x2)); //poczekaj na HSI sprawdza czy HSI się włączyło RCC->CFGR|=(0xF<<18);...
To chyba nie jest jakiś wielki problem. Ten manewr chyba stosowany jest w niektórych PIC-ach, które mają fabrycznie wgrywane dane kalibrujące oscylator. Programator najpierw czyta bajt z procesora, potem kasuje pamięć, na końcu programuje wszystko włącznie z uprzednio odczytanym bajtem. Pod warunkiem, że te dane są zawsze w tym samym miejscu. Zresztą...
Witajcie, właśnie się bawię pamięcią Flash w STM32F0DISCOVERY (chcę się nauczyć obsługi). Efekt? Chyba zablokowałem możliwość zapisu... Kod (dopiero się uczę, więc komentarze mogą zawierać błędy): [syntax=c]#include "stm32f0xx.h" #include "stm32f0_discovery.h" int main(void) { RCC -> AHBENR |= RCC_AHBENR_GPIOCEN;//LEDY GPIOC -> MODER |= GPIO_MODER_MODER8_0...
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"....
Na płytce z STM32F207ZG ustawiłem BusTurnAround = AddrSetup = 0, AddrHold = 1, DataSetup = 3, FSMC clock = 60MHz. Dostosowałem Twój kod (mam pamięć w innym banku) i nie zwiększają mi się liczniki errorX. Sprawdziłem kilka razy. Którego trybu używasz (A,B,C,D)? Czy masz wyzerowany bit EXTMOD? Czy wyzerowane są pozostałe bity (te które dotyczą pamięci...
Mam również problemy z układem STM32F030 (obudowa TSSOP20). Główny problem polega na tym, że ST-Link (wykorzystuję ST-Link na płytce discovery) łączy się prawidłowo z układem ale nie programuje go. Nie działa również programowanie option bytes. Za każdym razem wyskakuje błąd weryfikacji już na pierwszym adresie flash (0x08000000). Natomiast odczyt pamięci...
stm32 flash odczyt odczyt flash stm32 pamięć flash stm32
nawigacji becker sansui stereo wymiana bęben konica
silnik magnetowidu silnik magnetowidu
Przedwzmacniacz Sony TA-E2000ESD nie włącza się Schemat elektryczny silnika zimnego powietrza Jaguar S-Type