Czy są jakies wady takiego zapisu w porównaniu do poczciwego eeproma? Kasować można tylko całą stronę, więc jeśli często uaktualniasz małe fragmenty to stosuje się metodę emulacji EEPROMu opisaną choćby w notach aplikacyjnych od ST.
Proszę bardzo.
Z kodu wynika pewna ciekawa rzecz... Otóż z tego co widzę stos znajduje się... w środku sekcji .bss - nie wiem czy to normalne, ale nie sądzę... 4\/3!!
Żeby był dostęp bez opóźnień z wielu źródeł. (CPU/DMA/...) CPU nie musi czekać na SRAM1 kiedy DMA zajmuje się SRAM2. Do pamięci CCM ma dostęp tylko CPU. Jest to pamięć tylko na dane.
zepsuta pamięć
Witam Rozumiem, że chcesz aby cały kod wynikowy został umieszczony w pamięci RAM. Żeby tego dokonać należy zmienić adres sekcji ROM w skrypcie linkera: "rom (rx): org = 0x08000000, len = 128k" na pamięć RAM(zaczyna się od adresu 0x20000000 dla stm32). Pamięć RAM również należy przesunąć o odpowiedni adres. Jeżeli masz w kodzie przerwania to nie zapomnij...
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...
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ż....
Nie piszesz o Cortex-M, a o STM32 - popraw temat. U innych producentów uC wygląda to zupełnie inaczej. Pamięć spod adresu 0x08000000 w normalnym trybie pracy STM32 zostaje odwzorowana również pod adresem 0 - jest dostępna do odczytu (tylko) pod dwoma adresami.
//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.
Być może, że twoje opóźnienie wcale nie jest takie jak myślisz (skoro 3ms to typowy czas to 5ms spokojnie powinno wystarczyć). Zauważ, że jeśli zapisujesz pierwszą stronę to kolejną możesz zapisać jeśli wysłanie control byte zwróci ACK jeśli nie to pamięć jest zajęta i należy ponownie wysłać start i control byte. Co jeśli najpierw zapiszesz druga stronę...
Ale... float to przecież bity w pamięci! To co one przedstawiają, powinno cię mało obchodzić, gdy chcesz to zapisać w pamięć nie ulotną... Jeśli float ma 4 bajty (a chyba ma), to wystarczy dobrać się do tych czterech bajtów intem... [syntax=C] float ulamek=54.75701; unsigned int *ple=(unsigned int*)&ulamek; ZapiszZmienną([adres],*ple); //tu wlasnie...
Zacznijmy od tego, że OpenOCD nie uruchamia się poprawie, wiec warto byłoby dochodzić do sprawy "krok po kroku". Przede wszystkim plik lpc2xxx.cfg NIE JEST przeznaczony do uruchamiania bezpośredniego, należy ZAWSZE użyć któregoś z konkretnych plików. Tymczasowo możesz użyć pliku lpc2148.cfg, ale najlepiej przerób go sobie na lpc2146 - komentarze w środku...
Witam, podłączyłem kość pamięci 23K256 do SPI3 układu STM32F107. Procedura konfiguracji SPI: void RAM_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Perip... , ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SPI3, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Perip...
bez apelacyjne operator extern powinno się tam znaleźć. To zleży jak przebiega proces kompilacji. Jeżeli kompilujemy wszystkie pliki na raz to w sumie ta dyrektywa o której wspominasz działa tak jak oczekujesz i rzeczywiście zmienna jest zadeklarowana tylko raz. Natomiast jak kompilujemy każdy plik źródłowy osobno do postaci pośredniej i później linkujemy...
Tak jak napisałem jeżeli nie implementujesz MSD przez USB to nie ma sensu. Inaczej robisz sobie na około. Pozdrawiam
Cześć, W wolnym czasie uczę się układów STM32 na płytce STM32_Smart_v2 (https://stm32-base.org/boards/STM32F103... Próbuję uruchomić pamięć eeprom, która jest na tej płytce na podstawie kursu (https://forbot.pl/blog/kurs-stm32-11-i2... Niestety program nie działa - funkcja I2C_EVENT zwraca error....
To trzeba w linkerze dopisać jeszcze jedną pamięć ?
OMG, ale po co ładujesz wciąż plik .bin... Załaduj po prostu plik .hex czy .elf - parametr offset nie ma wtedy żadnego znaczenia (jest ignorowany), bo pliki te zawierają adresy. Co do parametru "unlock" - jeśli masz układ z zablokowaną pamięcią, to ta komenda nie zadziała zawsze - jak widzisz - w niektórych układach po odblokowaniu pamięci konieczny...
Coś naplątałeś... Aby uzywać malloca bez dziwnych errorów, musisz zadeklarować odpowiednią ilość miejsca na stertę . Co z tego, ze twoje zmienne zajmują niewiele ramu, skoro najpewniej ustawiles sobie parę kB sterty, i gdy przekroczysz te pare kB, program ci sie natychmiast wykrzaczy, bo oczywiście najpewniej nigdy nie sprawdzasz, czy malloc przypadkiem...
Moim zdaniem nie jest to wina kompilatora. Powinieneś sprawdzić rozmiar sterty, ponieważ funkcja malloc właśnie w tym obszarze rezerwuje pamięć.
o super. Jak to teraz podłączyć i uruchomić pod jakiegoś AVRa? Się uparłeś z tymi AVRami :) Naprawdę, jeśli masz wypasionego ARMa, to dodanie AVR niczemu nie służy. Co innego, gdyby projekt dało się całkowicie zrealizować na AVR. Ale konkretnie - wybierz AVR z magistralą pamięci zewnętrznej, z klasycznych AVR to masz jakieś ATMega128 lub nowsze serie....
Witam. Mikrokontrolery STM32 mają w sobie embedded flash memory. Jest to pamięć EEPROM, NAND Flash czy NOR Flash? Nie znalazłem tego w manualu.
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...
Ponieważ systemy są wielozadanione i program nie jest sam. Dodatkowo jest pamięć wirtualna.
To od razu zapytam, czy przy STM32F103VC można obsłużyć pamięć nand flash?
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...
Witajcie, właśnie się bawię pamięcią Flash w STM32F0DISCOVERY (chcę się nauczyć obsługi). Efekt? Chyba zablokowałem możliwość zapisu... Kod (dopiero się uczę, więc komentarze mogą zawierać błędy): [syntax=c]#include "stm32f0xx.h" #include "stm32f0_discovery.h" int main(void) { RCC -> AHBENR |= RCC_AHBENR_GPIOCEN;//LEDY GPIOC -> MODER |= GPIO_MODER_MODER8_0...
Tadzik85: Wygląda na to, że dziechu zmierzył dokładnie to, o co chodziło, a wyszło mu to, co przewidywałem. Ten sam kod (taka sama sekwencja instrukcji), piszący raz do bitband, drugi raz do tego samego rejestru/komórki ale przez zwykły dostęp - zapis 32-bitowy. Na zdrowy rozsądek - pamięć w mikrokontrolerze nie może mieć dostępu bitowego sama z siebie...
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"...
pamięć wirtualna Pamięć wirtualna bez MMU? Niezłe wyzwanie.
1) Czy dla zmiennych o rozmiarze poniżej 32bity zawsze przydzielane jest 4 bajtowy rozmiar pamięci? To nie ma nic wspólnego z 32 bitami :) Masz wyrównywane adresy do 4 bajtów, dlatego kompilator dodał Ci w środku tablicę 3 bajtową. Jeżeli chcesz żeby taka struktura miała 9 bajtów to musisz jej nadać atrybut packed. 2) Czy stosowanie zmiennej 8 bitowej...
Może pamięć się "zalock'owała" (ustawiły się przypadkiem flagi "option bytes") ? Mnie się to zdarzyło wielokrotnie. Do unlock'owania procesorów STM32 używam programatora J-Link i oprogramowania z firmy SEGGER a konkretnie "JLinkSTM32.exe". Jest to specjalnie napisany program do takich właśnie sytuacji. W ST-Linku powinien pomóc Masss Erase z programu...
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...
Może źle wgrywasz swoje programy? Nie znam konkretnie tych procesorów, ale np. w STM32 trzeba ustawić pamięć, do której ma być załadowany program? Próbowałeś modyfikacji przykładu i wgrywanie spod tego samego projektu? Może stale masz wskazany do wgrania stary plik wsadowy?
To, że tam jest podłączone 8 MHz, to nie znaczy, że z taką częstotliwością pracuje, tym bardziej że bez podkręcania STM32F405 działa do 168 MHz. Racja, czyli... jeszcze gorzej. Przejrzałem źródła i rzeczywiście STM32 w tym projekcie pracuje z taktowaniem 168MHz. Wiem, że takie emulatory pamięci ROM w 8-bitowcach od biedy dają radę (oczywiście STM32...
Z nagrywaniem jest kwestia "na co?" - ale to zależy od tego, czego użyjesz. Można programowo wygenerować wzorce sygnałów, jakie są potrzebne, i na jakimś Pi odczytywać z karty SD (czy mikroSD - różne bywają tam gniazda na kartę) odpowiednie wzorce i puszczać je na pin, który będzie połączony z wejściem wzmacniacza. Na każdy sygnał trzeba będzie ze 200kB,...
Connect under reset, reset: hardware, reset after connect, SWD (a nie JTAG), częStotliwość poniżej 1 MHz i musi zadziałać. Możesz jeszcze spróbować nacisnąć guzik reset podczas łączenia. I ZAWSZE zachowuj funkcję SWD na obu nogach (AF0), nie ustawiaj ich jako GPIO ani nic innego. Spróbuj zrobić to pod Keil MDK-ARM (przynajmniej skasować pamięć).
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...
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
Znalazłem informację, że gwarantowana ilość zapisów to 1000. A nie wiem ile wcześniej była zapisywana ta pamięć. Jakie komendy powinny być ?
Pytanie 1 - dlaczego uważasz kolego, że jest Ci niezbędny większy RAM Pytanie 2 - dlaczego nie użyjesz mikroprocesora z obsługą zewnętrznej pamięci - czyli od Mega64 wzwyż. Pytanie 3 - dlaczego nie użyjesz mikroprocesora z większą pamięcią wbudowaną na innej architekturze (np. ARMowe LPC, STM32)
Wg dokumentacji MINIMALNA wytrzymałość pamięci w STM32 to 10k cykli. Jest taki jeden wyjątek: STM32F030 Można zerknąć np. do datasheeta (DM00088500), tabela 38. Miałem zabawną dyskusję z przedstawicielem producenta: Ja: Czemu ST daje tu gorszą pamięć? PP: Ta pamięć nie jest gorsza, niż w innych STM32, po prostu jest mniej testowana i dlatego producent...
Dziękuję Panowie za pomoc. Opcja z podaniem "1" na Boot0 zadziałała, można wtedy wyczyścić pamięć przy pomocy jtaga.
Tak, da się. Zgrana pamięć ma niektóre komórki pamięci wykasowane (ustawione 0xFFFFFFFF)...
To jest tzw. bluepill i wszystkie opisy, które się go tyczą pasują. Zworki, w dużym uproszczeniu, służą do wyboru bootloatera. Masz wgrany jakiś soft, który emuluje pamięć masową. Ja zawsze używam ST-Link'a, nie korzystam z bootloaderów, ale można wgrywać przez port szeregowy, jak i USB (ale musisz mieć wcześniej wgrany jakiś niestandardowy bootloader,...
To bardzo proste i opisane w DSie. Są rózne tryby. Możesz podłączyć tylko 8 linii danych i wtedy musisz odczytywać po jednym bajcie aby oczytać całe słowo z pamięci (16 bitów). Wtedy używasz trybu 2 Możesz podłączyć tylko 16 linii danych odczytujesz całe słowo z pamięci (16 bitów). Wtedy używasz trybu 1 Analogicznie jest z trybami pisania - których...
Tak spytam przy okazji poza tematem - w STM32 chyba nie ma sensu dla oszczędności stosować uint8_t czy uint16_t bo chyba i tak zawsze rezerwuje całą komórkę 32 bity Chyba pamięć jest zorganizowana co 8bitow i jest możliwość zapisywania bez data alignment. Jest chyba możliwość zapisu pamięci: word, half-word, byte.
Jeśli zmiana rozmiaru buforów powoduje że program przestaje działać oznacza to że prawdopodobnie kończy się pamięć na stosie. Kilka rozwiązań jest. 1. zwiększyć stos 2. zdefiniować bufory jako static albo zmienne globalne wtedy nie trafią na stos 3. jeżeli idea projektu na to pozwala podzielić odczyt na mniejsze paczki i zapisywać po trochu(używając...
FFT o długości okna M probek daje M/2 prążków z rozdzielczością Fsampl/M. Dość proste. Czyli np. Fsampl = 22000Hz dł. FFT = 1024 rozdzielczość 21.48Hz pierwszy prążek to składowa stała. ostatni to 10978 Hz Czyli ni jak wpasować te 21.48Hz czy 42.9Hz w potrzebną nam 30Hz, potrzeba więcej prążków i jeszcze jakieś wagi bo przecież prążki zachodzą na siebie...
Mam jeszcze pytanie odnośnie samego działania SWD i programowania... Jeśli BOOT0 = 0 to startuje ten kod który jest we Flash. Jak to się dzieje, że mimo działającego programu OpenOCD potrafi przerwać jego pracę i zacząć wgrywać program ? Jeśli dobrze doczytałem to jest to tylko możliwe jeśli są włączone sygnały SWDIO i SWCLK ? i drugie pytanie: Jeśli...
... czy da sie to zrobić jakoś wydajniej? Bo w tym przypadku dla każdej ikony tworzę oddzielna funkcję, która różni się tylko tablicą. Napisz jedną funkcję do wyświetlania z parametrami. Funkcję tę uruchom z RAM'u. Kompilator i tak rozmieści "liniowo" tę dwuwymiarową tablicę więc możesz używać wskaźnika zrzutowanego na "u16". Jakbyś nie zrobił (wskaźniki...
W skrypcie linkera masz zadeklarowaną zbyt małą pamięć. 4\/3!!
o ile pamięć mnie nie myli to jest tam pole lfname
Witam! Zbieram informacje na temat obsługi dużych kart pamięci >16gb przez mikrokontroler. Są to oczywiście w tym momencie jedynie wolne przemyślenia. Do tej pory rzuciły mi się w oczy jedynie dwie karty warte uwagi: - SDXC - mam stosunkowo niewiele informacji na ten temat. Obsługa przez SPI (za wolny - przydałoby się chociaż 1mb/s), UHS (o tym nie...
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?
Odkryłem, że zawsze podczas używania wskaźnika do zapisu adresy: [syntax=c]*( volatile uint8_t * )( Bank2 | Address ) = x;[/syntax] np. podczas próby zapisu do pamięci uC się zawiesza. Chciał się zapytać co może być przyczyną tego zjawiska ? A może bym wymienił pamięć na nową ?
Ależ jest i to znacznie lepszy mechanizm bo zabezpieczyć procesor można zarówno programatorem jak i z poziomu programu a odbezpieczenie wymaga skasowania całej pamięci i odblokowanie nie nastąpi do momentu kiedy cała pamięć nie będzie wykasowana (algorytm sprawdza wszystkie komórki - zabezpieczenie przed trikiem z wyłączeniem zasilania po rozpoczęciu...
Witam. Mam odbiornik SDR Radio "Malachit". Chcę do niego uzyskać pełne autorskie oprogramowanie. Instalacja najnowszego firmware za pomocą STM32CubeProgrammer 2.6.0. przebiegła normalnie. Jednak radio nie do końca działa jak powinno. Muszę wrócić do wersji testowej firmware. Przedtem jednak trzeba "wyczyścić" pamięć FRAM urządzenia dedykowanym oprogramowaniem...
Ostatnia rzecz jaka przychodzi mi do głowy, to zabezpieczenie pamięci przed zapisem. Do odbezpieczenia może być konieczne ustawienie pinu WP w stan wysoki, po czym zapisanie do rejestru statusu (instrukcja WRSR) wartości 0x00 (cała pamięć odbezpieczona, brak zabezpieczenia rejestru statusu pinem WP) [zapis musi być poprzedzony przez WREN]. Innych firmwareowych...
Ale chyba Arduino nie ma USB, tylko zainstalowany port szeregowy na USB (może jeszcze kwestia, który model, ale Arduino Nano na pewno) - podłączenie do komputera Arduino przez USB to podłączenie portu szeregowego i komunikacja z Arduino poprzez ten port - komputer nie może "zobaczyć" Arduino jako pendrive-a. Natomiast można to zrobić z STM32F103C8T6...
ARM to zarówno układy z 4kB ramu pracujące na 20MHz jak i wielordzeniowe specjalizowane układy w telefonach komórkowych obsługujące pamięć DDR i taktowane gigahercami. STM32 znajdują się bliżej tych pierwszych niż tych drugich. 4\/3!!
W przypadku wciągnięcia śmieci ze zmiennej automatycznej dostajemy przewaznie, kolokwialnie mowiac, syf, nie zero. To samo dotyczy nie zainicjalizowanego statica w funkcji. Już to przerabiałem z powodu 'zapomnienia' zainicjalizować strukturki do liczenia CRC. Problem polega jedynie na pomyleniu adresu zmiennej / rejestru z ich zawartością. Oj polega....
Nie da się - STM32 z zewnętrzną magistralą do podłaczenia pamięci dopiero mają wejść do produkcji w tym roku...
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...
Nie używam Keila ale coś takiego powinno wystarczyć [syntax=c]const unsigned char tablica[] = {dane}; const unsigned char *pointer pointer = tablica;[/syntax]
Najtaniej : STM32 z magistralą zewnętrznej pamięci + podstawka pod pamięć podłączona do tejże magistrali + klon jLinka + oprogramowanie jFlash. Kilka lat w ten sposób programowałem różne pamięci serii S29GL. Teraz przerzuciłem się na BX48 Batronixa, ale to droga zabawka a te tanie nie koniecznie chcą programować S29GL.
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. W jakim formacie jest skompilowany jest twój program? elf, bin, hex ? 2. Pochwal się nam swoim skryptem debuggera - robisz to przez telnet czy jak? Jakich poleceń używasz do programowania i debugowania? Jak używasz pliku gdb.ini to pokaż go nam. Twój program najwidoczniej ma za duże zapotrzebowanie na pamięć.
Ten element stabilizuje napięcie 3,3V dla STM32, pamięci i inne - na pozostałe pewnie napięcie prosto z zasilacza.
Przeczytaj sobie np ten temat: http://www.elektroda.pl/rtvforum/topic17... Od siebie napiszę tylko tyle, że jak porównasz kody bez bilioteki ze źródłem biblioteki to zauważysz jedną rzecz: coś co często można zrobić w dwóch linijkach (konfiguracja) tam jest robione w dwustu. Jest tam mnóstwo niepotrzebnych obliczeń do sprawdzania jaki bit gdzie...
Po prostu źle skonfigurowałeś pamięć - pewnie wynika to z niechęci do czytania RM-ów.
Inne środowiska są albo płatne i darmowe wykorzystanie ograniczenia do np. 32kB niczego nie rozwiązuje, bo prosty wyświetlacz graficzny na starcie wykorzysta tą pamięć Używam Atollic TrueSTUDIO for ARM Lite. Ma co prawda ograniczenie rozmiaru ale dotyczy ono tylko kodu. Dane takie jak tablice fontów czy grafiki nie są liczone, natomiast funkcjonalnością...
Chcę móc dynamicznie alokować pamięć, której rozmiar jest z góry znany, a nie ograniczony stosem. A mółbyś tę myśl rozwinąć? Czy stos ma wielkosć nieznaną bo nie rozumiem.
Stos, pamięć, kto to wie? Raczej HAL-a nikt nie będzie debugował. Takie podmianki część plików stąd część nie wiadomo skąd - raczej nigdy nie działają. Zrób sobie projekt z Cube i zaimportuj. Nie sądze abyś miał problemy. Albo napisz sobie to samo na rejestrach i zobacz. Praca na 10 minut.
W25Nxxx to zwykła pamięć SPI/qSPI kompatybilna z pamięciami 25xx. Możesz zaprogramować dowolnym programatorem który obsługuje pamięci o rozmiarze 1Gbit, wybierasz dowolny numer kostki o takiej pojemności i wyłączasz opcje sprawdzania ID. W miare tani programator do spi-flashy to program flashrom + jakikolwiek adapter, np serprog https://github.com/dword1511/stm32-vserp...
Tutaj chodzi o sygnał audio, zwyklą muzykę. Chcę z tych 24 bitów zrobić 16 bitów bo taką mam pamięć SRAM. Potem ten sygnał będzie "domiksowany" do sygnału głównego, 24-bitowego. Jak z tą kompresją czy nieliniowością?
Pytanie czy analogowy oscyloskop sie nadaje do takich rzeczy? Sygnał i2c nie jest okresowy, więc na analogowym oscyloskopie wyświetlać się będzie właśnie to, co widzisz. Chyba, że ma pamięć. Możesz ewentualnie użyć zewnętrznej synchronizacji, generując specjalnie w tym celu impuls przed rozpoczęciem transmisji na dodatkowym pinie i korzystając z odpowiednio...
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...
Witam Odbierając dane w stm32 nie udało mi się zgubić żadnej danej nawet jak dam po każdym odebranej ramce 50ms Delay na testy. Max Transmisja jaką miałem to 4Mbit Akurat używam TCP to przesyłania programu wykonywalnego do STM32. Mam telegramy które wysyłam z PC do STM32 a on na nie odpowiada. Zapytania i odwiedź mam na jednym porcie Chciałem teraz...
no ale flash też jest w ROMie (czy aby na pewno jest to pamięć niezapisywalna - wolałbym aby było inaczej ale jak się nie da to trudno)
Jest napisane: ustaw PSIZE na 32 bity. To wpływa na sposób i czas zapisu i nie ma nic wspólnego z organizacją pamięci. W F4 pamięć zapisuje się w słowach 32-bitowych - zrzutuj wskaźnik na uint32_t na tę tablicę i zapisuj po 32 bity.
programem dla STM, jest to tylko i wyłącznie definiowanie pinów No... nie tylko :) usbserial zamiast serial do debug przez usb (bo większość arduino ma konwertery bądź atmegi u jako konwertery), mamy z reguły kilka i2c, uart, spi (a do tego alternatywne piny). Nie ma eeprom. I jak dobrze kojarzę tylko PB są 5V tolerant co i tak jest lepsze niż SAMD21...
Bo ja wiem czy nie wyjdzie. Z tego co pamiętam te SB dosyć proste były, a DMA to chyba nie była jedyna możliwość, tym bardziej, że część z nich miała własną pamięć na próbki. Zresztą DMA na ISA do zasymulowania programowo to też kosmos nie będzie. Poczytaj dokumentację tej karty, może jest jakiś tryb sensowniejszy. Z drugiej strony może wykorzystać...
A jeśli chciałbym mój program wgrać do RAM to musiałbym w tym Twoim skrypcie linkera dla sekcji np .text zamiast > rom AT > rom wpisać > ram AT > ram czy wewnątrz {} tez trzeba coś zmieniać? Jeśli wystarczy Ci, że program będzie działał jedynie przez debugger, to wystarczy ta pierwsza opcja. Jeśli byś chciał, żeby program normalnie działał z RAM, to...
Co większe STM32 mają możliwość podłączenia (i to nawet dużej) pamięci zewnętrznej (RAM, ROM, Flash...). Na to trzeba sporo pinów, o ile pamięć nie jest szeregowa.
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.
Jeśli skonfigurujesz odpowiednio moduł FSMC to nie widzę przeszkód.
Hmm... podejrzyj dezassemblację (plik .lss jeśli korzystasz z moich szablonów) i zobacz co tam ciekawego się dzieje (; Jeśli możesz, to wrzuć tu projekt w jakiejś przyciętej postaci. 4\/3!!
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();...
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 do STLinka próbuje napisać
Ja nie tworzę żadnej zmiennej tylko wskaźnik któremu każę wskazywać na pewien adres. Fredie :) dziewięć dni temu prosiłem cię oto żebyś wkleił ten kawałek pierońskiego kodu na forum i się doczekałem tylko kilku krotnego chwalenia się tym, że go masz i że jest taki genialny ... . Pamięć jest odblokowana do zapisu tylko jednokrotnego i to zaraz po resecie....
Na ogół "sprytne" rozwiązanie - to takie, które minimalizuje koszty sprzętowe. Przy kodowaniu 3-bitowym kosztem jest dodatkowa pamięć RAM w uC, której może w niektórych sytuacjach zabraknąć. Jeśli nie braknie - rozwiązane nie kosztuje nic. W rozwiązaniu z bramką kosztuje układ, miejsce na płytce i montaż - w każdym egzemplarzu urządzenia. Rozwiązanie...
Czy ktoś ma plik TXW8301 FLASH ALGORITHM ELF? Otrzymuję błąd "ERROR: Current CPU is not in debug-mode, can't do any flash operations" podczas próby zrzucenia pamięci flash przy użyciu innych plików elf. P.S. Pamięć flash to SPI 16Mbit W25Q16JVSSIG Procesor wewnątrz TXW8301 to CK803SG: +-- Debug Arch is CKHAD. --+ +-- CPU 0 --+ XuanTie CPU Info:...
Da radę podpiąć bezpośrednio do stm32? Myślę, że tak. Jednak uP będzie musiał mieć dodatkową pamięć aby zapisać w niej całą klatkę obrazu.
Problem prawie rozwiązany, tym razem to była pierdółka. Aż dziw bierze, że straciłem na tym kilka godzin. Funkcja obsługi przerwania nie nazywa się: [syntax=c_loadrunner]void USB_LP_CAN_RX0_IRQHandler(void)[/syntax] Tylko [syntax=c_loadrunner]void USB_LP_CAN1_RX0_IRQHandler(void)[/syntax... Ta jedynka była kluczowa. Zauważyłem, że nie wchodzi w przerwanie...
Chyba nie proponujesz, żeby bootloader na żywo starał się odczytywać te współczynniki skądś i modyfikować przesyłany firmware wstawiając do niego odczytane wartości... To byłoby niezłe kombinowanie... To chyba nie jest jakiś wielki problem. Ten manewr chyba stosowany jest w niektórych PIC-ach, które mają fabrycznie wgrywane dane kalibrujące oscylator....
- Sprawdź, czy pamięć, którą używasz, jest obsługiwana przez DMA (i to konkretnie tę, którą używasz). - Jeżeli włączyłeś Cache na pamięci, w której zapisujesz lub odczytujesz dane, pamiętaj, że musisz ją "invalidate". Inaczej nie masz żadnej gwarancji, że dane zostały zapisane/odczytane z pamięci. DMA nie aktualizuje cache.
Ogólnie dobrze kombinujesz. Wyrzuć ustawienie VTOR z aplkikacji - niech ustawia go bootloader. W bootloaderze zawołaj procedurę spod adresu pobranego z adresu 4 aplikacji, czyli o 4 dalej niż wartość VTOR. Jedyna potrzebna zmiana w skrypcie konsolidatora - to adres startowy (no i zmniejszony rozmiar dostępnej pamięci ROM)
pamięć stm32 stm32 zewnętrzny pamięć pamięć flash stm32
amperomierz akumulator flexible memory controller działa czujnik deszczu
podzielnik techem google weryfikacja
Skutki uboczne przewymiarowanej pompy ciepła Mercedes A180 2019 - Dolna połowa tylnych świateł nie działa