Coldfire SEC engine

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
Reply to
Gregor
Loading thread data ...

Użytkownik Gregor napisał:

Używam Coldfire - ale niestety 5407.

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

Adam

Reply to
Górski 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

Reply to
Gregor

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

Reply to
Górski 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
Reply to
Gregor
Reply to
Krzysztof 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

Reply to
GRG12

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.