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....
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...
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.
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
Na tym polega dobre zabezpieczenie, że raczej nie da się go łatwo ominąć [; Na przyszłość polecam głupie porady z internetu choćby zweryfikować w innych źródłach (np. spytać najpierw tutaj), lub choćby przeczytać w dokumentacji co zamierzasz zrobić zanim tego faktycznie dokonasz.
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?
wiec mam 8MHz tak jak fabrycznie dostalem stm32f0discovery. Napewno? "Fabrycznie" jest kwarc 8MHz natomiast MCU ma mnożnik PLL który można ustawić. Jakiego środowiska używasz? W "moim" eclipse standardowy szablon dla STM32F0DISCOVERY wygląda tak: Na pewno mam 8MHz. SysTick'iem sie upewnilem. Pokaż kod.
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...
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.
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!!
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 :/
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...
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....
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.
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,...
Tutaj pojawia się pewna niespójność, na stronie producenta nie mogłem znaleźć nic o większej pojemności pamięci Flash niż 1Mb, a w obrazku reklamującym rodzinę STM32 jest wyraźnie napisane: STM32F4: "Up to 2-Mbyte Flash" [url=http://www.stm32.eu/sites/default/f...
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...
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...
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.
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!!
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...
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
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!!
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.
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
Przypuszczam, że nie chodzi Ci o flashowanie stricte przez USB ;> ? Może być przez wbudowaną w zestaw przejściówkę USB-UART? McMonster . Ten mikrokontroler nie ma bootloadera DFU, więc program "dfuse" nie zadziała. Jeśli chcesz korzystać z flashowania bezpośrednio przez USB i program "dfuse" to musisz zaprogramować mikrokontroler odpowiednim wsadem....
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...
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...
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?
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 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ć ?
zobacz co masz w offsecie 0xE0 w tablicy wektorów (tej we 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.
//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
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.
Wedłóg bombzo dodałem linię : OB->WRP3 = (uint16_t)0xFF000000; [syntax=c] while(FLASH->SR & 1<<0); //BSY: Sprawdzam czy flash nie jest zajęty. // FLASH->KEYR = 0x45670123;//Jak taką sekwencją zapiszę klucz, to się odblokuje jednorazowo zapis do flasha. // FLASH->KEYR = 0xCDEF89AB;//Odblokowuję zapis do flasha tą sekwencją zapisu....
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?
dybym miał pojęcie jak WY to bym nie pytał tylko sam to napisał. Zapytać wolno i to nie wstyd, że człowiek czegoś nie wie. A czy koledzy na wszystkim się znają? Nie trzeba się znać, wystarczy założyć odrobinę dobrej woli - gdyby umieszczenie bootloadera na końcu zamiast na początku pamięci było możliwe i sensowne, to piotr_go pewnie by tak właśnie...
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.
Freddie Chopin Miałem na myśli taką funkcje(akurat dla F1): No, przestawienie zegara na 24 MHz z PLL to całe 4 linijki kodu - któż byłby w stanie napisać to sam... Ale chyba trzeba zrobić funkcję podobną do tej wyżej(od F1), odczekać az HSE bedzie gotowy itd. ??
Temat rozwiązany. Problemem było to, że były zworki w Nucleo i programowałem Nucleo a nie docelowy STM32.
(...) ustawiłem wektor przerwań i początku pamięci flash w linkerze z odpowiednim offsetem (0x3800) Co to za magiczny offset? :D
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...
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...
Może ci RAMu braknie Spróbuj tablice umiescić we flashu [syntax=c]const uint16_t grafika[3][240]={};[/syntax]
CS32F103 jest praktycznie analogiem STM, ale ma inny identyfikator, przez co niektóre programy odmawiają programowania lub przynajmniej wyświetlają ostrzeżenia Flasher nie działa z CS32F103 (serial flash demo). Żaden baudrate. Na STM32F103 śmiga od strzału. Natomiast przez stm32 st-link utility programuje ok choć identyfikator jest inny (gdzieś czytałem...
Witam Od jakiegoś czasu zabrałem się za programowanie stm'ów. Pojawił się problem przy wgrywaniu i debugowaniu projektu z poziomu eclipse. Więc wykorzystuje konfigurator HAL'a tam konfiguruje procesor. Następnie w Eclipse z nakładką "System workbench for STM32" piszę program. Próbując go wgrać wybierając opcję dugowania St-Link V2 i SWD. Po próbie zaprogramowania...
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...
Nie mogę się z tym zgodzić bowiem st napisało: 12 Digital-to-analog converter (DAC) Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers where the Flash memory density ranges between 16 and 32 Kbytes. Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers where the Flash memory density ranges...
wyższa wersja plików ck-link lite. przekonwertowane i oryginalne - 2.38 [syntax=text]XuanTie: CKLink_Lite_V2, App_ver 2.38, Bit_ver null, Clock 2526.316KHz, 5-wire, With DDC, Cache Flush On, SN CKLink_Lite_V2-T0000002A81030373A53354.[...
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....
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.
Dałem radę już cokolwiek zrobić, jednak nadal mam problem z odbiorem drogą radiową (wysyłania jeszcze nie sprawdziłem). Zaraz opiszę co dokładnie nadal nie działa. W załączniku dodaję cały projekt. Kody (obecne): main.c [syntax=c]/** ****************************************... * File Name : main.c * Description : Main...
Witam. Poskładałem Jtaga ze strony Freediego Chopina. Niestety nie mogę zaprogramować targeta(płytka HY-Mini z STM32F103VCT6). Wszystko jest konfigurowane wg tutoriala. To pokazuje mi konsola eclipse: Open On-Chip Debugger 0.5.0 (2011-08-09-23:26) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxyge...
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...
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. Czy ktoś może rzucić okiem na mój program i stwierdzić gdzie jest błąd. Siedzę już 3 dni i nie mogę go znaleźć. Posiadam płytkę Butterfly, dolutowałem kwarc zegarkowy i dwa kondensatory o pojemności podanej na schemacie który dostałem z płytką. Po wgraniu hexa do procesora wygląda, że zatrzymuje się podczas konfiguracji RTC. Jak zaremuje część...
A nie prościej: FLASH->ACR = frequency / 24000000; ? ;)
Temat można zamknąć. Przyczyną był .. mój program (sic!). Nie wiem jak bo w trakcie testów zdejmowałem również zwory łączące debugger z procesorem. W pewnym momencie wyczyściłem flash'a z poziomu programu ST-LINK i wszystko zaczeło działać zarówno pod windows jak i pod linux'em. Nadal nie wiem co było przyczyną wkodzie, bo jak załaduje kod to przestaje...
Na mój rozum, to to ustawienie, nie powinno mieć za dużo do rzeczy.
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.
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...
Ustaw zworkę na inną niż uruchamianie z pamięci flash i wtedy zaprogramuj.
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! Kiedy próbuję przez openocd wgrać na mikrokontroler dowolny plik dostaję coś takiego: ./openocd -f interface/stlink-v2.cfg -f target/stm32_stlink.cfg -c "init; reset halt; flash write_image erase /home/stm32/zl26arm/obj/project.hex; reset run; shutdown" Open On-Chip Debugger 0.7.0-dev-00050-g98a41bc (2012-10-18-15:43) Licensed...
A no z tego samego powodu dla którego ktoś decyduje się na pisanie w C++. Chce mieć obiektowe API i hermetyzację. Jeśli już coś piszę obiektowo (czysto teoretycznie) to nie po to aby w obiektach używać odwołać do API bez obiektowości. A jeśli ktoś pisze program w C++ i chce skorzystać z biblioteki lwIP to też musi ją opakować w klasy? Czy jak ktoś...
Dzięki za odpowiedź, ale to chyba nie jest w HAL... Zgadza się. Nie jest. Ale STM przepisał te algorytmy również na HAL i te źródła znajdują się np. w repozytorium CubeMx w ścieżce: Repository\STM32Cube_FW_F1_V1.6.1\Projec... To jest akurat dla tego typu uC który jest na tym Nucleo, ale jeśli potrzeba...
flash stm32 stm32 flash loader flash loader stm32
uruchomić windows hasło volvo silnika kształtka rdzeń
zgrzewarka folii płyta indukcyjna
Audi S5 4.2 V8 FSI EPC, nierówna praca, strzały z wydechu, brak mocy – typowe usterki i diagnostyka Ford Duratec czujnik cieczy chłodzącej nr 2 (CHT) – lokalizacja, diagnostyka, objawy