Listing 2. Fragment kodu z przykładu CRP (własny skrypt linkera)
1 2 3 4 5 6 7 8 9 10 11 |
… ENTRY(ResetISR) SECTIONS { .text : { KEEP(*(.isr_vector)) . = 0x000002FC; KEEP(*(.crp)) *(.text*) *(.rodata*) } > MFlash32 … |
Wnioski
Dzięki nauczeniu się jak włączyć zabezpieczenie CRP, projektanci mogą zapobiegać kradzieży własności intelektualnej. W niniejszym artkule opisano szczegółowe różnice występujące między poziomami zabezpieczeń CRP oraz przekazano sugestie, które mogłyby skłonić programistę do wyboru określonego poziomu. Korzystając z IDE LPCXpresso programiści mogą dodać zabezpieczenie CRP do swoich projektów, tworząc specjalny segment pamięci i umieszczając w nim stałą.
Załącznik A
Utworzenie zestawu własnych skryptów linker wymaga kilku etapów. Najpierw należy utworzyć w projekcie nowy folder o nazwie „custom_ld”. W nim będą przechowywane pliki własnych skryptów. Następnie należy przekopiować automatycznie wygenerowane skrypty linkera z rozszerzeniem „Id” z aktywnego folderu docelowego (zazwyczaj „Debug” lub „Release”) do folderu „custom_ld”. Na rysunku 3 pokazano, gdzie w projekcie przechowywane są skrypty generowane automatycznie. Należy zmienić nazwę pliku zgodnie z tabelą 2. Przed modyfikacją treści skryptów należy zapewnić konfigurację zestawu narzędzi jak pokazano na rysunku 4. Należy dodać sekcję „crp” do „Custom.ld”, jak pokazano na listingu 2. Na koniec należy zaktualizować Custom.ld, aby wskazać skrypty Custom_mem.ld i Custom_lib.ld w nowo utworzonym folderze custom_ld . Przykład tego jest pokazany na listingu 3.
Tab. 2. Skrypty linkera o zmienionych nazwach
Nazwa oryginalna | Kopia o zmienionej nazwie |
NAZWAPROJEKTU_Debug.ld | Custom.ld |
NAZWAPROJEKTU_Debug_mem.ld | Custom_mem.ld |
NAZWAPROJEKTU_Debug_lib.ld | Custom_lib.ld |
Rys. 3. Automatycznie generowane skrypty linkera
Rys. 4. Definiowanie własnego pliku linkera
Listing 3. Modyfikacje w skrypcie linkera „Custom.ld”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* * WYGENEROWANY PLIK – NIE EDYTOWAĆ * (C) Code Red Technologies Ltd, * Wygenerowany plik skryptu linkera w języku C dla układu LPC1114 */ INCLUDE "../custom_ld / Custom_lib.ld " INCLUDE "../custom_ld /Custom_mem.ld " ENTRY(ResetISR) … |
(1) Zmiany w stosunku do oryginalnego pliku dotyczą dyrektyw INCLUDE
Artykuł opracowano na podstawie noty aplikacyjnej AN10968 firmy NXP.