Gast
#1405897
Moin, gerade bastel ich an einem Cornerdetector auf dem Blackfin und bin dabei zwei Problemen begegnet, denen ich bisher noch nicht beikommen konnte. Fuer die Detektion verwende ich die von AD optimierte 2D-Faltung, kompiliert mit den GNU-Compiler. Diese verlangt nach 4 Byte aligned Daten und bislang ist es mir noch nicht gelungen, Arrays von short-Typen 4 Byte zu alignen. Im Moment mache ich es ueber den Umweg von int-Arrays, es muss aber doch auch eine schoenere Moeglichkeit beim GNU-Compiler in C geben oder? Das weitere Problem ist ein signifikanter Unterschied zwischen rechnerischer und tatsaechlier Performance. Rechnerisch muessten um die 1000 Faltungen eines kompletten Bildes pro Sekunde moeglich sein. Praktisch komme ich aber auf etwas was mindestens um den Faktor 50 darunter liegt. Ist das allein mit unguenstig im Speicher verteilten Arrays zu erklaeren oder deutet es auf etwas grundlegend falsch gemachtes, wie falsch initalisiertem PLL und SDRAM oder Cache hin? Und wenn es nur der Speicher ist, wie gelingt es mir in C mit dem GNU, die Felder elegant in unterschiedlichen Mikrobanks unterzubringen? Es ist doch hoffentlich nicht so, dass ich das aufwendig im Linkskript loesen muss, oder? Danke und Gruss, Joern