7

Potrzebuję narzędzia do analizy statycznej sterowników urządzeń Linux, które piszę na tablicach opartych na ARM. Jestem rozważa kilka narzędzi, jak wymienione poniżej:Narzędzie do analizy statycznej dla modułów jądra systemu Linux i sterowników urządzeń

  1. Sparse to oprogramowanie komputerowe, już dostępna na Linuksa, zaprojektowany, aby znaleźć ewentualne błędy kodowania w jądrze Linux.
  2. Istnieją dwa aktywne projekty: Linux Verification Center mające na celu poprawę jakości ładowanych modułów jądra.

    • Linux Driver Verification (LDV) - kompleksowy zestaw narzędzi do statycznej weryfikacji kodu źródłowego sterowników urządzeń Linux.
    • KEDR Framework - rozszerzalna platforma do dynamicznej analizy i weryfikacji modułów jądra.
    • Innym realizowanym projektem jest Linux File System Verification, którego celem jest opracowanie dedykowanego zestawu narzędzi do weryfikacji implementacji systemu plików Linux.
  3. Włącz -Werror, -Wextra i -Wall na GCC i uruchomić z Valgrind.

Kiedy ostatnio grałem w Sparse, stwierdziłem, że wyniki są mylące i nie znalazłem dobrej dokumentacji interpretującej wyniki. Czy ktoś ma dobrą dokumentację dotyczącą narzędzia Sparse? Jakie są inne darmowe narzędzia do analizy statycznej, których mogę użyć do weryfikacji mojego sterownika w Linuksie? Wiem o narzędziu LINT, ale jest ono licencjonowane.

+0

Spróbuj splint. To jest darmowe. Inną propozycją byłoby skompilowanie za pomocą -Wall i -Wextra. – Kenneth

+0

szyna jest dla normalnego kodu C. Potrzebuję narzędzia, które może sprawdzić kod jądra Linuksa. Typowym przykładem jest użycie funkcji, która może być uśpiona (lub generalnie może spowodować zmianę harmonogramu) w kontekście atomowym, to znaczy w procedurach obsługi przerwań, w sekcjach krytycznych chronionych przez blokady typu spinlock i tym podobne. –

+1

Wygląda na to, że mieszacie tutaj wiele różnych koncepcji. Jądro Linux jest napisane w języku C, więc szyna jest poprawnym narzędziem analizy _static_. – Kenneth

Odpowiedz

4

Smatch to narzędzie do analizy statycznej dla języka C używane w jądrze. Zaowocowało to setkami poprawek. Sporo z nich było związanych z bezpieczeństwem lub było wystarczająco istotnych dla stabilnego jądra.

+2

Istnieje inne narzędzie do analizy statycznej, [Coccinelle] (http://coccinelle.lip6.fr/), które zostało użyte do znalezienia błędów w jądrze. Zobacz także http://lwn.net/Articles/412750/. Nie próbowałem tego jednak. – Eugene

3

Jeśli chcesz napisać własne zasady, najprawdopodobniej będzie to Coccinelle. Jeśli chcesz korzystać z reguł pisanych przez innych, możesz użyć różnych narzędzi zintegrowanych z jądrem. Sprawdź punkt 4.2: CODE CHECKING TOOLS of Documentation/development-process/4.Coding dla niektórych sugestii.

Powiązane problemy