Skip to content

Commit fbffbf7

Browse files
committed
fixing build for ARM64 (no bswap)
1 parent 3b36454 commit fbffbf7

File tree

3 files changed

+21
-17
lines changed

3 files changed

+21
-17
lines changed

src/pickit5.c

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -804,13 +804,16 @@ static int pickit5_set_sck_period(const PROGRAMMER *pgm, double sckperiod) {
804804
const unsigned char *set_speed = my.scripts.SetSpeed;
805805
unsigned int set_speed_len = my.scripts.SetSpeed_len;
806806
unsigned char buf[4];
807-
if (set_speed_len > 0) { // debugWire is fun . . .
808-
pickit5_uint32_to_array(buf, frq);
809-
if(pickit5_send_script(pgm, SCR_CMD, set_speed, set_speed_len, buf, 4, 0) >= 0) {
810-
if(pickit5_read_response(pgm) >= 0)
811-
return 0;
812-
}
807+
if (set_speed == NULL) { // debugWire is fun . . .
808+
return 0; // No script, to execute, return success
809+
}
810+
811+
pickit5_uint32_to_array(buf, frq);
812+
if(pickit5_send_script(pgm, SCR_CMD, set_speed, set_speed_len, buf, 4, 0) >= 0) {
813+
if(pickit5_read_response(pgm) >= 0)
814+
return 0;
813815
}
816+
814817
pmsg_error("Failed to set speed.\n");
815818
return -1;
816819
}
@@ -1346,8 +1349,11 @@ static int pickit5_isp_write_fuse(const PROGRAMMER *pgm, const AVRMEM *mem, unsi
13461349
avr_set_bits(mem->op[AVR_OP_WRITE], (unsigned char*)&cmd);
13471350
avr_set_addr(mem->op[AVR_OP_WRITE], (unsigned char*)&cmd, mem_fuse_offset(mem));
13481351
avr_set_input(mem->op[AVR_OP_WRITE], (unsigned char*)&cmd, value);
1349-
cmd = __builtin_bswap32(cmd); // Swap bitorder
1350-
pickit5_uint32_to_array(&write_fuse_isp[11], cmd); // fill programming command
1352+
1353+
write_fuse_isp[14] = (uint8_t) cmd; // swap bitorder and fill array
1354+
write_fuse_isp[13] = (uint8_t) (cmd >> 8);
1355+
write_fuse_isp[12] = (uint8_t) (cmd >> 16);
1356+
write_fuse_isp[11] = (uint8_t) (cmd >> 24);
13511357

13521358
if(pickit5_send_script_cmd(pgm, write_fuse_isp, write_fuse_isp_len, NULL, 0) < 0) {
13531359
pmsg_error("Write Fuse Script failed");
@@ -1373,8 +1379,11 @@ static int pickit5_isp_read_fuse(const PROGRAMMER *pgm, const AVRMEM *mem, unsig
13731379
unsigned int cmd;
13741380
avr_set_bits(mem->op[AVR_OP_READ], (unsigned char*)&cmd);
13751381
avr_set_addr(mem->op[AVR_OP_READ], (unsigned char*)&cmd, mem_fuse_offset(mem));
1376-
cmd = __builtin_bswap32(cmd); // Swap bitorder
1377-
pickit5_uint32_to_array(&read_fuse_isp[11], cmd); // fill programming command
1382+
1383+
read_fuse_isp[14] = (uint8_t) cmd; // swap bitorder and fill array
1384+
read_fuse_isp[13] = (uint8_t) (cmd >> 8);
1385+
read_fuse_isp[12] = (uint8_t) (cmd >> 16);
1386+
read_fuse_isp[11] = (uint8_t) (cmd >> 24);
13781387

13791388
if(pickit5_send_script_cmd(pgm, read_fuse_isp, read_fuse_isp_len, NULL, 0) < 0) {
13801389
pmsg_error("Read Fuse Script failed");

src/pickit5_lut_dw.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@ const unsigned char ExitProgMode_dw_0[31] = {
3535
0x1e, 0x4e, 0x90, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x1e, 0x40, 0x0c, 0x1e, 0x51, 0x1e, 0x4c,
3636
};
3737

38-
const unsigned char SetSpeed_dw_0[0] = {
39-
};
40-
4138
const unsigned char EraseChip_dw_0[1] = {
4239
0xaf,
4340
};
@@ -4199,15 +4196,13 @@ static void pickit_dw_script_init(SCRIPT *scr) {
41994196

42004197
scr->EnterProgMode = EnterProgMode_dw_0;
42014198
scr->ExitProgMode = ExitProgMode_dw_0;
4202-
scr->SetSpeed = SetSpeed_dw_0;
42034199
scr->EraseChip = EraseChip_dw_0;
42044200
scr->WriteMem8 = WriteMem8_dw_0;
42054201
scr->switchtoISP = switchtoISP_dw_0;
42064202
scr->WriteMemIO = WriteMemIO_dw_0;
42074203

42084204
scr->EnterProgMode_len = sizeof(EnterProgMode_dw_0);
42094205
scr->ExitProgMode_len = sizeof(ExitProgMode_dw_0);
4210-
scr->SetSpeed_len = sizeof(SetSpeed_dw_0);
42114206
scr->EraseChip_len = sizeof(EraseChip_dw_0);
42124207
scr->WriteMem8_len = sizeof(WriteMem8_dw_0);
42134208
scr->switchtoISP_len = sizeof(switchtoISP_dw_0);

tools/scripts_decoder.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,8 @@ def convert_xml(xml_path, c_funcs):
303303
func_bytes = bytes(scr_bytes_buffer[:counter]) # create an immutable bytes array
304304
break
305305

306-
if func_bytes == None:
307-
continue # continue with next chip if somethin went wrong
306+
if func_bytes == None or len(func_bytes) == 0:
307+
continue # continue with next chip if somethin went wrong or is empty (SetSpeed_dw)
308308

309309
if function_name not in function_dict[programming_mode].keys():
310310
function_dict[programming_mode][function_name] = []

0 commit comments

Comments
 (0)