Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
lwc
/
compare
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Pipelines
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
520bc41f
authored
Jul 12, 2019
by
Sebastian Renner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added jlink flash to STM middleware
parent
6d431eef
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
47 additions
and
12 deletions
+47
-12
subprocess.log
+0
-0
templates/blackpill/Src/main.c
+33
-6
templates/blackpill/configure
+1
-0
templates/blackpill/flash.jlink
+1
-0
templates/blackpill/middleware.py
+11
-5
test.py
+1
-1
No files found.
subprocess.log
View file @
520bc41f
This source diff could not be displayed because it is too large. You can
view the blob
instead.
templates/blackpill/Src/main.c
View file @
520bc41f
...
@@ -43,11 +43,15 @@
...
@@ -43,11 +43,15 @@
#include <stdint.h>
#include <stdint.h>
#include "crypto_aead.h"
#include "crypto_aead.h"
#include "api.h"
#include "api.h"
#include "SEGGER_RTT.h"
#include "SEGGER_RTT_Conf.h"
#define DEBUG
#define MAX_LEN 1400
#define MAX_LEN 1400
#define dbg_printf(...) SEGGER_RTT_printf(0, __VA_ARGS__)
#ifdef DEBUG
#include "SEGGER_RTT.h"
#include "SEGGER_RTT_Conf.h"
#define dbg_printf(...) SEGGER_RTT_printf(0, __VA_ARGS__)
#endif
unsigned
char
c
[
MAX_LEN
];
unsigned
char
c
[
MAX_LEN
];
unsigned
long
long
clen
=
0
;
unsigned
long
long
clen
=
0
;
...
@@ -73,36 +77,53 @@ static void write_variable_serial(unsigned char target[], uint32_t len);
...
@@ -73,36 +77,53 @@ static void write_variable_serial(unsigned char target[], uint32_t len);
static
void
read_serial
(
void
*
dst
,
unsigned
int
len
)
{
static
void
read_serial
(
void
*
dst
,
unsigned
int
len
)
{
unsigned
char
*
buf
=
dst
;
unsigned
char
*
buf
=
dst
;
#ifdef DEBUG
dbg_printf
(
"Reading %d serial bytes
\n
"
,
len
);
dbg_printf
(
"Reading %d serial bytes
\n
"
,
len
);
#endif
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
while
(
!
LL_USART_IsActiveFlag_RXNE
(
USART1
));
while
(
!
LL_USART_IsActiveFlag_RXNE
(
USART1
));
buf
[
i
]
=
LL_USART_ReceiveData8
(
USART1
);
buf
[
i
]
=
LL_USART_ReceiveData8
(
USART1
);
}
}
#ifdef DEBUG
dbg_printf
(
"done.
\n
"
,
len
);
dbg_printf
(
"done.
\n
"
,
len
);
#endif
}
}
static
void
write_serial
(
const
void
*
src
,
unsigned
int
len
)
{
static
void
write_serial
(
const
void
*
src
,
unsigned
int
len
)
{
const
unsigned
char
*
buf
=
src
;
const
unsigned
char
*
buf
=
src
;
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
#ifdef DEBUG
dbg_printf
(
"Write to serial: %02x
\n
"
,
buf
[
i
]);
dbg_printf
(
"Write to serial: %02x
\n
"
,
buf
[
i
]);
#endif
while
(
!
(
LL_USART_IsActiveFlag_TXE
(
USART1
)));
while
(
!
(
LL_USART_IsActiveFlag_TXE
(
USART1
)));
LL_USART_TransmitData8
(
USART1
,
buf
[
i
]);
LL_USART_TransmitData8
(
USART1
,
buf
[
i
]);
#ifdef DEBUG
dbg_printf
(
"Done writing!
\n
"
);
dbg_printf
(
"Done writing!
\n
"
);
#endif
}
}
}
}
static
void
read_variable_serial
(
unsigned
char
action
)
{
static
void
read_variable_serial
(
unsigned
char
action
)
{
uint32_t
len
;
uint32_t
len
;
#ifdef DEBUG
dbg_printf
(
"Let's read our variable: %c
\n
"
,
action
);
dbg_printf
(
"Let's read our variable: %c
\n
"
,
action
);
read_serial
(
&
len
,
sizeof
(
len
));
#endif
read_serial
(
&
len
,
sizeof
(
len
));
#ifdef DEBUG
dbg_printf
(
"with length %lu
\n
"
,
len
);
dbg_printf
(
"with length %lu
\n
"
,
len
);
switch
(
action
)
{
#endif
switch
(
action
)
{
case
'k'
:
case
'k'
:
while
(
len
!=
CRYPTO_KEYBYTES
);
while
(
len
!=
CRYPTO_KEYBYTES
);
read_serial
(
k
,
len
);
read_serial
(
k
,
len
);
break
;
break
;
case
'p'
:
case
'p'
:
if
(
len
!=
CRYPTO_NPUBBYTES
)
{
dbg_printf
(
"Assert failed %d != %d
\n
"
,
len
,
CRYPTO_NPUBBYTES
);
for
(;;);
}
if
(
len
!=
CRYPTO_NPUBBYTES
)
{
#ifdef DEBUG
dbg_printf
(
"Assert failed %d != %d
\n
"
,
len
,
CRYPTO_NPUBBYTES
);
#endif
for
(;;);
}
read_serial
(
npub
,
len
);
read_serial
(
npub
,
len
);
break
;
break
;
case
's'
:
case
's'
:
...
@@ -182,7 +203,9 @@ int main(void)
...
@@ -182,7 +203,9 @@ int main(void)
while
(
1
)
{
while
(
1
)
{
read_serial
(
&
rcv
,
1
);
read_serial
(
&
rcv
,
1
);
#ifdef DEBUG
dbg_printf
(
"Received action: %c
\n
"
,
rcv
);
dbg_printf
(
"Received action: %c
\n
"
,
rcv
);
#endif
switch
(
rcv
)
{
switch
(
rcv
)
{
case
'c'
:
case
'c'
:
case
'm'
:
case
'm'
:
...
@@ -205,11 +228,15 @@ int main(void)
...
@@ -205,11 +228,15 @@ int main(void)
break
;
break
;
case
'e'
:
case
'e'
:
#ifdef DEBUG
dbg_printf
(
"m: "
);
for
(
int
i
=
0
;
i
<
mlen
;
i
++
)
dbg_printf
(
"%02x"
,
m
[
i
]);
dbg_printf
(
"
\n
"
);
dbg_printf
(
"m: "
);
for
(
int
i
=
0
;
i
<
mlen
;
i
++
)
dbg_printf
(
"%02x"
,
m
[
i
]);
dbg_printf
(
"
\n
"
);
dbg_printf
(
"a: "
);
for
(
int
i
=
0
;
i
<
adlen
;
i
++
)
dbg_printf
(
"%02x"
,
ad
[
i
]);
dbg_printf
(
"
\n
"
);
dbg_printf
(
"a: "
);
for
(
int
i
=
0
;
i
<
adlen
;
i
++
)
dbg_printf
(
"%02x"
,
ad
[
i
]);
dbg_printf
(
"
\n
"
);
dbg_printf
(
"p: "
);
for
(
int
i
=
0
;
i
<
nplen
;
i
++
)
dbg_printf
(
"%02x"
,
npub
[
i
]);
dbg_printf
(
"
\n
"
);
dbg_printf
(
"p: "
);
for
(
int
i
=
0
;
i
<
nplen
;
i
++
)
dbg_printf
(
"%02x"
,
npub
[
i
]);
dbg_printf
(
"
\n
"
);
dbg_printf
(
"k: "
);
for
(
int
i
=
0
;
i
<
klen
;
i
++
)
dbg_printf
(
"%02x"
,
k
[
i
]);
dbg_printf
(
"
\n
"
);
dbg_printf
(
"k: "
);
for
(
int
i
=
0
;
i
<
klen
;
i
++
)
dbg_printf
(
"%02x"
,
k
[
i
]);
dbg_printf
(
"
\n
"
);
#endif
LL_GPIO_TogglePin
(
GPIOB
,
LL_GPIO_PIN_12
);
res
=
crypto_aead_encrypt
(
c
,
&
clen
,
m
,
mlen
,
ad
,
adlen
,
nsec
,
npub
,
k
);
res
=
crypto_aead_encrypt
(
c
,
&
clen
,
m
,
mlen
,
ad
,
adlen
,
nsec
,
npub
,
k
);
LL_GPIO_TogglePin
(
GPIOB
,
LL_GPIO_PIN_12
);
break
;
break
;
default:
default:
...
...
templates/blackpill/configure
View file @
520bc41f
#!/bin/bash
#!/bin/bash
mv
$HDR_FILES
Inc/
mv
$HDR_FILES
Inc/
mv
"middleware.py"
"test"
templates/blackpill/flash.jlink
View file @
520bc41f
...
@@ -4,3 +4,4 @@ device STM32F103C8
...
@@ -4,3 +4,4 @@ device STM32F103C8
loadbin build/blackpill.bin 0x8000000
loadbin build/blackpill.bin 0x8000000
r
r
g
g
exit
templates/blackpill/middleware.py
View file @
520bc41f
...
@@ -5,14 +5,16 @@ import sys
...
@@ -5,14 +5,16 @@ import sys
import
time
import
time
import
struct
import
struct
import
serial
import
serial
from
subprocess
import
Popen
,
PIPE
,
run
import
subprocess
f
=
open
(
"subprocess.log"
,
"w+"
)
f
=
open
(
"subprocess.log"
,
"w+"
)
ser
=
serial
.
Serial
(
'/dev/ttyUSB0'
,
115200
)
ser
=
serial
.
Serial
(
'/dev/ttyUSB0'
,
115200
)
def
flash
():
def
flash
():
run
(
"JLinkExe flash.jlink"
,
shell
=
True
,
check
=
True
)
pipe
=
subprocess
.
PIPE
p
=
subprocess
.
Popen
([
'JLinkExe'
,
'flash.jlink'
],
stdout
=
sys
.
stderr
,
stdin
=
pipe
)
stdout
,
stderr
=
p
.
communicate
(
""
)
def
read
(
channel
,
l
):
def
read
(
channel
,
l
):
if
channel
==
'ser'
:
if
channel
==
'ser'
:
...
@@ -53,8 +55,12 @@ def submit(channel, action, data):
...
@@ -53,8 +55,12 @@ def submit(channel, action, data):
write
(
channel
,
data
)
write
(
channel
,
data
)
time
.
sleep
(
0.1
)
time
.
sleep
(
0.1
)
def
main
():
def
main
(
argv
):
#flash()
script_dir
=
os
.
path
.
split
(
argv
[
0
])[
0
]
if
len
(
script_dir
)
>
0
:
os
.
chdir
(
script_dir
)
f
.
write
(
os
.
getcwd
())
flash
()
print
(
"Hello, World!"
)
print
(
"Hello, World!"
)
while
(
1
):
while
(
1
):
action
=
read
(
'std'
,
1
)
action
=
read
(
'std'
,
1
)
...
@@ -76,4 +82,4 @@ def main():
...
@@ -76,4 +82,4 @@ def main():
raise
Exception
(
"no capiche aczione
%
s"
%
(
action
))
raise
Exception
(
"no capiche aczione
%
s"
%
(
action
))
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
sys
.
exit
(
main
())
sys
.
exit
(
main
(
sys
.
argv
))
test.py
View file @
520bc41f
...
@@ -25,7 +25,7 @@ def main(argv):
...
@@ -25,7 +25,7 @@ def main(argv):
data
=
p
.
stdout
.
read
(
l
)
data
=
p
.
stdout
.
read
(
l
)
if
len
(
data
)
==
0
:
if
len
(
data
)
==
0
:
print
(
"Unexpected end of stream"
,
file
=
sys
.
stderr
)
print
(
"Unexpected end of stream"
,
file
=
sys
.
stderr
)
sys
.
exit
(
1
)
#
sys.exit(1)
if
len
(
data
)
!=
l
:
if
len
(
data
)
!=
l
:
raise
Exception
(
"could not read
%
d bytes of data (got
%
d)"
%
(
l
,
len
(
data
)))
raise
Exception
(
"could not read
%
d bytes of data (got
%
d)"
%
(
l
,
len
(
data
)))
return
data
return
data
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment