From 140de2ac1ebb4dc09a6336e20ac07c57c77fbe0b Mon Sep 17 00:00:00 2001 From: andy <1414772332@qq.com> Date: Wed, 23 Oct 2024 09:59:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReadMe.txt | 6 +++++- driver/src/hal/board_info.c | 2 +- driver/src/hal/vfs_uart.c | 5 ++++- driver/src/hw3/board_info_hw.c | 3 ++- startup/misc/main.c | 5 +++-- startup/misc/plc/plc_main.c | 16 ++++++++++++---- 6 files changed, 27 insertions(+), 10 deletions(-) diff --git a/ReadMe.txt b/ReadMe.txt index 81edc69..289da46 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -4,4 +4,8 @@ c_cpp_properties.json 中 "intelliSenseMode": "linux-gcc-x86",时 sizeof(long)==4 "intelliSenseMode": "linux-gcc-x64",时 sizeof(long)==8 - 代码分析可以识别数组对齐 #pragma pack(1) 注释这个之后 sizeof 的结构体会按未1字节对齐的来计算 \ No newline at end of file + 代码分析可以识别数组对齐 #pragma pack(1) 注释这个之后 sizeof 的结构体会按未1字节对齐的来计算 +2024.10.22 + c_cpp_properties.json 中指定了编译器路径之后 如果此编译器不在path路径中 + 则会出现类似找不到 stdarg.h 的问题 + 指定了 riscv 的编译器之后 clear_csr write_csr 宏可以正常找到 \ No newline at end of file diff --git a/driver/src/hal/board_info.c b/driver/src/hal/board_info.c index 6329f3f..a24641c 100644 --- a/driver/src/hal/board_info.c +++ b/driver/src/hal/board_info.c @@ -602,7 +602,7 @@ void iot_board_cfg_init() os_mem_set(&g_board_info, 0x0, sizeof(board_info_t)); iot_board_hw_version_reload(); - + // 从oem中加载board配置 ret = board_load_oem_cfg(); if(ret != ERR_OK) { iot_printf("Can't find pin config for board.\n"); diff --git a/driver/src/hal/vfs_uart.c b/driver/src/hal/vfs_uart.c index a9d4f20..fbfae58 100644 --- a/driver/src/hal/vfs_uart.c +++ b/driver/src/hal/vfs_uart.c @@ -1129,10 +1129,12 @@ int system_uart_deinit(); int system_uart_init() { /* Get external port num. */ + // 外置串口数目 目前是0 uint8_t port = iot_board_get_external_uart_port_num(); uart_info *p_uart_info = NULL; int i; + // 获得串口api g_uart_ctrl = uart_e_ctrl; g_uart_ext_num = (int)port; @@ -1156,10 +1158,11 @@ int system_uart_init() os_mem_set(g_uart_rs485_port, 0x0, g_uart_rs485_num * sizeof(struct uart_rs485_ctrl)); + // 初始化所有串口,设置中断回调函数,除了打印串口 if (ERR_OK != uart_onchip_port_init(p_uart_info)) { goto error_out; } - + // 外置串口数量为0 这里直接返回成功 if (ERR_OK != uart_external_port_init(g_uart_ext_num, p_uart_info + IOT_UART_PORT_NUM_ONCHIP)) { goto error_out; diff --git a/driver/src/hw3/board_info_hw.c b/driver/src/hw3/board_info_hw.c index 75c79d4..77b8ced 100644 --- a/driver/src/hw3/board_info_hw.c +++ b/driver/src/hw3/board_info_hw.c @@ -801,6 +801,7 @@ static uint8_t board_get_vc_uart_port(uint8_t type) return port; } +// 根据用途来获取串口号 uint8_t board_lookup_uart_port(uint8_t type) { uint8_t port = IOT_UART_PORT_SUPP_MAX; @@ -811,7 +812,7 @@ uint8_t board_lookup_uart_port(uint8_t type) if (g_fw_mode == FTM_MODE) { return board_lookup_uart_port_ftm(type); } - + // 根据不同的板子修改type类型 type = board_lookup_uart_port_type_updata(type); for (uint8_t i = 0; i < IOT_UART_MAX_NUM_V1; i++) { diff --git a/startup/misc/main.c b/startup/misc/main.c index 721f794..e567db8 100644 --- a/startup/misc/main.c +++ b/startup/misc/main.c @@ -58,6 +58,7 @@ static void startup_ftm_init() #endif } +// 初始化task 然后删除自身 void iot_startup_init_task(void *arg) { uint8_t gpio_3v3; @@ -130,9 +131,9 @@ uint32_t iot_plc_entry(iot_build_info_t *info) sbl_param_input_t param = {0}; iot_system_get_fw_boot_param(¶m); - + // 设置app的build_info iot_version_set_user_build_info(info); - + // 设置模块运行模式 工厂模式等 iot_mode_set(param.fw_mode); mtd_set_flash_size(param.flash_size); mtd_set_psram_state(param.run_in_psram); diff --git a/startup/misc/plc/plc_main.c b/startup/misc/plc/plc_main.c index 4c62aeb..6c7873f 100644 --- a/startup/misc/plc/plc_main.c +++ b/startup/misc/plc/plc_main.c @@ -271,26 +271,30 @@ void iot_mode_set(int fw_mode) } +// 硬件部分初始化 void iot_hw_init() { + // 初始化efuse iot_efuse_init(); - + // 初始化时钟 system_clock_init(); - + // 初始化boardid为0 iot_board_info_init(); - + // 加密 iot_crypto_init(); /*resource initializations;*/ + // 初始化flash mtd_device_init(0); /* init oem module load oem cfg from file */ + // 初始化oem状态 cco还是sta #if (PLC_SUPPORT_CCO_ROLE) iot_oem_init(1); #else iot_oem_init(0); #endif - + // 目前是空函数 iot_cal_data_init(); #if (IOT_FLASH_BUILD == 1) @@ -308,11 +312,13 @@ void iot_hw_init() #endif #if (IOT_FLASH_BUILD == 1) + // 打印oem配置信息 iot_board_cfg_dump(); #endif iot_busmon_init(); /*platform intialization*/ + // 这里初始化cpu中断 异常处理函数 gp定时器等 platform_init(); /* chip id checking */ iot_chip_id_check(); @@ -320,9 +326,11 @@ void iot_hw_init() iot_wdg_enable(); } +// 子系统初始化 void iot_sub_system_init() { /* init common modules */ + // 检查前导零数组是否正常 iot_bitops_init(); /* init os related modules and utilities */