Kendryte K210 na Maix Bit - Wrażenia po kilku dniach zabawy

Kącik poświęcony rozwiązaniom AIoT w szczególności 64bitowym RISC-V ze wsparciem AI.
na przykładzie Kendryte K210
ODPOWIEDZ
Awatar użytkownika
tsrdel
Użytkownik
Posty: 5
Rejestracja: 16 lut 2019, 19:05

Kendryte K210 na Maix Bit - Wrażenia po kilku dniach zabawy

Post autor: tsrdel » 27 lut 2019, 15:13

Zaznaczam na wstępie, że mój test był bardzo ograniczony - skoncentrowałem się na możliwości programowania K210 niskopoziomowego.
Płytkę kupiłem w celu poznania architektury RV64GC - miało to być dla mnie pierwsze "ugryzienie" RISC-V zaimplementowanego w silikonie i innych oczekiwań "na początek" nie miałem.

Co próbowałem zrobić:
- skompilować własny prosty program w C z dostarczonym SDK ( bez FreeRTOS) - C++ nie testowałem!!!
- uruchomić debugger i przetestować debugger wraz z dedykowanem k210 openocd na interface olimex arm-usb-ocd-h.
- poznać możliwości procesora zagłębiając się w źródła i dokumentację

I tak po kolei:

1) kompilacja się udała. Używam toolchaina w wersji 7.2 ze strony kendryte i działa ok w zakresie podstawowym wraz z SDK w werji 0.4 oraz 0.5. Sprawdziłem tylko sprawy podstawowe - prosta arytmetyka, stdio itd.

2) ładowanie do flash przez interfejs szeregowy działa - Maix Bit ma wbudowany konwerter USB-serial i jego używałem. Uwaga: Maix Bit ma gniazdo USB-C.
Ładowanie jest średnio szybkie, bo pierwszy łąduje się bootloader a później dopiero program docelowy. Na szczęście szybkość ładowania programu można zwiększyć nawet do 2MBPS. Żeby dowiedzieć się, jak należy ładować trzeba poszperać - informacji mało, ale w końcu znalazłem. Z uwagi na rozwój pewne narzędzia już "wyszły z obiegu" a te co weszły nie są na głównych stronach sipeed / kendryte opisywane.

3) openocd, jtag i gdb. Tu niestety częściowa porażka i z nikąd pomocy. Nie mogę ani wybrać debugowanego core ( zawsze wybiera 0 bez względu na parametr openocd -m ), nie mogę wykonać reset halt, software reset zapodany z JTAG nie działa ( poprzez ustawienie określonego bita w pamięci IO ) - trudno "z marszu" wykonać start programu z zatrzymaniem przy starcie, lub na początku main(). Działają na szczęście breakpointy, więc można brak 'reset halt' próbować obejść przez zatrzymanie programu na starcie w pętli nieskończonej warunkowanej zmienną w pamięci ( volatile ), przerwać wykonanie i kontynuować, ale .... są inne wady:

- po przerwaniu wykonania w gdb można program kontynuować, ale wznawia tylko core 0 - core 1 zostaje zatrzymany, choć nie było w nim breakpointa!
- komenda next gdb jest realizowana pojedynczymi stepami wewnętrznymi - można, ale prędkość tego fatalna i szybkie przeskakiwanie 'n' w gdb szybkie już nie jest.
- obchodzenie braku reset halt poprzez użycie zmiennej w pamięci jest niepewne przy zatrzymaniach / wznowieniach. Tj. przy zatrzymaniu ( ctrl-c w gdb ) program zatrzymuje się na pętli nieskończonej, ale zapodanie kontynuacji bez modyfikacji zmiennej wychodzi poza pętlę! Coś w mechanizmie halt / resume ewidentnie nie całkiem działa.
- funkcja call gdb nie działa, co powoduje problemy z obchodzeniem dysfunkcji gdb / openocd w sposób programowy ( jako, że działa ustawianie rejestrów i komórek pamięci, więc teoretycznie można samemu doimplementować jako define() w gdb, ale nie chodzi o to, aby wszystko samemu implementować od podstaw ...)

Generalnie na tyle jest z tym problemów, że debugowanie k210 sobie odpuściłem. Życie jest za krótkie, aby w AD 2019 męczyć się z uruchomieniem JTAG'a i GDB.

Reasumując:

Uruchamianie, ale bez debuggera - ja więc podziękuję.
Może być oczywiście tak, że moja konfiguracja sprzęt / software jest ułomna, albo coś robię nie tak, ale poza własnym dochodzeniem jeszcze wysłałem zapytania na forum Kendryte oraz Sipeed - mija blisko tydzień i odpowiedzi sensownej ciągle brak.

