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...
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.
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ę...
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...
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...
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...
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ęć ?
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...
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...
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....
Moim zdaniem nie jest to wina kompilatora. Powinieneś sprawdzić rozmiar sterty, ponieważ funkcja malloc właśnie w tym obszarze rezerwuje pamięć.
//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. Mikrokontrolery STM32 mają w sobie embedded flash memory. Jest to pamięć EEPROM, NAND Flash czy NOR Flash? Nie znalazłem tego w manualu.
Ponieważ systemy są wielozadanione i program nie jest sam. Dodatkowo jest pamięć wirtualna.
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...
Chce zmienić na jeden SSD i jeden HDD bo akurat teraz mi się dysk posypał. Rozmyślam nad takim Dysk CRUCIAL MX500 500GB SSD I jeszcze jaki HDD byście mi polecili pod te moje podzespoły żeby wszystko pasowało Karta graficzna – GeForce ASUS GTX 960 2 GB 128 bit strix OC. Procesor-Intel Core i5 6400 3300 mHz. Pamięć ram-8 GB DDR4-2133. Zasilacz –...
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...
pamięć wirtualna Pamięć wirtualna bez MMU? Niezłe wyzwanie.
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...
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...
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ż....
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...
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?
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,...
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ć ?
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
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)
Zawsze możesz spróbować połączyć się z bootloaderem na UART i przy jego pomocy skasować pamięć i usunąć ewentualne zabezpieczenia... Przejrzyj manual OpenOCD pod kątem dziwnych komend dostępnych dla tego typu układu, może to coś z option bytes? 4\/3!!
Dziękuję Panowie za pomoc. Opcja z podaniem "1" na Boot0 zadziałała, można wtedy wyczyścić pamięć przy pomocy jtaga.
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,...
Tak, da się. Zgrana pamięć ma niektóre komórki pamięci wykasowane (ustawione 0xFFFFFFFF)...
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...
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...
o ile pamięć mnie nie myli to jest tam pole lfname
... 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...
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?
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"...
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...
https://obrazki.elektroda.pl/6678526600_... https://filmy.elektroda.pl/59_1553290096... https://obrazki.elektroda.pl/6296500900_... https://obrazki.elektroda.pl/9260337200_... Zapewne nic odkrywczego ale wolnej chwili udało się połączyć parę projektów i wyszło takie coś. Jeśli chodzi o hardware to...
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...
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...
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!!
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.
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]
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,...
Ten element stabilizuje napięcie 3,3V dla STM32, pamięci i inne - na pozostałe pewnie napięcie prosto z zasilacza.
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ęć.
Po prostu źle skonfigurowałeś pamięć - pewnie wynika to z niechęci do czytania RM-ów.
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ą?
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.
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...
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...
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.
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...
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...
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...
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.
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)
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ć...
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.
Tak, słyszałem o metodzie z wyłączeniem zasilania, ale procesory STM32 maja jeden patent (z tego co wiem zgodnie z danymi uzyskanymi od ST). Uruchamia się proces kasowania pamięci. Następnie procesor sprawdza całą pamięć i jeżeli jest pusta (wszystko na 0xFF) usuwa zabezpieczenia (czyli jeżeli zaczął kasować i nie skończył bo proces został zakłócony...
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...
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.
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....
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();...
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...
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"...
- 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.
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....
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.
kondensatory bliżej Naprawdę uważasz że da się bliżej przy jednowarstwowej? Zauważ że odległość C16 od xmegi to 1 długość kondensatora w obudowie 0603 od padów C15 2 dwie długości. W jednym przypadku można C2 przysunąć do pamięci, odsuwając pamięć w prawo. Spróbuj przysunąć C11,C9,C8 albo C15 bliżej. Umiejscowienie rezonatora w ten sposób jest chociażby...
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...
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...
Trzeba nadpisać pamięć permanentną. W większości przypadków nie ma z tym problemu, jednak w niektórych aplikacjach producenci umieszczają w niej ważne dla funkcjonowania urządzenia parametry, i jak za dużo usuniesz lub z nie właściwych adresów, to możesz uwalić sobie aplikacje. B.T.W. Jeżeli jest to wersja OEM, to raczej nie liczyłbym na domyślną aplikację...
Jak właśnie słusznie zauważyłeś, ten projekt to czarna skrzynka generowana przez Cube, aczkolwiek nie mogę zasięgnąc nigdzie informacji, czy w STM32F1 są jakieś znaczące różnice w obsłudze Ethernet-u, a kody inicjalizujące wydają się być podobne. O ile mnie pamięć nie myli, to oba mają identyczny MAC. Niestety nie wiem jak obsłużyć zewnętrzny PHY poza...
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)
Level2 - całkowicie zabezpieczony, brak możliwości przejścia na niższe poziomy zabezpieczeń, wyłączony JTAG i SWD. No właśnie, da się później skasować za pomocą SWD/JTAG pamięć/ zabezpieczenia skoro nie ma już dostępu do tych łączy? ;)
Dzień dobry. Rozpocząłem naukę języka C. Wszyscy mówią ze jest fajny (zaczyna mi się również podobać i chcę się go nauczyć). Zawsze pisałem programy w asemblerze. Na forach są sprawy które nie są poruszane często ponieważ króluje STM32 i raczej jedna pamięć SRAM. A teraz mój problem: Procesor ARM i wewnętrzna pamięć 16kB SRAM. Zewnętrzna pamięć 32MB...
Odczytaj pamięć układu za pomocą OpenOCD to będziesz wiedział czy jest tam program czy go nie ma. Jak masz ustawione BOOT0 i BOOT1? 4\/3!!
No więc właśnie ten podział - jest kwestią estetyki/przejrzystości, ale zupełnie nie broni się poza tym. inline - ok, ale bez inline mamy tylko narzut na wywołanie i powrót po stronie wołającego i wołanego, czyli dla wygody i estetyki marnujemy pamięć i czas procesora. Oczywiście można zaraz zapisać wzór matematyczny współczynnika wygody i estetyki...
pamięć stm32 stm32 zewnętrzny pamięć pamięć flash stm32
znaleźć termistor virtual floppy drive kalibracja belki tensometrycznej
prostownik ideal sharp lodówka
Skoda Fabia 1.9 SDI – szarpanie silnika, czarny dym, praca na trzy cylindry – diagnostyka i typowe usterki Podłączenie dwóch spiral grzewczych 230V/400V do siły – schematy, zabezpieczenia, normy