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...
Ja w takich przypadkach stosuję metodę którą na swoje potrzeby nazwałem "split objects". Obiekt u mnie składa się po prostu z dwóch części - stałej i zmiennej. Zwykle "główny" obiekt jest stały, a ten "zmienny" fragment jest podrzędny, jednak są sytuacje w których robię to odwrotnie, głównie wynikające z polimorfizmu lub dlatego że łatwiej/lepiej jest...
Trzeba właczyć w opcjach kompilatora długie skoki. Ewentualnie trzeba skakać do funkcji w RAM przez wskaźnik, bo to zawsze wykorzystuje długie skoki. P.S. Na Cortex-M3 funkcje z RAM działają WOLNIEJ niż z flasha, to nie ARM7. 4\/3!!
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...
Użyłem flash
No ale jakto? Wszędzie piszą, że BOOT0 powinno być podciągnięte do masy podczas startu procesora żeby odpalił się z pamięci flash :/
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...
Jeśli tablica jest zainicjowana, to jej wartość początkowa musi być we Flash. Jeśli nie ma atrybutu const, to jest kopiowana z Flash do RAM przy starcie programu. Jeśli ma const - zostaje we Flash. Proste?
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...
Aby wyjaśnić Ci Twój problem, podaję Ci metodę "czytania" typów zmiennych, który wyjaśnia wszystko. Jest kilka zasad: 1. Czytanie zaczynamy od nazwy zmiennej 2. Czytamy w prawo dopóki nie dojdziemy do "końca", po osiągnięciu "końca" czytamy w lewo od nazwy zmiennej 3. Obowiązują nawiasy, które są "lokalnymi końcami" Tak więc: const char * const l_wartosc[]...
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...
Możesz przekonwertować plik na tablicę C (jest wiele narzędzi, poza tym to max kilkanaście linii w większości języków). Albo wygenerować od razu plik obiektowy i zlinkować z programem. arm-none-eabi-objcopy -I binary -O elf32-littlearm --set-section-flags .data=alloc,load,data,readonly --rename-section .data=.rodata plik.bin plik.o Dodaj plik plik.o...
płytke NUCLEO-F303RE (STM32F303) Najszybciej chyba, moim zdaniem, było by wejść w ten czujnik przy pomocy MBED. Twoja płytka jest obsługiwana pod MBED , jest tam biblioteka do VL53L0X (firmowa od STM, w C++) i są przykładowe aplikacje, w tym proste demka. Np: https://developer.mbed.org/teams/ST/code... Jeśli masz tylko czujnik (a nie...
Natomiast na CrossWorks Rowley'a i tym samym sprzęcie mam ~14x szybciej: http://obrazki.elektroda.net/56_12863564... Ciekawostka: > This test was caused by curiosity which started after reading one > > forum post in which someone describes that in CrossWorks when using > > the same JTAG he achieved almost 150kB/s, over 14x faster than OpenOCD....
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...
Ten układ nie ma fabrycznego bootloadera USB. Przez konwerter USB-UART: PA10 do TxD, PA9 do RxD, PB2 do masy, BOOT0 do VDD. Program STM32 Flash Loader Demonstrator od ST. Albo przez SWD/JTAG, np. ST-Link i program ST-Link Utility.
Wszystko stanie się jasne, jak poznasz sposób na "czytanie" typów zmiennych. 1. Zaczynasz od nazwy 2. Idziesz do "końca" w prawo 3. Następnie do "końca" w lewo 4. Nawiasy mogą wyznaczać "lokalne końce". Tak więc Twoja zmienna const uint8_t *Tab[3] to trzyelementowa tablica wskaźników na stałe uint8_t Jak sam widzisz nie da się wyczytać, że sama tablica...
Przydałoby się jeszcze 2 rzeczy: 1. zmniejszyć FLASH o odpowiednią wartość, tak aby na siebie nie najeżdżały - możesz od LENGTH odjąć ile tam potrzeba ... LENGTH = 128k - XXX 2. Dodać profilaktycznie } > VAR AT > VAR Tym sposobem skrypt linkera będzie w 100% poprawny. Jeśli nadal będą jakieś błędy, to już nie po stronie linkera. Jeśli dalej coś nie...
Ktoś ci pomoże, jak olejesz w cholere durną bibliotekę FWlib. Nikt, kto zawodowo pracuje z STM32 nie bawi się w to :] Dlaczego twój init SPI nie wygląda mniej więcej tak: wejścia ? To zakrawa o przestępstwo z karą do 5 lat więzienia...:/
Ja mam tak: __attribute__ ((section(".bootloader&... int program_page(unsigned short *data, unsigned int adr) {... } i linker: .bootloader 0x08000000+128K-1K : { *(.bootloader) } i działa
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.
Np. STM32F100C8T6B. Ogólnie stm32 są "bardzo kompatybilne". Ważnie żeby trzymać się jednej grupy np stm32f1xx (nie zmieniać typu rdzenia (rodziny) np. z m3 na m4 lub m0 bo mają nieco inne rejestry konfiguracyjne).
Nie wiem dlaczego to nie działa. Mam oryginalnego j-linka, chińskiego j-linka, i ulinka2, i na każdym da się programować, debuggować i kasować różne STM32 bezzonkowo. Keil 4.03, MDK-ARM 4.10. Nie podoba mi się RAM for algorithm. W STM32 RAM zaczyna się pod adresem 0x20000000 a nie 0x10000000, to spora różnica... Popraw to, i powinno chodzić. Loader...
To od razu zapytam, czy przy STM32F103VC można obsłużyć pamięć nand flash?
uC zapisuje za każdym razem 64 bajty danych do pamięci flash
Proszę bardzo.
Flash musisz kasować blokami, to nie działa jak EEPROM, że możesz skasować pojedynczą komórkę. Gdzieś widziałem przykład emulacji pamięci EEPROM za pomocą pamięci flash... O, już wiem, w książce p. Lucjana Bryndzy o ARMach 9 jest przykład, który wykorzystuje 2 bloki pamięci flash. Jest tam zrobione wirtualne adresowanie itp. Ale można zrobić też tak,...
1. Nie słyszałem żeby dało się tak zrobić, głównie ze względu na przemapowanie przerwań. Jednakże mógłbyś zaimplementować sobie taki skok pomiędzy aplikacjami (wliczając w to przemapowanie przerwań) po naciśnięciu przycisku itd. Jednak jeżeli ładujesz do flash bootloader a potem aplikację to nie licz na to że będziesz mógł debugować obie na raz. Ładujesz...
Skoro można kopiować z RAMu do RAMu to czemu nie do FLASH?
zobacz co masz w offsecie 0xE0 w tablicy wektorów (tej we flash)
Czy to oznacza że nie ma potrzeby uruchamiać bootloadera w RAM, gdy będę kasował/zapisywał na sektorach na których nie ma kodu bootloadera? Uruchomienie kodu w RAM jest konieczne tylko gdy chcesz aktualizować kod samego bootloadera. Jeśli nie masz tego w planie, to nie jest Ci to potrzebne i cały bootloader może być w pamięci flash. 4\/3!!
Właśnie generacji z Excel'a chciałem uniknąć bo jak napisałem będzie to nie wygodne przy dużej liczbie elementów tablicy. Musi być wyliczony cały sinus ponieważ operacje które muszą się wykonać jak najszybciej. Jak na razie zostaje tylko Excel. Bądź Pan Pro-Inżynier, użyj Pan fid = mopen('probki.c', 'w'); if (fid == -1) error("upss...
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ż....
Dzięki DXFM za odpowiedź :) Tzn. wiem i potrafię zadeklarować tablicę na sztywno w pamięci FLASH - z tym jest wszystko ok. Ale mnie chodzi o coś takiego: mam pewną funkcję, która w swoim argumencie ma zmienną - może ona być modyfikowana przez użytkownika (coś w stylu sin(a*x), gdzie a jest tą zmienną od usera). Teraz... wyliczam np. 512 wartości funkcji...
No jasne, w manualu nie napisali, że to Flash EEPROM... żartujesz! A Ty, ponieważ tego nie wiesz, zatytułowałeś wątek "embedded Flash".
No to posłuchajmy merytorycznych argumentów przemawiających za dodatkowymi elementami, większą płytką, większymi kosztami montażu i dłuższym kodem I2C, zwłaszcza w przypadku F1xx z małymi stronami pamięci Flash.
Witam, W jaki sposób mogę do flash STM32 "wgrać" plik skompresowanego obrazka .jpg? Zastanawiałem się jak to można dołączyć do Atollica, ale nie znalazłem rozwiązania, ponieważ wszędzie piszą, że trzeba konwertować do pliku .txt. Ale programy do takiej konwersji zamieniają na .bmp i dopiero do .txt. Pozdrawiam.
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...
Pomijając sensowność używania sprintf do SKOPIOWANIA stringa do jakiejś zmiennej, to błędów jest bardzo dużo. 1. Skasowałeś stronę którą chcesz zapisywać? 2. Odblokowałeś zapis do flasha? 3. Twój zapis jest dziurawy, bo jak zero będzie na nieparzystej pozycji, to pętla nie zakończy się wtedy kiedy będziesz chciał 4. Odczytujesz FlashStatus, to sprawdź...
Kolejną ciekawostką jest to, że najprawdopodobniej procesory montowane przez Chińczyków w blue pilach to nie są oryginalne procesory od STMicroelectronics - stm32f103c8t6 lecz malowanki procesorów GigaDevice gd32f103c8t6, które są między sobą kompatybilne (GigaDevice deklaruje większą prędkość taktowania dla swoich procesorów). Tutaj więcej informacji...
Masz rację - wydaje Ci się... (; Latencja to nie jest jakiś delay czy preskaler, po prostu przy nie-sekwencyjnym wykonywaniu rozkazów (skoki), potrzebne są te 2 cykle na załadowanie bufora. Spadek wydajności przez taką latencję oscyluje pewnie w rejonie kilku procent, więc nad czym się tu zastanawiać? Jeśli podniesienie częstotliwości "nic nie dało"...
Tak się nie da. Chyba, że kod programu zostanie podzielony na dwie sekcje i jedna będzie umieszczona przed tablicą a druga za tablicą.
Witam Zaczynam naukę programowania na STM32. Mam płytkę z STM32F103C8T6 + ST-LINK V2. Jak można zgrać z STM32 zawartość flash do pliku? Pozdrawiam.
Większość programów do programowania wyświetla zawartość pamięci flash, którą można edytować, np. wpisywać dowolne wartości do części nieużywanej pamięci flash. Np. ST_Link Utility - po połączeniu z procesorem wyświetla pamięc flash. W miejscu (np. na końcu) gdzie są niezaprogramowane komórki (0xFFFFFFFF) wpisujesz co chcesz a programator natychmiast...
Działać będzie bez problemu. oczywiście że potrzebny będzie system plików jeśli chcesz na karcie umieszczać pliku zapisując kartę wcześniej na komputerze. Dodatkowo będzie potrzebny stos TCP/UDP/IP no i rzeczony serwer FTP. Można ruszyć w kierunku darmowego uIP. Nie lubię tego uIP bo napisany jest chyba przez konia ale da się zrobić i TCP i FTP/HTTP....
Witam! Mam pytanie o kwestię banalną przy pracy z programatorem, ale niewiadomą puki co dla mnie, przy pracy z j-tagiem. Jak włączyć zabezpieczenie przed odczytem flash-a?
Na obecną chwilę już mam wrzucone teksty i obrazki do flasha i ładują się tylko te które są potrzebne to zwolniło pamięć w procku teraz jak wrzucę procedury do flash to będzie można będzie trochę jeszcze wrzucić programów. A na zmiany w sprzęcie nie koniecznie mam wpływ. Ma gdzie wracać bo moduł wie gdzie ma wrócić. wystarczy przyjrzeć się listą dwukierunkowym...
1. W Debug Configuration zamień DBG (DSF) na Standard DBG (na samym dole). 2. W Startup, w pierwszym okienku, wpisz reset halt (razem!). 3. Wywal komendę exit. 4. Odblokowałeś pamięć FLASH STM32?
Jest jakiś ratunek dla tego procka ? Czy lutować nowego ? Flash loader demonstrator - spokojnie "odratujesz" ale będziesz musiał usunąć aktualny program. Przed podłączeniem programatora sprawdź ustawienie pinów BOOT. Jeśli nie możesz się połączyć, to coś nie tak jest ze sprzętem. Czy z poziomu programu użytkownika można ustawić bity odpowiedzialne...
Rozwiązany: podłączenie do innego komputera - system znalazł urządzenie. Zainstalowałem sterowniki do USB-COM udało się odpalić Flash Loader Demo. Flash prostym programem i urządzenie działa. W sumie ciężko to ubić. Zamykam
//wlaczenie opoznienia FLASH FLASH ->ACR |= (FLASH_ACR_LATENCY_1); Dla częstotliwości 72 MHz, żeby pamięć Flash działała musisz ustawić jej dwa cykle opóźnienia a nie jeden.
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.
Flash procesorów STM32 ma wytrzymałość 1000 cykli zapisów. Korzystasz z kilku bajtów a zapisujesz całe 4096. W dodatku nie wiem po co wyrównujesz do 256 te bufory, przecież one są w RAM.
(at)michalko:"Dokładnie, wystarczy zmieniać tylko adres bazowy głównego programu w skrypcie linkera. " No właśnie nie. Zmienna FLASH_BASE w tym wyrażeniu, to nie adres bazowy programu, ale adres bazowy całej pamięci FLASH 0x80000... (sprawdziłem). Najmniej inwazyjna zmiana, to właśnie podmiana w tym wyrażeniu FLASH_BASE na jakiś PROGRAM_BASE (celniej...
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ć.
ldr sp,=_estack Zupełnie zbędne. Z całym szacunkiem ale jestem przeciwnego zdania. Zdarza mi się bowiem używać skoku na 'reset handler' np. przy błędach assercji. Pzdr PS Z podobnych powodów przy ustawianiu PLL-a najpierw wpisuję wartości domyślne dla stanu 'reset' a dopiero potem ustawiam od początku. Ustawianie PLL-a gdy procesor jest nim taktowany...
Są jakieś mechanizmy odczytu flash, jednak to nie jest ani bardzo proste ani za bardzo legalne. Tutaj jakaś wstępna lektura https://sec-consult.com/blog/detail/secg...
Czy można polegać na bootloaderze po UART To, że działa dobrze to raz bo po co miałby być skoro by nie działał. A druga sprawa jest taka (szczególnie istotna, że to Twoje pierwsze starcie z STM32), że jak zablokujesz sobie FLASH lub wyłączysz JTAG to jest to jedyna metoda żeby odblokować ten układ. Także dodatkowo zwróć uwagę jak trzeba podpiąć piny...
Witam, Mam pewne pytanie dotyczące zmiennej globalnej wyspecyfikowanej jako const. Taka zmienna nie może zostać zoptymalizowana i jest trzymana w sekcji nazywanej .rodata, która to znajduje się w pamięci FLASH. (W mikrokontrolerach stm32) W takim razie jeżeli zadeklaruje np. tabelicę: [syntax=c]const uint8_t tablica[1000]; [/syntax] to oznacza, że taka...
W jaki sposób stworzyć plik do wgrania do STM32 aby umieścić 64kB blik binarny w górnej połówce flash? W moim bluepillu jest 128KB flash (przynajmniej tak podają programy ładujące).
Próbowałem, nie pomagało. Ale tak czy siak tak powinno się OpenOCD uruchamiać (; Absolutnie miałeś rację, po paru resetach pomogło. Jest OK. Powinno zaskoczyć za pierwszym razem (gdy przytrzymujesz reset i puszczasz go w trakcie uruchamiania OpenOCD). W OpenOCD powyżej opcji 0.6.1 można to zautomatyzować - jest opcja żeby OpenOCD łączył się z resetem...
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...
PS. co to jest RISC-V toolchain A co RISC-V ma wspólnego z STM32 i mikrokontrolerami ARM (a jest to dział, w którym zadajesz pytanie. Pytanie zatagowałeś STM32. STM32 nie sa RISC-V) Poważnie? Aż tak bardzo trudno napisać że toolchain do RISC-V to zestaw narzędzi potrzebnych do zbudowania na danej platformie kodu dla procesorów RISC-V? Pamiętaj że jesteś...
By jednak się definitywnie upewnić czy niedziałanie programu wynika z zatrzaśnięcia stanu wysokiego z pinu BOOT0 podczas resetu, moim zdaniem warto by było, do egzemplarza płytki, który nie działa, spróbować "zagadać" z programu "STM32 Flash loader demonstrator" poprzez USART1, Jeśli Boot0 jest w stanie wysokim to ważne jest w jakim stanie jest Boot1,...
A nie prościej: FLASH->ACR = frequency / 24000000; ? ;)
STM32 każdy model ma wbudowany bootloader uruchamiany przy starcie w zależności od stanu pinów BOOT0/BOOT1 (w zasadzie BOOT0, ale trzeba zwracać uwagę na oba). Programuje się to np. przez stm32 flasher czy też flash loader demo. W przypadku nucleo będzie kolega używał wbudowanego st-link, który można wyłamać i używać do innych projektów. A co do IDE...
Jeśli jeszcze nie widziałeś, to może to porównanie da Ci jakiś obraz "czego się spodziewać". http://permalink.gmane.org/gmane.comp.de... 4\/3!!
Nie udało mi się niestety usunąć flasha. Openocd wypluwa coś takiego: > stm32f1x unlock 0 stm32f1x unlock 0 device id = 0x10016418 STM32 flash size failed, probe inaccurate - assuming 256k flash flash size = 256kbytes Target not halted in procedure 'stm32f1x' > stm32f1x mass_erase 0 stm32f1x mass_erase 0 device id = 0x10016418 STM32 flash size...
A nie lepiej coś takiego? http://cgi.ebay.pl/STM32F103RBT6-develop... Mam taką płytkę, jedyny feller, to krzywo przylutowany jeden goldpin. Wadą jest też niefortunne umieszczenie wtyki dla jtaga, które wymusza zdejmowania wyświetlacza. Za to jest wyświetlacz z panelem...
Chodzi cały czas o grafiki typu interfejsu użytkownika - przyciski, suwaki itp. Nie o wyświetlanie skomplikowanych animacji czy filmów, nie ma tu przesyłu dużego strumienia danych, a więc nie ma znaczenia w jakiej pamięci są grafiki i czy są przesyłane przez procesor czy nie - mogą być i przez procesor, i przez DMA, np. SPI->FSMC. LCD_WriteRAM_Prepare();...
Poczytaj o rejestrze FLASH_OBR (dokument PM0075 dla F10xxx)
No to by też tłumaczyło, dlaczego kalibracji nie robią raz i zapisują trwale do pamięci nieulotnej. Ale dlaczego manual o tym nie wspomina ? Jaki jest czas retencji danych w pamięci flash tych ARMów ?
(...) ustawiłem wektor przerwań i początku pamięci flash w linkerze z odpowiednim offsetem (0x3800) Co to za magiczny offset? :D
A próbowałeś wymusić uruchomienie np. z RAM'u?
STM32F103vct + wiggler Zrobiłem zgodnie z instrukcja podana wcześniej http://www.elektroda.pl/rtvforum/viewtop... czyli modyfikacja tylko skryptu linekera i wywalenie flash_latency(frequency) z pll_start w programie przykładowym.Oto komunikat z konsoli Temporary breakpoint 1 at 0x2000019e: file main.c, line 78. czyli jest w...
Nie znam takiego sposobu. Ale jak potrzebuję to korzystam z fajnego narzędzia Freescale Embedded GUI Converter Utility. Tworzy on dla danego obrazka plik c i h i ma sporo możliwości jak sposób zapisu 8/16bit, kompresja itp. Ewentualnie bardziej karkołomny sposób jak konwersja WinHex-em za pomocą copy block->C source.
Pamiętaj, że w STM32 Flash tak naprawdę jest na adresach od 0x8000000, a że można się do niego dostać poprzez adresy od 0 to jest już inna - konfigurowalna przez zworki BOOTx - sprawa. 4\/3!!
Za wcześnie się cieszyłem - zmiana terminu w TME - miał być tydzień 6/2022 a będzie: AVR128DB64-I/PT IC:mikrokontroler AVR; EEPROM:512B; SRAM:16kB; Flash:128kB 4 SZT Tydzień 21/2022 4 sztuki! Ręce opadają :( Microchip (Microchipdirect) ma na stanie 50 szt wersji z rozszerzona temperaturą: AVR128DB64T-E/PT
Ile taka próbka dźwiękowa zajmuje Ponad 40kB, większość flasha. Próbowałem mniejszą zapętloną, ale brzmiało to jakoś słabo.
Mam powiedzmy taką tablicę: u8 BasicString[] = {0x3C, 0x3F, 0x78, 0x6D, 0x6C, 0x20, 0x76, 0x65} To mają być stałe. Nie chcę ich nigdy modyfikować. Jest tego ponad 1 kilo więc umieszczanie tego w ramie odpada. Jak to zdefiniować, żeby było jako stała we flashu? Chodzi mi o coś co by robiło tak samo jak PROGMEM w AVRach
Witam. Czy ktoś spotkał się z problemem kasowania komórek pamięci FLASH mikrokontrolera STM32 po szybkich zmianach jego zasilania? Mam urządzenie wkorzystujęc SMT32F103RBT6. Zasilane to przetwornica na LM2576 ->5V, potem stab. liniowy 3,3V. Od strony eletronicznej wszystko zaprojektowane jest poprawnie. Urządzenie działa poprawnie. Jednak, gdy np, szybko...
extern należy dodać wtedy gdy dołączamy ten sam plik .h kilka razy (zresztą kompilator nas o tym uprzejmie poinformuje). Wskaźnik jest zmienną wskazującą na dane w obszarze flash i jest umieszczony w RAM'ie'. Wskaźnik może wskazywać również na dane w RAM'ie.
Nie ma eeprom. W STM32F103 faktycznie nie ma, można emulować w FLASH, ale STM32L1xx mają EERPOM.
Temat rozwiązany. Problemem było to, że były zworki w Nucleo i programowałem Nucleo a nie docelowy STM32.
Jeszcze go nie otworzyłem, ale zrobię i porównam hardware. Zrobię też backup FW modułu WiFi, ale nie wiem jak zrzucić flash MCU. Mam narzędzia dla Atmel (USBASP) i STM32 (STLink), a także programator EEPROM oparty na CH341; Nie wiem, czy którykolwiek z nich można zastosować do MCU CH573... Dodano po 7 . Możliwe, że nowy wariant ma inny identyfikator...
Autor tematu nie napisał w jakim środowisku programistycznym ma zamiar pracować. Do wyboru: STM32 Cube IDE, zawiera Cube MX, Wtyczki GNU MCU dla Eclipse, Wtyczka VisualGDB dla programu Visual Studio (tylko Windows), Wtyczka stm32-for-vscode dla Visual Studio Code, Keil MDK płatny, dla profesjonalistów (tylko Windows). Inne oprogramowanie: Generator...
A tak na marginesie ... wg. DS jakiego kawałek pokazałeś (memory map) to FLASH zaczyna się od adresu 0x0 do 0x00003FFF natomiast w pliku do jlinkdevices wpisujesz BaseAddr="0x08000000" ? Zgadza się. Flash jest widziany pod adresami 0x0800xxxx i 0x0000xxxx. 0x0000xxxx bootowanie, 0x0800xxxx programowanie. W STM32 pod 0x0000xxxx jest przełączany RAM/FLASH/ROM....
IMPRECISERR Imprecise bus error due to an explicit memory access. The Bus Fault Address Register is not written by this fault. Wniosek? Nie ma "niestabilnej" pracy procesora, tylko jest standardowy zonk z dostępem do pamięci... INVSTATE Attempt to execute in an invalid EPSR state (e.g. after a BX type instruction has changed state). This includes state...
Jest to płytka STM32F103RB NUCLEO. Podpięcie pinu BOOT0 pod masę nic nie daje nadal program zanika Sprawdziłem pamięć flash poprzez STM32 ST-LINK Utility i jest w niej program aczkolwiek nie działa http://obrazki.elektroda.pl/5116944600_1... Dodam jeszcze, iż kiedy połączę się płytką w STM32 ST-LINK Utility to wciśnięcie przycisku reset...
1. Pokaż jak wygląda wywołanie openocd. Jak masz płytkę discovery to spróbuj po prostu z linii komend wywołać: [syntax=bash] openocd -f board/stm32f0discovery.cfg [/syntax] 2. Prawdopodobnie rozbiegówka oraz SystemInit zajmują ten 1KB pamięci FLASH. Wywołaj polecenie: [syntax=bash] nm --size-sort plik.elf [/syntax] aby zobaczyć wszystkie symbole w Twoim...
poczyniłem jeszcze taką obserwację, że raz na jakiś czas procek się resetuje poprawnie, wtedy mam output taki **** Build of configuration Debug for project leds2 **** cs-make devrst openocd -f ../scripts/stm32.cfg -c init -c reset run -c shutdown Open On-Chip Debugger 0.3.1 (2009-11-20-00:17) $URL$ For bug reports, read http://openocd.berlios.de/doc/doxyge...
A rejestr FLASH_ACR i latency to ustawiasz jakoś? Albert
Bootloader przestawia wektory przed skokiem do softu użytkownika więc wydaje mi się że nic dodatkowo nie trzeba robić poza kompilacją pod 0x08001000. Niestety. CubeMX robi to tak że ustawia na początku rejestr VTOR (funkcja SystemInit): [syntax=c] SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ [/syntax]...
To sprawdź pod jaki adres ładujesz kod do flash'a, bo do tego adresu: Flash Programming: File : F:\STM32\workspace\\HelloWorldSTM32\Rele... Address : 0x00008000 mam wątpliwości.
Zwykle nie mają i zwykle nie jest to problemem, gdyż można bezproblemowo zapisywać wbudowaną pamięć flash, aby sobie taki EEPROM "emulować". Często układy te mają też podtrzymywana bateryjnie pamięć (np. do 4kB w STM32F4), która również może zastąpić EEPROM.
Plik pochodzi z wcześniejszej wersji sterowników do ST-Linka. Nie wiem dlaczego, ale nowe sterowniki nie współpracują poprawnie z ST-Linkiem v1, nawet po aktualizacji jego oprogramowania do najnoweszej. Keli widocznie korzysta z własnych sterowników, bądź własnie tych starszych. Nowe sterowniki działają natomiast poprawnie z ST-LinkV2.
Podczas kolejnego dnia walki orżnąłem kod praktycznie ze wszystkiego. Doprowadziłem do sytuacji odwrotnej - by działał 2 kanał PWM dla TIM1 należy zainicjalizować TIM3! W dodatku, zmiana wartości delay() w main również powoduje zaprzestanie działania PWM (podobnie jak wyłączenie TIM3). Kompletnie nie wiem, co robię źle. Wymieniłem już nawet uC na egzemplarz...
Witam, Żadne rozwiązanie z innych tematów nie działa. Posiadam płytkę STM32VLDISCOVERY, zasilam ją z portu USB. Dodatkowo posiadam konwerter na FT232, konwerter działa poprawnie, echo jest przesyłane. Korzystam z programu Terminal v1.9b. Program na odebranie 49 ma zapalać diodę LED a po odebraniu 50 ma gasi diodę. Proszę o pomoc w znalezieniu błędu....
Nie. Architektura ARMv7-M obsługuje niewyrównany dostęp 16 i 32bitowy. Tylko dostęp na słowa większe niz 32bity (LDRD/STRD, LDM/STM) z niewyrównanym do 4 bajtów adresem rzucają fault. Inna sprawa, że w STM32 SFRy ogólnie nie lubią niewyrównanych zapisów lub zapisów o szerokości innej niz sam SFR. Ale to się nie kończy faultem, tylko dziwną wartością...
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...
stm32 flash stm32 flash loader flash loader stm32
bascom input bajty oświetlenie kurnika virtualdubmod audio
domofon hikvision liebherr zamrażarka
Wymiana modułu komfortu w Renault Laguna III dCi Podłączenie AVR w inwertorowym agregacie 3-fazowym