No rule to make target 'objdir/aes_keyschedule.o', needed by 'simpleserial.elf'. Stop

Hi everyone, I’m a new user of the Chipwhisperer Capture Rev 2. I’ve done all the tutorials on www-soc.lip6.fr/~heydeman/SCA2019/sujetTME/tutorialsadvanced.html but now I’m facing an error when making the make file of the tutorial [7.6. Tutorial #A6: Replication of Ilya Kizhvatov’s XMEGA® Attack].

The make error gives me the following response:

cwuser@chipwhisperer-vm:~/chipwhisperer/hardware/victims/firmware/xmega-serial_v2$ make
rm -f simpleserial.hex
rm -f simpleserial.eep
rm -f simpleserial.cof
rm -f simpleserial.elf
rm -f simpleserial.map
rm -f simpleserial.sym
rm -f simpleserial.lss
rm -f objdir/.o*
rm -f objdir/.lst*
rm -f simpleserial.s uart.s aes-independant.s usart_driver.s AES_driver.s aes_enc.s aes_keyschedule.s aes_sbox.s aes128_enc.s
rm -f simpleserial.d uart.d aes-independant.d usart_driver.d AES_driver.d aes_enc.d aes_keyschedule.d aes_sbox.d aes128_enc.d
rm -f simpleserial.i uart.i aes-independant.i usart_driver.i AES_driver.i aes_enc.i aes_keyschedule.i aes_sbox.i aes128_enc.i

-------- begin --------
avr-gcc (GCC) 4.8.1
Copyright © 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiling C: simpleserial.c
*avr-gcc -c -mmcu=atxmega16a4 -I. -gdwarf-2 -DAVRCRYPTOLIB -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/simpleserial.lst -I…/crypto/avr-crypto-lib -I…/crypto -std=gnu99 -MMD -MP -MF .dep/simpleserial.o.d simpleserial.c -o objdir/simpleserial.o *

Compiling C: uart.c
*avr-gcc -c -mmcu=atxmega16a4 -I. -gdwarf-2 -DAVRCRYPTOLIB -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/uart.lst -I…/crypto/avr-crypto-lib -I…/crypto -std=gnu99 -MMD -MP -MF .dep/uart.o.d uart.c -o objdir/uart.o *

Compiling C: …/crypto/aes-independant.c
*avr-gcc -c -mmcu=atxmega16a4 -I. -gdwarf-2 -DAVRCRYPTOLIB -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/aes-independant.lst -I…/crypto/avr-crypto-lib -I…/crypto -std=gnu99 -MMD -MP -MF .dep/aes-independant.o.d …/crypto/aes-independant.c -o objdir/aes-independant.o *

Compiling C: usart_driver.c
*avr-gcc -c -mmcu=atxmega16a4 -I. -gdwarf-2 -DAVRCRYPTOLIB -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/usart_driver.lst -I…/crypto/avr-crypto-lib -I…/crypto -std=gnu99 -MMD -MP -MF .dep/usart_driver.o.d usart_driver.c -o objdir/usart_driver.o *

Compiling C: AES_driver.c
*avr-gcc -c -mmcu=atxmega16a4 -I. -gdwarf-2 -DAVRCRYPTOLIB -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/AES_driver.lst -I…/crypto/avr-crypto-lib -I…/crypto -std=gnu99 -MMD -MP -MF .dep/AES_driver.o.d AES_driver.c -o objdir/AES_driver.o *

Compiling C: aes_enc.c
*avr-gcc -c -mmcu=atxmega16a4 -I. -gdwarf-2 -DAVRCRYPTOLIB -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir/aes_enc.lst -I…/crypto/avr-crypto-lib -I…/crypto -std=gnu99 -MMD -MP -MF .dep/aes_enc.o.d aes_enc.c -o objdir/aes_enc.o *
make: *** No rule to make target ‘objdir/aes_keyschedule.o’, needed by ‘simpleserial.elf’. Stop.

So the message error is No rule to make target ‘objdir/aes_keyschedule.o’, needed by ‘simpleserial.elf’. Stop.

So I checked if the file aes_keyschedule.c exists in the correct folder.
If the SRC makefile variable is correct.
If the VPATH variable is correct.
And all of that is correct.

I still can’t figure out where is the problem.

I already reproduces for example the AES serial tutorial on the ATMega of the Multitarget board and I noticed that it has approximately the same makefile as of the 7.6. Tutorial #A6: Replication of Ilya Kizhvatov’s XMEGA® Attack.

So, do you have any idea what should I do ?

Hi,

Can you try following the steps here: https://wiki.newae.com/Tutorial_A6_Replication_of_Ilya_Kizhvatov's_XMEGA®_Attack#Trace_Capture_Instructions and see if that fixes your issue?

This wiki page mentions that this is being built in the simpleserial-aes/ folder, so you might have to adapt this info to your build setup.

Alex

Hi Alex,
Thank you for your reply. Yes, you are right !
We should use the folder chipwhisperer\hardware\victims\firmware\simpleserial-aes instead of the folder chipwhisperer\hardware\victims\firmware\xmega-serial ( that doesn’t exist btw). I’m actually using the Chipwhisperer Virtual Machine 011RC1 where there is a small mistake in the file …/hal/PLATFORM_INCLUDE.mk, the MCU variable should be atxmega16a4 instead of atxmega128a3.

So thank you Alex !!! :wink: