2013-07-30 21 views
5

Obecnie pracuję nad Projektem Embedded. Używam IDE wbudowanego IAR Embedded Workbencha, a platformą docelową jest mikrokontroler oparty na 8051. Czy można użyć narzędzia Valgrind do sprawdzenia kodu, który napisałem?Używanie Valgrind w projekcie Embedded

+0

Czy poprosiłeś o listę mailingową użytkowników Valgrind? Czy sprawdziłeś http://valgrind.org/? – NWS

+1

Powinieneś sprawdzić tę stronę, Valgrind Obsługiwane platformy [1]. Zestaw instrukcji mikrokontrolera 8051 nie jest obsługiwany. [1]: http://valgrind.org/info/platforms.html – jclin

+0

@jclin Napisz komentarz jako odpowiedź. – Ross

Odpowiedz

3

Nie i tak *.

Nie: Jak powiedział inny komentator, Valgrind nie działa na architekturach 8051, więc nie można używać Valgrind tak, jak w systemie x86.

Tak * (gwiazdka (*), ponieważ jest to ograniczone "tak")

Ale można użyć Valgrind na non-8051/IAR-określonych części kodu, jeśli:

  1. Oddzielić specyficzny dla 8051 kod specyficzny dla IAR z kodu agnostycznego architektura/kompilator.
    • Prawdopodobnie będziesz chciał to zrobić, aby kod nie był większy w wyniku oddzielenia kodu agnostycznego. (Zakładam, że rozmiar kodu jest na wagę, ponieważ pracujesz nad 8051.)
  2. Skompiluj kod agnostyczny architektury/kompilatora za pomocą gcc i uruchom go za pomocą Valgrind na komputerze programującym twojego komputera stacjonarnego/laptopa, który jest prawdopodobnie maszyną x86.
    • Oczywiście można użyć dowolnego innego architektury/kompilatora obsługiwanego przez Valgrind, x86/gcc nie jest jedynym wyborem.

Valgrind ten sposób będą mogli sprawdzić niektóre z kodu, który jest lepszy niż nic.

Oddzielenie części kodu zgodnej z kompilatorem/chipem również spowoduje, że będzie on bardziej przenośny i możliwy do ponownego użycia.

Aha, i nie jest to bezpośrednio związane, ale należy również rozważyć użycie programu do analizy statycznej jak PC-Lint: http://www.gimpel.com/html/index.htm

Sprawdza kilka rzeczy, które sprawdza Valgrind i wiele rzeczy, które nie Valgrind czek. Plus to sprawdzi kod wszystkich, a nie tylko kod inny niż 8051/IAR.

Istnieje wiele podobnych narzędzi; PC-Lint jest najpopularniejszą, jaką widziałem.

+0

Nie dokładnie. Oczywiście zawsze możesz sprawdzić kod w innych architekturach w poszukiwaniu typowych błędów, ale niektóre problemy zależne od architektury mogą nie zostać znalezione.Dla mnie złapałem błąd w endian. W systemie Linux 32/64 bit, Valgrind nie ma problemu. Jest to jednak problem w Sun SPARC. – jclin

+0

To właśnie miałem na myśli: "W ten sposób Valgrind będzie mógł sprawdzić część twojego kodu, co jest lepsze niż nic". Ponieważ używasz innej architektury, nie można znaleźć problemów związanych z architekturą 8051. – svec

+0

Myślę, że powinieneś wiedzieć, czym jest 8051. Jest to mikrokontroler, a nie ogólny procesor. Nie będzie miał pełnego systemu operacyjnego, a wiele operacji jest wykonywanych przez bezpośrednie IO i sprzętowe przerywniki i/lub przy użyciu bardzo małego RTOS. Więc większość programu napisanego dla 8051 nie może być skompilowana i uruchomiona na ogólnym systemie operacyjnym przy użyciu GCC, więc myślę, że nie jest możliwe sprawdzenie problemów z 8051 pamięciami w Valgrind. – jclin

1

Powinieneś sprawdzić tę stronę, Valgrind Supported Platforms. Zestaw instrukcji mikrokontrolera 8051 nie jest obsługiwany przez Valgrind.

Co więcej, powinieneś wiedzieć, że Valgrind to symulator instrukcji. Oznacza to, że musisz uruchomić Valgrind w systemie, i uruchamia twój kod z systemem operacyjnym i warstwą bazową C lub innych bibliotek POSIX w celu symulacji odczytu/zapisu w twoim programie lub profilowania. Tak więc 8051 jest niemożliwe do uruchomienia Valgrind.