4) dokumentacja. O ile debugowanie to niedoróba na poziomie bliskim braku użyteczności to dokumentacja jest czarną dziurą. Jest SDK, są definicje rejestrów w headerach, ale nic więcej. Zapytania na forum o Technical Reference wygenerowały kilka zdawkowych odpowiedź załogi Kendryte, że to dużo pracy, ale przygotowują i będą udostępniać. Niestety nikt nie wie, ani kiedy udostępnią, ani co udostępnią ( może być dużo ograniczeń typu podpisane NDA z dostawcami IP Core'ow użytych w k210), i płynnej komunikacji na ten temat z kendryte nie ma. Pytania "kiedy?" i "co?" wiszą na forum juuż od kilku miesięcy bez wiarygodnej odpowiedzi. Panaceum na problemy programistów to "używajcie SDK a jak macie problem to my rozwiążemy". Zaczynam poważnie podejrzewać, że producent zwyczajnie nie ma ochoty publikować manuala do chipa, więc przechodzimy do punktu ostatniego

5) Z uwagi na wyposażenie i impementacje Micro Python z bibliotekami obsługi sieci neuronowych, analizy audio itd. kendryte k210 jest jak sądzę dobry do zabawy z korzyściami edukacyjnymi. Jeszcze raz podkreślę: dobry do zabawy. Moim zdaniem do żadnego poważnego zadania ten chip na dzień dzisiejszy się nie nadaje. Po prostu wyszło coś a la esp8266, tyle, że z dużymi możliwościami. Używając paralleli do produktów Espressif pozostaje na dzień dzisiejszy poczekać na odpowiednik esp32..... Szkoda.

Awatar użytkownika
SunRiver
Administrator
Posty: 684
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: Kendryte K210 na Maix Bit - Wrażenia po kilku dniach zabawy

Post autor: SunRiver » 27 lut 2019, 18:23

No cóż ... tak to jest ze świeżym produktem w fazie opracowania i badań.
Chińczyk postanowił zapodać chip i już na nim zarabiać ... ale jest wiele nie dociągnięć
Puki co chłopaki chcą coś zarobić , potem będą się martwić ... trochę to jak wciskanie
kitów o ekologi w postaci hybrydy ... sprzedać jak najwięcej dzisiaj .. a później
będziemy się martwić problemem jaki powstał ....

tak samo tu .. sprzedajmy jak najwięcej , może się porobią opisy dociekliwych , powstanie jakaś społeczność
a potem jak coś się bedziemy martwić problemem .... (brak dokumentacji , wsparcia itd ...)

ale ogólnie ja się tego spodziewałem ... produkt zbyt świeży ...
nie mniej nie można tak do końca deklasować i być na nie ...
właśnie ten początek jest ważny ...
nie zawsze wszystko jest dostepne z pełnymi opisami ...
sam rdzeń wydaje mi się jes dobrze opisany na stronie projektu risc-V :)
.... z każdym bitem serca ....
💫SunDUINO
💦GitHUB
💦Google Drive
💦Sotton

Awatar użytkownika
tsrdel
Użytkownik
Posty: 5
Rejestracja: 16 lut 2019, 19:05

Re: Kendryte K210 na Maix Bit - Wrażenia po kilku dniach zabawy

Post autor: tsrdel » 03 mar 2019, 18:06

Rdzeń jest opisany i wydaje mi się, że działa sprawnie i wystarczająco stabilnie - przynajmniej interpreter działał.
Natomiast drażni mnie sytuacja nie tyle ze wsparciem, co raczej podejściem załogi kendryte do problemów, jakie się pojawiają. Zaczynam się zastanawiać, czy kendryte ma w ogóle stabilną załogę odpowiedzialną za software, czy też może cała firma to zakupiony u kogoś gotowa realizacja chipa pt. risc-v + parę podstawowych peryferiów + dwa zaawansowane peryferia DSP / sieci neuronowe a później dorobienie się jakiegoś software i dokumentacji najmniejszymi siłami.
Ten chip nie ma dokumentacji nawet po chińsku, ludzie szukają podobnych ip corów i wyciągają z nich dokumentację ( + opisują różnice ) a pytania na forach wiszą bez odpowiedzi.
Niedoróbę dałoby się tolerować, jeśli na horyzoncie majaczyłaby się jakaś perspektywa polepszenia sytuacji wraz ze szczerością producenta n/t obecnej sytuacji. Niestety tego nie ma.
Nie skreślałbym chip'a w 100%, bo to nie byłoby fair, ale ci, którzy chcą się nim bawić albo od razu nastawią się na pisanie w micropythonie, nad którym ktoś tam jeszcze pracuje i coraz to nowe rzeczy się pojawiają, albo czego go twarda przeprawa.
Nienawidzę, jeśli nie działa deterministycznie tak elementarna rzecz jak interfejs jtag - 20 lat temu jak byłem młody i programowałem AVRy i Atmelowskie '51 a nie stać mnie było na dobre narzędzia ( one wtedy kosztowały koszmarnie ) to miałem tylko średni symulator i pisałem w kółko przeładowując kod; został mi uraz do dziś. Teraz z racji wieku poczucia ograniczonego czasu na życie żądam działającego JTAG'a, albo wywalam płytę za okno - Maix Bit nadaje się więc za okno ;-)

