阅读bootram代码,添加一些注释

This commit is contained in:
2024-10-11 18:27:45 +08:00
parent f50a2a3751
commit 3a79b6af95
5 changed files with 36 additions and 6 deletions

View File

@@ -6,7 +6,7 @@
OUTPUT_TYPE = 0
OUTPUT_NAME = mfgtool
SUB_DIRS = ah oem_tool lzma clzma
SUB_DIRS = ah oem_tool lzma clzma bootram
# Kl3 compiles ram.bin separately to improve compilation speed.
ifneq ($(target), kunlun3)

View File

@@ -26,11 +26,13 @@ MODTOPDIR = $(TOPDIR)/mfgtool/bootram
# predefined macro
PRE_MARCO += IOT_DTEST_ONLY_SUPPORT=1 IOT_BUILD_TYPE=6
ifeq ($(bootram_secret_grade_enable), 0)
PRE_MARCO += BOOTRAM_SECRET_GRADE_ENABLE=0
else
# 打开调试模式 命令行会开放所有命令
# ifeq ($(bootram_secret_grade_enable), 0)
# PRE_MARCO += BOOTRAM_SECRET_GRADE_ENABLE=0
# else
# PRE_MARCO += BOOTRAM_SECRET_GRADE_ENABLE=1
# endif
PRE_MARCO += BOOTRAM_SECRET_GRADE_ENABLE=1
endif
SUB_DIRS = $(TOPDIR)/os $(TOPDIR)/common/io_lib $(MODTOPDIR)/bootram $(MODTOPDIR)/bootram/shell/cmd_line/src $(MODTOPDIR)/bootram/executor $(MODTOPDIR)/bootram/executor/lib $(MODTOPDIR)/bootram/sub_executor \
$(MODTOPDIR)/bootram/driver/src $(MODTOPDIR)/bootram/driver/src/$(hw_dep)

View File

@@ -372,6 +372,7 @@ static uint8_t iot_bootram_tool_upload_transmit_data(uint8_t port, uint8_t *buf,
}
while (len) {
// 如果上位机发送了 0x03 ctrl+c 则退出
if (iot_btm_command_break_detect()) {
iot_bootram_xmodem_transmit_end(port);
goto err_out;
@@ -623,6 +624,8 @@ err_out:
return ret;
}
// 上传flash数据
static uint8_t btm_executor_upload_data(int cid, uint32_t offset, uint32_t len,
iot_btm_exe_upload_scope_e scope, uint32_t *num)
{
@@ -644,17 +647,20 @@ static uint8_t btm_executor_upload_data(int cid, uint32_t offset, uint32_t len,
offset_tmp = offset;
data_len = len;
}
// 循环等待上位机发送 'c' 字符
ret = iot_bootram_xmodem_transmit_start_with_crc(g_exe_uart_info.btm_exe_uart_port);
if (ERR_OK != ret) {
goto err_out;
}
// 使用xmodem协议发送数据
ret = iot_bootram_tool_send_data(g_exe_uart_info.btm_exe_uart_port,
offset_tmp, data_len);
if (ret) {
goto err_out;
}
// 发送结束字符
// 循环发送结束字符 0x04 ,直到上位机返回应答 0x06
iot_bootram_xmodem_transmit_end(g_exe_uart_info.btm_exe_uart_port);
*num = data_len;
@@ -1430,6 +1436,7 @@ int iot_btm_executor_prosecc(int cid, int p0, int p1, int p2, int p3, int p4, in
int iot_btm_executor_init(void)
{
// 这里会把xmodem 的串口初始化为调试串口
btm_executor_init_hw();
default_sfc_clk_fre = sfc_clk_div_get();

View File

@@ -227,10 +227,12 @@ int iot_bootram_start(void)
bootram_version_init();
// 注册命令和处理命令的回调函数
iot_btm_executor_init();
iot_print_config(1);
// 注册命令行的命令和处理函数
iot_btm_shell_init();
bootram_main_loop();

View File

@@ -137,6 +137,22 @@ static iot_bootram_cmd_line_entity_t *btm_cmd_get_entity(char *cmd, int len)
return p_cmd_return;
}
static iot_bootram_cmd_line_entity_t *btm_cmd_get_entity_by_index(char *cmd, int len,int index)
{
iot_bootram_cmd_line_entity_t *p_cmd_handle = NULL;
if(index >= cline_commands.total_cnt || index < 0){
return NULL;
}
p_cmd_handle = &(cline_commands.entity[index]);
return p_cmd_handle;
}
static void btm_print_version(void)
{
uint32_t r_time;
@@ -178,6 +194,7 @@ static void btm_cmd_line_help(char *argv[], int argc)
}
}
// 没有输入具体命令的情况下就打印所有命令
if (NULL == p_ent) {
btm_print_version();
for (i = 0; i < cline_commands.total_cnt; i++) {
@@ -564,6 +581,8 @@ static void btm_line_completed(void)
return;
}
// 串口数据的处理函数 赋值给 btm_data_received_callback
static void btm_receive_command(char *buf, int len)
{
char *ch;