рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдПрдХ рдкреИрд╕реЗ рдХреЗ рд▓рд┐рдП GPG рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреБрдВрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдлрд░рд╡рд░реА 2020 рдореЗрдВ, рдПрд╕рдЯреА-рд▓рд┐рдВрдХ v2 рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ Habr├й рдкрд░ рдПрдХ рдЖрдХрд░реНрд╖рдХ рд▓реЗрдЦ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ ред рддрдм рднреА, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╢рд┐рдХрд╛рдпрддреЗрдВ рдереАрдВ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрдиреБрддреНрддрд░рд┐рдд рд░рд╣реЗред


рдкрд┐рдЫрд▓реЗ рд╕рдордп рдореЗрдВ, Aliexpress рд╕реЗ рдкрд╛рд░реНрд╕рд▓ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдиреЗ рдореБрдЭ рддрдХ рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдФрд░ рдЕрдм, рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рднреА рддрд░рд╣ рд╕реЗ рдЪрд▓реЗ рдЧрдП, рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдкреВрд░реНрдг рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдПрдХ рдЖрдо рдЖрджрдореА рдХреЛ рдЪреАрдиреА рдХреНрд▓реЛрди рдПрд╕рдЯреА-рд▓рд┐рдВрдХ v2 рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ ред рдореИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рд╣реИ рдЙрд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЛ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЬреАрдкреАрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрд░реЛрдд рд▓реЗрдЦ рджреЗрдЦреЗрдВред


рд╣рд╛рд░реНрдбрд╡реЗрдпрд░


, , тАФ Aliexpress. , - STM32***, . , , , .


тАФ - . , USB USB , , , , .


ST-Link v2 STMicroelectronics STM32F103 , 128 -.


STM32F103 тАФ CKS32F103C8*. . CS32F CKS32F. - , , 64 K -. , CKS32F103CB* 128 K , .


STM32GC102CB. , , , 64 K - (, , USB).


, 64 . ST-Link v2 .



- Linux, Debian. antiX Linux Debian 9 Stretch.


make git , :


sudo apt install gcc-arm-none-eabi
sudo apt install libnewlib-arm-none-eabi
sudo apt install openocd

, .


- c Arm Embedded Toolchain CentOS. .


Windows :



, .



, , . .


, . , , , , . , , . .


, OpenOCD.


- , ( ).


1: ST32F1** ( STM32GC102CB)


$ openocd -f interface/stlink-v2.cfg -f target/st32f1x.cfg -c 'init; reset halt; stm32f1x unlock 0; reset halt;exit'
...
Info : device id = 0x20036410
Info : flash size = 64kbytes
stm32x unlocked.
INFO: a reset or power cycle is required for the new settings to take effect.

2: CKS32F1**


$ openocd -f interface/stlink-v2.cfg -f target/st32f1x.cfg -c 'init; reset halt; stm32f1x unlock 0; reset halt;exit'
...
Info : STLINK v2 JTAG v29 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.174295
Warn : UNEXPECTED idcode: 0x2ba01477
Error: expected 1 of 1: 0x1ba01477

interface/stlink-v2.cfg target/st32f1x.cfg тАФ OpenOCD, . ID 0x2ba01477, STM321F1*** 0x1ba01477. , OpenOCD ID, , STM321F1**, ID set _CPUTAPID 0x1ba01477.


 mkdir ~/.openocd/{target}
 cp /usr/share/openocd/scripts/target/stm32f1x.cfg ~/.openocd/target/cks32f1x.cfg
 sed -i 's/0x1ba01477/0x2ba01477/' /.openocd/target/cks32f1x.cfg

, CKS32F1** -f target/cks32f1x.cfg.


. , , 128 -. OpenOCD :


Error: checksum mismatch - attempting binary compare
diff 0 address 0x08010000. Was 0x00 instead of 0x7d
diff 1 address 0x08010001. Was 0x50 instead of 0x40

:


$ openocd -f interface/stlink-v2.cfg -f target/cks32f1x.cfg -c 'init; reset halt; stm32f1x unlock 1; reset halt;exit'
...
Error: flash bank 1 does not exist
...

тАФ , .


GNUK


- , GNUK, .


, 2003 g10code, GnuPG, , OpenPGP, , ISO/IEC 7816. тАФ ZeitControl , , Card OS ( -). FLOSS-Shop OpenPGP Smart Card 17,90 тВм. , -, .


Free Software Initiative of Japan тАФ FSF. GNUK STM32*, - OpenPGP Smart Card.


GNUK тАФ 1.0 1.2, . , STABLE-BRANCH-1-0 STABLE-BRANCH-1-2 .


PolarSSL, 1.0 ChibiOS_2.0.8, 1.2 chopstx.


, 1.0 62 , 1.2 тАФ 112 .


, 128 , 1.2


git clone https://salsa.debian.org/gnuk-team/gnuk/gnuk.git
cd gnuk
git checkout  STABLE-BRANCH-1-2
#   'chopstx'
git submodule update --init
cd src
# --target   ,       USB
#  --target   - FST_01 -    ST-LINK v2
# --vidpid="234b:0000"  USB  -
# --enable-factory-reset -       PIN
./configure --target=ST_DONGLE --vidpid="234b:0000" --enable-factory-reset
make

64 , 1.0


git clone https://salsa.debian.org/gnuk-team/gnuk/gnuk.git
cd gnuk
git checkout STABLE-BRANCH-1-0
cd src
#  ,       - OLIMEX_STM32_H103 -   ST-LINK v2
# --enable-keygen -     
./configure --vidpid="234b:0000" --enable-keygen
make

, :


usb_lld.o: In function `usb_lld_set_data_to_recv':
usb_lld.c:(.text.usb_lld_set_data_to_recv+0x0): multiple definition of `usb_lld_set_data_to_recv'
main.o:/mnt/f/DocSasha/devzone/gnuk/src/usb_lld.h:136: first defined here
...

, inline usb_lld.h usb_lld_set_data_to_recv , .


inline- #define make. patch, , , , .


--- a/src/usb_lld.h
+++ b/src/usb_lld.h
@@ -131,10 +131,7 @@ extern void usb_lld_set_feature (uint8_t feature);

 extern void usb_lld_set_data_to_send (const void *p, size_t len);

-extern inline void usb_lld_set_data_to_recv (void *p, size_t len)
-{
-  usb_lld_set_data_to_send ((const void *)p, len);
-}
+#define usb_lld_set_data_to_recv(p, len)  usb_lld_set_data_to_send ((const void *)p, len)

 extern void usb_lld_prepare_shutdown (void);
 extern void usb_lld_shutdown (void);

. cfg , 1.2 src/build/gnuk.elf, 1.0 src/gnuk.elf


#  
openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c 'program build/gnuk.elf verify reset exit'
#     
openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c init -c "reset halt" -c "stm32f1x lock 0" -c reset -c exit

рдЪреВрдБрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ 64 рдХреЗрдмреАрдЯреНрд╕ рдХреА рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдХрд┐ рджреВрд╕рд░реЗ рдореЗрдореЛрд░реА рдмреИрдВрдХ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП stm32f1x рд▓реЙрдХ 1 рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВ ред


рдирд┐рд╖реНрдХрд░реНрд╖


рддреЛ рд╡рд╣ рд╕рдм рд╣реИред рдореИрдиреЗ рд╕рдВрднрд╛рд▓ рд▓рд┐рдпрд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рдлрд▓ рд╣реЛрдВрдЧреЗред


рдЕрдиреНрдп рд▓рд┐рдВрдХ



All Articles