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.
zepsuta pamięć
Ż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.
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...
Proszę bardzo.
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...
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!!
To trzeba w linkerze dopisać jeszcze jedną pamięć ?
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...
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.
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...
Moim zdaniem nie jest to wina kompilatora. Powinieneś sprawdzić rozmiar sterty, ponieważ funkcja malloc właśnie w tym obszarze rezerwuje 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...
To od razu zapytam, czy przy STM32F103VC można obsłużyć pamięć nand flash?
Ponieważ systemy są wielozadanione i program nie jest sam. Dodatkowo jest pamięć wirtualna.
W skrypcie linkera masz zadeklarowaną zbyt małą pamięć. 4\/3!!
Witam, Mam problem z odblokowaniem pamięci Flash do zapisu. sekwencja: FLASH->KEYR = 0x45670123; FLASH->KEYR = 0xCDEF89AB; Działa na pewno dobrze, na co wskazuje Lock (FLASH->CR & 0x80). Pozwala mi to na przeprowadzenie tylko jednej operacji na flash'u, na przykład mogę skasować jakąś stronę czy zapisać jakąś daną. Problem pojawia się gdy...
Zainstaluj STLink utility. W jego opcjach wybierzesz connect under reset, i skasuj pamięć procesora. Program popraw. I miłej zabawy życzę.
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....
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ęć).
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ę...
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....
//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.
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...
Ok, to tak działa - po włączeniu zabezpieczenia Read Out Protection - Enable i Apply, procesor staje się niedostępny dla odczytu pamięci flash. Po ponownym odbezpieczeniu - Disable - Apply, procesor się odblokowuje, ale zostaje skasowana cała pamięć flash.
Mam zestaw STM32 discovery ale mam z nim problem. Po podłączeniu do komputera wykrywa go jako pamięć masową. Próba zaprogramowania w uVision kończy się komunikatem Can't halt the core. Zainstalowanie ST- link utitliy i aktualizacji firmware nie pomaga. Zestaw nowy, otrzymany od wykładowcy.
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...
Mogę się mylić ale ten STM32 raczej nie da rady... Ma mniej więcej 2 razy za mało RAM'u, żeby zbuforować jeden wyświetlony obraz... Dla TouchGFX typowa konfiguracja to pamięć QSPI + zewnętrzny SRAM/SDRAM + RTOS. Bez TouchGFX myślę, że da się to zrobić, kosztem braku animacji, przejść i innych bajerów.
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"...
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...
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...
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...
Chyba nie chcesz powiedzieć, że każdy klawisz powyżej jest osobną bitmapą? [url=http://www.libpng.org/pub/png/pngap... możesz znaleźć użyteczne materiały. Większość jest na PC, ale dostępne źródła można przepisać na ARMa. Przyznam się, że nie sprawdziłem tego dokładnie kiedy szukałem dla siebie algorytmów, ponieważ z lenistwa zdecydowałem...
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ż....
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...
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?
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...
pamięć wirtualna Pamięć wirtualna bez MMU? Niezłe wyzwanie.
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ć ?
https://obrazki.elektroda.pl/2759406900_... 8-bitowe mikrokontrolery nadal można znaleźć w wielu projektach, ale dzięki nowemu, niedrogiemu 32-bitowemu z rdzeniem AMR Cortex-M0+ taktowanym 48 MHz — STM32C0 — firma STMicroelectronics dąży do wyparcia 8-bitowych jednostek. Co może się odbyć wskutek: „ograniczonego wpływu...
Witam. Mikrokontrolery STM32 mają w sobie embedded flash memory. Jest to pamięć EEPROM, NAND Flash czy NOR Flash? Nie znalazłem tego w manualu.
Dziękuję Panowie za pomoc. Opcja z podaniem "1" na Boot0 zadziałała, można wtedy wyczyścić pamięć przy pomocy jtaga.
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...
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...
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ą ?
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...
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....
A jeszcze pytanie, bo ja bym chciał odpalić na tym STM aplikację która obsługiwała by jako pamięć danych pendrivea... Zrobiłem już cos takiego z Vinculum... ale to się okazała porażka, bo na firmware V2DAP miałem taki problem, że jak otworzyłem plik do zapisu i odczytu to po zapisaniu danych gdzieś w połowie pliku, jego dalsza część była ucinana i kończył...
Tak, da się. Zgrana pamięć ma niektóre komórki pamięci wykasowane (ustawione 0xFFFFFFFF)...
Witam Dodałem trzy usprawnienia do programu radioodbiornika internetowego. Pierwszym usprawnieniem jest już możliwość odtwarzania strumienia AAC-LC nadawanego przez część radiostacji internetowych. Drugim usprawnieniem jest możliwość samoczynnego wznowienia odtwarzania wybranej radiostacji przez program radioodbiornika w przypadku, gdy serwer radiowy...
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ęć.
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)
gaskoin, ale piszemy o różnych rzeczach. Czym innym jest struktura procesora a czym innym struktura wiedzy czy nabywania wiedzy o nim. Instrukcja obsługi nie musi mieć struktury procesora. Przytoczony fragment: "The timer clock frequencies are automatically fixed by hardware. There are two cases: 1. if the APB prescaler is 1, the timer clock frequencies...
Czas się przesiąść na µC z I²S i do tego jakiś zewnętrzny DAC. SB16 sam pobiera próbki z pamięci poprzez DMA.
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...
o ile pamięć mnie nie myli to jest tam pole lfname
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,...
Biblioteki z ST są zakręcone..niestety. Czy ja wiem? Są po prostu beznadziejne <: A jak się spojrzy na kod, to "OMG" <: Zaletą mojego pomysłu jest to że struktura ze zmiennymi jest jakby zrzutowana na pamięć więc dostęp do niej nie wymaga użycia żadnych dodatkowych funkcji. W istocie, w tej emulacji EEPROMu o której pisałem powyżej dostęp faktycznie...
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!!
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...
Sin czy Cos zazwyczaj się robi na LookUpTable, czyli tablica w pamięci - STM32 zazwyczaj mają jej dość sporo :)
Jeśli ktoś znałby dokładną przyczynę tego tj. czy to jest wina samej pamięci czy wina architektury to byłbym wdzięczny za odpowiedź i wskazanie źródeł. Reference Manual 2 Memory and bus architecture 2.1 System architecture https://obrazki.elektroda.pl/4956208900_... Skoro poprzednio miałeś stos w rejonie 0x20030000, to wypadał on w...
Panowie używam środowiska STM32cybeIDE. Podłączyłem pod Nucleo z podpiętym pinem RESET i da się go programować. Podłączam chiński programator nadal nic, Włączam STlink Utility pod chińskim programatorem trzymam przycisk reset i programator się łączy - usuwam cala pamięć procka i znów da się programować tylko raz chińskim programatorem pod STM32cubeIDE....
Jak jest zablokowany to nie odczytasz. kontroler potrzebował odblokowania, i nawet coś odczytuje. Jeżeli możliwe było odblokowanie to znaczy ze był RDP Level 1, którego zdjęcie powoduje skasowanie pamięci - więc i tak nie będzie co czytać - bo po co czytać pustą pamięć FLASH. Wiadomo, że tam są same 0xff
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...
Po prostu źle skonfigurowałeś pamięć - pewnie wynika to z niechęci do czytania RM-ów.
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...
Możesz rozwinąć tą myśl? Dlaczego miałyby być miejsca niewidoczne skoro to świeżo zakupiony procesor bez jakiś zabezpieczeń. A może pamięć ma być uszkodzona?
Wogóle skąd masz implementacje tych funkcji dynamicznej alokacji pamięci?
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 :/
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...
STM32f4 64KB RAM. Właśnie się przekonałem, że wiele zależy od konfiguracji pamięci.
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...
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ą?
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?
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...
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...
W przypadku adresowania pojedyńczych bitów - było, ale nie na taką skalę. W przypadku BSRR i BRR - jesteś w stanie zmieniać wartość całego portu bez czytania go. Tu masz ten wątek [url=http://www.elektroda.pl/rtvforum/to... W mojej ocenie ciekawie mogłaby wyglądać odpowiedź na pytanie, co pojawi się na porcie w takim przypadku: [syntax=c]GPIO->BSRR...
Nie znam HAL ADC, ale znając sam ADC podejrzewam, że Twój kod robi coś zupełnie innego, niż Ci się wydaje. Prawdopodobnie konwertujesz zawsze 4 kanały. Użyj DMA i odsysaj wyniki konwersji do wektora w pamięci.
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.
No i mamy dwie różne opinie. A czy któraś z opcji jest "szybsza"? Albo zajmuje mniej pamięci?
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,...
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.
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)
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
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[]...
mass storage ale możesz zrobić tak że procesor po otrzymaniu pliku jako mass storage go przetwarza i zapisuje gdzies juz w ukrytej pamięci.
Nie da się - STM32 z zewnętrzną magistralą do podłaczenia pamięci dopiero mają wejść do produkcji w tym roku...
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!!
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...
Stos jest umieszczany zaraz za danymi Nie tak zaraz. Domyślna konfiguracja z Cube'a ustawia wskaźnik na końcu pamię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.
biblioteka STM nie jest ok :P Zainteresuj się bitbandigiem -> można jeszcze prościej grzebać w rejestrach, z dość sporą oszczędnością pamięci
Zaraz będzie, że krytykuję albo się naśmiewam, ale widzę tutaj poważne braki w wiedzy. Zacznę od końca: SSD1289 to jakieś nieporozumienie. Nawet jeżeli uzyskasz dobre wyniki przy wypełnianiu całego ekranu, to wszystko się wysypie przy malowaniu ikon czy dowolnego obszaru innego niż cały ekran. Ten kontroler potrafi w jednej transmisji wypełnić tylko...
Myślę, że studiowanie RM do Cotrex-a to fałszywy trop. Obsługą pamięci zewnętrznych, zawsze zajmuje się blok z poza rdzenia. U ST to się chyba nazywa FSMC. Ale tak jak znalazłeś, mało jest PSRAMów w obudowach "normalnych". PSRAM to pamięć pseudo statyczna, udaje statyczną choć w rzeczywistości jest matrycą dynamiczną, to skomplikowanie technologiczne...
Witam, mam problem ze zmuszeniem stm32f107(konkretnie stm32 Butterfly) do obsługi USB. Chodzi o to, że chciałbym, by mój stm mógł być widziany przez komputer jako pamięć zewnętrzna. Kolejnym krokiem będzie przesyłanie prostych komend HID w celu sterowania uC przez komp. Chciałbym dodać, że próbuję korzystać z gotowej biblioteki udostępnionej przez st...
Zamiast próbować wgrywać program z Eclipse, to skasuj to co tam jest przez OpenOCD - tylko i wyłącznie. Istnieje też (mało prawdopodobna) opcja, że zablokowałeś pamięć, więc w manualu poszukaj jak ją odblokować ("flash protect" oraz "stm32f1x unlock"). 4\/3!!
Też z tego co wiem nie potrafią wyczarować nie istniejących bibliotek. Nie rozumiem dlaczego nie potrafisz zrozumieć że SPL-a dla L0 nie ma, nie było i nigdy nie będzie. przy okazji jak już wspomniałem - proponuję tę nazwę wytrzeć z pamięci.
Witam! Chcę wgrać parę danych do pamięci mikrokontrolera STM32F107 (ustawienia domyślne). Nie wiem za bardzo jak powinien wyglądać kod linkera do takiego zapisu? Korzystam z CodeSourcery ze strony Freddiego. Nie posiadam debuggera, więc kod mogę wgrywać tylko poprzez bootloader na USART. Pamięć chciałbym zapisać paroma danymi 32bit, a następnie mieć...
stm32 pamięć pamięć flash stm32 stm32 zewnętrzny pamięć
alpine kostka zmiana napedu iphone pilot
identyfikacja radyjka internet satelitarny
Typowe usterki skrzyni M32 w samochodach Opel Brak świateł długich w Opel Astra J 1.7 CDTI