Coldfire SEC engine

Apr 01, 2005 6 Replies

Uzywal ktos tego? Konkretnie mam problem z uruchomieniem deszyfrowania



3des na MCF5475. Dane zostaja poprawnie rozkodowane - jesli po kazdym bloku zatrzymam procedsor na breakpoincie - jesli tego nie zrobie... Coz - zostaje sieka. Mam wrazenie jakby po sygnale "proces zakonczony" dane nadal byly "w drodze". Jako sygnal konca konwersji uzywam bitow ChannelReady (i channel error) - jak w przykladzie ze strony producenta. Zrobilem maly eksperyment:

BYTE datain[512],dataout[512]; BYTE sc1[512],sc2[512],sc3[512];



FillData(datain); // zaladowanie zakodowanych danych do bufora DecodeData(datain,dataout); // generacja odpowiednich deskryptorow, ich // zaladwoanie i oczekienaie az flaga ChannelREADY //(rejestr SSIR ) // jak w przykladzie while (!(MCF_SEC_SISRL) && !(MCF_SEC_SISRH)); // if (MCF_SEC_SISRH == 0x10000000) //indicates complete with no channel error



memcpy(sc1,dataout,512); // kopiowanie bufora wy do "screenschota" sleep(20); // 20 ms memcpy(sc2,dataout,512); // kopiowanie bufora wy do "screenschota" sleep(20); // 20 ms memcpy(sc3,dataout,512); // kopiowanie bufora wy do "screenschota"



Na koncu zawartosci sc1,sc2,sc3 byly rozne - zwykle w sc1 pierwsze 8 bajtow bylo odkodowanych, w sc2 pierwsze 16 itd. Co dziwne - wygladalo to tak samo niemal niezaleznie od dlugosci sleep (doladowywanie po kolejnych probach dostepu? - jakies problemy z data-cache?) Probowalem juz roznych dziwnych rzeczy (wymuszanie bufora na granicy 1MB, dodawanie "dummy" deksryptora na koncu lancucha - w nadziei ze nie zajmie sie nim dopoki nie skonczy przeladowywania danych z reszty lancucha) - bez efektu. Przy "stepowaniu" programu - wszystko dziala bez przeszkod, puszczony luzem - zawsze chrzani dane. Czy ktos wie jak to dranstwo uruchomic (i moglby sie to wiedza podzielic)? Procesor to MCF5475 (najprawdopodobniej 5475AFE - ale tego nie jestem w 100% pewny - w tej chwili nie mam dostepu do tej plytki dostepu) - strone freescale przekopalem - poza *.pdf do procesora, przykladowym kodem (kodowanie/dekodowanie



8 bajtow) niewiele znalazlem :( Pozdrawiem GRG

Użytkownik Gregor napisał:

Używam Coldfire - ale niestety 5407.

Zastanawiam sie jak jest zrealizowane memcpy w twoim przypadku. Procesor ? DMA ? Jeszcze inaczej ?

Adam

Funkcja biblioteczna - niestety nie zagladalem do kodu :( (ale to zrobie) Probowalem tez kopiowania w petli - po bajcie - dane tez pozostawaly uszkodzone. Czesc tych danych to bitmapy - probowalem je dekodowac bezposrednio do bufora docelowego (po 32kb) - wynikiem byly dane czescowo poprawne - obrazki byly widoczne ale w wielu miejscach uszkodzone - co dziwne czesc uszkodzen wygladala na fragmenty innych bitmap (rozkodowywanych pozniej), przy tescie : bufor 512b na stosie, ladowanie bufora porcja danych, dekodowanie, kopiowanie do bufora koncowego, powtorka dla nowej porcji - dane w buforze koncowym byly zawsze zniszczone do nieropoznawalnosci (no chyba ze po kazdej porcji danych byl breakpoint) - od razu dodam ze petla oczekujaca na koniec dekodowania nie "przelatuje od razu" (dalem licznik zliczajacy ilosc obiegow petli - wartosc licznika na koncu byla pi razy oko proporcjonalna do dlugosci dekodowanego bufora) a flagi rejestru SSIR sa kasowane po po zakonczeniu dekodowania (zapisem do odpowiedniego rejestru) GRG

Użytkownik Gregor napisał:

Jeszcze jedno. Czy kolega wykorzystuje jakiś system ? Linux lub jakiś może RTOS? Może też to być problem z cachem - proponuje wyłączyć dla danych.

Adam

Firmowy - na jadrze o nazwie Nucleus - calkiem fajny system wielozadaniowy.

Sprobuje - ale na pewno nie jest to ostateczne rozwiaznie problemu - zbyt wolno by to dzialalo :( Zamierzam tez przetestowac przeniesienie buforow do wewnetrzenego ramu procesora (jak tylko wykopie z nich aktualnego uzytkownika :)

- mam nadzieje ze nie jest on cachowany (w koncu i tak powninien miec czas dostepu -

1 cykl) GRG

U¿ytkownik "Gregor" snipped-for-privacy@wiecej.piwa.a.nie.spamuj.pl> napisa³ w wiadomo¶ci news: snipped-for-privacy@transflorator.traiskirchen.at...

wielozadaniowy.

Co jest cachowane ustala sie odpowiednimi rejestrami.

Krzysiek Rudnik

No i znalazlem - publikuje dla przyszlych pokolen uzerajacych sie z tym cudem. Dekodowanie zaczyna dzialac poprawnie po przeniesieniu bufora wyjsciowego do wewnetrznego RAM procesora (tego w MBAR+0x10000). Przy okazji uzyskuje sie tez zwiekszenie wydajnosci - mozna tam tez wrzucic InitialVector i klucz - ale nie desktyptory (bo wywala blad adresowania). GRG

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required