Changes

Building for Other Targets

1,117 bytes added, 14:31, 28 September 2018
no edit summary
You'll need to have installed the GNU Embedded Toolchain Building for ARMother targets typically requires additional programs and tools. If you haven't yetAdditionally, some targets may have a unique build process, meaning the instructions here will not apply to them. Please see the [[Installing_ChipWhisperer]] guidepage for the specific target you want to build for before following these instructions, specifically which can be found under the '''Installing ARM ToolchainHardware Documentation''' section, for detailsof the [[Main Page]].
Once you have a working compiler (check by typing 'arm-none-eabi-gcc' at the command line).:
<ol style="list-style-type: decimal;">
<li>We want to use the existing SimpleSerial firmware as a base for our project, but we don't want to edit the existing firmware. Instead, we'll make a new project with a copy of this firmware. Copy the directory of the firmware you want to modify in the <code>chipwhisperer/hardware/vicitims/firmware</code> to a new folder. For example, if you want to modify the <code>simpleserial-base</code> firmware, copy the contents of the <code>simpleserial-base</code> folder to a new one. The name is arbitrary, but for this example, we'll call it <code>simpleserial-base-lab1</code>. You must keep it in the same directory, as it will reference other files within that directory for the build process.</li>
<li><dl>
<dt>Open a terminal with arm-none-eabi-gcc in the path. If using Windows the sidebar on the [[Installing_ChipWhisperer]] page</dt></dl>
</li>
<li><p>Change the terminal to the newly copied directory. For example:</p>
Windows:<pre>cd c:\chipwhisperer\hardware\victims\firmware\simpleserial-base-lab1</pre>
Linux/macOS:<pre>cd chipwhisperer/hardware/victims/firmware/simpleserial-base-lab1</pre></li>
<li><p>Then, run <code>make</code> to build the system. Make sure you specify which platform you're using as your target. You can see a list of supported targets by typing <code>make PLATFORM=</code>. You'll also need to specify a <code>CRYPTO_TARGET</code>. Most targets and tutorials work with <code>TINYAES128C</code>, so if you're unsure, this is usually a reliable option. For example, for the ChipWhisperer Lite NXP Kinetis K24F target, run:</p><pre>make PLATFORM=CWLITEARM CW308_K24F CRYPTO_TARGET=TINYAES128C</pre>
<p>Which should have the following output:</p>
<pre>...Bunch of lines removed...
Linking: simpleserial-base-CWLITEARMCW308_K24F.elfarm-none-eabi-gcc -I. -O0 -g -DDEBUG -DCPU_MK24FN1M0VLL12 -DFRDM_K64F -DFREEDOM -w -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mthumb -mapcs -std=gnu99 -mcpu=cortex-m4 -I. -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fmessageMMD -length=0 MP -ffunction-sections static -gdwarf-2 -DSS_VER=SS_VER_1_1 -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL_TYPE=HAL_stm32f3 HAL_k24f -DPLATFORM=CWLITEARM CW308_K24F -DTINYAES128C -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/simpleserial-base.o -I.././simpleserial/ -I.././hal -I.././hal/stm32f3 k24f -I.././hal/stm32f3k24f/CMSIS -I.././hal/stm32f3k24f/CMSIS/core -I.././hal/stm32f3/CMSIS/device -I.././hal/stm32f4/Legacy Drivers -I.././crypto/ -I.././crypto/tiny-AES128-C -std=gnu99 -MMD -MP -MF .dep/simpleserial-base-CWLITEARMCW308_K24F.elf.d objdir/simpleserial-base.o objdir/simpleserial.o objdir/stm32f3_halclock_config.o objdir/stm32f3_hal_lowlevelfsl_adc16.o objdir/stm32f3_sysmemfsl_clock.o objdir/fsl_cmp.o objdir/fsl_cmt.o objdir/fsl_common.o objdir/fsl_crc.o objdir/fsl_dac.o objdir/fsl_dmamux.o objdir/fsl_dspi.o objdir/fsl_dspi_edma.o objdir/fsl_edma.o objdir/fsl_ewm.o objdir/fsl_flash.o objdir/fsl_flexbus.o objdir/fsl_flexcan.o objdir/fsl_ftm.o objdir/fsl_gpio.o objdir/fsl_i2c.o objdir/fsl_i2c_edma.o objdir/fsl_llwu.o objdir/fsl_lptmr.o objdir/fsl_mmcau.o objdir/fsl_pdb.o objdir/fsl_pit.o objdir/fsl_pmc.o objdir/fsl_rcm.o objdir/fsl_rnga.o objdir/fsl_rtc.o objdir/fsl_sai.o objdir/fsl_sai_edma.o objdir/fsl_sdhc.o objdir/fsl_sim.o objdir/fsl_smc.o objdir/fsl_sysmpu.o objdir/fsl_uart.o objdir/fsl_uart_edma.o objdir/fsl_vref.o objdir/fsl_wdog.o objdir/k24f_hal.o objdir/system_MK24F12.o objdir/aes.o objdir/aes-independant.o objdir/stm32f3_startupstartup_MK24F12.o --output simpleserial-base-CWLITEARMCW308_K24F.elf -Xlinker --gc-sections -Xlinker -static -Xlinker -z -Xlinker muldefs -T .././hal/k24f/MK24FN1M0xxx12_flash.ld --specs=nano.specs -T -specs=nosys.specs -Wl,--start-group -L .././hal/stm32f3k24f/LinkerScript-l:lib_mmcau.ld a -lm -lc -lgcc -lnosys -Wl,--gcend-sections -lm group -Wl,-Map=simpleserial-base-CWLITEARMCW308_K24F.map,--cref -lm
.
Creating load file for Flash: simpleserial-base-CWLITEARMCW308_K24F.hexarm-none-eabi-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature simpleserial-base-CWLITEARMCW308_K24F.elf simpleserial-base-CWLITEARMCW308_K24F.hex
.
Creating load file for EEPROM: simpleserial-base-CWLITEARMCW308_K24F.eep
arm-none-eabi-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 --no-change-warnings -O ihex simpleserial-base-CWLITEARMCW308_K24F.elf simpleserial-base-CWLITEARMCW308_K24F.eep || exit 0
.
Creating Extended Listing: simpleserial-base-CWLITEARMCW308_K24F.lssarm-none-eabi-objdump -h -S -z simpleserial-base-CWLITEARMCW308_K24F.elf > simpleserial-base-CWLITEARMCW308_K24F.lss
.
Creating Symbol Table: simpleserial-base-CWLITEARMCW308_K24F.symarm-none-eabi-nm -n simpleserial-base-CWLITEARMCW308_K24F.elf > simpleserial-base-CWLITEARMCW308_K24F.sym
Size after:
text data bss dec hex filename
11600 120 4588 8 2388 14108 1296 5892 1704 371c simpleserial-base-CWLITEARMCW308_K24F.elf
+--------------------------------------------------------
+ Built for platform CW-Lite Arm (STM32F3)k24f Target
+--------------------------------------------------------
</pre></li>
Ensure that the "Built for platform ___" matches your target device.
</ol>
Approved_users, administrator
366
edits