Prawdopodobnie słyszałeś, że rdza jest językiem programowania systemów, który ma całkiem następujące rosnące. To znaczy, że jest szybki jak C, ale ma takie funkcje, jak gwarantowana pamięć i bezpieczeństwo wątków, generyczne, a zapobiega błędom segmentacji. brzmi jak tylko dla wbudowanego systemu, prawda? [Jorge Aparicio] był sfrustrowany, ponieważ jego procesor wyboru, ramię STM32 Cortex-M nie miał natywnego wsparcia dla rdzy.
Najwyraźniej można łatwo wiązać funkcje C w programie rdzy, ale to nie był to, co był po. Wyruszył więc, aby zbudować czyste programy rdzy, które mogą uzyskać dostęp do sprzętu urządzenia i udokumentował wysiłek.
Post nie tylko pokazuje, że potrzebujesz narzędzia i wersje oprogramowania, ale przy użyciu Openocd, [Jorge] udało się nawet debugować. Technika wydaje się bardzo zazwyczaj obowiązująca, jak mówi, że robiła tę samą sztuczkę na sześciu różnych kontrolerach od trzech różnych dostawców bez problemu. Musisz skonfigurować projekt, zmieniając niektóre wartości w szablonie.
Chociaż nie jest samouczkiem rdzy, podążając za kodem [Jorge’s], a jego wyjaśnienia dają ci całkiem dobry pomysł na to, jak wygląda rdzy. Pokazuje również zgrabne narzędzie, GDB-Dashboard. Aby zbudować API do specjalnych regionów pamięci Arm, [Jorge] używa narzędzia o nazwie SVD2rust, aby przetworzyć pliki SVD dostawcy. Są one zazwyczaj używane do programowania i testowania JTAG, więc pomyśleliśmy, że był to nowy sposób, aby automatycznie budować wsparcie dla procesora.
Dużo języków oferujących funkcje bezpieczeństwa mają tendencję do skompilowania kodu tłuszczu. [Jorge] pokazuje migający przykładowy przykład i demontuje go i wygląda dość kompaktowe około 127 bajtów. Następnie odbił rejestry timera, a kod jest praktycznie dokładnie taki sam rozmiar po skompilowaniu.
Krótko objęliśmy rdzę. Niedawno widzieliśmy rdzy na niektórych narzędziach WiFi.