Awatar użytkownika
SunRiver
Administrator
Posty: 684
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: Kendryte K210 na Maix Bit - Wrażenia po kilku dniach zabawy

Post autor: SunRiver » 03 mar 2019, 20:30

Wiesz różnie bywa i na dwoje babka wróżyła ...

Dla mnie to wygląda nieco inaczej ... owszem moze być że kupione od hm.... kogoś coś ukończone w połowie
i tak jak piszesz .... ale coś mi każe wierzyć że jest to na tyle wczesny twór że moze warto poczekać ....
wprawdzie mam już moduł , ale nie mam czasu na zabawy w płytki .. więc puki co nie mogę jego wartości ocenić
oraz się wypowiedzieć ...

tym samym nie mogę przyjąc żadnej strony .....
sam JTAG nie jest wyznacznikiem złego sprzętu ....
-- może się źle zabierasz do niego
-- może coś na pinach jtaga wisi i przeszkadza w transmisji

trudno to ocenić ...
na razie jednak obserwuję i czekam co z tego wyrośnie ....
.... z każdym bitem serca ....
💫SunDUINO
💦GitHUB
💦Google Drive
💦Sotton

Awatar użytkownika
tsrdel
Użytkownik
Posty: 5
Rejestracja: 16 lut 2019, 19:05

Re: Kendryte K210 na Maix Bit - Wrażenia po kilku dniach zabawy

Post autor: tsrdel » 03 mar 2019, 22:35

Sama transmisja działała ok. Testowane na dwóch różnych interface'ach i zachowuje się identycznie. Nie mogę podłączyć się pod drugi core a zatrzymywanie i wznawianie działa dziwnie.
Nie działająca poprawnie podstawowa funkcja debugowania niskiego poziomu to bardzo poważny brak - być może natura tego błędu jest programowa, ale co z tego?
Na oficjalnym forum zadałem pytanie, czy funkcje, które u mnie szwankują działają u kogokolwiek u producenta - odpowiedzi brak.
Na tyle mam doświadczenia, że zachowuje się skromnie i zakładam, że mogę się mylić, ale brak informacji o tym, że komukolwiek działa poprawnie jakoś mi nie ułatwia uznania błędu po swojej stronie.

notek
Nowy
Posty: 2
Rejestracja: 23 kwie 2019, 10:23

Re: Kendryte K210 na Maix Bit - Wrażenia po kilku dniach zabawy

Post autor: notek » 23 kwie 2019, 11:14

Czy kroś ma jakieś kolejne doświadczenia z tą platformą? Z tego co widzę pojawiły się biblioteki dla K210 na Arduino IDE
https://github.com/Seeed-Studio/ArduinoCore-k210
Czy ktoś już to testował?

Awatar użytkownika
l3n1n
Moderator
Posty: 268
Rejestracja: 28 paź 2017, 8:46
Lokalizacja: 3M

Re: Kendryte K210 na Maix Bit - Wrażenia po kilku dniach zabawy

Post autor: l3n1n » 23 kwie 2019, 12:32

viewforum.php?f=88 tu masz całą informację, o tym układzie i o naszych pracach, obecnie czekamy na forumowe płytki do tego układu. Gdy dojdą z pewnością przybędzie trochę postów na ten temat.

notek
Nowy
Posty: 2
Rejestracja: 23 kwie 2019, 10:23

Re: Kendryte K210 na Maix Bit - Wrażenia po kilku dniach zabawy

Post autor: notek » 24 kwie 2019, 17:52

Dzięki za info, obejrzałem projekt - wygląda ciekawie. Kiedy spodziewacie się PCB?

Awatar użytkownika
SunRiver
Administrator
Posty: 684
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: Kendryte K210 na Maix Bit - Wrażenia po kilku dniach zabawy

Post autor: SunRiver » 24 kwie 2019, 18:46

jakoś tak w maju powinny być mam nadzieję
.... z każdym bitem serca ....
💫SunDUINO
💦GitHUB
💦Google Drive
💦Sotton

ODPOWIEDZ