Skip to content

Commit 147b100

Browse files
committed
Fix TransferBlock
1 parent 7dabe97 commit 147b100

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

src/dap.rs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,7 +1141,8 @@ where
11411141
let retry = transfer_config.wait_retries;
11421142

11431143
let idx = req.next_u8();
1144-
let mut request_count = req.next_u16();
1144+
let request_count = req.next_u16();
1145+
let mut nrequests = request_count;
11451146
let mut request_value = TransferInfo::from(req.next_u8());
11461147

11471148
let mut response_count = 0;
@@ -1155,7 +1156,7 @@ where
11551156
return;
11561157
}
11571158

1158-
if request_count == 0 {
1159+
if nrequests == 0 {
11591160
// goto end
11601161
resp.write_u16_at(1, response_count);
11611162
resp.write_u8_at(3, 0);
@@ -1173,20 +1174,23 @@ where
11731174
let mut response_value = jtag::TransferResult::Nack;
11741175
if request_value.r_nw == RnW::R {
11751176
// Post read
1177+
debug!("Posting read for {} transfers", request_count);
11761178
response_value = transfer_with_retry(jtag, request_value, transfer_config, 0, retry);
11771179
if matches!(response_value, TransferResult::Ok(_)) {
11781180
// Read register block
1179-
while request_count > 0 {
1180-
request_count -= 1;
1181+
while nrequests > 0 {
1182+
debug!("Reading {}/{}", response_count + 1, request_count);
1183+
nrequests -= 1;
11811184
// Read DP/AP register
1182-
if request_count == 0 {
1185+
if nrequests == 0 {
11831186
// Last read
11841187
if ir != JTAG_DPACC {
11851188
jtag.shift_ir(JTAG_DPACC);
11861189
}
11871190
request_value = read_rdbuff;
11881191
}
1189-
transfer_with_retry(jtag, request_value, transfer_config, 0, retry);
1192+
response_value =
1193+
transfer_with_retry(jtag, request_value, transfer_config, 0, retry);
11901194
if let TransferResult::Ok(data) = response_value {
11911195
// Store data
11921196
resp.write_u32(data);
@@ -1199,8 +1203,9 @@ where
11991203
}
12001204
} else {
12011205
// Write register block
1202-
while request_count > 0 {
1203-
request_count -= 1;
1206+
while nrequests > 0 {
1207+
debug!("Writing {}/{}", response_count + 1, request_count);
1208+
nrequests -= 1;
12041209
// Load data
12051210
let data = req.next_u32();
12061211
// Write DP/AP register

0 commit comments

Comments
 (0)