Kontroler pamięci USB z MCU

Mar 06, 2015 23 Replies

Szukam układu który spełniał by poniższe założenia:



-ma port USB (prędkość dowolna), od strony portu USB jest widziany dla innego urządzenia jako standardowa pamięć masowa.



- zawiera mikrokontroler, który może w łatwy sposób pobierać dane z tej samej pamięci, która dla USB jest pamięcią masową.



- wielkość pamięci "współdzielonej" między USB a MCU to pojedyncze kB (więcej oczywiście nie zaszkodzi).



- co do części MCU, moc obliczeniowa bez znaczenia, może być 8-bitowiec, w projekcie wystarczy kilka linii I/O. Natomiast bardzo pożądany jest darmowy/tani kompilator, biblioteki do obsługi USB i typowych systemów plików (FAT). Mile widziana też niska cena w ilościach hurtowych i niekłopotliwa w montażu obudowa. Podejrzewam, że jakiś gotowiec spełniający te wymagania jest dostępny na rynku, polecilibyście coś?



pozdrawiam


Czy te wspolne 10kB to wszystko czy tylko tyle ma widzieć mcu a po włożeniu do pc w trybie pendrive ma być te 10kB+ jeszcze trochę? O ile dobrze kojarzę w pakiecie softu Microchipa jest taki gotowiec do zrealizowania na seri 18F*50 lub pic32. Troche hermetyczne rozwiązanie, bo trzeba trochę gimnastykować się z fatem (generowanie jednego pliku "wymiany" jako wspólne dane). Chyba prościej zrobić to na mcu z usb host+fatfs, do którego po prostu wtykasz pendrive, na którym mcu tworzy pliki z potrzebnymi danymi.

Dobrze pamiętałem, przykład się nazywa Device - Mass Storage - Internal Flash. Zamienia fragment pamięci flash mcu na pendrive widoczny dla pc. Z tym, ze to połowa sukcesu, bo trzeba do tego kodu dodać funkcjonalność tworzenia przez mcu tego 10kB pliku, który będzie widoczny po włożeniu urządzenia do pc.

tak tylko strzelam

formatting link
;o)))))))))))))

Am 06.03.2015 um 10:31 schrieb J.D.:

Nie próbowałem jeszcze generowania plików, ale płytka STM32/discovery z STM32F103 na pokładzie (akurat bawię się tym) prezentuje się hostowi jako mass storage, na którym są 3 pliki, linki do stron webowych st. Prawdopodobnie da się od strony procka te pliki odpowiednio pisać. Gotowiec kosztuje chyba coś koło 8EUR, darmowy kompilator i debugger też jest. Osobiście używam Keil, bo mam mało kodu i free version wystarcza w zupełności.

Waldek

Aczkolwiek nie jest to takie trywialne, bo trzeba dodać obsługę fs. A skoro i tak ma być obsługa fs to już chyba jednak wygodniej odwrócić funkcjonalność i niech urządzenie pisze na pendrive zamiast nim być. Bardziej elastyczne. Ale doceniam minimalistyczność rozwiązania jakie chce uzyskać autor wątku.

W dniu 06.03.2015 o 12:22, Waldemar pisze:

Zamiast stm32f103 można wziąć coś z rodziny STM32F0x2. Kompilator keila na tą rodzinę jest dostępny bez ograniczeń na rozmiar kodu:

formatting link
uC F0x2 nie potrzebują zewnętrznego kwarcu, żeby dogadać się po USB. Docelowo program można by spokojnie upchnąć w STM32F042, który jest dostępny w obudowie TSSOP20:

formatting link

W dniu 2015-03-06 o 11:29, Marek pisze:

Tyle pamięci wystarczy, w bardzo dużym uproszczeniu plik widoczny od strony PC ma być "danymi" które będą dalej wykorzystywane przez mcu. Nie ma żadnych przeciwwskazań aby pozostały obszar pamięci w trybie pendrive był większy oraz widoczny lub nie dla mcu.

Biorę to rozwiązanie pod uwagę, ale w drugim rzędzie. Całe urządzenie straciłoby wtedy dużo na funkcjonalności.

pozdrawiam

Ale żeś mnie zaraził tym pomysłem, czuję weekend z głowy ;-) , właśnie zacząłem budować taki prototyp, soft już prawie gotowy...

A jak często byłby zapis? Czy zapis do tego pliku robi tylko pc a mcu ma tylko go czytać czy też ma coś zapisywać na tym fsie? Szkoda trochę wewn. flasha na takie "oranie"... Przetestowałem prototyp. 32kB obraz fsa fat12 (mniejszego nie umie zrobić mkdosfs) z jednym plikiem w / upchnietym w 8bitowym picku

25j60. Picek "exportuje" ten obraz jako massstorage usb., na razie read only. Wywaliłem micrrochopowe mdd i zastąpiłem prostrzą i mniejszą implementacją z użyciem petitfat. Petitfat ma być używany przez mcu jako warstwa dostępu do obrazu fat, gdy nie jest podłączony do pc. Pc ładnie go widzi, Kopiowanie pliku o wielkości 32kb (pełen fs) do pc jest poniżej sekundy. Zapis oczywiście będzie wolniejszy i deczko skomplikowany, bo ten flash ma 1kB erase block i przy zapisie 512 bajtiwego sektora trzeba będzie w locie całą 1kB stronę zbuforować w ram i zapisywać ponownie.

(pomijam to co wiadome) pochwalisz się z czego korzystasz?

System Windows buforuje pliki w pamięci. Jeśli MCU coś zmieni to konieczne będzie odłączenie na chwilę USB. Tylko to zmusi system do ponownego wczytania zmodyfikowanego pliku.

Paweł

A co mnie tam Windows obchodzi ;). A tak na poważnie to takie zabawy z dostępem rw "z dwóch stron" do fat bez locków na krytycznych sekcjach ładnie by go przeorało, myślę że inicjator wątku zdaje sobie z tego sprawę, że tak nie należy zrobić. Prototyp ładnie działa, co widać za filmiku:

formatting link

Bardzo fajne zadanko na weekend :-)

mam pytanie, a może nawet zagadnenie: jak tam, strzeliłeś z d... ?

roman i zemła muszą być z Ciebie dumni... stu procentowy po-europejczyk...

W dniu 2015-03-09 o 00:22, Marek pisze:

Zapis rw byłby tylko w jedną stronę (pc <-> flash), dla mcu wyłącznie ro, więc to jest do ogarnięcia. Nawet na czas pobierania danych z flasha przez mcu wskazane było by zablokowanie transmisji po usb, po pobraniu danych urządzenie i tak ma restartować z nową konfiguracją. W zastosowaniu o którym myślałem większym problemem byłby limit 10tys. cykli zapisów. Niby w 99% przypadków wystarczający, ale zawsze może się trafić ten 1% upierdliwych użytkowników którzy to przekroczą.

pozdrawiam

W dniu sobota, 7 marca 2015 11:41:35 UTC+1 użytkownik Ministerstwo Propagandy napisał:

Tobie proponuję UL1111. Jak już to zrozumiesz, to uA747. Jak już to opanujesz, to 7400.

taaaaaaaaaaaa... a później europa...

jak tam "chebel" starczy ci kochones, żeby zademonstrować swoje jedynie słuszne "podejścia" a może raczej "podjazdy", na mojej super stronie www (adresy znasz)?

Jeśli flash mcu ma małą gwarantowaną liczbę zapisów można użyć serial flash np. po spi, używam sst25016b, który ma ga

Jeśli flash mcu ma małą gwarantowaną liczbę zapisów można użyć serial flash np. po spi, używam sst25016b, który ma gwarantowaną liczbę

100tys. zapisów.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required