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.
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...
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...
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...
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...
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!!
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...
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....
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...
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...
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
A dobra, jednak nie wszystko. Ten nBOOT0 bit można przestawić z poziomu CubeIDE przez STlink? Bo coś wyczytałem, że potrzebny jest do tego jakiś inny programator? Druga kwestia, jak ten bit jest domyślnie ustawiony? Procesor będzie startował domyślnie z flash-u?
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,...
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).
Proszę bardzo.
Użyłem flash
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...
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?
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?
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...
HardFault wynika z błędu oprogramowania - niewyrównane dane, zły indeks tablicy albo błędna wartość wskaźnika. Trzeba zapolować na ducha (ja przedwczoraj polowałem na takiego ducha 3 godziny). Na początek zrób obsługę HardFault, która wyświetli lub gdzieś zapamięta jakieś 20 słów z wierzchołka stosu. Przejrzyj 6..8 słów za pierwszym o wartości zaczynającej...
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
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....
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ź...
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...
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"...
Moja funkcja, po poprawieniu błędu (brak &) zapisuje wersję pierwszą powyżej.
Tak się nie da. Chyba, że kod programu zostanie podzielony na dwie sekcje i jedna będzie umieszczona przed tablicą a druga za tablicą.
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.
Wszystko da się zrobić, ale nie wszystko ma sens. Moduły będą miały strukturę płaską tzn wywołując moduł z modułu nie będzie się zmieniał stos moduły wiedzą który jest kolejny a który poprzedni moduł. I tu chyba nie rozumiesz, o czym piszesz. Jeśli jeden moduł woła drugi, to ten drugi musi wrócić do tego pierwszego, a takie wywołanie zajmuje miejsce...
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!!
Programem H-JTAG programowałem ten procesor przez LPT [url=http://www.hjtag.com/]http://www.hj... Jeżeli chodzi o programowanie przez USB to ja wykorzystuję programator ZL30PRG [url=http://www.kamami.pl/index.php?ukey... Opis narzędzi do tego programatora znajdziesz...
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...
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!!
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.
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...
No sam napisałeś, że debuggowanie jest lekko problematyczne. Ja po prostu naciskam F5 w IDE i debuggowanie sie odpala. Przy dużym projekcje jak setki razy odpala się to debuggowanie to warto poświęcić kilka godzin na takie coś.
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...
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 próbowałeś wymusić uruchomienie np. z RAM'u?
Nie ma możliwości zapisywania poszczególnych BAJTÓW (w uproszczeniu), a wygląda że to próbujesz zrobić. Funkcje zapisują zwykle 2 bajty na raz, adres zapisu powinien być więc parzysty, a Ty powiększasz zmienną Address tylko o 1 między wywołaniami.
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...
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[]...
Witam. Mikrokontrolery STM32 mają w sobie embedded flash memory. Jest to pamięć EEPROM, NAND Flash czy NOR Flash? Nie znalazłem tego w manualu.
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.
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!!
uC zapisuje za każdym razem 64 bajty danych do pamięci flash
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...
Owszem wiec albo wyłączasz wywalanie nieużywanych, albo dodajesz atrybut USED. Nie działa bez referencji: static const uint8_t xTest[] __attribute__((used)) ="TESTPRJUUU"; Jak zrobię referencje to widzę to w pliku .bin
Błąd jest gdzieś tu: .data : { _data_begin_ = .; *(.data) _data_end_ = .; } > FLASH Myślę, że w tym małym kawałku widać go od razu [; 4\/3!!
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...
Ten adres nie jest prawidłowy w STM32. Flash zaczyna się od 0x8000000 Flash jest widoczny zarówno od 0 jak i od 0x8000000. W "dolnym" zakresie może być widoczne coś innego - np. RAM - zależnie od konfiguracji pinów BOOTx. To samo dotyczy nie zainicjalizowanego statica w funkcji. Niezainicjalizowana zmienna statyczna ma zawsze wartość 0. ZAWSZE. Jeśli...
Skąd wziąłeś pomysł na wstawki z FLASH->ACR? Czytam RM0401 Jest dedykowany do tego rozdział: 3.4.1 Relation between CPU clock frequency and Flash memory read time Latency zależy od częstotliwości taktowania oraz napięcia zasilania, tak w skrócie. Co do ustawień zegara dla STM32 to warto zapamiętać sobie schemat działania, który wynika bezpośrednio...
zobacz co masz w offsecie 0xE0 w tablicy wektorów (tej we flash)
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...
To od razu zapytam, czy przy STM32F103VC można obsłużyć pamięć nand flash?
W sumie racja, bo wygenerowac sobie wartości potrafie tylko nie wiem właśnie jak ugryźć zapis do pamięci FLASH. Jaki zapis do FLASH? ST-Linkiem zapisujesz wszystko - program wraz z tymi tablicami przecież zadeklarowane są jako const. A może chodzi Ci o taki myk jak: EEPROM emulation in STM32F0xx microcontrollers [url=http://www.st.com/web/en/catalog/to...
Witam Mam problem z zaprogramowaniem uC STM32F103RBT6. Układ wcześniej bez problemu chodził i się programował. Problem pojawił się gdy zmieniłem wartość rejestru FLASH->ACR z 2 na 0. Od tej pory H-JTAG widzi procka ale nie mogę wgrać flasha :( Otrzymuje taki komunikat: http://obrazki.elektroda.net/81_12461006... Czy można coś z tym zrobić ?
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.
//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.
Ale to by znaczyło że, że takiego prostego mechanizmu jak w AVR nie ma poprzez zablokowanie zewnętrznym programatorem?
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
Hmm podłączam do napięcia procesor, później jtaga i wszystko działa, a chwile temu nie działo... dobra jak zwykle zimny lut. Nie wiem dlaczego jak próbuje wgrać do flash, czasem mam stary program(nie wgrywa mi nowego) i muszę dać "Teraminate and Relanuch". Gdzieś czytałem ze tak się dzieje ale nie wiem dlaczego. Myślałem ze to przez ten soft reset halt,...
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?
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...
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.
Czytałem o tym i faktycznie coś w tym jest, czyli podsumowując nie da się po prostu podłączyć kabelki TX RX jak w stm32 i jakimś flash downloaderem zgrać wsadu?
Dzięki za tytuł. FLASH->ACR |= FLASH_ACR_LATENCY_2 | FLASH_ACR_PRFTBE ; to załatwia sprawę?
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...
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.
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.
Temat rozwiązany. Problemem było to, że były zworki w Nucleo i programowałem Nucleo a nie docelowy STM32.
Ustaw zworkę na inną niż uruchamianie z pamięci flash i wtedy zaprogramuj.
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...
(...) ustawiłem wektor przerwań i początku pamięci flash w linkerze z odpowiednim offsetem (0x3800) Co to za magiczny offset? :D
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....
Jak uruchomić STM32 z FLASH by działał później w pamięci RAM. Dedykowane dla Keil: - plik startup_stm32f10x_xx.s Ułatwię niektórym czasu i szukania w necie rozwiązań flashowania z poziomu własnego bootloadera pamięci programu. Ja przyznam szczerze nie znalazłem żadnego opisu w necie, wobec czego napisałem własne rozwiązanie. Jako że asembler ARMów to...
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...
stm32f407vet6+st link i do tego ST-LINK Utility, i tak... po podłączeniu automatycznie ładuje program z procka klikam zapisz Upewnij się czy masz dobrze określony obszar flash do odczytu odpowiedni do danego uC, bo Stlink nie ustawia tego automatycznie. Może odczytujesz i wgrywasz później tylko część istotnego obszaru flash i stąd te dziwy. Przykładowo,...
Słyszałeś kiedyś o formatowaniu kodu ? [syntax=c]void RCC_Conf(void) { RCC->CR= 0x00000083; // to jest bez sensu, można wyrzucić RCC->CFGR= 0x00000000; // j.w. RCC->CIR= 0x00000000; // j.w. RCC->CR|=RCC_CR_HSEON ; while(RCC->CR & RCC_CR_HSERDY == 0); FLASH->ACR |= FLASH_ACR_PRFTBE; FLASH->ACR |= FLASH_ACR_LATENCY_2; RCC->CFGR |= RCC_CFGR_PLLMULL9 |...
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.
Witam, Wiem że było dużo podobnych tematów, ale w żadnym nie znalazłem niczego, co pomogło by rozwiązać mój. Otóż właśnie piszę pracę magisterską i potrzebuję wykonać dwa układy komunikujące się radiowo. Problemem jest to, że programu nie mogę uruchomić w innym trybie niż debugowania w IAR'ze. Używam oprogramowania IAR Dev. v.6.03, programatora ST-link...
A nie prościej: FLASH->ACR = frequency / 24000000; ? ;)
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"...
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...
Jeśli interesuje Cię kompilator C na PIC-a zerknij na Witam. Znam znam, ale .... No wlasnie. Dlatego uzywalem ASM, ze nie chce miec ograniczen. Nie przy C, gdzie zanim zaczne cos robic, to zuzywam pare kilo flash-a :( Mariusz
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.
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...
To trochę dziwne odpowiadać samemu. Ale odpowiedź nie pochodzi ode mnie. Napisał do mnie na PW kolega (nick na razie pominę) nieco sfrustrowany tym, że dyskusja pewnie by się skończyła głupimi uwagami niektórych kolegów, którzy uważają - że już zjedli wszystkie rozumy i nikt nie może ich nic już nauczyć . Kolega ów podpowiedział mniej więcej to, że...
Witam, Czy ktoś się spotkał z takim zagadnieniem: Debugowanie działa poprawnie w przypadku wartości we FLASH zawartość pokazywana jest poprawnie a w przypadku zmiennych w RAM pokazuje zwykle wartości 0 jak dam komendę "info mem" w konsoli debugera to wg mnie nie pokazuje poprawnych danych: info mem Using memory regions provided by the target. Num Enb...
Aktualnie korzystam z AS4C4M16SA-6TCN w połączeniu z STM32F746 w obudowie QFP 176, w ten sposób płytka na tylko 2 warstwy, a SDRAM jest dokładnie pod uC. Mniejsza obudowa uC nie pozwala na taki layout. Rozwiązanie jest przejściowe, ponieważ jest to 2 wersja urządzenia, które pierwotnie było zbudowane na RPi i średnie obciążenie CPU przekraczało 90%....
Po podłączeniu dostaję takie błędy od OpenOCD: Open On-Chip Debugger 0.5.0-dev (2011-06-07-18:11) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxyge... Info : only one transport option; autoselect 'jtag' 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 #0 : stm32.flash...
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...
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)
Nie ma eeprom. W STM32F103 faktycznie nie ma, można emulować w FLASH, ale STM32L1xx mają EERPOM.
flash write_image erase c:\lab1.hex 0x08000000 bin 1. Programujesz plik hex, a OpenOCD zmuszasz do traktowania tego jako bin... od razu porażka 2. W ogólnym przypadku plików NIE WOLNO przesuwać o offset. flash write_image erase c:\lab1.hex - TYLKO Pozatym prędkość 5kHz? Bez przesady - daj 1000kHz (1MHz). 4\/3!!
flash stm32 stm32 flash loader flash loader stm32
skrzynki bezpieczników skoda octavia astra błąd poduszki kondensator pobór prądu
domofon hikvision liebherr zamrażarka
Brak oświetlenia drzwi i bagażnika w Golf 6 2009 Brak prądu na świecach żarowych: diagnostyka i przyczyny