Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
Software for White Rabbit PTP Core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
32
Issues
32
List
Board
Labels
Milestones
Merge Requests
7
Merge Requests
7
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
Software for White Rabbit PTP Core
Commits
e8707847
Commit
e8707847
authored
Mar 30, 2021
by
Juan David González Cobas
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fpga-build-info' into david-libertm-devel
parents
fd4642d3
cb1a4f19
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
57 additions
and
13 deletions
+57
-13
board-state.h
boards/ertm14/board-state.h
+1
-0
board.c
boards/ertm14/board.c
+7
-8
psnmp-proto.h
boards/ertm14/psnmp-proto.h
+1
-1
display.c
libertm/display.c
+9
-1
ertm-cli
libertm/ertm-cli
+6
-0
libertm.c
libertm/libertm.c
+32
-3
libertm.h
libertm/libertm.h
+1
-0
No files found.
boards/ertm14/board-state.h
View file @
e8707847
...
...
@@ -195,6 +195,7 @@ struct ertm14_device_metadata {
unsigned
char
source_id
[
16
];
uint32_t
capability_mask
;
unsigned
char
vendor_uuid
[
16
];
char
fpga_buildinfo_text
[
200
];
};
};
};
...
...
boards/ertm14/board.c
View file @
e8707847
...
...
@@ -1032,17 +1032,16 @@ void get_version_info(struct ertm14_version_info *bi)
sizeof
(
bi
->
ertm15_firmware_version
));
}
void
get_fpga_info
(
struct
ertm14_device_metadata
*
bi
)
void
get_fpga_info
(
uint8_t
*
bi
)
{
int
i
;
uint32_t
*
info
=
(
uint32_t
*
)
bi
;
int
len
=
sizeof
(
*
bi
)
/
sizeof
(
info
[
0
]);
uint32_t
*
regs
=
(
uint32_t
*
)(
BASE_ERTM14_BUILD_INFO
);
size_t
size
=
sizeof
(((
struct
ertm14_device_metadata
*
)
0
)
->
fpga_buildinfo_text
);
int
len
=
size
/
sizeof
(
info
[
0
]);
pp_printf
(
"len: %d
\n
"
,
len
);
memcpy
(
bi
,
(
void
*
)(
BASE_ERTM14_BUILD_INFO
),
sizeof
(
*
bi
));
for
(
i
=
0
;
i
<
len
;
i
++
)
info
[
i
]
=
htonl
(
info
[
i
]);
info
[
i
]
=
htonl
(
regs
[
i
]);
}
static
void
get_wrc_diags
(
struct
WRC_DIAGS_WB
*
diags
)
...
...
@@ -1145,7 +1144,7 @@ static int ertm_process_psnmp(struct uart_packet *rx_pkt, struct uart_packet *tx
uint8_t
opcode
=
rx_pkt
->
payload
[
0
];
struct
ertm14_protocol_op
*
op
;
struct
ertm14_version_info
*
ver
;
struct
ertm14_device_metadata
*
fver
;
uint8_t
*
fver
;
/* return board config in case of bad opcode */
if
((
op
=
get_proto_op
(
opcode
))
==
NULL
)
...
...
@@ -1195,7 +1194,7 @@ static int ertm_process_psnmp(struct uart_packet *rx_pkt, struct uart_packet *tx
get_version_info
(
ver
);
break
;
case
ertm14_get_fpga_info
:
fver
=
(
struct
ertm14_device_metadata
*
)
&
tx_pkt
->
payload
[
op
->
offset2
];
fver
=
(
uint8_t
*
)
&
tx_pkt
->
payload
[
op
->
offset2
];
get_fpga_info
(
fver
);
break
;
case
ertm14_get_sensors
:
...
...
boards/ertm14/psnmp-proto.h
View file @
e8707847
...
...
@@ -67,7 +67,7 @@ static struct ertm14_protocol_op {
.
offset1
=
1
,
.
length1
=
0
,
.
offset2
=
0
,
.
length2
=
sizeof
(
struct
ertm14_device_metadata
),
.
length2
=
sizeof
(
((
struct
ertm14_device_metadata
*
)
0
)
->
fpga_buildinfo_text
),
},
{
.
opcode
=
ertm14_get_sensors
,
...
...
libertm/display.c
View file @
e8707847
...
...
@@ -311,7 +311,15 @@ void display_version_info(struct ertm_board_info *bi)
bi
->
wrpc_sw_build_date
,
bi
->
wrpc_sw_build_time
,
bi
->
wrpc_sw_build_by
);
printf
(
"FPGA buildinfo:
\n
%s"
,
bi
->
firmware_metadata
.
fpga_build_info
);
printf
(
"FPGA buildinfo:
\n\t
commit [%s]
\n\t
build date: [%s]
\n
"
,
bi
->
firmware_metadata
.
source_id
,
bi
->
firmware_metadata
.
vendor_uuid
);
};
void
display_fpga_buildinfo
(
struct
ertm_board_info
*
bi
)
{
printf
(
"FPGA buildinfo:
\n
%s
\n
"
,
bi
->
firmware_metadata
.
fpga_buildinfo_text
);
};
void
display_temperatures
(
struct
ertm_temperatures
*
t
)
...
...
libertm/ertm-cli
View file @
e8707847
...
...
@@ -417,6 +417,12 @@ class ErtmTest(cmd.Cmd):
self
.
lib
.
ertm_get_board_info
(
self
.
handle
,
byref
(
bi
))
self
.
display
.
display_version_info
(
byref
(
bi
))
def
do_fpga
(
self
,
args
):
"""display full FPGA buildinfo string."""
bi
=
self
.
BoardInfo
()
self
.
lib
.
ertm_get_board_info
(
self
.
handle
,
byref
(
bi
))
self
.
display
.
display_fpga_buildinfo
(
byref
(
bi
))
def
my_postloop
(
self
):
readline
.
write_history_file
(
self
.
history
)
self
.
lib
.
ertm_exit
(
self
.
handle
)
...
...
libertm/libertm.c
View file @
e8707847
...
...
@@ -464,14 +464,40 @@ void bytes_to_64_mac(uint64_t *mac, uint8_t src[])
*
mac
=
tmp
;
}
void
split_buildinfo
(
char
*
fpga
,
char
*
tag
,
char
*
date
)
{
char
*
p
;
char
tmp
[
256
];
memcpy
(
tmp
,
fpga
,
256
);
p
=
strtok
(
tmp
,
"
\n
"
);
p
=
strtok
(
NULL
,
"
\n
"
);
p
=
strtok
(
NULL
,
"
\n
"
);
p
=
strtok
(
NULL
,
"
\n
"
);
if
(
p
==
NULL
)
{
*
tag
=
*
date
=
'\0'
;
return
;
}
strncpy
(
tag
,
p
+
strlen
(
"tag:"
),
16
);
tag
[
15
]
=
'\0'
;
p
=
strtok
(
NULL
,
"
\n
"
);
p
=
strtok
(
NULL
,
"
\n
"
);
if
(
p
==
NULL
)
{
*
date
=
'\0'
;
return
;
}
strncpy
(
date
,
p
+
strlen
(
"syndate:"
),
16
);
date
[
15
]
=
'\0'
;
printf
(
"tag: [%s]
\n
"
"date: [%s]
\n
"
,
tag
,
date
);
}
static
int
get_version_info
(
struct
ertm_status
*
st
,
struct
ertm_board_info
*
bi
)
{
struct
uart_link
*
link
=
&
st
->
link
;
int
res
;
struct
ertm_device_metadata
*
fpga
=
&
bi
->
firmware_metadata
;
char
*
fpga
=
bi
->
firmware_metadata
.
fpga_buildinfo_text
;
uint32_t
*
words
=
(
uint32_t
*
)
fpga
;
int
i
,
size
=
sizeof
(
*
fpga
)
/
sizeof
(
uint32_t
);
int
size
=
sizeof
(
bi
->
firmware_metadata
.
fpga_buildinfo_text
)
/
sizeof
(
uint32_t
);
int
i
;
res
=
ertm_proto_cycle
(
link
,
ertm14_get_version_info
,
NULL
,
bi
);
/* FIXME: if they **really** want the MAC in uint64_t shape,
...
...
@@ -484,9 +510,12 @@ static int get_version_info(struct ertm_status *st,
res
=
ertm_proto_cycle
(
link
,
ertm14_get_fpga_info
,
NULL
,
fpga
);
if
(
res
<
0
)
return
res
;
printf
(
"size: %d
\n
"
,
size
);
for
(
i
=
0
;
i
<
size
;
i
++
)
words
[
i
]
=
ntohl
(
words
[
i
]);
split_buildinfo
(
fpga
,
(
char
*
)
bi
->
firmware_metadata
.
source_id
,
(
char
*
)
bi
->
firmware_metadata
.
vendor_uuid
);
return
0
;
}
...
...
libertm/libertm.h
View file @
e8707847
...
...
@@ -114,6 +114,7 @@ struct ertm_device_metadata {
unsigned
char
source_id
[
16
];
uint32_t
capability_mask
;
unsigned
char
vendor_uuid
[
16
];
char
fpga_buildinfo_text
[
200
];
};
};
};
...
...
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