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ń
- Sparse to oprogramowanie komputerowe, już dostępna na Linuksa, zaprojektowany, aby znaleźć ewentualne błędy kodowania w jądrze Linux.
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.
- Włącz
-Werror
,-Wextra
i-Wall
naGCC
i uruchomić zValgrind
.
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.
Spróbuj splint. To jest darmowe. Inną propozycją byłoby skompilowanie za pomocą -Wall i -Wextra. – Kenneth
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. –
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