嗨对话框,
我想从UART启动到我的DA14585设备。但是,我只发现了关于DA14580 / 581/583从串行接口启动的DOC。
您是否有DA14585引导序列的特定文档?
谢谢!
最好的祝福!
莱昂内尔
嗨柳叫,
启动序列为585与580相同,因此DOC也适用于585。
有关更好的参考,您可以在efferic_bootoader项目中找到585从UART接收引导数据的代码(da14585_sdk_6.0.10.511_0 \ da14585_sdk \ 6.0.10.511 \ utmities \ secondard_bootloader)。
以下是相关代码:
/ ** **************************************************************************************** * @brief download firmware from UART interface **************************************************************************************** */ int FwDownload(void) { int fw_size; int i; char *code; char crc_code; char recv_byte; uart_send_byte(STX); // send start TX char if (0 == uart_receive_byte(&recv_byte)) return -1; // receive SOH if (recv_byte != SOH) return -2; if (0 == uart_receive_byte(&recv_byte)) return -3; // receive FW length LSB fw_size = recv_byte; if (0 == uart_receive_byte(&recv_byte)) return -4; // receive FW length MSB fw_size += (recv_byte << 8); // Support the extended length protocol if (fw_size == 0) { if (0 == uart_receive_byte(&recv_byte)) return -3; // receive FW length LSB fw_size = recv_byte; if (0 == uart_receive_byte(&recv_byte)) return -4; // receive FW length MiddleSB fw_size += (recv_byte << 8); if (0 == uart_receive_byte(&recv_byte)) return -9; // receive FW length MSB fw_size += (recv_byte << 16); } if ((fw_size == 0) || fw_size > MAX_CODE_LENGTH) // check if the program fits into memory { uart_send_byte(NAK); // if it does not fit send ACK return -5; } else { uart_send_byte(ACK); // if it fits send ACK } crc_code = 0; code = (char*) (SYSRAM_COPY_BASE_ADDRESS); // set pointer to SYSRAM for (i = 0; i < fw_size; i++) // copy code from UART to RAM { if (0 == uart_receive_byte(&recv_byte)) return -6; // receive code byte crc_code ^= recv_byte; // update CRC *code = recv_byte; // write to RAM code++; // increase RAM pointer } uart_send_byte(crc_code); // send CRC byte if (0 == uart_receive_byte(&recv_byte)) return -7; // receive ACK if (recv_byte != ACK) return -8; return fw_size; }
嗨柳叫,
启动序列为585与580相同,因此DOC也适用于585。
有关更好的参考,您可以在efferic_bootoader项目中找到585从UART接收引导数据的代码(da14585_sdk_6.0.10.511_0 \ da14585_sdk \ 6.0.10.511 \ utmities \ secondard_bootloader)。
以下是相关代码: