Skocz do zawartości

Sipeed Tang Nano 4k - jak zaprogramować Cortex-m3?


Elvis

Pomocna odpowiedź

@FlyingDutch Mam kilka różnych J-Linków, najwięcej używałem wersji dedykowanej dla układów Atmela, nazywało się to chyba SAM-BA, w każdym razie był to zwykły J-Link z licencją na układy Atmel. Poza tym mam kilka programatorów z licencją "edu" i jeden J-Trace Pro. Przyznam się też że raz kupiłem "klona"... i przestał działać po aktualizacji softu. Więc ogólnie jak chodzi o J-Link to mam czym testować, a klonów stanowczo nie polecam.

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

Cześć @Elvis

mam nadzieję , że to ostatnie pytanie w tym temacie. Czy znalazłeś, gdzieś jakie parametry ma ten ARM Cortex-M3 z płytki "Sipeed Tang Nano 4K". Szczególnie ile RAM'u ma ten procesor i ile flash'a na program może używać ? Chciałbym przenieść jeden projekt z STM32L na tą płytkę i rozszerzyć o obsługę pewnego dedykowanego protokołu do czego potrzebna jest FPGA (wysoka częstotliwość zegara). Problemem jest, że część projektu na STM32L476  była mocno pamięciożerna (wymagała sporo RAM'u). Dlatego interesują mnie dane tego MCU na płytce "Tang Nano 4K".

BTW: Przeglądam jeszcze raz dokumentację firmy Gowin dla tej rodziny FPGA, która jest w "Tang Nano 4K" (GW1NSR):

https://forbot.pl/forum/applications/core/interface/file/attachment.php?id=21078

i niestety potwierdza się moja najgorsza obawa (widziałem to w ustawieniach IP Cora dla hard-processor'a), że ARM Cortex-M3 korzysta z Block SRAM z układu FPG'a i max. ilość RAM to 8 lub 16 KB. Flash'a natomiast do użytku dla MCU jest 128 KB. Kurczę, dlaczego ktoś jak już projektuje układy SoC, to dlaczego nie zrobi tego tak, aby można to stosować w rzeczywistych projektach.

Pozdrawiam

Edytowano przez FlyingDutch
Link do komentarza
Share on other sites

Na stronie AliExpress jest informacja o 64mb, czyli 8MB pamięci PSRAM... ale nie jestem pewien, czy to prawda. O ile kontroler pamięci brzmi sensownie, to zintegrowana pamięć wydaje się nieco zbyt piękna. Jak chodzi o flash to jest trochę zintegrowanego - podobno 256kbit, więc nie za dużo, ale na bootloader wystarczy. Dodatkowe 32mb jest na płytce, podłączone przez SPI.

Po przejściach z JTAG-iem mam bardzo ograniczone zaufanie do parametrów podawanych przez tego producenta 😞 Szkoda, bo układ zapowiadał się bardzo ciekawie, ale może pojawią się inne płytki, z lepszą dokumentacją i programatorem.

Natomiast jak chodzi o małe FPGA z zintegrowanym Cortex-M to znalazłem jeszcze ciekawy układ o nazwie EOS S3: https://www.quicklogic.com/products/soc/eos-s3-microcontroller/ 

Botland ma nawet płytkę z tym układem, chociaż tak nazwaną, że ciężko się domyślić: https://botland.com.pl/moduly-uczenia-maszynowego/20237-sparkfun-quicklogic-thing-plus-eos-s3-modul-uczenia-maszynowego-sparkfun-dev-17273-5904422352455.html

 

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)
30 minut temu, Elvis napisał:

Natomiast jak chodzi o małe FPGA z zintegrowanym Cortex-M to znalazłem jeszcze ciekawy układ o nazwie EOS S3: https://www.quicklogic.com/products/soc/eos-s3-microcontroller/ 

Botland ma nawet płytkę z tym układem, chociaż tak nazwaną, że ciężko się domyślić: https://botland.com.pl/moduly-uczenia-maszynowego/20237-sparkfun-quicklogic-thing-plus-eos-s3-modul-uczenia-maszynowego-sparkfun-dev-17273-5904422352455.html

 

Dzięki @Elvis

Dzięki za informacje odnośnie układu z płytki "Tang Nano 4K", będę musiał to przetestować praktycznie (bo też nie do końca wierzę w te informacje podawane przez Gowin). Odnośnie EOS S3, to trafiłem na ten układ jakiś czas temu, ale nie znałem tej płytki a rzeczywiście wygląda ciekawie.

Pozdrawiam

Edytowano przez FlyingDutch
Link do komentarza
Share on other sites

(edytowany)

Cześć @Elvis,

ja ciągle mam wątpliwości odnośnie ilości SRAM dostępnej dla ARM Cortex-M3 z płytki "Tang Nano 4K". Jak otworzysz sobie IP Core "Gowin EMPU" to na schemacie hard-cpu widać połączenie z CPU magistralą do "FPGA Fabric" SRAM. Jak zrobisz dwuklik na SRAM to otwiera się okno konfiguracyjne - patrz zrzut ekranu

MPU_SRAM.thumb.png.f648a297dbed2c7c6fabebd6070735d6.png

Jak widać RAM dla MPU jest tworzone z "Block-RAM" dla układu FPGA i maksymalna ilość dostępna to 16 KB. Ja wiem, że na płytce jest dodatkowo 64Mbit PSRAM, ale jak można się do niej dostać z poziomu programu dla MPU (jaka magistrala i jak można z niej korzystać w programie dla Cortex-M3)? Bo raczej stosu, czy sterty w programie z tej PSRAM, chyba nie utworzysz. Mógłbyś mi to trochę rozjaśnić, bo czuję się trochę zmieszany z tym tematem.

BTW: czy aktywowałeś moduł "TPIU" (Trace Port Interface Unit) - patrz zrzut ekranu:

MPU_TPIU.thumb.png.79815c6bd7a974cf240891e52e099c40.png

Bo być może trzeba go aktywować w IP Core, aby móc korzystać z debuggera w GDM?

Pozdrawiam

Edytowano przez FlyingDutch
update
Link do komentarza
Share on other sites

Jak chodzi o pamięć to na pewno dostępne jest co zdefiniowano w skrypcie linkera:

/* @Description	Linker script for GW1NS-4C Device with 32K-Byte FLASH, 16K-Byte RAM
 * 				Set heap size, stack size and stack location according to application
 * 				requirements.
 * 				Set memory bank area and size if external memory is used.
 */

MEMORY
{
  FLASH (rx) : ORIGIN = 0x0,        LENGTH = 0x8000  /* 32KByte */
  RAM (rwx)  : ORIGIN = 0x20000000, LENGTH = 0x4000  /* 16KByte */
}

Na schemacie modułu Tang Nano 4K jest widoczna zewnętrzna pamięć Flash, jest jej 32mbit-y, czyli 4MB, podłączona jest przez SPI.

Natomiast ja nigdzie nie widzę pamięci PSRAM. Czasem można przeczytać że jest "zintegrowana", ale nie do końca jestem pewien czy to prawda...

Widzę nieco inne, prostsze wytłumaczenie. Zacznijmy od starszej płytki Tang Nano: https://wiki.sipeed.com/hardware/zh/tang/Tang-Nano/Nano.html

Wygląda na to, że zamiast angielskiego trzeba szybko zapisać się na lekcje chińskiego, ale google translator zwraca:

"The GW1N-1 FPGA chip onboard the Tang Nano development board is very powerful, has abundant logic resources, supports a variety of I/O level standards, and has embedded block SRAM, PLL, Flash and other resources. A non-volatile FPGA product; in addition, the onboard 64Mbits PSRAM provides abundant storage resources for the FPGA."

Schemat tej płytki jest tutaj: https://dl.sipeed.com/fileList/TANG/Nano/HDK/Tang-NANO-2704(Schematic).pdf

I faktycznie jest tam pamięć PSRAM o pojemności 64mb podłączona przez QSPI.

Natomiast jeśli popatrzymy na schemat Tang Nano 4K: https://dl.sipeed.com/fileList/TANG/Nano 4K/HDK/02_Schematic/Tang_Nano_4K_3603_Schematic_.pdf

To tam już pamięci PSRAM nie ma, chociaż jest flash.

Wydaje mi się, że ktoś zrobił kopiuj-wklej przepisując parametry ze straszego Tang Nano, na nowszy Tang Nano 4K. I stąd ten PSRAM, którego nigdzie nie widać.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Edit: Chociaż może i faktycznie ta pamięć jest zintegrowana... W dokumentacji na stronie: https://alcom.eu/uploads/gOWIN-DS861-1.4.2E_GW1NSR-series-of-FPGA-Products-Datasheet.pdf jest coś takiego:

obraz.thumb.png.d845dec3f7a1f78d143df54b7777dbd7.png

Jeśli faktycznie ten układ ma 64Mb PSRAM + 64Mb HyperRAM + 32Mb Flash to super.

Informacja jak używać pamięci PSRAM jest tutaj: http://cdn.gowinsemi.com.cn/IPUG525E.pdf

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Czytam sobie na szybko o tej pamięci i moim zdaniem do ściema. Tutaj jest schemat z dokumentacji układu:

obraz.thumb.png.4863fb8245c543895193b0a5d421fcc8.png

PSRAM jest podłączony przez IOB, czyli to pamięć zewnętrzna. To nawet pasuje do dokumentacji IPU6525E, gdzie jako przykład podają układ W955D8MBYA, czyli zwykłą pamięć Winbond-a, nic zintegrowanego.

Ciężko zrozumieć tę ich dokumentację, ale moim zdaniem zintegrowany jest tylko sterownik dla 64Mb pamięci PSRAM, 64Mb pamięci hyper i 32Mb flash. Na płytce Sipeed jest tylko flash, a reszta to "błąd w tłumaczeniu" - tylko przypadkowo na korzyść producenta 😄

 

  • Lubię! 1
Link do komentarza
Share on other sites

1 godzinę temu, Elvis napisał:

Jak chodzi o pamięć to na pewno dostępne jest co zdefiniowano w skrypcie linkera:


/* @Description	Linker script for GW1NS-4C Device with 32K-Byte FLASH, 16K-Byte RAM
 * 				Set heap size, stack size and stack location according to application
 * 				requirements.
 * 				Set memory bank area and size if external memory is used.
 */

MEMORY
{
  FLASH (rx) : ORIGIN = 0x0,        LENGTH = 0x8000  /* 32KByte */
  RAM (rwx)  : ORIGIN = 0x20000000, LENGTH = 0x4000  /* 16KByte */
}

Na schemacie modułu Tang Nano 4K jest widoczna zewnętrzna pamięć Flash, jest jej 32mbit-y, czyli 4MB, podłączona jest przez SPI.

Natomiast ja nigdzie nie widzę pamięci PSRAM. Czasem można przeczytać że jest "zintegrowana", ale nie do końca jestem pewien czy to prawda...

Widzę nieco inne, prostsze wytłumaczenie. Zacznijmy od starszej płytki Tang Nano: https://wiki.sipeed.com/hardware/zh/tang/Tang-Nano/Nano.html

Wygląda na to, że zamiast angielskiego trzeba szybko zapisać się na lekcje chińskiego, ale google translator zwraca:

"The GW1N-1 FPGA chip onboard the Tang Nano development board is very powerful, has abundant logic resources, supports a variety of I/O level standards, and has embedded block SRAM, PLL, Flash and other resources. A non-volatile FPGA product; in addition, the onboard 64Mbits PSRAM provides abundant storage resources for the FPGA."

Schemat tej płytki jest tutaj: https://dl.sipeed.com/fileList/TANG/Nano/HDK/Tang-NANO-2704(Schematic).pdf

I faktycznie jest tam pamięć PSRAM o pojemności 64mb podłączona przez QSPI.

Natomiast jeśli popatrzymy na schemat Tang Nano 4K: https://dl.sipeed.com/fileList/TANG/Nano 4K/HDK/02_Schematic/Tang_Nano_4K_3603_Schematic_.pdf

To tam już pamięci PSRAM nie ma, chociaż jest flash.

Wydaje mi się, że ktoś zrobił kopiuj-wklej przepisując parametry ze straszego Tang Nano, na nowszy Tang Nano 4K. I stąd ten PSRAM, którego nigdzie nie widać.

Cześć @Elvis,

skrytp linkera by potwierdzał to co jest w IP Core - czyli MCU ma 16 KB RAM z "Block-SRAM" z FPGA fabric. Wydaje mi się,że pamięci PSRAM i HyperRAM są zintegrowane w głównym chipie. Jak ściągniesz sobie SDK (Gowin) do MCU to są tam przykłady programów testu zarówno PSRAM jak i HyperRAM (nie sądzę, żeby je tam zamieszczali jeśli by tych pamieci fizycznie brakowało). Właśnie skompilowałem przykład dla PSRAM w GDM i będę go testował na płytce "Tang Nano 4K". Tutaj projket dla GDM:

gowin_empu_gw1ns4c.zip

Nawet jak ta pamięć będzie działać to nie utworzysz w niej sterty, czy stosu dla MCU - możesz do niej zapisywać dane podobnie jak do zewnętrznej pamięci Flash. Czyli trzeba serializować/deserializować  dane przed zapisem do niej i przy odczycie. A stos i sterta programu dla MCU i tak są tworzone w tej małej 16 KB pamieci SRAM (utworzonej z "Block-RAM" w układzie FPGA). Co czyni jej użycie dużo wolniejsze i problematyczne. Proszę popraw mnie jeśli się mylę.

Pozdrawiam

Link do komentarza
Share on other sites

Trochę to dziwne - w przypadku stm32, powiedzmy stm32f429 jest tak, że pamięć nie jest zintegrowana, ale sterownik tak. Więc po podłączeniu i skonfigurowaniu zewnętrznej pamięci jest widoczna w przestrzeni adresowej jak wewnętrzny SRAM, czy Flash. Tylko dostępy są wolniejsze - ale jeśli nie zależy na szybkości, to można w niej nawet stos umieścić, a już stertę to jak najbardziej.

Niestety bez pamięci cache, używanie pamięci po SPI/QSPI jest średnio wydajne. ESP32 ma właśnie dlatego cache dla danych i instrukcji, podobnie jest z większością mikroprocesorów.

  • Lubię! 1
Link do komentarza
Share on other sites

Jeszcze jedno - z programu testującego PSRAM w MCU ARM Cortex-M3 (przykład z SDK), wynika że testowane jest 8K x  8 byte = 64 KB, co nie musi, ale może oznaczać, że jest jej 64 KB.

Pozdrawiam

Link do komentarza
Share on other sites

(edytowany)
13 godzin temu, Elvis napisał:

Gdzie jest ten program testujący PSRAM?

Hej @Elvis,

jak ściągniesz ze strony WWW Gowin "Gowin EMPU SDK" - tak jak opisywałem w poście z tutorialem jak zaprogramować Cortex-M3. Jak rozpakujesz to archiwum zip, to masz taką strukturę katalogów:

Gowin_SDK_.thumb.png.9021cb846969a2cfab3f73866c50cc08.png

Tam są wszystkie projekty dla GDM (jest jeszcze katalog z przykładami dla Keil'a). Katalog nazywa się: "cm3_psram" dla testu PSRAM.

Pozdrawiam

Edytowano przez FlyingDutch
update
Link do komentarza
Share on other sites

Faktycznie, jest tam więcej przykładów. Chociaż z tego co widzę to są one przeznaczone dla innych płytek:

Cytat

2. Hardware Environment
    DK-START-GW1NSR4C-QN48G V1.1
    DK-START-GW1NSR4C-QN48P V1.1
    DK-START-GW1NSR4C-MG64P V1.1
    DK-GoAI-GW1NSR4C-QN48P V1.1

Ale warto chociaż spróbować, może faktycznie GW1NSR4C ma pamięć zintegrowaną.

Inna sprawa, to nie wiem, czy model użyty w płytkach Sipeed nie ma prędzej HyperRAM niż PSRAM. W dokumentacji jest taki fragment:

2022-05-07-090735_2560x1354_scrot.thumb.png.f703230d9508a177bc8232952cacfa52.png

Wygląda jakby typ pamięci zależał od obudowy. Więc największa szansa, że w modułach Sipeed znajdzie się pamięć HyperRam.

Ale moim zdaniem jedyny sposób na sensowną zabawę GW1NSR4C to kupienie jednej z płytek ewaluacyjnych. Ten wynalazek Sipeed jest delikatnie mówąc nieużywalny. Na DK-START-GW1NSR4C są przełączniki i można bez problemu podłączyć J-Link, Sipeed zaoszczędził i wyszedł im przycisk do papieru.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.