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...
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.
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
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,...
Proszę bardzo.
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....
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...
Użyłem flash
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?
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 :/
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
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...
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).
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"...
//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.
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ą.
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...
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!!
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...
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.
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!!
Co ja mam mysleć na temat telnetu w kontekscie dogadania się z tą czarną kostką z nóżkami? W wielkim skrócie. Openocd po uruchomieniu z poprawnie skonfigurowanymi skryptami target oraz interface po wykryciu procesora uruchamia na portach ustawionych w skrypcie interface(domyślnie telnet:4444 gdb:3333) dwa serwery. Jeden z którym można się połączyć...
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.
A możesz spróbować uruchomić OpenOCD "poza" Eclipse, a w konfigu w Eclipse jakoś zrobić tak żeby nie odpalało OpenOCD? Ewentualnie po prostu spróbuj zrobić tak, że to co wpisywałeś z linii komend podajesz do "OpenOCD options", a resztę opcji jakoś trzeba by wyłączyć - np "Use default config" albo "Use local config" i wskazać mu pusty plik (albo /dev/null"...
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.
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...
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.
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...
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...
Takie coś musisz umieścić oprócz oczywiście konfiguracji i innych komend -c "dump_image backup.bin 0x8000000 0x80000" a przywrócenie, żebyś drugi raz nie pytał -c "flash write_image erase backup.bin 0x8000000 bin" Poprawiłem wielkość flasha 0x80000 = 512kB
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, wiesz, co to za mikrokontroler, więc użyj np. ST linka i podepnij się wprost do mikrokontrolera, za pomocą oprogramowania np. STM32CubeProgrammer może dostać się do pamięci i sprawdzić, czy procesor nadal jest działający. Na brzegu płytki masz goldpiny, które wyglądają na złącze do ST linka. Wspominałeś, że urządzenie, a raczej jakiś kabel, przestało...
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,...
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!!
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...
uC zapisuje za każdym razem 64 bajty danych do pamięci flash
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
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...
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...
Ale jak zaprogramować STM32? SWD - Serial Wire Debug! Używając jednego z tych tanich programatorów/debuggerów J-Link możemy flashować STM32 używając J-Flash. Może pozwolisz na krótkie alternatywne podejście (jeśli tam jest, a ja po prostu przeoczyłem, przepraszam). Nie miałem pod ręką programatora J-Link, więc spróbowałem z prostym UART (tak jak to...
To od razu zapytam, czy przy STM32F103VC można obsłużyć pamięć nand flash?
zobacz co masz w offsecie 0xE0 w tablicy wektorów (tej we flash)
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 |...
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...
I po problemie chociaż nie wiem z czego on wynikał. Prawdopodobnie uC jest uszkodzony. Dzisiaj udało się wgrać program na uC niestety dalej nie chciał on ruszyć. Po kilkunastu próbach uC ruszył zobaczymy na jak długo. Możliwe, że jest uszkodzony. Pozdrawiam i temat zamykam.
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...
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.
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
Witam wiem ze temat wałkowany, czytając poprzednie posty jak zwykle mam mętlik. STM32F103ZET Używając: monitor reset halt (lub reset_halt ) load dla ram i flash program staje zawsze w startup.s: Reset_Handler: /* +---------------------------------------... | Initialize the process stack pointer +---------------------------------------...
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?
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.
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.
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...
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?
W cenie ;) 107 ma USB OTG (możesz dołączyć pendrive) w miejsce USB i ma interfejs Ethernetowy 107V a 103C - V obudowa 100 pinowa, a C obudowa 48 pinowa 107VB a 103C8 - B 128KB Flash, a 8 64KB Flash Jeśli chodzi o RAM to w STM32 im lepszy to RAMu więcej porównując procesory z tą samą pamięcią Flash np. dla 128KB Flash idąc od stm32f100 poprzez 101,103,105...
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"...
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ż....
Jak procek wstanie podepnij JTAG'a i sprawdź zawartość rejestrów RCC i kontrolera FLASH, one prawdę powiedzą. Niewłaściwa inicalizacja kontrolera FLASH też może powodować takie efekty.
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.
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...
(...) ustawiłem wektor przerwań i początku pamięci flash w linkerze z odpowiednim offsetem (0x3800) Co to za magiczny offset? :D
A jak to jest z tą pojemnością? http://www.stm32.eu/node/17 Grupa STM32F1->Access Line i XL Access Line (STM32F101) Mikrokontrolery XL Access Line charakteryzują się pojemnością pamięci Flash do 1 MB http://www.stm32.eu/node/18 Maksymalna pojemność pamięci SRAM w obecnie dostępnych wersjach mikrokontrolerów wynosi do 64 kB, a pojemność pamięci Flash...
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...
Info : stm32f4x.cpu: hardware has 0 breakpoints, 0 watchpoints Powinno być 6 i 4 (albo coś takiego). Jak jest 0 i 0 (albo jakieś inne bezsensowne wartości), to nawet nie ma co próbować dalszych kroków. Proponuję uruchamiać OpenOCD (tylko pierwszy raz po wyłączeniu zasilania) z wciśniętym przyciskiem reset na płytce. Proponuję też dodać do wywołania...
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...
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...
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....
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,...
Żeby programować STMy potrzebujesz najtańszego ST-Linka, np. takiego jak w pierwszym linku i programu ST-Link Utility. Obsługa tego programu jest intuicyjna i nie powinna sprawiać kłopotu. Do programatora podłączasz tylko SWDIO, SWDCLK i masę. Twoim największym problemem może być zablokowany odczyt danych z uC co jest bardzo prawdopodobne skoro jest...
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.
Temat rozwiązany. Problemem było to, że były zworki w Nucleo i programowałem Nucleo a nie docelowy STM32.
A nie prościej: FLASH->ACR = frequency / 24000000; ? ;)
Witajcie, siedzę i szukam błędu w bibliotekach do obsługi NRF24L01. Skopiowałem je z biblioteki, którą wykorzystuje w ATmega8. Działa nawet dobrze tam, niestety na STM32F0DISCOVERY już nie chce. Będę bardzo wdzięczny za pomoc. To najpierw kody, które wyrażają więcej niż tysiąc słów ;) : main.c http://obrazki.elektroda.pl/4732813300_1...
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...
Jeszcze jedno pytanie mam tak w sumie. Komentarze, które tam dodałem w kodzie mają sens? Wzorowałem się na jednym pdf, który jest dostępny na forum, lecz próbowałem to zrozumieć a nie jedynie "przeklepać na głupiego".
Na mój rozum, to to ustawienie, nie powinno mieć za dużo do rzeczy.
tablica wektorów sprawdzana kilka razy Dodano po 3 [syntax=asm]void TIM14_IRQHandler(void) { 80002a4:b580 push{r7, lr} 80002a6:af00 addr7, sp, #0 TIM14->SR = ~TIM_SR_UIF; 80002a8:4b0e ldrr3, [pc, #56]; (80002e4 <TIM14_IRQHandler+0x40>) 80002aa:2202 movsr2, #2 80002ac:4252 negsr2, r2 80002ae:821a strhr2, [r3, #16][/syntax] wskazuje na adres...
Dziękuję za pomoc, Problem rozwiązany, poprzez wymazanie firmware'u z pamięci flash procesora. Co było bezpośrednią przyczyną nie ustaliłem.
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...
Usiłuję skorzystać z tej funkcji żeby zapisywać sobie wartość pewnej zmiennej do pamięci flash. Problem polega na tym, że za cholerę nie mogę zmusić bibliotekę do pracy. Dołączam sobie do projektu plik stm32f10x_flash.c i przy próbie kompilacji dostaję długi ciąg błędów sprowadzających się do tego, że kompilator nie rozumie typu uint32_t. Gdy dołączę...
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...
Cześć, Tutaj [url=Tutaj]https://www.st.com/content/cc... jest to dość dobrze wyjaśnione. Generalnie LTDC to taki interfejs STM potrafiący sterować bezpośrednio wyświetlaczami bez wbudowanego kontrolera...
flash stm32 stm32 flash loader flash loader stm32
eltron unitra eltra zgrać firmware router głowa lampa wyładowcza
zigbee termometr software download
Chmura wCapCut: Działanie online i offline Hydropopychacze w silnikach Kia: modele i działanie