Zastosowanie zabezpieczenia kodu przed odczytem w mikrokontrolerach LPC1100 oraz LPC1300
Bootloadery zastępcze/szyfrowane
Jeżeli projektant zamierza poświęcić więcej wysiłku na dodatkowe zwiększenie ochrony urządzenia przed kradzieżą projektu, to pod uwagę są brane aktualizacje w miejscach zastosowania. Jeśli pewna aplikacja włącza poziom CRP, to zwykle dobrą praktyką jest opracowanie własnego szyfrowanego zastępczego bootloadera do aktualizacji w miejscu zastosowania. Dystrybucja nieszyfrowanego kodu w procesie aktualizacji nie jest zgodna z koncepcją zapewnienia ochrony projektu.
Dla projektów bazujących na rodzinie mikrokontrolerów LPC1300 i wykorzystujących interfejs USB można również rozważyć implementację bazującego na USB szyfrowanego bootloadera zastępczego, jak jest zazwyczaj stosowane w systemie DFU (Device Field Upgrade – uaktualnienie urządzenia w miejscu zastosowania)
Tryb NO_ISP
Rodziny produktów LPC1100/LPC1300 wyposażono w nowy tryb CRP: „NO_ISP”. Takie rozwiązanie powstrzymuje układowy bootloader przed próbkowaniem pinu ISP przy uruchamianiu. Istnieją przypadki, w których urządzenia zewnętrzne mogą sterować sygnałem na pinie ISP urządzenia. W przypadku awarii zasilania, objawiającej się zanikiem lub spadkiem napięcia zasilania, układy LPC1100/LPC1300 może się ponownie uruchomić i okaże się, że pin ISP został błędnie zinterpretowany. Aby nie dopuścić do przypadkowego wywołania ISP, projektanci mogą włączyć tryb „NO_ISP” (Brak ISP). Należy pamiętać, że tryb NO_ISP nie zapobiega kradzieży własności intelektualnej, ponieważ dostęp debuggera pozostaje włączony, a zawartość pamięci Flash może być odczytana za pomocą tego mechanizmu.
Przykład: Zastosowanie CRP z LPCXpresso
Platforma LPCXpresso jest dostarczana z projektami dla rodzin produktów zarówno LPC1100, jak i LPC1300, które korzystają z zabezpieczeń CRP. Projektanci, którzy planują wykorzystanie zabezpieczeń CRP w swoich aplikacjach mogą użyć tych przykładowych projektów jako punktu wyjścia dla swoich własnych projektów.
Przy korzystaniu z ISP w oparciu o UART z mikrokontrolerem LPC1300 i FlashMagic, należy odnieść się do instrukcji obsługi użytkownika płytki rozwojowej LPCXpresso Base Board’s User Manual, w celu poznania szczegółów na temat poprawnej konfiguracji zworek. Przy wszystkich zworkach znajdujących się w domyślnych pozycjach, płytka ewaluacyjna LPC1300 będzie działać w trybie włączonego ISP przez USB (USB based ISP mode).
Układ LPC1100 jest w stanie działać z programem FlashMagic przy wszystkich zworkach znajdujących się w domyślnych pozycjach.
Kontrola zabezpieczeń CRP w projektach LPCXpresso odbywa się w dwóch częściach:
- zdefiniowanie stałej, która ustawia odpowiedni poziom zabezpieczenia CRP,
- skonfigurowanie linkera (programu łączącego) za pomocą własnych skryptów w celu umieszczenia stałej w komórce pamięci CRP o adresie (0x2FC).
Na listingu 1 pokazano, w jaki sposób programista może zdefiniować stałą, która zostanie przypisana pożądanemu poziomowi zabezpieczenia CRP. Definicja atrybutów gwarantuje, że stała (w tym przykładzie CRP_WORD) zostanie umieszczona przez linker w specjalnej sekcji pamięci „crp”.
Listing 1. Fragment kodu z przykładu CRP (kod źródłowy w języku C)
#define NO_CRP 0xFFFFFFFF
…
#define NO_ISP_MAGIC 0x4E697370
…
#define CRP1_MAGIC 0x12345678
…
#define CRP2_MAGIC 0x87654321
…
/*ZAGROŻENIE CRP3 ZABLOKUJE CZĘŚĆ DLA WSZYSTKICH ODCZYTÓW I ZAPISÓW*/
/*********** #define CRP3_MAGIC xxxx 0x43218765 *************/
…
#define CURRENT_CRP_SETTING NO_CRP
…
attribute ((section(".crp"))) const uint32 t CRP_WORD =
CURRENT_CRP_SETTING;
…
Druga część procesu złożonego z dwóch etapów polega na skonfigurowaniu linkera w celu umieszczenia stałej we właściwej komórce pamięci. Odbywa się to poprzez własne skrypty linkera. Proces ręcznej konfiguracji linkera w LPCXpresso jest opisany w Załączniku A.
Główną różnicę między własnym (użytkownika) skryptem linkera, a generowanym automatycznie, widać na listingu 2. Należy zauważyć, że sekcja „crp” jest zdefiniowana w skrypcie, i zaczyna się od adresu 0x2FC, tj. komórki pamięci CRP dla układów LPC1100/LPC1300.
Rys. 1. LPC1343 z włączonym CRP2 (tryb ISP przez USB)
Rys. 2. LPC1343 z włączonym CRP2 (tryb ISP przez UART i FlashMagic)



Od wzmacniacza nieodwracającego do integratora i wzmacniacza ładunkowego, czyli historia z zaskakującą pointą jak w dobrym kryminale
Green czy smart? Jak decyzje ESG zaczynają optymalizować procesy produkcyjne
Firma Semicon ma w ofercie narzędzia do obróbki przewodów 

![https://www.youtube.com/watch?v=BgxJVTwYJ-s Zapraszamy do obejrzenia filmu i wysłuchania krótkich wypowiedzi prelegentów Hardware Forum 2026 i organizatorów majowej konferencji dla inżynierów z branży elektronicznej: Konrad Bruliński z Lemontech, prof. Krzysztof Kulpa z Politechniki Warszawskiej, Zbigniew Huber z FLC, Ewa Załupska z firmy KROK, Jerzy Kozieł z MPTECH, Grzegorz Potyralski z VIGO Photonics, dr Krzysztof Czuba z Politechniki Warszawskiej, Anna Beata Kalisz Hedegaard z Quantum Security Defence, Adrian Cichosz z Elhurt Dystrybucja Anna Kamińska z Creotech Quantum, oraz Łukasz Jaeszke i Adam Jaeszke z TEK.day [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/05/tytulowe-film-1.png)



