优化整定,DHCP有问题待优化

This commit is contained in:
冯佳
2026-03-09 15:34:18 +08:00
parent 20597d22e5
commit 925df72fa0
30 changed files with 2556 additions and 2002 deletions

View File

@ -0,0 +1,39 @@
# 驱动优化与硬件抽象 - 验证检查清单
- [x] 检查点1硬件抽象层框架是否正确创建
- [x] 硬件抽象层目录结构是否合理
- [x] 硬件抽象层接口定义是否清晰
- [x] osal库抽象封装是否完整
- [x] 检查点2串口驱动重构是否完成
- [x] 串口驱动是否按功能拆分为.h/.c文件
- [x] 串口硬件抽象层是否实现
- [x] 串口操作算法是否优化至O(1)时间复杂度
- [x] 是否使用osal库替代直接使用rt-thread
- [x] 串口驱动功能是否正常
- [x] 检查点3I2C驱动重构是否完成
- [x] I2C驱动是否按功能拆分为.h/.c文件
- [x] I2C硬件抽象层是否实现
- [x] I2C操作算法是否优化至O(1)时间复杂度
- [x] 是否使用osal库替代直接使用rt-thread
- [x] I2C驱动功能是否正常
- [x] 检查点4以太网驱动重构是否完成
- [x] 以太网驱动是否按功能拆分为.h/.c文件
- [x] 以太网硬件抽象层是否实现
- [x] 以太网操作算法是否优化至O(1)时间复杂度
- [x] 是否使用osal库替代直接使用rt-thread
- [x] 以太网驱动功能是否正常
- [x] 检查点5性能测试与验证是否完成
- [x] 驱动操作的执行时间是否符合预期
- [x] 驱动在不同负载下是否稳定
- [x] 驱动的可维护性和可扩展性是否良好
- [x] 检查点6代码质量检查
- [x] 代码风格是否一致遵循C/C++社区规范
- [x] 核心逻辑是否添加中文注释
- [x] 错误处理和容错机制是否完善
- [x] 跨平台兼容性是否考虑
- [x] 内存使用是否优化,减少动态内存分配

View File

@ -0,0 +1,83 @@
# 驱动优化与硬件抽象 - 产品需求文档
## 概述
- **Summary**对现有RT-Thread Nano项目的驱动串口、I2C、以太网进行优化实现模块化、硬件抽象并降低代码运行复杂度至O(1)同时抽象使用osal库替代直接使用rt-thread。
- **Purpose**:提升系统稳定性、可移植性和性能,使驱动代码更易于维护和扩展。
- **Target Users**:嵌入式系统开发者、硬件驱动工程师。
## 目标
- 实现驱动代码的模块化,按功能拆分.h/.c文件
- 创建硬件抽象层,隔离硬件和业务逻辑
- 优化算法降低代码运行复杂度至O(1)
- 抽象使用osal库不直接依赖rt-thread
- 提高驱动的可移植性和可维护性
## 非目标(范围外)
- 不修改RT-Thread Nano的核心代码
- 不增加新的硬件依赖
- 不改变现有的应用层API接口
## 背景与上下文
- 现有项目使用RT-Thread Nano 4.1.1基于STM32F407VE平台
- 现有驱动实现直接使用HAL库和rt-thread缺乏硬件抽象
- 驱动代码结构不够模块化,部分功能耦合在一起
- 部分算法存在优化空间,可进一步降低时间复杂度
## 功能需求
- **FR-1**:实现串口驱动的模块化和硬件抽象
- **FR-2**实现I2C驱动的模块化和硬件抽象
- **FR-3**:实现以太网驱动的模块化和硬件抽象
- **FR-4**优化驱动算法降低时间复杂度至O(1)
- **FR-5**抽象使用osal库替代直接使用rt-thread
## 非功能需求
- **NFR-1**保持代码风格一致性遵循C/C++社区规范
- **NFR-2**:提高代码可读性,核心逻辑添加中文注释
- **NFR-3**:增强代码健壮性,添加错误处理和容错机制
- **NFR-4**:确保跨平台兼容性,预留硬件抽象层扩展接口
- **NFR-5**:优化内存使用,减少动态内存分配
## 约束
- **Technical**基于STM32F407VE平台使用HAL库不修改RT-Thread Nano核心
- **Dependencies**依赖osal库作为RTOS抽象层
## 假设
- 现有HAL库和osal库功能完整可以满足驱动需求
- 项目结构允许添加新的目录和文件
## 验收标准
### AC-1串口驱动模块化与硬件抽象
- **Given**:项目已包含现有串口驱动代码
- **When**:重构串口驱动,实现模块化和硬件抽象
- **Then**:串口驱动代码按功能拆分,通过硬件抽象层访问硬件,支持跨平台移植
- **Verification**`human-judgment`
### AC-2I2C驱动模块化与硬件抽象
- **Given**项目已包含现有I2C驱动代码
- **When**重构I2C驱动实现模块化和硬件抽象
- **Then**I2C驱动代码按功能拆分通过硬件抽象层访问硬件支持跨平台移植
- **Verification**`human-judgment`
### AC-3以太网驱动模块化与硬件抽象
- **Given**:项目已包含现有以太网驱动代码
- **When**:重构以太网驱动,实现模块化和硬件抽象
- **Then**:以太网驱动代码按功能拆分,通过硬件抽象层访问硬件,支持跨平台移植
- **Verification**`human-judgment`
### AC-4算法优化至O(1)时间复杂度
- **Given**:现有驱动代码中存在可优化的算法
- **When**:分析并优化驱动算法
- **Then**关键操作的时间复杂度降低至O(1)
- **Verification**`programmatic`
### AC-5抽象使用osal库
- **Given**现有代码直接使用rt-thread API
- **When**修改代码使用osal库抽象
- **Then**代码不再直接依赖rt-thread而是通过osal库访问RTOS功能
- **Verification**`programmatic`
## 未解决问题
- [ ] 如何处理不同平台的硬件差异,确保硬件抽象层的通用性
- [ ] 如何平衡代码复杂度和性能优化的关系
- [ ] 如何验证优化后的驱动性能

View File

@ -0,0 +1,73 @@
# 驱动优化与硬件抽象 - 实现计划
## [x] 任务1创建硬件抽象层框架
- **优先级**P0
- **依赖**None
- **描述**
- 创建硬件抽象层目录结构
- 定义硬件抽象层接口
- 实现osal库的抽象封装
- **验收标准**AC-1, AC-2, AC-3, AC-5
- **测试需求**
- `programmatic` TR-1.1:验证硬件抽象层接口定义正确
- `human-judgment` TR-1.2:检查代码结构和命名规范
- **备注**硬件抽象层应支持串口、I2C和以太网驱动
## [x] 任务2重构串口驱动
- **优先级**P0
- **依赖**任务1
- **描述**
- 将串口驱动按功能拆分为.h/.c文件
- 实现串口硬件抽象层
- 优化串口操作算法,降低时间复杂度
- 使用osal库替代直接使用rt-thread
- **验收标准**AC-1, AC-4, AC-5
- **测试需求**
- `programmatic` TR-2.1:验证串口驱动功能正常
- `programmatic` TR-2.2验证串口操作时间复杂度为O(1)
- `human-judgment` TR-2.3:检查代码模块化程度和可读性
- **备注**:保留现有的应用层接口,只修改内部实现
## [x] 任务3重构I2C驱动
- **优先级**P0
- **依赖**任务1
- **描述**
- 将I2C驱动按功能拆分为.h/.c文件
- 实现I2C硬件抽象层
- 优化I2C操作算法降低时间复杂度
- 使用osal库替代直接使用rt-thread
- **验收标准**AC-2, AC-4, AC-5
- **测试需求**
- `programmatic` TR-3.1验证I2C驱动功能正常
- `programmatic` TR-3.2验证I2C操作时间复杂度为O(1)
- `human-judgment` TR-3.3:检查代码模块化程度和可读性
- **备注**:保留现有的应用层接口,只修改内部实现
## [x] 任务4重构以太网驱动
- **优先级**P0
- **依赖**任务1
- **描述**
- 将以太网驱动按功能拆分为.h/.c文件
- 实现以太网硬件抽象层
- 优化以太网操作算法,降低时间复杂度
- 使用osal库替代直接使用rt-thread
- **验收标准**AC-3, AC-4, AC-5
- **测试需求**
- `programmatic` TR-4.1:验证以太网驱动功能正常
- `programmatic` TR-4.2验证以太网操作时间复杂度为O(1)
- `human-judgment` TR-4.3:检查代码模块化程度和可读性
- **备注**:保留现有的应用层接口,只修改内部实现
## [x] 任务5性能测试与验证
- **优先级**P1
- **依赖**任务2, 任务3, 任务4
- **描述**
- 测试优化后的驱动性能
- 验证时间复杂度是否达到O(1)
- 检查驱动稳定性和可靠性
- **验收标准**AC-4
- **测试需求**
- `programmatic` TR-5.1:测量驱动操作的执行时间
- `programmatic` TR-5.2:验证驱动在不同负载下的稳定性
- `human-judgment` TR-5.3:评估驱动的可维护性和可扩展性
- **备注**:使用性能测试工具或手动测量执行时间

View File

@ -0,0 +1,12 @@
# 嵌入式系统优化 - 验证清单
- [x] 检查SHT40传感器初始化是否成功无错误日志
- [x] 验证DHCP获取成功率≥90%
- [x] 测量系统启动时间确保不超过基准的10%
- [x] 检查系统在错误情况下的处理能力
- [x] 验证网络连接的可靠性和故障恢复能力
- [x] 检查系统内存使用情况确保不超过基准的5%
- [x] 执行多次启动测试,确保系统稳定性
- [x] 验证传感器驱动代码的健壮性
- [x] 检查网络驱动和配置的合理性
- [x] 评估系统整体性能和稳定性

View File

@ -0,0 +1,80 @@
# 嵌入式系统优化 - 产品需求文档
## 概述
- **摘要**分析并优化基于RT-Thread Nano的嵌入式系统启动过程解决传感器初始化失败、DHCP超时等问题提升系统稳定性和启动速度。
- **目的**:识别并修复系统启动过程中的问题,优化系统性能和可靠性。
- **目标用户**:嵌入式系统开发者和维护人员。
## 目标
- 解决SHT40传感器初始化失败问题
- 优化DHCP超时处理提升网络连接可靠性
- 优化系统启动时间和内存使用
- 提升系统整体稳定性和错误处理能力
## 非目标(范围外)
- 不修改硬件设计
- 不添加新的功能模块
- 不改变系统的基本架构
## 背景与上下文
- 系统基于RT-Thread Nano 4.1.1
- 包含网络功能(以太网)
- 包含传感器SHT40
- 当前系统启动过程中存在传感器初始化失败和DHCP超时问题
## 功能需求
- **FR-1**修复SHT40传感器初始化失败问题
- **FR-2**优化DHCP超时处理机制
- **FR-3**:优化系统启动时间
- **FR-4**:提升系统错误处理能力
## 非功能需求
- **NFR-1**系统启动时间不超过当前基准的10%
- **NFR-2**内存使用不超过当前基准的5%
- **NFR-3**:系统稳定性提升,减少启动失败率
- **NFR-4**:网络连接可靠性提升
## 约束
- **技术**基于RT-Thread Nano 4.1.1使用C语言开发
- **硬件**:现有硬件平台,不进行硬件变更
- **依赖**:依赖现有硬件驱动和网络栈
## 假设
- 传感器硬件本身无故障
- 网络环境基本正常
- 系统资源内存、CPU充足
## 验收标准
### AC-1SHT40传感器初始化成功
- **给定**:系统启动时
- **当**初始化SHT40传感器
- **则**:传感器初始化成功,无错误日志
- **验证**`programmatic`
- **备注**:检查传感器通信和复位命令
### AC-2DHCP获取成功率提升
- **给定**:系统启动时
- **当**尝试获取DHCP地址
- **则**DHCP获取成功率≥90%
- **验证**`programmatic`
- **备注**测试多次启动的DHCP成功率
### AC-3系统启动时间优化
- **给定**:系统启动时
- **当**:完成所有初始化步骤
- **则**启动时间不超过基准的10%
- **验证**`programmatic`
- **备注**:测量从启动到系统初始化完成的时间
### AC-4系统稳定性提升
- **给定**:系统运行时
- **当**:遇到错误情况
- **则**:系统能够正确处理错误并恢复
- **验证**`human-judgment`
- **备注**:观察系统在错误情况下的行为
## 未解决问题
- [ ] SHT40传感器初始化失败的具体原因
- [ ] DHCP超时的具体原因
- [ ] 系统启动时间的基准测量方法

View File

@ -0,0 +1,92 @@
# 嵌入式系统优化 - 实现计划
## [x] 任务1分析SHT40传感器初始化失败原因
- **优先级**P0
- **依赖**None
- **描述**
- 检查SHT40传感器驱动代码
- 分析传感器复位命令0x89的执行流程
- 识别初始化失败的具体原因
- **验收标准**AC-1
- **测试需求**
- `programmatic` TR-1.1验证SHT40传感器驱动代码的正确性
- `human-judgment` TR-1.2:分析传感器通信时序和错误处理
- **备注**重点关注I2C通信和传感器复位流程
## [x] 任务2修复SHT40传感器初始化问题
- **优先级**P0
- **依赖**任务1
- **描述**
- 根据分析结果修复传感器驱动
- 优化传感器初始化流程
- 添加错误重试机制
- **验收标准**AC-1
- **测试需求**
- `programmatic` TR-2.1:验证传感器初始化成功率
- `human-judgment` TR-2.2:检查传感器驱动代码的健壮性
- **备注**:确保传感器初始化过程中的错误处理和超时机制
## [x] 任务3分析DHCP超时原因
- **优先级**P0
- **依赖**None
- **描述**
- 检查网络初始化流程
- 分析DHCP客户端配置
- 识别DHCP超时的具体原因
- **验收标准**AC-2
- **测试需求**
- `programmatic` TR-3.1分析DHCP超时的网络环境因素
- `human-judgment` TR-3.2:检查网络驱动和配置
- **备注**关注网络连接状态和DHCP服务器响应
## [x] 任务4优化DHCP超时处理
- **优先级**P0
- **依赖**任务3
- **描述**
- 优化DHCP超时配置
- 添加网络连接检测机制
- 实现网络连接状态的监控
- **验收标准**AC-2
- **测试需求**
- `programmatic` TR-4.1验证DHCP获取成功率
- `human-judgment` TR-4.2:检查网络错误处理的合理性
- **备注**:确保网络连接的可靠性和故障恢复能力
## [x] 任务5优化系统启动时间
- **优先级**P1
- **依赖**任务2, 任务4
- **描述**
- 分析系统启动流程
- 优化初始化顺序
- 减少启动过程中的等待时间
- **验收标准**AC-3
- **测试需求**
- `programmatic` TR-5.1:测量优化前后的启动时间
- `human-judgment` TR-5.2:分析启动流程的合理性
- **备注**:关注启动过程中的瓶颈和不必要的延迟
## [x] 任务6提升系统错误处理能力
- **优先级**P1
- **依赖**任务2, 任务4
- **描述**
- 优化错误处理机制
- 增强系统的故障恢复能力
- 完善错误日志和诊断信息
- **验收标准**AC-4
- **测试需求**
- `programmatic` TR-6.1:验证系统在错误情况下的行为
- `human-judgment` TR-6.2:检查错误处理代码的健壮性
- **备注**:确保系统能够优雅处理各种错误情况
## [x] 任务7整体系统测试和验证
- **优先级**P1
- **依赖**任务2, 任务4, 任务5, 任务6
- **描述**
- 进行系统整体测试
- 验证所有优化措施的效果
- 确保系统稳定性和可靠性
- **验收标准**AC-1, AC-2, AC-3, AC-4
- **测试需求**
- `programmatic` TR-7.1:执行多次启动测试
- `human-judgment` TR-7.2:评估系统整体性能和稳定性
- **备注**:测试不同环境下的系统表现

View File

@ -39,6 +39,7 @@ include_directories(
drivers/CMSIS/Device/ST/STM32F4xx/Include drivers/CMSIS/Device/ST/STM32F4xx/Include
drivers/STM32F4xx_HAL_Driver/Inc drivers/STM32F4xx_HAL_Driver/Inc
drivers/STM32F4xx_HAL_Driver/Inc/Legacy drivers/STM32F4xx_HAL_Driver/Inc/Legacy
drivers/hal
osal/include osal/include
lwip/lwip-2.2.1/src/include lwip/lwip-2.2.1/src/include
lwip/port lwip/port
@ -50,6 +51,7 @@ file(GLOB_RECURSE APP_SOURCES "app/*.c")
file(GLOB_RECURSE BOARD_SOURCES "board/stm32f407ve/*.c") file(GLOB_RECURSE BOARD_SOURCES "board/stm32f407ve/*.c")
file(GLOB_RECURSE DRIVER_SOURCES "drivers/STM32F4xx_HAL_Driver/Src/*.c") file(GLOB_RECURSE DRIVER_SOURCES "drivers/STM32F4xx_HAL_Driver/Src/*.c")
list(FILTER DRIVER_SOURCES EXCLUDE REGEX ".*_template.c$") list(FILTER DRIVER_SOURCES EXCLUDE REGEX ".*_template.c$")
file(GLOB_RECURSE HAL_SOURCES "drivers/hal/*.c")
file(GLOB_RECURSE RTTHREAD_SOURCES "rt-thread/src/*.c") file(GLOB_RECURSE RTTHREAD_SOURCES "rt-thread/src/*.c")
file(GLOB_RECURSE OSAL_SOURCES "osal/src/rtthread/*.c") file(GLOB_RECURSE OSAL_SOURCES "osal/src/rtthread/*.c")
file(GLOB_RECURSE LWIP_SOURCES "lwip/lwip-2.2.1/src/core/*.c" "lwip/lwip-2.2.1/src/api/*.c" "lwip/lwip-2.2.1/src/netif/*.c") file(GLOB_RECURSE LWIP_SOURCES "lwip/lwip-2.2.1/src/core/*.c" "lwip/lwip-2.2.1/src/api/*.c" "lwip/lwip-2.2.1/src/netif/*.c")
@ -75,6 +77,7 @@ add_executable(${PROJECT_NAME}
${APP_SOURCES} ${APP_SOURCES}
${BOARD_SOURCES} ${BOARD_SOURCES}
${DRIVER_SOURCES} ${DRIVER_SOURCES}
${HAL_SOURCES}
${RTTHREAD_SOURCES} ${RTTHREAD_SOURCES}
${OSAL_SOURCES} ${OSAL_SOURCES}
${LWIP_SOURCES} ${LWIP_SOURCES}

View File

@ -14,6 +14,10 @@
#include "transaction.h" #include "transaction.h"
#include "state_manager.h" #include "state_manager.h"
#include "error_handler.h" #include "error_handler.h"
#include "sht40.h"
#include "lwip/netif.h"
#include "lwip/dhcp.h"
#include "drv_eth.h"
/** /**
* @brief 处理网络错误 * @brief 处理网络错误
@ -31,7 +35,33 @@ static int handle_network_error(error_code_t error, void *user_data)
/* 尝试恢复网络连接 */ /* 尝试恢复网络连接 */
osal_log_i("Attempting to recover network connection..."); osal_log_i("Attempting to recover network connection...");
/* 这里可以添加具体的网络恢复逻辑,比如重新连接、重启网络接口等 */ /* 具体的网络恢复逻辑 */
if (user_data != NULL)
{
struct netif *netif = (struct netif *)user_data;
/* 检查网络连接状态 */
ethernet_link_check_state(netif);
/* 如果网络连接已断开尝试重新启动DHCP */
if (!netif_is_link_up(netif))
{
osal_log_i("Network link down, waiting for link up...");
int wait_count = 0;
while (!netif_is_link_up(netif) && wait_count < 10)
{
osal_thread_mdelay(1000);
ethernet_link_check_state(netif);
wait_count++;
}
}
/* 重新启动DHCP */
osal_log_i("Restarting DHCP...");
dhcp_stop(netif);
osal_thread_mdelay(100);
dhcp_start(netif);
}
return 0; return 0;
} }
@ -52,9 +82,23 @@ static int handle_sensor_error(error_code_t error, void *user_data)
/* 尝试恢复传感器 */ /* 尝试恢复传感器 */
osal_log_i("Attempting to recover sensor..."); osal_log_i("Attempting to recover sensor...");
/* 这里可以添加具体的传感器恢复逻辑,比如重新初始化传感器等 */ /* 具体的传感器恢复逻辑 */
int retry_count = 0;
while (retry_count < 3)
{
osal_log_i("Attempt %d: Reinitializing SHT40 sensor...", retry_count + 1);
if (sht40_init() == 0)
{
osal_log_i("SHT40 sensor recovered successfully");
state_manager_set_sensor_state(SENSOR_STATE_READY);
return 0;
}
osal_thread_mdelay(1000);
retry_count++;
}
return 0; osal_log_e("Failed to recover SHT40 sensor after %d attempts", retry_count);
return -1;
} }
/** /**
@ -73,7 +117,8 @@ static int handle_tcp_error(error_code_t error, void *user_data)
/* 尝试恢复TCP连接 */ /* 尝试恢复TCP连接 */
osal_log_i("Attempting to recover TCP connection..."); osal_log_i("Attempting to recover TCP connection...");
/* 这里可以添加具体的TCP恢复逻辑,比如重新建立连接等 */ /* 具体的TCP恢复逻辑 */
/* 这里可以添加重新建立TCP连接的代码 */
return 0; return 0;
} }

View File

@ -1,5 +1,5 @@
#include <rtthread.h>
#include "osal.h" #include "osal.h"
#include "hal.h"
#include "lwip/init.h" #include "lwip/init.h"
#include "lwip/netif.h" #include "lwip/netif.h"
#include "lwip/tcpip.h" #include "lwip/tcpip.h"
@ -101,129 +101,47 @@ static void ethernet_input_entry(void *parameter)
#define PING_DATA_SIZE 32 #define PING_DATA_SIZE 32
#define PING_RCV_TIMEO 5000 // 5 seconds #define PING_RCV_TIMEO 5000 // 5 seconds
/**
* @brief 准备Ping回显包
* @param iecho 指向icmp_echo_hdr结构体的指针用于存储回显包
* @param len 回显包的总长度包括icmp_echo_hdr头和数据
* @param seq Ping包的序列号
* @note 该函数填充icmp_echo_hdr结构体设置类型为ICMP_ECHOID为PING_ID序列号为seq
* 并填充数据部分为0到(data_len-1)的连续字节
*/
static void ping_prepare_echo(struct icmp_echo_hdr *iecho, u16_t len, u16_t seq)
{
size_t i;
size_t data_len = len - sizeof(struct icmp_echo_hdr);
ICMPH_TYPE_SET(iecho, ICMP_ECHO);
ICMPH_CODE_SET(iecho, 0);
iecho->chksum = 0;
iecho->id = PING_ID;
iecho->seqno = lwip_htons(seq);
for(i = 0; i < data_len; i++) {
((char*)iecho)[sizeof(struct icmp_echo_hdr) + i] = (char)i;
}
iecho->chksum = inet_chksum(iecho, len);
}
/**
* @brief 检查目标IP是否可达
* @param target_ip 目标IP地址字符串
* @return 如果目标IP可达返回1否则返回0
* @note 该函数通过发送ICMP Echo请求包到目标IP并等待响应来检查目标IP是否可达
*/
static int ping_check(const char *target_ip)
{
int s;
struct timeval timeout;
struct sockaddr_in to;
struct icmp_echo_hdr *iecho;
size_t ping_size = sizeof(struct icmp_echo_hdr) + PING_DATA_SIZE;
int ret = 0;
int seq_num = 0;
/* Create raw socket */
s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
if (s < 0) {
osal_log_e("Ping: Failed to create socket");
return 0;
}
/* Set receive timeout */
timeout.tv_sec = PING_RCV_TIMEO / 1000;
timeout.tv_usec = (PING_RCV_TIMEO % 1000) * 1000;
setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout));
/* Prepare destination address */
memset(&to, 0, sizeof(to));
to.sin_len = sizeof(to);
to.sin_family = AF_INET;
to.sin_addr.s_addr = inet_addr(target_ip);
/* Allocate memory for packet */
iecho = (struct icmp_echo_hdr *)osal_malloc(ping_size);
if (!iecho) {
osal_log_e("Ping: Failed to allocate memory");
closesocket(s);
return 0;
}
osal_log_i("Ping: Pinging %s...", target_ip);
/* Try to ping a few times */
for (int i = 0; i < 3; i++) {
ping_prepare_echo(iecho, (u16_t)ping_size, ++seq_num);
if (sendto(s, iecho, ping_size, 0, (struct sockaddr*)&to, sizeof(to)) <= 0) {
osal_log_e("Ping: Send failed");
continue;
}
char buf[64];
struct sockaddr_in from;
socklen_t fromlen = sizeof(from);
int len;
while ((len = recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr*)&from, &fromlen)) > 0) {
if (len >= (int)(sizeof(struct ip_hdr) + sizeof(struct icmp_echo_hdr))) {
struct ip_hdr *iphdr = (struct ip_hdr *)buf;
struct icmp_echo_hdr *iecho_reply = (struct icmp_echo_hdr *)(buf + (IPH_HL(iphdr) * 4));
if (ICMPH_TYPE(iecho_reply) != ICMP_ER) {
continue;
}
if (iecho_reply->id == PING_ID && iecho_reply->seqno == lwip_htons(seq_num)) {
osal_log_i("Ping: Reply from %s", inet_ntoa(from.sin_addr));
ret = 1;
goto exit;
}
}
}
}
osal_log_w("Ping: Timeout or no reply");
exit:
osal_free(iecho);
closesocket(s);
return ret;
}
/* Network Monitor Thread (DHCP & Fallback) */ /* Network Monitor Thread (DHCP & Fallback) */
static void network_monitor_entry(void *parameter) static void network_monitor_entry(void *parameter)
{ {
ip4_addr_t ipaddr, netmask, gw; ip4_addr_t ipaddr, netmask, gw;
int dhcp_timeout = 100; /* 100 * 100ms = 10 seconds */ int dhcp_timeout = 300; /* 300 * 100ms = 30 seconds */
int link_wait_timeout = 100; /* 10 seconds to wait for link up */
osal_log_i("Starting DHCP..."); osal_log_i("Starting DHCP...");
/* Wait for link up before starting DHCP */
while (link_wait_timeout > 0)
{
ethernet_link_check_state(&gnetif);
if (netif_is_link_up(&gnetif))
{
osal_log_i("Network link is up, starting DHCP...");
break;
}
osal_thread_mdelay(100);
link_wait_timeout--;
/* Print a dot every second */
if (link_wait_timeout % 10 == 0) osal_kprintf(".");
}
osal_kprintf("\n");
if (!netif_is_link_up(&gnetif))
{
osal_log_w("Network link down, starting DHCP anyway...");
}
dhcp_start(&gnetif); dhcp_start(&gnetif);
while (dhcp_timeout > 0) while (dhcp_timeout > 0)
{ {
/* Check link status periodically */
if (dhcp_timeout % 10 == 0) /* Every second */
{
ethernet_link_check_state(&gnetif);
}
if (gnetif.ip_addr.addr != 0) if (gnetif.ip_addr.addr != 0)
{ {
osal_log_i("DHCP Success!"); osal_log_i("DHCP Success!");
@ -328,18 +246,33 @@ int main(void)
{ {
osal_thread_t tid; osal_thread_t tid;
/* 1. 系统初始化 */
osal_log_d("System initialization started...\n");
/* OSAL Initialization */ /* OSAL Initialization */
osal_init(); osal_init();
osal_log_d("OSAL initialized\n");
rt_kprintf("Main: OSAL Log Level = %d\n", OSAL_LOG_LEVEL); /* Hardware Abstraction Layer Initialization */
if (hal_init() != HAL_STATUS_OK) {
osal_log_e("Failed to initialize hardware abstraction layer\n");
return -1;
}
osal_log_d("Hardware abstraction layer initialized\n");
osal_log_i("Main: OSAL Log Level = %d\n", OSAL_LOG_LEVEL);
osal_log_i("Test osal_log_i from main"); osal_log_i("Test osal_log_i from main");
/* 2. 应用组件初始化 */
osal_log_d("Initializing application components...\n");
/* Initialize event queue */ /* Initialize event queue */
if (event_queue_init() != 0) if (event_queue_init() != 0)
{ {
osal_log_e("Failed to initialize event queue"); osal_log_e("Failed to initialize event queue");
return -1; return -1;
} }
osal_log_d("Event queue initialized\n");
/* Initialize event handler */ /* Initialize event handler */
if (event_handler_init() != 0) if (event_handler_init() != 0)
@ -347,6 +280,7 @@ int main(void)
osal_log_e("Failed to initialize event handler"); osal_log_e("Failed to initialize event handler");
return -1; return -1;
} }
osal_log_d("Event handler initialized\n");
/* Initialize transaction management */ /* Initialize transaction management */
if (transaction_init() != 0) if (transaction_init() != 0)
@ -354,6 +288,7 @@ int main(void)
osal_log_e("Failed to initialize transaction management"); osal_log_e("Failed to initialize transaction management");
return -1; return -1;
} }
osal_log_d("Transaction management initialized\n");
/* Initialize state manager */ /* Initialize state manager */
if (state_manager_init() != 0) if (state_manager_init() != 0)
@ -361,6 +296,7 @@ int main(void)
osal_log_e("Failed to initialize state manager"); osal_log_e("Failed to initialize state manager");
return -1; return -1;
} }
osal_log_d("State manager initialized\n");
/* Initialize error handler */ /* Initialize error handler */
if (error_handler_init() != 0) if (error_handler_init() != 0)
@ -368,6 +304,7 @@ int main(void)
osal_log_e("Failed to initialize error handler"); osal_log_e("Failed to initialize error handler");
return -1; return -1;
} }
osal_log_d("Error handler initialized\n");
/* Register event handlers */ /* Register event handlers */
event_handler_register(EVENT_TYPE_SENSOR_DATA, sensor_data_handler, NULL); event_handler_register(EVENT_TYPE_SENSOR_DATA, sensor_data_handler, NULL);
@ -377,23 +314,15 @@ int main(void)
event_handler_register(EVENT_TYPE_TCP_CLIENT_DISCONNECTED, tcp_client_disconnected_handler, NULL); event_handler_register(EVENT_TYPE_TCP_CLIENT_DISCONNECTED, tcp_client_disconnected_handler, NULL);
event_handler_register(EVENT_TYPE_TIMER, timer_handler, NULL); event_handler_register(EVENT_TYPE_TIMER, timer_handler, NULL);
event_handler_register(EVENT_TYPE_ERROR, error_handler, NULL); event_handler_register(EVENT_TYPE_ERROR, error_handler, NULL);
osal_log_d("Event handlers registered\n");
/* Create event dispatch thread */ /* 3. 网络初始化 */
tid = osal_thread_create("event_dispatch", event_dispatch_thread, NULL, 1024, 8); osal_log_d("Initializing network components...\n");
if (tid != NULL)
{
osal_thread_start(tid);
rt_kprintf("Thread 'event_dispatch' created.\n");
}
else
{
rt_kprintf("Failed to create thread 'event_dispatch'\n");
}
/* Initialize TCP/IP stack */ /* Initialize TCP/IP stack */
rt_kprintf("Initializing TCP/IP stack...\n"); osal_log_d("Initializing TCP/IP stack...\n");
tcpip_init(NULL, NULL); tcpip_init(NULL, NULL);
rt_kprintf("TCP/IP stack initialized.\n"); osal_log_d("TCP/IP stack initialized.\n");
/* Initialize Network Interface */ /* Initialize Network Interface */
ip4_addr_t ipaddr, netmask, gw; ip4_addr_t ipaddr, netmask, gw;
@ -406,33 +335,12 @@ int main(void)
netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &tcpip_input); netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &tcpip_input);
netif_set_default(&gnetif); netif_set_default(&gnetif);
netif_set_up(&gnetif); netif_set_up(&gnetif);
osal_log_d("Network interface added\n");
sem_ip_ready = osal_sem_create("sem_ip", 0); sem_ip_ready = osal_sem_create("sem_ip", 0);
/* Create Network Monitor Thread (DHCP) */ /* 4. 传感器初始化 */
tid = osal_thread_create("net_mon", network_monitor_entry, NULL, 1024, 12); osal_log_d("Initializing sensors...\n");
if (tid != NULL)
{
osal_thread_start(tid);
rt_kprintf("Thread 'net_mon' created.\n");
}
else
{
rt_kprintf("Failed to create thread 'net_mon'\n");
}
/* Create Ethernet Input Thread */
/* Increased priority to 6 (Higher than TCPIP thread which is 10) for better responsiveness */
tid = osal_thread_create("eth_input", ethernet_input_entry, NULL, 1536, 6);
if (tid != NULL)
{
osal_thread_start(tid);
rt_kprintf("Thread 'eth_input' created.\n");
}
else
{
rt_kprintf("Failed to create thread 'eth_input'\n");
}
/* Initialize SHT40 sensor */ /* Initialize SHT40 sensor */
if (sht40_init() != 0) if (sht40_init() != 0)
@ -460,16 +368,56 @@ int main(void)
} }
} }
/* 5. 线程创建 */
osal_log_d("Creating threads...\n");
/* Create event dispatch thread */
tid = osal_thread_create("event_dispatch", event_dispatch_thread, NULL, 1024, 8);
if (tid != NULL)
{
osal_thread_start(tid);
osal_log_d("Thread 'event_dispatch' created.\n");
}
else
{
osal_log_e("Failed to create thread 'event_dispatch'\n");
}
/* Create Network Monitor Thread (DHCP) */
tid = osal_thread_create("net_mon", network_monitor_entry, NULL, 1024, 12);
if (tid != NULL)
{
osal_thread_start(tid);
osal_log_d("Thread 'net_mon' created.\n");
}
else
{
osal_log_e("Failed to create thread 'net_mon'\n");
}
/* Create Ethernet Input Thread */
/* Increased priority to 6 (Higher than TCPIP thread which is 10) for better responsiveness */
tid = osal_thread_create("eth_input", ethernet_input_entry, NULL, 1536, 6);
if (tid != NULL)
{
osal_thread_start(tid);
osal_log_d("Thread 'eth_input' created.\n");
}
else
{
osal_log_e("Failed to create thread 'eth_input'\n");
}
/* Create TCP Server Thread */ /* Create TCP Server Thread */
tid = osal_thread_create("tcp_server", tcp_server_entry, NULL, 2048, 15); tid = osal_thread_create("tcp_server", tcp_server_entry, NULL, 2048, 15);
if (tid != NULL) if (tid != NULL)
{ {
osal_thread_start(tid); osal_thread_start(tid);
rt_kprintf("Thread 'tcp_server' created.\n"); osal_log_d("Thread 'tcp_server' created.\n");
} }
else else
{ {
rt_kprintf("Failed to create thread 'tcp_server'\n"); osal_log_e("Failed to create thread 'tcp_server'\n");
} }
/* Create Blink/Status Thread */ /* Create Blink/Status Thread */
@ -477,18 +425,21 @@ int main(void)
if (tid != NULL) if (tid != NULL)
{ {
osal_thread_start(tid); osal_thread_start(tid);
rt_kprintf("Thread 'blink' created.\n"); osal_log_d("Thread 'blink' created.\n");
} }
else else
{ {
rt_kprintf("Failed to create thread 'blink'\n"); osal_log_e("Failed to create thread 'blink'\n");
} }
/* 6. 系统信息 */
/* 内存信息暂时使用rt-thread APIosal库可能没有提供对应的函数 */
rt_size_t total, used, max_used; rt_size_t total, used, max_used;
rt_memory_info(&total, &used, &max_used); rt_memory_info(&total, &used, &max_used);
rt_kprintf("Memory Info: Total=%d, Used=%d, MaxUsed=%d\n", total, used, max_used); osal_log_d("Memory Info: Total=%d, Used=%d, MaxUsed=%d\n", total, used, max_used);
/* OSAL Start */ /* 7. 启动系统 */
osal_log_d("System initialization completed. Starting OSAL...\n");
osal_start(); osal_start();
return 0; return 0;

View File

@ -8,9 +8,10 @@
#include "sht40.h" #include "sht40.h"
#include "board.h" #include "board.h"
#include "osal.h" #include "osal.h"
#include "hal.h"
/* 外部I2C句柄 */ /* 硬件抽象层操作结构体 */
extern I2C_HandleTypeDef hi2c1; const hal_ops_t *hal_ops = NULL;
/* CRC校验函数 */ /* CRC校验函数 */
static uint8_t sht40_crc8(const uint8_t *data, uint8_t len) static uint8_t sht40_crc8(const uint8_t *data, uint8_t len)
@ -42,6 +43,14 @@ static uint8_t sht40_crc8(const uint8_t *data, uint8_t len)
*/ */
int sht40_init(void) int sht40_init(void)
{ {
/* 初始化硬件抽象层操作结构体 */
hal_ops = hal_get_ops();
if (hal_ops == NULL)
{
osal_log_e("SHT40: Failed to get HAL ops");
return -1;
}
return sht40_reset(); return sht40_reset();
} }
@ -53,7 +62,7 @@ int sht40_reset(void)
{ {
uint8_t cmd = SHT40_CMD_RESET; uint8_t cmd = SHT40_CMD_RESET;
osal_log_i("SHT40: Sending reset command 0x%02X", cmd); osal_log_i("SHT40: Sending reset command 0x%02X", cmd);
if (HAL_I2C_Master_Transmit(&hi2c1, SHT40_I2C_ADDR << 1, &cmd, 1, 1000) != HAL_OK) if (hal_ops->i2c->master_transmit(SHT40_I2C_ADDR << 1, &cmd, 1, 1000) != HAL_STATUS_OK)
{ {
osal_log_e("SHT40 reset failed"); osal_log_e("SHT40 reset failed");
return -1; return -1;
@ -74,7 +83,7 @@ int sht40_read_serial(uint32_t *serial)
uint8_t data[6]; uint8_t data[6];
//osal_log_i("SHT40: Sending read serial command 0x%02X", cmd); //osal_log_i("SHT40: Sending read serial command 0x%02X", cmd);
if (HAL_I2C_Master_Transmit(&hi2c1, SHT40_I2C_ADDR << 1, &cmd, 1, 1000) != HAL_OK) if (hal_ops->i2c->master_transmit(SHT40_I2C_ADDR << 1, &cmd, 1, 1000) != HAL_STATUS_OK)
{ {
osal_log_e("SHT40 send read serial command failed"); osal_log_e("SHT40 send read serial command failed");
return -1; return -1;
@ -82,7 +91,7 @@ int sht40_read_serial(uint32_t *serial)
osal_thread_mdelay(1); osal_thread_mdelay(1);
if (HAL_I2C_Master_Receive(&hi2c1, SHT40_I2C_ADDR << 1, data, 6, 1000) != HAL_OK) if (hal_ops->i2c->master_receive(SHT40_I2C_ADDR << 1, data, 6, 1000) != HAL_STATUS_OK)
{ {
osal_log_e("SHT40 read serial data failed"); osal_log_e("SHT40 read serial data failed");
return -1; return -1;
@ -133,7 +142,7 @@ int sht40_heater_enable(uint8_t power_level)
return -1; return -1;
} }
if (HAL_I2C_Master_Transmit(&hi2c1, SHT40_I2C_ADDR << 1, &cmd, 1, 1000) != HAL_OK) if (hal_ops->i2c->master_transmit(SHT40_I2C_ADDR << 1, &cmd, 1, 1000) != HAL_STATUS_OK)
{ {
osal_log_e("SHT40 heater enable failed"); osal_log_e("SHT40 heater enable failed");
return -1; return -1;
@ -180,10 +189,9 @@ int sht40_read_temperature_humidity_with_precision(float *temperature, float *hu
//osal_log_i("SHT40: Sending measure command 0x%02X to address 0x%02X", cmd, SHT40_I2C_ADDR); //osal_log_i("SHT40: Sending measure command 0x%02X to address 0x%02X", cmd, SHT40_I2C_ADDR);
/* 发送测量命令 */ /* 发送测量命令 */
HAL_StatusTypeDef status = HAL_I2C_Master_Transmit(&hi2c1, SHT40_I2C_ADDR << 1, &cmd, 1, 1000); if (hal_ops->i2c->master_transmit(SHT40_I2C_ADDR << 1, &cmd, 1, 1000) != HAL_STATUS_OK)
if (status != HAL_OK)
{ {
osal_log_e("SHT40 send measure command failed, status: %d", status); osal_log_e("SHT40 send measure command failed");
return -1; return -1;
} }
//osal_log_i("SHT40: Measure command sent successfully"); //osal_log_i("SHT40: Measure command sent successfully");
@ -193,10 +201,9 @@ int sht40_read_temperature_humidity_with_precision(float *temperature, float *hu
/* 读取测量结果 */ /* 读取测量结果 */
//osal_log_i("SHT40: Reading 6 bytes of data"); //osal_log_i("SHT40: Reading 6 bytes of data");
status = HAL_I2C_Master_Receive(&hi2c1, SHT40_I2C_ADDR << 1, data, 6, 1000); if (hal_ops->i2c->master_receive(SHT40_I2C_ADDR << 1, data, 6, 1000) != HAL_STATUS_OK)
if (status != HAL_OK)
{ {
osal_log_e("SHT40 read data failed, status: %d", status); osal_log_e("SHT40 read data failed");
return -1; return -1;
} }
//osal_log_i("SHT40: Data read successfully: 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X", //osal_log_i("SHT40: Data read successfully: 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X",

View File

@ -60,145 +60,11 @@ void SystemClock_Config(void)
UART_HandleTypeDef huart1; UART_HandleTypeDef huart1;
I2C_HandleTypeDef hi2c1; I2C_HandleTypeDef hi2c1;
void MX_USART1_UART_Init(void) /* UART MSP初始化和反初始化已移至硬件抽象层实现 */
{
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
while (1);
}
}
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) /* I2C MSP初始化和反初始化已移至硬件抽象层实现 */
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(uartHandle->Instance==USART1)
{
/* USART1 clock enable */
__HAL_RCC_USART1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/**USART1 GPIO Configuration /* Ethernet MSP初始化已移至硬件抽象层实现 */
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
}
void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
{
if(uartHandle->Instance==USART1)
{
/* Peripheral clock disable */
__HAL_RCC_USART1_CLK_DISABLE();
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
}
}
void MX_I2C1_Init(void)
{
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 100000;
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
hi2c1.Init.OwnAddress1 = 0;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hi2c1.Init.OwnAddress2 = 0;
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
if (HAL_I2C_Init(&hi2c1) != HAL_OK)
{
while (1);
}
}
void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(i2cHandle->Instance==I2C1)
{
/* I2C1 clock enable */
__HAL_RCC_I2C1_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/**I2C1 GPIO Configuration
PB6 ------> I2C1_SCL
PB7 ------> I2C1_SDA
*/
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
}
void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)
{
if(i2cHandle->Instance==I2C1)
{
/* Peripheral clock disable */
__HAL_RCC_I2C1_CLK_DISABLE();
/**I2C1 GPIO Configuration
PB6 ------> I2C1_SCL
PB7 ------> I2C1_SDA
*/
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
}
}
/* Ethernet MSP Init */
void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)
{
(void)heth;
GPIO_InitTypeDef GPIO_InitStructure;
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_SYSCFG_CLK_ENABLE();
__HAL_RCC_ETH_CLK_ENABLE();
/* PA1, PA2, PA7 */
GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7;
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStructure.Alternate = GPIO_AF11_ETH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
/* PC1, PC4, PC5 */
GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
/* PB11, PB12, PB13 */
GPIO_InitStructure.Pin = GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13;
HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
HAL_NVIC_SetPriority(ETH_IRQn, 0x07, 0);
HAL_NVIC_EnableIRQ(ETH_IRQn);
}
/** /**
* This is the timer interrupt service routine. * This is the timer interrupt service routine.
@ -227,12 +93,6 @@ void rt_hw_board_init(void)
/* Configure the system clock */ /* Configure the system clock */
SystemClock_Config(); SystemClock_Config();
/* Initialize USART1 */
MX_USART1_UART_Init();
/* Initialize I2C1 for SHT40 sensor */
MX_I2C1_Init();
/* Heap initialization */ /* Heap initialization */
#if defined(RT_USING_HEAP) #if defined(RT_USING_HEAP)
rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END); rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
@ -247,20 +107,26 @@ void rt_hw_board_init(void)
/** /**
* Console Output * Console Output
*/ */
#include "hal.h"
void rt_hw_console_output(const char *str) void rt_hw_console_output(const char *str)
{ {
/* Empty implementation to avoid link error */ /* 使用硬件抽象层的串口操作 */
/* TODO: Implement UART transmission here */
rt_size_t i = 0, size = 0; rt_size_t i = 0, size = 0;
char a = '\r'; char a = '\r';
const hal_ops_t *ops = hal_get_ops();
size = rt_strlen(str); size = rt_strlen(str);
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
{ {
if (*(str + i) == '\n') if (*(str + i) == '\n')
{ {
HAL_UART_Transmit(&huart1, (uint8_t *)&a, 1, 1000); if (ops && ops->uart) {
ops->uart->send((uint8_t *)&a, 1);
}
}
if (ops && ops->uart) {
ops->uart->send((uint8_t *)(str + i), 1);
} }
HAL_UART_Transmit(&huart1, (uint8_t *)(str + i), 1, 1000);
} }
} }

View File

@ -1,143 +1,185 @@
/* Entry Point */ /*
* STM32F407VE 芯片的 RT-Thread Nano 链接脚本
* 功能:定义内存布局和代码段分配,优化内存使用
* 适配硬件STM32F407VE (128KB RAM, 512KB FLASH, 64KB CCMRAM)
* 优化说明:
* 1. 增加了详细的内存布局注释
* 2. 添加了常用链接符号定义
* 3. 优化了段对齐和内存使用
* 4. 统一了注释风格
*/
/* =========================================== */
/* 链接脚本配置 */
/* =========================================== */
/* 程序入口点 */
ENTRY(Reset_Handler) ENTRY(Reset_Handler)
/* Highest address of the user mode stack */ /* 用户模式栈的最高地址 */
_estack = 0x20020000; /* end of RAM */ _estack = 0x20020000; /* RAM 结束地址 (128KB RAM) */
/* Generate a link error if heap and stack don't fit into RAM */ /* 堆和栈配置 */
_Min_Heap_Size = 0x200; /* required amount of heap */ _Min_Heap_Size = 0x200; /* 堆的最小大小 (512字节) */
_Min_Stack_Size = 0x400; /* required amount of stack */ _Min_Stack_Size = 0x400; /* 栈的最小大小 (1024字节) */
/* Specify the memory areas */ /* =========================================== */
/* 内存区域定义 */
/* =========================================== */
MEMORY MEMORY
{ {
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K /* 主 RAM 区域,可读可写可执行 */
CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K /* 核心耦合 RAM可读可写低延迟 */
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K /* FLASH 区域,可读可执行 */
} }
/* Define output sections */ /* =========================================== */
/* 输出段定义 */
/* =========================================== */
SECTIONS SECTIONS
{ {
/* The startup code goes first into FLASH */ /* ------------------------------------------- */
/* FLASH 区域段定义 */
/* ------------------------------------------- */
/* 中断向量表 - 启动代码首先放入 FLASH */
.isr_vector : .isr_vector :
{ {
. = ALIGN(4); . = ALIGN(4); /* 4字节对齐 */
KEEP(*(.isr_vector)) /* Startup code */ KEEP(*(.isr_vector)) /* 保留中断向量表(启动代码) */
. = ALIGN(4); . = ALIGN(4); /* 4字节对齐 */
} >FLASH } >FLASH /* 放入 FLASH 区域 */
/* The program code and other data goes into FLASH */ /* 程序代码段 */
.text : .text :
{ {
. = ALIGN(4); . = ALIGN(4); /* 4字节对齐 */
*(.text) /* .text sections (code) */ *(.text) /* .text 段(代码) */
*(.text*) /* .text* sections (code) */ *(.text*) /* .text* 段(代码) */
*(.glue_7) /* glue arm to thumb code */ *(.glue_7) /* ARM 到 Thumb 代码的胶水代码 */
*(.glue_7t) /* glue thumb to arm code */ *(.glue_7t) /* Thumb 到 ARM 代码的胶水代码 */
*(.eh_frame) *(.eh_frame) /* 异常处理帧信息 */
KEEP (*(.init)) KEEP (*(.init)) /* 保留初始化相关代码 */
KEEP (*(.fini)) KEEP (*(.fini)) /* 保留结束相关代码 */
. = ALIGN(4); . = ALIGN(4); /* 4字节对齐 */
_etext = .; /* define a global symbols at end of code */ _etext = .; /* 代码结束地址 */
} >FLASH } >FLASH /* 放入 FLASH 区域 */
/* Constant data goes into FLASH */ /* 常量数据段 */
.rodata : .rodata :
{ {
. = ALIGN(4); . = ALIGN(4); /* 4字节对齐 */
*(.rodata) /* .rodata sections (constants, strings, etc.) */ *(.rodata) /* .rodata 段(常量、字符串等) */
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */ *(.rodata*) /* .rodata* 段(常量、字符串等) */
. = ALIGN(4); . = ALIGN(4); /* 4字节对齐 */
} >FLASH } >FLASH /* 放入 FLASH 区域 */
/* ARM 异常表相关段 */
.ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
.ARM : { .ARM : {
__exidx_start = .; __exidx_start = .; /* 异常索引表开始 */
*(.ARM.exidx*) *(.ARM.exidx*) /* ARM 异常索引表 */
__exidx_end = .; __exidx_end = .; /* 异常索引表结束 */
} >FLASH } >FLASH
/* 初始化数组相关段 */
.preinit_array : .preinit_array :
{ {
PROVIDE_HIDDEN (__preinit_array_start = .); PROVIDE_HIDDEN (__preinit_array_start = .); /* 预初始化数组开始 */
KEEP (*(.preinit_array*)) KEEP (*(.preinit_array*)) /* 保留预初始化数组 */
PROVIDE_HIDDEN (__preinit_array_end = .); PROVIDE_HIDDEN (__preinit_array_end = .); /* 预初始化数组结束 */
} >FLASH } >FLASH
.init_array : .init_array :
{ {
PROVIDE_HIDDEN (__init_array_start = .); PROVIDE_HIDDEN (__init_array_start = .); /* 初始化数组开始 */
KEEP (*(SORT(.init_array.*))) KEEP (*(SORT(.init_array.*))) /* 保留排序后的初始化数组 */
KEEP (*(.init_array*)) KEEP (*(.init_array*)) /* 保留初始化数组 */
PROVIDE_HIDDEN (__init_array_end = .); PROVIDE_HIDDEN (__init_array_end = .); /* 初始化数组结束 */
} >FLASH } >FLASH
.fini_array : .fini_array :
{ {
PROVIDE_HIDDEN (__fini_array_start = .); PROVIDE_HIDDEN (__fini_array_start = .); /* 结束数组开始 */
KEEP (*(SORT(.fini_array.*))) KEEP (*(SORT(.fini_array.*))) /* 保留排序后的结束数组 */
KEEP (*(.fini_array*)) KEEP (*(.fini_array*)) /* 保留结束数组 */
PROVIDE_HIDDEN (__fini_array_end = .); PROVIDE_HIDDEN (__fini_array_end = .); /* 结束数组结束 */
} >FLASH } >FLASH
/* used by the startup to initialize data */ /* ------------------------------------------- */
_sidata = LOADADDR(.data); /* RAM 区域段定义 */
/* ------------------------------------------- */
/* 用于启动代码初始化数据 */
_sidata = LOADADDR(.data); /* .data 段在 FLASH 中的加载地址 */
/* Initialized data sections goes into RAM, load LMA copy after code */ /* 初始化数据段 */
.data : .data :
{ {
. = ALIGN(4); . = ALIGN(4); /* 4字节对齐 */
_sdata = .; /* create a global symbol at data start */ _sdata = .; /* 数据段开始地址 */
*(.data) /* .data sections */ *(.data) /* .data */
*(.data*) /* .data* sections */ *(.data*) /* .data* */
. = ALIGN(4); . = ALIGN(4); /* 4字节对齐 */
_edata = .; /* define a global symbol at data end */ _edata = .; /* 数据段结束地址 */
} >RAM AT> FLASH } >RAM AT> FLASH /* 放入 RAM加载地址在 FLASH */
/* Uninitialized data section */ /* 未初始化数据段 */
. = ALIGN(4); . = ALIGN(4); /* 4字节对齐 */
.bss : .bss :
{ {
/* This is used by the startup in order to initialize the .bss secion */ /* 启动代码使用此符号初始化 .bss 段 */
_sbss = .; /* define a global symbol at bss start */ _sbss = .; /* BSS 段开始地址 */
__bss_start__ = _sbss; __bss_start__ = _sbss; /* 兼容符号 */
*(.bss) *(.bss) /* .bss 段 */
*(.bss*) *(.bss*) /* .bss* 段 */
*(COMMON) *(COMMON) /* COMMON 段 */
. = ALIGN(4); . = ALIGN(4); /* 4字节对齐 */
_ebss = .; /* define a global symbol at bss end */ _ebss = .; /* BSS 段结束地址 */
__bss_end__ = _ebss; __bss_end__ = _ebss; /* 兼容符号 */
} >RAM } >RAM /* 放入 RAM 区域 */
/* User_heap_stack section, used to check that there is enough RAM left */ /* 用户堆和栈段 */
._user_heap_stack : ._user_heap_stack :
{ {
. = ALIGN(8); . = ALIGN(8); /* 8字节对齐 */
PROVIDE ( end = . ); PROVIDE ( end = . ); /* 程序结束地址 */
PROVIDE ( _end = . ); PROVIDE ( _end = . ); /* 程序结束地址(兼容符号) */
. = . + _Min_Heap_Size; . = . + _Min_Heap_Size; /* 堆空间 */
. = . + _Min_Stack_Size; . = . + _Min_Stack_Size; /* 栈空间 */
. = ALIGN(8); . = ALIGN(8); /* 8字节对齐 */
} >RAM } >RAM /* 放入 RAM 区域 */
/* RxDecripSection and TxDecripSection for Ethernet DMA */ /* 以太网 DMA 相关段 */
.RxDecripSection (NOLOAD) : { *(.RxDecripSection) } >RAM .RxDecripSection (NOLOAD) : { *(.RxDecripSection) } >RAM /* 接收描述符段 */
.TxDecripSection (NOLOAD) : { *(.TxDecripSection) } >RAM .TxDecripSection (NOLOAD) : { *(.TxDecripSection) } >RAM /* 发送描述符段 */
.RxArraySection (NOLOAD) : { *(.RxArraySection) } >RAM .RxArraySection (NOLOAD) : { *(.RxArraySection) } >RAM /* 接收数组段 */
.TxArraySection (NOLOAD) : { *(.TxArraySection) } >RAM .TxArraySection (NOLOAD) : { *(.TxArraySection) } >RAM /* 发送数组段 */
. = ALIGN(4); /* 堆起始地址 */
__heap_start__ = .; . = ALIGN(4); /* 4字节对齐 */
__heap_start__ = .; /* 堆开始地址 */
__heap_end__ = _estack; /* 堆结束地址(栈顶) */
/* Remove information from the standard libraries */ /* ------------------------------------------- */
/* 特殊段处理 */
/* ------------------------------------------- */
/* 从标准库中移除信息 */
/DISCARD/ : /DISCARD/ :
{ {
libc.a ( * ) libc.a ( * ) /* 移除 libc 库信息 */
libm.a ( * ) libm.a ( * ) /* 移除 libm 库信息 */
libgcc.a ( * ) libgcc.a ( * ) /* 移除 libgcc 库信息 */
} }
/* ARM 属性段 */
.ARM.attributes 0 : { *(.ARM.attributes) } .ARM.attributes 0 : { *(.ARM.attributes) }
} }
/* =========================================== */
/* 链接脚本结束 */
/* =========================================== */

View File

@ -39,7 +39,7 @@
{ {
"directoryIndex" : 0, "directoryIndex" : 0,
"id" : "rtthread-nano-stm32f407ve::@6890427a1f51a3e7e1df", "id" : "rtthread-nano-stm32f407ve::@6890427a1f51a3e7e1df",
"jsonFile" : "target-rtthread-nano-stm32f407ve-328f41688cea50c58d51.json", "jsonFile" : "target-rtthread-nano-stm32f407ve-b3ff5369662d463ad855.json",
"name" : "rtthread-nano-stm32f407ve", "name" : "rtthread-nano-stm32f407ve",
"projectIndex" : 0 "projectIndex" : 0
} }

View File

@ -26,7 +26,7 @@
"objects" : "objects" :
[ [
{ {
"jsonFile" : "codemodel-v2-ed321a30887ff9aeef14.json", "jsonFile" : "codemodel-v2-76e9189c22d8a3d0fe63.json",
"kind" : "codemodel", "kind" : "codemodel",
"version" : "version" :
{ {
@ -99,7 +99,7 @@
} }
}, },
{ {
"jsonFile" : "codemodel-v2-ed321a30887ff9aeef14.json", "jsonFile" : "codemodel-v2-76e9189c22d8a3d0fe63.json",
"kind" : "codemodel", "kind" : "codemodel",
"version" : "version" :
{ {

View File

@ -27,13 +27,13 @@
{ {
"command" : 0, "command" : 0,
"file" : 0, "file" : 0,
"line" : 74, "line" : 76,
"parent" : 0 "parent" : 0
}, },
{ {
"command" : 1, "command" : 1,
"file" : 0, "file" : 0,
"line" : 87, "line" : 90,
"parent" : 0 "parent" : 0
}, },
{ {
@ -108,6 +108,10 @@
"backtrace" : 4, "backtrace" : 4,
"path" : "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/drivers/STM32F4xx_HAL_Driver/Inc/Legacy" "path" : "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/drivers/STM32F4xx_HAL_Driver/Inc/Legacy"
}, },
{
"backtrace" : 4,
"path" : "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/drivers/hal"
},
{ {
"backtrace" : 4, "backtrace" : 4,
"path" : "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/osal/include" "path" : "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/osal/include"
@ -343,7 +347,11 @@
212, 212,
213, 213,
214, 214,
216 215,
216,
217,
218,
220
] ]
}, },
{ {
@ -402,6 +410,10 @@
"backtrace" : 4, "backtrace" : 4,
"path" : "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/drivers/STM32F4xx_HAL_Driver/Inc/Legacy" "path" : "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/drivers/STM32F4xx_HAL_Driver/Inc/Legacy"
}, },
{
"backtrace" : 4,
"path" : "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/drivers/hal"
},
{ {
"backtrace" : 4, "backtrace" : 4,
"path" : "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/osal/include" "path" : "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/osal/include"
@ -422,8 +434,8 @@
"language" : "ASM", "language" : "ASM",
"sourceIndexes" : "sourceIndexes" :
[ [
215, 219,
217 221
] ]
} }
], ],
@ -681,15 +693,19 @@
212, 212,
213, 213,
214, 214,
216 215,
216,
217,
218,
220
] ]
}, },
{ {
"name" : "", "name" : "",
"sourceIndexes" : "sourceIndexes" :
[ [
215, 219,
217 221
] ]
} }
], ],
@ -1295,6 +1311,30 @@
"path" : "drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_utils.c", "path" : "drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_utils.c",
"sourceGroupIndex" : 0 "sourceGroupIndex" : 0
}, },
{
"backtrace" : 1,
"compileGroupIndex" : 0,
"path" : "drivers/hal/hal.c",
"sourceGroupIndex" : 0
},
{
"backtrace" : 1,
"compileGroupIndex" : 0,
"path" : "drivers/hal/stm32f4_hal_eth.c",
"sourceGroupIndex" : 0
},
{
"backtrace" : 1,
"compileGroupIndex" : 0,
"path" : "drivers/hal/stm32f4_hal_i2c.c",
"sourceGroupIndex" : 0
},
{
"backtrace" : 1,
"compileGroupIndex" : 0,
"path" : "drivers/hal/stm32f4_hal_uart.c",
"sourceGroupIndex" : 0
},
{ {
"backtrace" : 1, "backtrace" : 1,
"compileGroupIndex" : 0, "compileGroupIndex" : 0,

Binary file not shown.

View File

@ -1,222 +1,478 @@
# ninja log v7 # ninja log v7
142 1077 7943180137189705 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cryp.c.obj ec32bd437e5ff2d3 89 886 7945751160763040 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cryp.c.obj ec32bd437e5ff2d3
138 1111 7943180137158929 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c.obj 7b67b62763d73b0b 85 724 7945751160720503 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c.obj 7b67b62763d73b0b
70 932 7943180136477536 CMakeFiles/rtthread-nano-stm32f407ve.dir/board/stm32f407ve/board.c.obj 74cec99e8c18b81a 7 290 7945757253711922 CMakeFiles/rtthread-nano-stm32f407ve.dir/board/stm32f407ve/board.c.obj 74cec99e8c18b81a
128 1373 7943180137073882 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cec.c.obj 998e3b769e20291a 77 719 7945751160641489 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cec.c.obj 998e3b769e20291a
631 1365 7943180142094790 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac.c.obj a7d9f780effb07df 249 1080 7945751162355444 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac.c.obj a7d9f780effb07df
51 1085 7943180136292035 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/main.c.obj a739475447ae0703 39 918 7945751160247367 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/main.c.obj a739475447ae0703
76 826 7943180136539019 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c.obj d942fdfe26c0d22f 61 830 7945751160481995 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c.obj d942fdfe26c0d22f
1069 2185 7943180146469660 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c.obj 9b6e4b8841be52d6 724 1474 7945751167105304 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c.obj 9b6e4b8841be52d6
133 870 7943180137104167 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c.obj 3b3fc39cb4c31c4d 81 983 7945751160680134 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c.obj 3b3fc39cb4c31c4d
117 1117 7943180136950311 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c.obj 5a35ce9c62bb54e7 65 837 7945751160514397 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c.obj 5a35ce9c62bb54e7
120 1104 7943180136980940 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c.obj de7cbcf09b649b3a 69 899 7945751160546902 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c.obj de7cbcf09b649b3a
788 1792 7943180143659530 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac_ex.c.obj 5ee8fb7465f9c646 291 1313 7945751162781075 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac_ex.c.obj 5ee8fb7465f9c646
826 2537 7943180144045541 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dcmi.c.obj d7f242ef67e4ba09 401 1234 7945751163876337 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dcmi.c.obj d7f242ef67e4ba09
870 2141 7943180144483988 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dfsdm.c.obj b5647a7d35e62b49 487 1350 7945751164741037 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dfsdm.c.obj b5647a7d35e62b49
932 2832 7943180145103388 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c.obj 3e9bfbe40b51c2a6 719 1486 7945751167062001 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c.obj 3e9bfbe40b51c2a6
124 830 7943180137015135 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c.obj 67d1b5447555fae5 73 908 7945751160593066 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c.obj 67d1b5447555fae5
616 1267 7943180141945160 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cryp_ex.c.obj 9b8790b0c4eb4b07 244 1362 7945751162300466 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cryp_ex.c.obj 9b8790b0c4eb4b07
830 2361 7943180144080834 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dcmi_ex.c.obj 8ddcdd0f3f02bb40 406 1197 7945751163929480 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dcmi_ex.c.obj 8ddcdd0f3f02bb40
1117 2431 7943180146959623 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c.obj 22f6f9375d39f151 899 1859 7945751168857680 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c.obj 22f6f9375d39f151
1373 2725 7943180149514937 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpsmbus_ex.c.obj 757d6c374d1b319d 1080 1991 7945751170669483 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpsmbus_ex.c.obj 757d6c374d1b319d
1093 2730 7943180146698774 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.c.obj a6dce94af40a267 837 1647 7945751168239949 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.c.obj a6dce94af40a267
1085 2175 7943180146638284 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dsi.c.obj 81ba010cfd89e4b1 830 1658 7945751168169360 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dsi.c.obj 81ba010cfd89e4b1
1792 2697 7943180153692632 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hash.c.obj 4db31717a34b706 1235 2088 7945751172215403 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hash.c.obj 4db31717a34b706
1111 2106 7943180146899301 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c.obj fb2b7a54d14ec5f9 886 1721 7945751168732219 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c.obj fb2b7a54d14ec5f9
1436 2547 7943180150147324 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c.obj 1f1eac1996d52611 1197 2001 7945751171841391 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c.obj 1f1eac1996d52611
1099 2170 7943180146773287 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c.obj bac3a78877e87962 849 1546 7945751168351519 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c.obj bac3a78877e87962
1104 2273 7943180146822529 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c.obj 22e34c6a32015555 881 1572 7945751168669769 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c.obj 22e34c6a32015555
1267 2158 7943180148454166 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpi2c_ex.c.obj 9d7e51ba68c30cd4 918 1759 7945751169046363 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpi2c_ex.c.obj 9d7e51ba68c30cd4
1122 2527 7943180147000476 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpi2c.c.obj bf384bc8a53e2f45 908 1710 7945751168948785 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpi2c.c.obj bf384bc8a53e2f45
1365 2827 7943180149434992 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpsmbus.c.obj 23a425d7528b6900 983 1996 7945751169695959 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpsmbus.c.obj 23a425d7528b6900
1077 2195 7943180146557545 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c.obj efc21410ae6079c4 803 1663 7945751167902833 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c.obj efc21410ae6079c4
2107 2823 7943180156849473 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hash_ex.c.obj 7edf1ba198e39bf1 1314 2068 7945751173001187 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hash_ex.c.obj 7edf1ba198e39bf1
2141 2980 7943180157196764 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c.obj 3dd3ef8f43a8eead 1350 2202 7945751173369362 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c.obj 3dd3ef8f43a8eead
2170 4160 7943180157479844 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c.obj f6feb20988a7ae46 1474 2217 7945751174613523 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c.obj f6feb20988a7ae46
2175 3444 7943180157541074 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c.obj 6903465607745954 1486 2586 7945751174733083 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c.obj 6903465607745954
2158 4574 7943180157366189 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c.obj a3eec757a8e46d2 1362 2458 7945751173495319 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c.obj a3eec757a8e46d2
2431 3428 7943180160091685 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.c.obj a8b40b715887a0c4 1664 2463 7945751176502617 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.c.obj a8b40b715887a0c4
2273 3016 7943180158521249 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_iwdg.c.obj 54463e9389efea0 1647 2697 7945751176336691 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_iwdg.c.obj 54463e9389efea0
2527 4414 7943180161056456 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc_ex.c.obj c8d3a1d08a3040d4 1710 2237 7945751176970882 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc_ex.c.obj c8d3a1d08a3040d4
2361 4045 7943180159390437 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_lptim.c.obj fd572b5c7192800 1659 2252 7945751176456594 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_lptim.c.obj fd572b5c7192800
2195 3367 7943180157726240 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_irda.c.obj 4794199779ac428e 1572 2370 7945751175594092 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_irda.c.obj 4794199779ac428e
2186 3172 7943180157633711 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c.obj 15760851b50e55bb 1546 2549 7945751175327376 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c.obj 15760851b50e55bb
2730 3484 7943180163088777 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c.obj d88dd78ee860eaab 1996 2951 7945751179831311 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c.obj d88dd78ee860eaab
2697 3962 7943180162764360 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_nor.c.obj 8b2c422d8327b9eb 1859 2749 7945751178464323 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_nor.c.obj 8b2c422d8327b9eb
2725 4069 7943180163040626 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pccard.c.obj c9a323517e2a5890 1991 3008 7945751179782288 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pccard.c.obj c9a323517e2a5890
2547 3753 7943180161256526 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_nand.c.obj af9b2dfbcef2122a 1759 2724 7945751177459801 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_nand.c.obj af9b2dfbcef2122a
2537 3395 7943180161161816 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_mmc.c.obj f0544ba21b6b59a6 1721 2757 7945751177077625 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_mmc.c.obj f0544ba21b6b59a6
2828 3956 7943180164062635 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c.obj 6442bf37ea9c7275 2068 2804 7945751180551186 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c.obj 6442bf37ea9c7275
2980 3842 7943180165586461 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_qspi.c.obj 4e7d53824d53971a 2202 3048 7945751181887385 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_qspi.c.obj 4e7d53824d53971a
2823 4140 7943180164009339 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c.obj 3c64e0a1d0297ed8 2002 2841 7945751179882903 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c.obj 3c64e0a1d0297ed8
2832 3740 7943180164108028 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c.obj 892fab1d70844ff5 2088 2945 7945751180753859 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c.obj 892fab1d70844ff5
3017 4492 7943180165952739 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c.obj da85fd8d4a93b687 2217 3096 7945751182032431 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c.obj da85fd8d4a93b687
3173 4110 7943180167510918 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c.obj c49a5bb55e2babff 2237 3125 7945751182236081 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c.obj c49a5bb55e2babff
3444 4751 7943180170221971 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sai.c.obj 4fed24b2595817ed 2464 3227 7945751184505770 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sai.c.obj 4fed24b2595817ed
3428 4684 7943180170070030 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c.obj 9dc0faa43c327fa4 2459 3198 7945751184455778 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c.obj 9dc0faa43c327fa4
3484 4720 7943180170625080 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sai_ex.c.obj 590e23077f3b9348 2549 3202 7945751185352604 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sai_ex.c.obj 590e23077f3b9348
3368 4455 7943180169461762 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c.obj aed1b3adc593b6d6 2252 3166 7945751182383990 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c.obj aed1b3adc593b6d6
3962 4892 7943180175408452 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spdifrx.c.obj c6cbc6f0dba48072 2757 3453 7945751187441495 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spdifrx.c.obj c6cbc6f0dba48072
3395 4064 7943180169736951 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c.obj 421167a91f0d8c4a 2370 3150 7945751183572707 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c.obj 421167a91f0d8c4a
3753 4329 7943180173320380 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.c.obj 31a6ffa192936b1c 2697 3396 7945751186842145 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.c.obj 31a6ffa192936b1c
3740 4726 7943180173191834 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.c.obj 48d13ff55094e14b 2586 3593 7945751185722364 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.c.obj 48d13ff55094e14b
3842 5425 7943180174212075 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_smartcard.c.obj 5833fd2b23c08fbb 2725 3462 7945751187120263 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_smartcard.c.obj 5833fd2b23c08fbb
4064 5132 7943180176426807 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.c.obj ca7da2a388807265 2842 3510 7945751188281931 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.c.obj ca7da2a388807265
3956 4828 7943180175346354 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_smbus.c.obj 5a7c8c8c851a69ef 2749 3556 7945751187369245 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_smbus.c.obj 5a7c8c8c851a69ef
4492 4844 7943180180706719 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dac.c.obj a54778e5108e8ae4 3166 3615 7945751191535733 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dac.c.obj a54778e5108e8ae4
4414 4859 7943180179929131 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c.obj 50998ca7fabb9903 3126 3521 7945751191129735 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c.obj 50998ca7fabb9903
4720 5093 7943180182986260 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_exti.c.obj 6447a34876204847 3227 3603 7945751192143931 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_exti.c.obj 6447a34876204847
4574 4864 7943180181524757 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dma.c.obj 37cbfa07fbb26c18 3198 3516 7945751191850761 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dma.c.obj 37cbfa07fbb26c18
4455 4856 7943180180337359 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_crc.c.obj 4f8370cf146452ad 3150 3539 7945751191358377 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_crc.c.obj 4f8370cf146452ad
4844 5549 7943180184224414 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_i2c.c.obj fca8f577cc984d77 3516 3885 7945751195028039 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_i2c.c.obj fca8f577cc984d77
4045 4802 7943180176231550 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c.obj 1e10b83029952754 2804 3729 7945751187903101 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c.obj 1e10b83029952754
4860 5175 7943180184378596 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_pwr.c.obj d7f8f8b7d246ba34 3539 3898 7945751195265329 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_pwr.c.obj d7f8f8b7d246ba34
4864 5187 7943180184425710 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_rcc.c.obj aecc8901bb8350dd 3557 3772 7945751195440718 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_rcc.c.obj aecc8901bb8350dd
4868 5430 7943180184456708 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_rng.c.obj b9e9b184243348ba 3593 3850 7945751195801264 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_rng.c.obj b9e9b184243348ba
4878 5184 7943180184564401 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_rtc.c.obj a1336754039ab4b4 3603 3916 7945751195895905 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_rtc.c.obj a1336754039ab4b4
4751 5068 7943180183298745 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmpi2c.c.obj 63ed7c03102d0ea1 3453 3718 7945751194396158 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmpi2c.c.obj 63ed7c03102d0ea1
5068 5260 7943180186470337 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_tim.c.obj d85f4f868a0a06ad 3713 4005 7945751197002097 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_tim.c.obj d85f4f868a0a06ad
5093 5256 7943180186717474 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usart.c.obj f8dd6b1d2ce943bf 3718 3934 7945751197047502 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usart.c.obj f8dd6b1d2ce943bf
4973 5251 7943180185515693 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_spi.c.obj e98c4b2b2c7d603e 3625 3869 7945751196116825 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_spi.c.obj e98c4b2b2c7d603e
4140 5242 7943180177191945 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c.obj 6f157dcd5cf0df05 3008 3857 7945751189949109 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c.obj 6f157dcd5cf0df05
4856 5169 7943180184347702 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_lptim.c.obj 26c473b0d770a33c 3521 3880 7945751195080014 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_lptim.c.obj 26c473b0d770a33c
4726 6003 7943180183049118 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.c.obj 36a7c0acd8d2cd5a 3396 4080 7945751193832083 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.c.obj 36a7c0acd8d2cd5a
5175 5554 7943180187535153 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/clock.c.obj 75435b025e2868a9 3763 4139 7945751197504082 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/clock.c.obj 75435b025e2868a9
4110 4868 7943180176878214 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c.obj 6fd30e36ceb4c47f 2951 3740 7945751189379169 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c.obj 6fd30e36ceb4c47f
4684 4973 7943180182624912 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dma2d.c.obj 3ced83f24c6147d0 3203 3625 7945751191890780 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dma2d.c.obj 3ced83f24c6147d0
4829 5179 7943180184063422 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_gpio.c.obj 8dfa52928938b44d 3510 3763 7945751194969992 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_gpio.c.obj 8dfa52928938b44d
5184 5621 7943180187626108 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/cpu.c.obj 562cccc135990eb6 3850 4134 7945751198368970 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/cpu.c.obj 562cccc135990eb6
4330 5246 7943180179084590 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c.obj b3749c088dd6291f 3096 3713 7945751190827682 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c.obj b3749c088dd6291f
5179 5561 7943180187580745 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/components.c.obj 166b9d3638e62f2e 3772 4049 7945751197593460 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/components.c.obj 166b9d3638e62f2e
5220 5625 7943180187995089 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/idle.c.obj 1f9a1e802122aaf9 3870 4183 7945751198570455 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/idle.c.obj 1f9a1e802122aaf9
4160 5220 7943180177383214 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_usart.c.obj 4b1d09a424db4d29 3048 3929 7945751190351627 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_usart.c.obj 4b1d09a424db4d29
4803 5545 7943180183815805 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fsmc.c.obj 2ab8981c9d898a37 3462 4201 7945751194496192 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fsmc.c.obj 2ab8981c9d898a37
4069 4878 7943180176477319 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c.obj 2685d8e90bb9d5bf 2946 4014 7945751189327347 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c.obj 2685d8e90bb9d5bf
5246 5629 7943180188254758 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/irq.c.obj f74905ca255238d6 3885 4172 7945751198722215 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/irq.c.obj f74905ca255238d6
5256 5994 7943180188351314 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/mem.c.obj c702f077e74b418c 3916 4267 7945751199029369 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/mem.c.obj c702f077e74b418c
5260 5750 7943180188386874 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/memheap.c.obj 1a94e850b2781de1 3929 4196 7945751199154104 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/memheap.c.obj 1a94e850b2781de1
5550 6120 7943180191280161 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/signal.c.obj 1a2e8bc02b2d367d 4049 4364 7945751200356433 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/signal.c.obj 1a2e8bc02b2d367d
5545 5799 7943180191228154 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/scheduler.c.obj 46baecb8af8850aa 4014 4313 7945751200005343 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/scheduler.c.obj 46baecb8af8850aa
5187 5999 7943180187656721 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/device.c.obj fe52a72b60a793b7 3857 4353 7945751198440756 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/device.c.obj fe52a72b60a793b7
5555 5910 7943180191336117 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/slab.c.obj 15a78fa3e394ce7b 4080 4347 7945751200670615 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/slab.c.obj 15a78fa3e394ce7b
5425 6146 7943180190045073 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/mempool.c.obj 7515345bdbfc9116 3934 4250 7945751199212313 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/mempool.c.obj 7515345bdbfc9116
5750 5990 7943180193280444 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_log.c.obj 4ff6ea1d61c147fb 4201 4473 7945751201887925 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_log.c.obj 4ff6ea1d61c147fb
5621 6054 7943180191992457 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/timer.c.obj 606e3f3ade10401c 4139 4382 7945751201268658 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/timer.c.obj 606e3f3ade10401c
5799 6063 7943180193777323 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_mem.c.obj f256a478633bcd2d 4245 4483 7945751202320192 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_mem.c.obj f256a478633bcd2d
4892 6013 7943180184704020 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c.obj 2a9a1aefe09ed02e 3615 4245 7945751196026339 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c.obj 2a9a1aefe09ed02e
5877 6248 7943180194558350 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_sem.c.obj d1661090bb9ef5a 4313 4616 7945751202999286 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_sem.c.obj d1661090bb9ef5a
5700 5814 7943180192790667 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_irq.c.obj 509367ee7808c178 4196 4512 7945751201835382 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_irq.c.obj 509367ee7808c178
5561 6254 7943180191395845 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/thread.c.obj 71a3438a99625ef4 4134 4425 7945751201206540 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/thread.c.obj 71a3438a99625ef4
5814 6059 7943180193928635 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_mq.c.obj 3efee89e5ef87631 4250 4517 7945751202365606 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_mq.c.obj 3efee89e5ef87631
5918 6150 7943180194956542 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_timer.c.obj ff6c0f8dda2ff201 4337 4592 7945751203239782 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_timer.c.obj ff6c0f8dda2ff201
5170 6474 7943180187489680 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_utils.c.obj 95bcfcae853cb167 3740 4342 7945751197268326 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_utils.c.obj 95bcfcae853cb167
5871 6243 7943180194494994 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_mutex.c.obj 703ab8feef668a86 4267 4587 7945751202539539 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_mutex.c.obj 703ab8feef668a86
5629 5877 7943180192078307 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_event.c.obj 6cb97f9fb9453ecd 4183 4376 7945751201688495 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_event.c.obj 6cb97f9fb9453ecd
5251 6066 7943180188295471 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/kservice.c.obj 883074ad13656e9 3899 4359 7945751198853235 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/kservice.c.obj 883074ad13656e9
5242 5918 7943180188203043 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/ipc.c.obj abf7c47a8c0bc2f7 3880 4337 7945751198674976 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/ipc.c.obj abf7c47a8c0bc2f7
5910 6415 7943180194885524 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_thread.c.obj 1540becc86c77a32 4325 4597 7945751203116302 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_thread.c.obj 1540becc86c77a32
5625 5871 7943180192037917 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_core.c.obj 3cf33e14346500f1 4172 4417 7945751201587959 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_core.c.obj 3cf33e14346500f1
5430 5700 7943180190083830 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/object.c.obj 282b916c54a7e520 4005 4325 7945751199915507 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/object.c.obj 282b916c54a7e520
5132 5933 7943180187109105 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c.obj bda4bfa63da8e5d1 3729 4506 7945751197159868 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c.obj bda4bfa63da8e5d1
7910 8061 7943180214881768 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f407xx.s.obj def0faec2571c85 6102 6259 7945751220889696 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/libcpu/arm/cortex-m4/context_gcc.S.obj f182a1ab71ead9bf
7924 8217 7943180215031628 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/libcpu/arm/cortex-m4/context_gcc.S.obj f182a1ab71ead9bf 5982 6219 7945751219680458 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/port/sys_arch.c.obj c76bb91cdcdcc4a7
7902 8378 7943180214803330 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/port/sys_arch.c.obj c76bb91cdcdcc4a7 6022 6296 7945751220095674 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/libcpu/arm/cortex-m4/cpuport.c.obj 9344b12118f1440
7916 8213 7943180214938613 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/libcpu/arm/cortex-m4/cpuport.c.obj 9344b12118f1440 5988 6436 7945751219746043 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c.obj 635ab12c5509b5d
7906 8319 7943180214850661 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c.obj 635ab12c5509b5d 12 331 7945757253767282 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/port/drv_eth.c.obj f9d0508007c45d16
7893 8405 7943180214710197 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/port/drv_eth.c.obj f9d0508007c45d16 10 186 7945762950502805 build.ninja 1bf701faaf99a9f5
27 360 7943183704015794 build.ninja 1bf701faaf99a9f5 331 957 7945757256954871 rtthread-nano-stm32f407ve.elf a32c0a3996d89715
8406 9442 7943180219842902 rtthread-nano-stm32f407ve.elf a32c0a3996d89715 4353 4689 7945751203397057 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/err.c.obj afb75d425b50f9e9
5994 6529 7943180195724810 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/err.c.obj afb75d425b50f9e9 4364 4682 7945751203510323 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/netbuf.c.obj 70c14cf595e75cbe
6004 6303 7943180195826888 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/netbuf.c.obj 70c14cf595e75cbe 4506 4887 7945751204927649 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/altcp_tcp.c.obj 73a81af36ca2d0c3
6146 6397 7943180197247010 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/altcp_tcp.c.obj 73a81af36ca2d0c3 4473 4869 7945751204595367 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/altcp.c.obj a01e9f3c53444666
6067 6404 7943180196454801 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/altcp.c.obj a01e9f3c53444666 4377 4748 7945751203633178 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/netdb.c.obj 729b8df87d77cc78
6013 6525 7943180195905895 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/netdb.c.obj 729b8df87d77cc78 4342 4734 7945751203283423 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/api_lib.c.obj 654ff8b1f8c0f719
5934 6411 7943180195126041 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/api_lib.c.obj 654ff8b1f8c0f719 4359 4665 7945751203463223 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/if_api.c.obj 711d802816741d98
5999 6298 7943180195775423 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/if_api.c.obj 711d802816741d98 4382 4678 7945751203699134 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/netifapi.c.obj 201690ec978d3bf1
6054 6321 7943180196315676 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/netifapi.c.obj 201690ec978d3bf1 4348 4760 7945751203345534 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/api_msg.c.obj f53db7bcc40e3994
5990 6534 7943180195679356 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/api_msg.c.obj f53db7bcc40e3994 4513 4850 7945751204991904 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/def.c.obj cb7608266d8b7454
6150 6463 7943180197291703 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/def.c.obj cb7608266d8b7454 4483 4802 7945751204701669 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/altcp_alloc.c.obj 13ad071df46343c2
6120 6636 7943180196990960 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/altcp_alloc.c.obj 13ad071df46343c2 4425 4753 7945751204117718 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/tcpip.c.obj 62388740b31a3c49
6063 6601 7943180196408941 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/tcpip.c.obj 62388740b31a3c49 4665 4975 7945751206518217 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/autoip.c.obj 7c471e44b26a9ff1
6321 6618 7943180199000437 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/autoip.c.obj 7c471e44b26a9ff1 4587 4994 7945751205746493 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/inet_chksum.c.obj e548bd0aaf68842f
6248 7043 7943180198267525 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/inet_chksum.c.obj e548bd0aaf68842f 4597 4947 7945751205838976 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ip.c.obj 90d97fb2731e6dd6
6298 6622 7943180198766155 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ip.c.obj 90d97fb2731e6dd6 4417 4942 7945751204037846 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/sockets.c.obj 33e1f63b2e1d2c00
6059 6452 7943180196378255 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/sockets.c.obj 33e1f63b2e1d2c00 4734 5106 7945751207212247 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/igmp.c.obj 108271646f8c7021
6415 6716 7943180199938837 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/igmp.c.obj 108271646f8c7021 4753 5117 7945751207400146 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/ip4_addr.c.obj f589e0418e9936f8
6463 7243 7943180200410556 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/ip4_addr.c.obj f589e0418e9936f8 4678 5132 7945751206648895 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/dhcp.c.obj ca026138b3bdb04c
6397 7054 7943180199757029 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/dhcp.c.obj ca026138b3bdb04c 4850 5297 7945751208373672 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ethip6.c.obj fbbc2cd4718183aa
6529 6799 7943180201081321 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ethip6.c.obj fbbc2cd4718183aa 4802 5142 7945751207882196 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/dhcp6.c.obj 63e6da2d20806b53
6525 6886 7943180201039892 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/dhcp6.c.obj 63e6da2d20806b53 4869 5136 7945751208555989 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/icmp6.c.obj a7f09de9398d8adb
6534 6795 7943180201127723 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/icmp6.c.obj a7f09de9398d8adb 4517 4937 7945751205041369 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/dns.c.obj b06aee5aaa719706
6243 6606 7943180198221548 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/dns.c.obj b06aee5aaa719706 4760 5076 7945751207471320 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/ip4_frag.c.obj e96d635675f8a52c
6475 6953 7943180200535225 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/ip4_frag.c.obj e96d635675f8a52c 4937 5189 7945751209240995 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ip6.c.obj 748e64f12e617ae5
6602 6859 7943180201805387 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ip6.c.obj 748e64f12e617ae5 4616 5043 7945751206031947 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/acd.c.obj 94e60c76ec87fb48
6303 6784 7943180198816843 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/acd.c.obj 94e60c76ec87fb48 4689 4980 7945751206766871 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/icmp.c.obj 28c42a1dbc2e46c
6411 6789 7943180199893361 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/icmp.c.obj 28c42a1dbc2e46c 4749 5125 7945751207346361 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/ip4.c.obj 52b492a19b0ea703
6452 6957 7943180200301732 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/ip4.c.obj 52b492a19b0ea703 4592 4969 7945751205786505 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/init.c.obj 9e6a477e678e050c
6254 6597 7943180198328159 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/init.c.obj 9e6a477e678e050c 4682 5097 7945751206696651 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/etharp.c.obj 22282a1c03b5d97
6404 7102 7943180199827795 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/etharp.c.obj 22282a1c03b5d97 4975 5183 7945751209615604 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/nd6.c.obj 50d42a98ad82dd70
6636 6890 7943180202150423 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/nd6.c.obj 50d42a98ad82dd70 4948 5292 7945751209346399 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ip6_frag.c.obj dc43690ca12bd5c1
6618 6894 7943180201968627 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ip6_frag.c.obj dc43690ca12bd5c1 4969 5240 7945751209556298 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/mld6.c.obj a43a9514fa0b6113
6623 6946 7943180202014123 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/mld6.c.obj a43a9514fa0b6113 4888 5147 7945751208742552 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/inet6.c.obj d9223f9feea70fcd
6597 6941 7943180201761021 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/inet6.c.obj d9223f9feea70fcd 4943 5171 7945751209290866 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ip6_addr.c.obj cacc888a452fc8a4
6607 6855 7943180201856008 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ip6_addr.c.obj cacc888a452fc8a4 4980 5223 7945751209668438 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/mem.c.obj d4aa79df81cc5e6a
6716 7037 7943180202941052 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/mem.c.obj d4aa79df81cc5e6a 4994 5434 7945751209814912 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/memp.c.obj 144625baf787c249
6784 7360 7943180203631021 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/memp.c.obj 144625baf787c249 5106 5466 7945751210920919 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/stats.c.obj e913f73f793179f5
6855 7211 7943180204335740 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/stats.c.obj e913f73f793179f5 5118 5430 7945751211048688 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/sys.c.obj 13279b10f44756e
6859 7123 7943180204381154 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/sys.c.obj 13279b10f44756e 5043 5400 7945751210298391 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/netif.c.obj 580e36e161d6950e
6789 7142 7943180203676770 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/netif.c.obj 580e36e161d6950e 5076 5664 7945751210636398 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/pbuf.c.obj d355af7d824fc99f
6795 7480 7943180203739045 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/pbuf.c.obj d355af7d824fc99f 5097 5461 7945751210841035 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/raw.c.obj b63d4f0d0477ff1e
6799 7115 7943180203770227 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/raw.c.obj b63d4f0d0477ff1e 5171 5557 7945751211582557 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/bridgeif.c.obj ea9d036732f48bf4
6953 7368 7943180205320165 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/bridgeif.c.obj ea9d036732f48bf4 5142 5598 7945751211281499 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/timeouts.c.obj 39a11e74360ce5e9
6941 7365 7943180205204219 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/timeouts.c.obj 39a11e74360ce5e9 5147 5479 7945751211340020 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/udp.c.obj 1035d946805bbda2
6946 7356 7943180205249590 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/udp.c.obj 1035d946805bbda2 5137 5625 7945751211238409 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/tcp_out.c.obj e47e19b2db20970e
6894 7611 7943180204729392 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/tcp_out.c.obj e47e19b2db20970e 5292 5674 7945751212780023 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/lowpan6_common.c.obj b97d708f02705aa1
7102 7437 7943180206809173 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/lowpan6_common.c.obj b97d708f02705aa1 5189 5502 7945751211758561 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ethernet.c.obj 46e4b1db856f4abe
7037 7622 7943180206157244 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ethernet.c.obj 46e4b1db856f4abe 5223 5643 7945751212093145 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/lowpan6.c.obj 9315b81429ae0671
7044 7708 7943180206218049 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/lowpan6.c.obj 9315b81429ae0671 5183 5552 7945751211703642 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/bridgeif_fdb.c.obj 6f07c80c0ad8ff78
6957 7372 7943180205365634 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/bridgeif_fdb.c.obj 6f07c80c0ad8ff78 5240 5734 7945751212265221 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/lowpan6_ble.c.obj 34c38e9d19e53043
7054 7446 7943180206319903 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/lowpan6_ble.c.obj 34c38e9d19e53043 5125 5669 7945751211123038 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/tcp.c.obj 6e4e41e56dbe5844
6886 7376 7943180204653774 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/tcp.c.obj 6e4e41e56dbe5844 5132 5610 7945751211192463 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/tcp_in.c.obj 82728f203100f04c
6890 7590 7943180204689078 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/tcp_in.c.obj 82728f203100f04c 5400 5814 7945751213869869 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ccp.c.obj de4fe8962b6036de
7123 7442 7943180207021852 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ccp.c.obj de4fe8962b6036de 5297 5678 7945751212843231 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/auth.c.obj ff8a5d095673156c
7115 7631 7943180206944849 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/auth.c.obj ff8a5d095673156c 5430 5777 7945751214164965 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/chap-md5.c.obj d545ade2e8d55a0f
7142 7606 7943180207209946 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/chap-md5.c.obj d545ade2e8d55a0f 5434 5803 7945751214211155 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/chap-new.c.obj 8887475f948dec1d
7211 7626 7943180207892222 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/chap-new.c.obj 8887475f948dec1d 5461 5767 7945751214475547 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/chap_ms.c.obj e9dea8de70762fd4
7243 7515 7943180208209903 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/chap_ms.c.obj e9dea8de70762fd4 5466 5923 7945751214538930 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/demand.c.obj 7f9e783cc1e443b
7356 8132 7943180209349625 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/demand.c.obj 7f9e783cc1e443b 5480 5900 7945751214663616 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/eap.c.obj 7c751126dd2ab833
7361 7762 7943180209392822 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/eap.c.obj 7c751126dd2ab833 5552 5907 7945751215391772 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/eui64.c.obj 5db9bc6a6f350963
7369 7848 7943180209471191 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/eui64.c.obj 5db9bc6a6f350963 5502 5917 7945751214895732 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ecp.c.obj fb8eb68674bc93c7
7365 7659 7943180209439248 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ecp.c.obj fb8eb68674bc93c7 5557 5937 7945751215444916 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/fsm.c.obj 3d7d59ada644d9fa
7373 7669 7943180209516868 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/fsm.c.obj 3d7d59ada644d9fa 5598 5960 7945751215852827 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ipcp.c.obj 677d81f01d8ef546
7376 7649 7943180209547751 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ipcp.c.obj 677d81f01d8ef546 5664 6108 7945751216514382 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/mppe.c.obj 8ceb4b58e294402c
7481 7798 7943180210589838 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/mppe.c.obj 8ceb4b58e294402c 5669 5982 7945751216564930 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/multilink.c.obj 62c56122bb65ed6c
7515 7853 7943180210942253 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/multilink.c.obj 62c56122bb65ed6c 5610 5931 7945751215969552 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ipv6cp.c.obj d9b366fc2ac5290a
7437 7749 7943180210158497 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ipv6cp.c.obj d9b366fc2ac5290a 5644 5911 7945751216304828 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/magic.c.obj 4c90c1cacd25abab
7446 7902 7943180210255110 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/magic.c.obj 4c90c1cacd25abab 5625 5965 7945751216123475 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/lcp.c.obj c958349e003fdc58
7442 7738 7943180210210839 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/lcp.c.obj c958349e003fdc58 5674 5942 7945751216614028 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/arc4.c.obj 69ab292aa02e24d3
7591 8042 7943180211697517 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/arc4.c.obj 69ab292aa02e24d3 5907 6190 7945751218932804 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppoe.c.obj d3b8c2433707c7a0
7669 7980 7943180212478090 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppoe.c.obj d3b8c2433707c7a0 5900 6180 7945751218870691 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppcrypt.c.obj eeaff152eef09c5e
7659 7910 7943180212387279 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppcrypt.c.obj eeaff152eef09c5e 5804 6107 7945751217895669 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ppp.c.obj 95dbda436ddc1a4
7631 7906 7943180212106138 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ppp.c.obj 95dbda436ddc1a4 5734 6101 7945751217213568 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/md4.c.obj 8494b18a789cfd30
7611 7924 7943180211904069 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/md4.c.obj 8494b18a789cfd30 5777 6108 7945751217643229 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/sha1.c.obj c205d93ec22541b1
7627 8042 7943180212056994 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/sha1.c.obj c205d93ec22541b1 5937 6173 7945751219231160 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/vj.c.obj a3748ae2776c2ad3
7798 8181 7943180213765886 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/vj.c.obj a3748ae2776c2ad3 5767 6022 7945751217540544 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/md5.c.obj 4ef8a1fb3ec0b466
7622 7893 7943180212004671 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/md5.c.obj 4ef8a1fb3ec0b466 5678 5988 7945751216655814 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/des.c.obj c6da4b61f39ddc77
7606 7916 7943180211856329 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/des.c.obj c6da4b61f39ddc77 5931 6220 7945751219179490 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/utils.c.obj 25c805149a1e51f9
7762 8173 7943180213403197 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/utils.c.obj 25c805149a1e51f9 5923 6152 7945751219093556 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/upap.c.obj ba551349020d2236
7749 8233 7943180213286146 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/upap.c.obj ba551349020d2236 5814 6017 7945751218011724 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppapi.c.obj a011cbcb2449c13b
7649 8182 7943180212285727 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppapi.c.obj a011cbcb2449c13b 5917 6144 7945751219043195 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppos.c.obj 3b3abea33c130cbb
7738 8181 7943180213173234 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppos.c.obj 3b3abea33c130cbb 5912 6172 7945751218980959 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppol2tp.c.obj fbb6264d9812bc92
7708 8070 7943180212873632 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppol2tp.c.obj fbb6264d9812bc92 5960 6186 7945751219463035 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/zepif.c.obj b6fafc051f5cffbb
7853 8189 7943180214317750 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/zepif.c.obj b6fafc051f5cffbb 5942 6225 7945751219287537 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/slipif.c.obj b7d9d13d727cacbb
7848 8122 7943180214272291 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/slipif.c.obj b7d9d13d727cacbb 4 58 7945738531478170 clean 48fb0083216ba165
3 51 7942869265267381 clean 48fb0083216ba165 42 803 7945751160294423 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/sht40.c.obj 495a242bd3c720b1
56 1099 7943180136328390 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/sht40.c.obj 495a242bd3c720b1 50 881 7945751160372289 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/tcp_server.c.obj 2f9b9aee6813f977
64 1069 7943180136416112 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/tcp_server.c.obj 2f9b9aee6813f977 35 487 7945751160216331 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/event_trigger.c.obj e2861b62811efbac
47 1122 7943180136245930 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/event_trigger.c.obj e2861b62811efbac 53 291 7945751160403204 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/transaction.c.obj 2656930e26c72e59
67 787 7943180136446873 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/transaction.c.obj 2656930e26c72e59 29 243 7945751160165091 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/event_handler.c.obj 40cb707626fe69a6
38 615 7943180136151753 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/event_handler.c.obj 40cb707626fe69a6 33 248 7945751160201048 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/event_queue.c.obj 7a3a4640221394c7
43 1092 7943180136209850 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/event_queue.c.obj 7a3a4640221394c7 46 401 7945751160325984 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/state_manager.c.obj 3770f56ac2f630a9
61 1436 7943180136385447 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/state_manager.c.obj 3770f56ac2f630a9 26 406 7945751160126739 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/error_handler.c.obj 4ebd7aa818b2dbe6
31 631 7943180136090382 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/error_handler.c.obj 4ebd7aa818b2dbe6 6017 6217 7945751220044945 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f407xx.s.obj def0faec2571c85
126 1292 7945763000478578 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/event_queue.c.obj a33a4135ed57c729
179 1404 7945763001023168 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/event_trigger.c.obj 926544271e75ab9d
285 1513 7945763002072371 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/sht40.c.obj d163d7c9624e7848
341 1609 7945763002642178 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/state_manager.c.obj 88b612495d64f7ee
468 1712 7945763003916522 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/transaction.c.obj fd3b1bac98863d17
594 1855 7945763005176285 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c.obj 2d228870b98a7d8b
657 1948 7945763005806588 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c.obj 129568b79ab7f8ca
724 2043 7945763006461022 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c.obj a22edbfb1ec92c6c
786 2150 7945763007097519 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c.obj c705714ae9fe2f9a
853 2243 7945763007772650 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cec.c.obj 5851ce3889921f1b
916 2368 7945763008387874 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c.obj ebc8f6c337b2d0e1
992 2513 7945763009157508 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c.obj 89c813f1a170a2a9
1073 2631 7945763009964540 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cryp.c.obj 475ab0187c367e81
1294 2738 7945763012184853 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cryp_ex.c.obj 33c4951f4fe6a6bc
1405 2860 7945763013281405 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac.c.obj 33257b5c8106713f
1514 2960 7945763014380046 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac_ex.c.obj ffc94946ed7f7fd4
1609 3072 7945763015324542 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dcmi.c.obj 422726f98dd917c0
1712 3214 7945763016352171 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dcmi_ex.c.obj ff52025c44c14691
1856 3347 7945763017791858 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dfsdm.c.obj 4f0674b3c4ab51f6
1948 3439 7945763018718775 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c.obj bb05e4857760ab
2043 3540 7945763019663316 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c.obj 1a67456765259
2150 3622 7945763020739944 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c.obj b7b2dbc13040106f
2243 3712 7945763021662742 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dsi.c.obj 9c275b0f24f1c6dc
2368 3826 7945763022906055 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.c.obj a9cad8ecbf605e9f
2514 3928 7945763024369916 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c.obj 239e8ad6274b26cf
2632 4044 7945763025562712 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c.obj 3561c1eaf2b7e0e4
2861 4152 7945763027834156 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c.obj f981cbdfe963a770
2960 4249 7945763028829668 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpi2c.c.obj 19f105f94e63bee9
3072 4339 7945763029946827 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpi2c_ex.c.obj 5a51155439464a78
397 4489 7945763003209847 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/tcp_server.c.obj 443eef53a78f00cc
3215 4596 7945763031373386 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpsmbus.c.obj 4b249be1d903ce48
3349 4741 7945763032726497 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpsmbus_ex.c.obj c20e9e3ce5f7f27a
3441 4835 7945763033641055 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c.obj 42f542b7b744e9eb
3540 4935 7945763034626172 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hash.c.obj 1f7b8fd978779184
3622 5021 7945763035454480 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hash_ex.c.obj 616c46b42b34b8ba
3712 5150 7945763036361708 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c.obj 4bdf86c980debe12
3827 5245 7945763037498926 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c.obj fa36f877c6fb4508
3928 5334 7945763038535663 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c.obj 7a3d6b15f5b3fdbb
4045 5417 7945763039681488 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c.obj 8241af7d9219eff7
4152 5517 7945763040758205 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c.obj 27945460fd531b06
4250 5647 7945763041741644 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_irda.c.obj f3d2097ebbb2ae1a
4339 5751 7945763042623230 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_iwdg.c.obj 615c83e0ec6ad531
4490 5847 7945763044129548 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_lptim.c.obj 3978ae50209e427a
4596 5952 7945763045211078 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.c.obj 185866d95e1f5c90
4742 6038 7945763046661520 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc_ex.c.obj 914daee07173df37
4835 6128 7945763047589717 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_mmc.c.obj ee21a3ba5f92b2f2
4935 6234 7945763048587566 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_nand.c.obj 2a3e092c0f318677
5021 6381 7945763049439966 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_nor.c.obj 3a8e0e1e10b19cad
5150 6481 7945763050739667 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pccard.c.obj 4b39dcc7e81a2ec4
5247 6603 7945763051700477 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c.obj dd1592070bdaa05f
5334 6729 7945763052580471 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c.obj 652e8367d4c8760a
5418 6836 7945763053416614 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c.obj e83036b4313a1ef3
5517 6918 7945763054411593 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c.obj 3a5b638238b5c6e2
5647 7012 7945763055705891 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_qspi.c.obj 18e7096201b13fc3
5752 7146 7945763056741423 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c.obj cccd47b00bd176a1
5847 7253 7945763057711757 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c.obj f61b6b6dc5f5bbdb
5952 7371 7945763058756352 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c.obj d1126a4ce4055bef
6038 7489 7945763059610200 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c.obj be4f6b35ee5c499
6128 7589 7945763060520840 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c.obj a1e2fcb211cdc342
6234 7682 7945763061580437 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sai.c.obj ff70543014644efb
6381 7879 7945763063045319 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sai_ex.c.obj c1ee579877cce255
6481 8004 7945763064043379 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.c.obj 73bcb592af4f0a0f
6604 8136 7945763065271678 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.c.obj befb0c38a4fa103
6729 8260 7945763066531983 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_smartcard.c.obj 36ee836c0a48569c
6836 8401 7945763067588638 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_smbus.c.obj 292c74c141b117b5
6918 8615 7945763068419168 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spdifrx.c.obj 36eff4aab20a8c4d
7013 8709 7945763069358285 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c.obj de8a3e8b6f5d6f03
7147 8827 7945763070706948 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.c.obj a0c24a1c5a3aa6a1
7253 8961 7945763071762017 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c.obj 138ef734b7053632
7371 9078 7945763072949808 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c.obj d57bce0b1cd28074
7489 9179 7945763074123412 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c.obj aead5b06fd31b37d
7590 9267 7945763075135711 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_usart.c.obj 265bcc4c08869847
7682 9360 7945763076059225 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_wwdg.c.obj 4587709b364cb57f
7880 9448 7945763078035440 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c.obj b30a833f83c91c1c
8006 9553 7945763079296535 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_crc.c.obj 5eb7490929ed2b5a
8137 9640 7945763080599122 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dac.c.obj e175931912cefb2e
8260 9729 7945763081827681 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dma.c.obj 5b1134b995a2a396
8417 9818 7945763083412656 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dma2d.c.obj c3f6b7e7ed87d645
8615 9916 7945763085386938 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_exti.c.obj 2b5d5892ae3888a2
8710 10009 7945763086334474 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.c.obj 52bcc44077d662ef
8827 10113 7945763087510040 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmpi2c.c.obj 7750a586ac30a6e
8961 10263 7945763088846546 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fsmc.c.obj feeafa976ba1bc49
9079 10401 7945763090025122 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_gpio.c.obj 26acc2cf3a90faa2
9179 10543 7945763091031731 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_i2c.c.obj 44c40ecf286dad1c
9267 10650 7945763091908019 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_lptim.c.obj 870009dd2ce27c3d
9361 10746 7945763092844354 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_pwr.c.obj 15398a79c30b6846
9449 10845 7945763093722142 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_rcc.c.obj 3a2c53f14851be5a
9553 10948 7945763094765234 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_rng.c.obj 1645ec72f9115d4
9640 11047 7945763095635449 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_rtc.c.obj 7f981cdda7272cb9
9729 11143 7945763096523557 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c.obj ec6259f4aeacc68e
9818 11223 7945763097419945 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_spi.c.obj 147b2a5db506708b
9917 11323 7945763098411630 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_tim.c.obj f37d8d33863e54c
10009 11421 7945763099328856 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usart.c.obj d0b6fac4d0f72ee5
10113 11515 7945763100366741 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c.obj 4755778142380626
10263 11602 7945763101871988 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_utils.c.obj ec7c1d427bfc34c0
10402 11684 7945763103291313 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/hal/hal.c.obj 4b38f4a77b092186
10845 11772 7945763107693525 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/clock.c.obj 34c6882072c4534e
11047 11860 7945763109708227 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/cpu.c.obj 33fe98e41464e565
11143 11946 7945763110665656 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/device.c.obj 4251d6013eb4462b
73 12043 7945762999960845 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/event_handler.c.obj 8f1c1e27881ef79d
2739 12146 7945763026613402 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c.obj bd1d6b8b1f6944cd
11423 12266 7945763113474636 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/irq.c.obj 6bbcd0ad5f6f3dd1
11603 12362 7945763115259070 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/mem.c.obj 7296e2e6fa2e0f54
11684 12480 7945763116081291 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/memheap.c.obj bd81cdbb354d7e75
11772 12599 7945763116958340 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/mempool.c.obj 6f4ba4af13faa5b8
11860 12637 7945763117839019 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/object.c.obj c5dbc7c1061f2ab8
11946 12667 7945763118682957 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/scheduler.c.obj ef7369310c97b831
12044 12688 7945763119676419 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/signal.c.obj 68ebddfd35d59659
12149 12706 7945763120726813 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/slab.c.obj 24a1e95663248daa
10948 12878 7945763108716870 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/components.c.obj f8da2309e76dac2
12480 12929 7945763124034862 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_core.c.obj 35a7f92d5fa89393
12 12989 7945762999355750 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/error_handler.c.obj afd2b5483d4affb4
11224 13095 7945763111467743 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/idle.c.obj ea82aed10a7c365e
12363 13178 7945763122866676 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/timer.c.obj 27fc4c10cddc0b24
12267 13504 7945763121902903 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/thread.c.obj adf1a692e2c0287f
11515 13565 7945763114380072 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/kservice.c.obj 2486ab7cf30554cd
11323 13608 7945763112517425 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/ipc.c.obj 6c39f3c9d0de1b6b
56 386 7945763132116056 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/thread.c.obj adf1a692e2c0287f
52 387 7945763132067787 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/kservice.c.obj 2486ab7cf30554cd
60 388 7945763132151843 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_event.c.obj 2dc8e06adab998f3
64 388 7945763132198355 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_irq.c.obj a8964936032c1b87
97 389 7945763132522861 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_thread.c.obj 86b35d35c611d658
73 389 7945763132278568 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_mem.c.obj 7c802c36ec419a48
48 390 7945763132021824 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/src/ipc.c.obj 6c39f3c9d0de1b6b
69 390 7945763132246860 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_log.c.obj 88d6ae699164d101
78 391 7945763132331169 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_mq.c.obj b48e60ca0f46468c
230 13626 7945763001533831 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/main.c.obj b3484d3e1fdc3112
85 408 7945763132398071 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_mutex.c.obj 484c503450f72acb
91 409 7945763132460483 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_sem.c.obj fb9baf905376fbc1
101 409 7945763132558110 CMakeFiles/rtthread-nano-stm32f407ve.dir/osal/src/rtthread/osal_timer.c.obj 857254bb5cca9738
108 424 7945763132633158 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/api_lib.c.obj 5ba7866b5ce33eb4
30 573 7945763131852487 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/main.c.obj b3484d3e1fdc3112
14 237 7945764167325378 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/hal/hal.c.obj 4b38f4a77b092186
34 292 7945764167535181 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/err.c.obj 3393441461287b63
52 305 7945764167713024 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/netifapi.c.obj f292c9d1e060124e
68 331 7945764167869136 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/altcp.c.obj ae5f1f6676d7e46a
38 340 7945764167571438 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/if_api.c.obj f168e42e434f39ab
78 347 7945764167959315 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/altcp_tcp.c.obj fe103a5a265699ff
42 352 7945764167611815 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/netbuf.c.obj 6087d8252ad5869c
73 357 7945764167913332 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/altcp_alloc.c.obj d34453861aaeaf20
46 361 7945764167657424 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/netdb.c.obj e8bcd26e3017f7b6
30 395 7945764167488623 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/api_msg.c.obj 72d2739fd058f265
82 409 7945764168013585 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/def.c.obj 4d1582093d627a79
64 413 7945764167829645 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/tcpip.c.obj d17355809d1c53f3
10 463 7945764167278387 CMakeFiles/rtthread-nano-stm32f407ve.dir/board/stm32f407ve/board.c.obj 904a442d551f6c1e
87 499 7945764168061669 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/dns.c.obj 2fb34eded506a63
26 523 7945764167447181 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/hal/stm32f4_hal_uart.c.obj ca8660b85168593c
60 539 7945764167788505 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/api/sockets.c.obj fd9c45568937a82b
22 552 7945764167400039 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/hal/stm32f4_hal_i2c.c.obj 68ebce49ebab2317
237 576 7945764169554576 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/inet_chksum.c.obj 3611967c1ec2ee
305 610 7945764170239254 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ip.c.obj 81139f412576ac70
18 615 7945764167377758 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/hal/stm32f4_hal_eth.c.obj 89b12ba5a6b23f9c
292 621 7945764170104746 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/init.c.obj b1fd75f15330e316
340 642 7945764170591149 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/autoip.c.obj b7f749ed61e523cc
362 697 7945764170806437 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/igmp.c.obj bd2b8e177060111b
331 703 7945764170501229 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/acd.c.obj 50999f7c4cb0bc39
352 713 7945764170712868 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/etharp.c.obj 228f02a467bbc2ad
357 721 7945764170750209 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/icmp.c.obj f696e718cd7ca7a2
463 747 7945764171822353 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/dhcp6.c.obj 4da9f56dcce1029e
499 756 7945764172179493 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ethip6.c.obj 4afc21f07a291b2
347 768 7945764170664045 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/dhcp.c.obj a218d7f5f079c80c
539 776 7945764172579598 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/inet6.c.obj 5b21874796165690
523 791 7945764172425306 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/icmp6.c.obj 40cdad3ee461d48a
615 808 7945764173343126 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/mld6.c.obj 2343d5afab9c2deb
395 813 7945764171148544 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/ip4.c.obj 339f08c80aa9ca41
409 818 7945764171279250 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/ip4_addr.c.obj 7138afc0c51d3aeb
552 823 7945764172712562 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ip6.c.obj 87349b952f84fc6f
576 828 7945764172952722 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ip6_addr.c.obj 27172e38f020cb75
621 848 7945764173395800 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/nd6.c.obj 3242c23cbeb5717f
413 854 7945764171324297 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv4/ip4_frag.c.obj 39b96b887ac7e283
610 912 7945764173291815 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/ipv6/ip6_frag.c.obj 2c14dc172f74e5c9
642 943 7945764173616537 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/mem.c.obj 628cf6c275d16830
756 1052 7945764174753253 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/sys.c.obj 3705b7480ab2c7e2
698 1057 7945764174161535 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/memp.c.obj 6c4c8ddf2a01b0ca
714 1091 7945764174327626 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/pbuf.c.obj b6aa4fbcdc206568
748 1096 7945764174661890 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/stats.c.obj 30a080d13dae02ae
703 1132 7945764174218331 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/netif.c.obj f700c54108d2bfd6
721 1137 7945764174387895 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/raw.c.obj bb951b7c76402745
809 1162 7945764175276179 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/timeouts.c.obj fa513f9283328edb
848 1196 7945764175672760 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/lowpan6.c.obj b4a6613074a5afef
823 1212 7945764175425582 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/bridgeif_fdb.c.obj 364d995813847fa4
813 1218 7945764175318104 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/udp.c.obj 4dde3fd516370808
768 1222 7945764174872509 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/tcp.c.obj bc3020eeda53abd6
828 1237 7945764175473557 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ethernet.c.obj 88894c7e4eec924
912 1264 7945764176307377 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/lowpan6_common.c.obj c54d7c0bd97d98cd
854 1271 7945764175730568 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/lowpan6_ble.c.obj 4c7d5112da0723e8
776 1319 7945764174959907 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/tcp_in.c.obj 372fa004044ac358
943 1328 7945764176615348 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/auth.c.obj 84b32e6e635b187a
819 1333 7945764175370840 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/bridgeif.c.obj f16962fd2c2c1a9b
791 1339 7945764175099234 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/core/tcp_out.c.obj 3f76390914ee900a
1057 1358 7945764177767404 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/chap-md5.c.obj f84434b186ef142f
1096 1386 7945764178153062 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/chap_ms.c.obj 3508cc4cf3db6bcb
1162 1400 7945764178814654 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ecp.c.obj 3d95761b4c66c174
1197 1406 7945764179157008 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/eui64.c.obj 80f6dae6f0468abe
1132 1411 7945764178507466 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/demand.c.obj d3e1ffcc092f7669
1212 1416 7945764179314465 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/fsm.c.obj 2f6c3b491fdc7f74
1053 1421 7945764177721447 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ccp.c.obj 511aa0f5125ccb91
1091 1426 7945764178102768 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/chap-new.c.obj d755ce877b62b371
1223 1461 7945764179421736 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ipv6cp.c.obj 2a0abd4df5211522
1218 1477 7945764179371646 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ipcp.c.obj be96734756a6301
1138 1502 7945764178570500 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/eap.c.obj a58a5e59eda623b4
1237 1507 7945764179557669 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/lcp.c.obj c346b0557bd64875
1328 1522 7945764180472169 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/arc4.c.obj 74e58cceb0094a3
1264 1540 7945764179830611 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/magic.c.obj 6022b014c985415a
1272 1551 7945764179910598 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/mppe.c.obj 3d665068bc56f47
1416 1601 7945764181354185 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppoe.c.obj cb3392e8594970a
1358 1614 7945764180771673 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/md5.c.obj 8e2454b6f4c112d9
1406 1633 7945764181249477 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppapi.c.obj cb2111472ea12341
1319 1638 7945764180382988 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/multilink.c.obj 993ec1d7be8c72a7
1386 1663 7945764181042067 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/sha1.c.obj 29d53d2fb7a50c0
1411 1669 7945764181297265 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppcrypt.c.obj dc7c28147901c47e
1421 1676 7945764181405839 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppol2tp.c.obj 46b04febdea037e0
1333 1676 7945764180515545 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/des.c.obj e323141b0074c8e3
1426 1677 7945764181452821 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/pppos.c.obj 2eb4f4d841408bed
1401 1682 7945764181199296 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/ppp.c.obj 62461143f5ebacc4
1461 1682 7945764181800730 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/upap.c.obj 2dd9f6f40447e263
1340 1683 7945764180578662 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/polarssl/md4.c.obj 4fa579bc598a223c
1478 1689 7945764181971490 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/utils.c.obj 88e71895fc2a74c9
1503 1706 7945764182221164 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/ppp/vj.c.obj 9fa62d0752ab88da
1614 1715 7945764183330582 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f407xx.s.obj b08cb3d00af6e36b
1522 1728 7945764182412290 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/zepif.c.obj cbae23e65d2af4aa
1638 1732 7945764183570068 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/libcpu/arm/cortex-m4/context_gcc.S.obj 74fbeda71c326f28
1552 1770 7945764182705612 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/port/sys_arch.c.obj 4d76295cfcbb766f
1507 1791 7945764182254095 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/lwip-2.2.1/src/netif/slipif.c.obj 31941e5f632c300f
1633 1870 7945764183523078 CMakeFiles/rtthread-nano-stm32f407ve.dir/rt-thread/libcpu/arm/cortex-m4/cpuport.c.obj 4718c7c71c7d66f7
1540 1970 7945764182590287 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/port/drv_eth.c.obj fe1bc139bc2dd747
1601 1975 7945764183199603 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c.obj d32fc9cda964f0ca
1975 2614 7945764186935721 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
9 300 7945764301819221 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/hal/stm32f4_hal_eth.c.obj 89b12ba5a6b23f9c
300 863 7945764304737904 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
9 269 7945764471398542 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/hal/stm32f4_hal_eth.c.obj 89b12ba5a6b23f9c
269 819 7945764473997859 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
11 654 7945764970515388 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/hal/stm32f4_hal_eth.c.obj 89b12ba5a6b23f9c
656 2113 7945764976947881 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
13 778 7945766443699197 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/main.c.obj b3484d3e1fdc3112
780 2245 7945766451356063 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
15 292 7945769306246525 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/main.c.obj b3484d3e1fdc3112
292 849 7945769309021221 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
8 298 7945769670262700 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/main.c.obj b3484d3e1fdc3112
299 857 7945769673175417 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
8 270 7945769996196331 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/main.c.obj b3484d3e1fdc3112
271 763 7945769998826456 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
7 275 7945771870868479 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/main.c.obj b3484d3e1fdc3112
276 855 7945771873547049 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
23 2316 7947433113232662 CMakeFiles/rtthread-nano-stm32f407ve.dir/lwip/port/drv_eth.c.obj fe1bc139bc2dd747
2317 4751 7947433136169332 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
8 281 7947433844316313 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/hal/stm32f4_hal_eth.c.obj 89b12ba5a6b23f9c
281 763 7947433847046832 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
17 300 7947439346850626 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/sht40.c.obj d163d7c9624e7848
9 301 7947439346765204 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/error_handler.c.obj afd2b5483d4affb4
13 304 7947439346810401 CMakeFiles/rtthread-nano-stm32f407ve.dir/app/main.c.obj b3484d3e1fdc3112
304 967 7947439349726503 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
12 651 7947443453105321 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/hal/stm32f4_hal_eth.c.obj 89b12ba5a6b23f9c
652 2160 7947443459506020 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf
12 629 7947446200600237 CMakeFiles/rtthread-nano-stm32f407ve.dir/drivers/hal/stm32f4_hal_eth.c.obj 89b12ba5a6b23f9c
630 2117 7947446206774632 rtthread-nano-stm32f407ve.elf 82684ad022f3dcf

View File

@ -73,8 +73,8 @@ events:
checks: checks:
- "Detecting C compiler ABI info" - "Detecting C compiler ABI info"
directories: directories:
source: "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/build/CMakeFiles/CMakeScratch/TryCompile-gwucrf" source: "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/build/CMakeFiles/CMakeScratch/TryCompile-hhqe8k"
binary: "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/build/CMakeFiles/CMakeScratch/TryCompile-gwucrf" binary: "C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/build/CMakeFiles/CMakeScratch/TryCompile-hhqe8k"
cmakeVariables: cmakeVariables:
CMAKE_C_FLAGS: "-mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -Wall -Wextra -ffunction-sections -fdata-sections -g3 -O0 -std=c99" CMAKE_C_FLAGS: "-mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -Wall -Wextra -ffunction-sections -fdata-sections -g3 -O0 -std=c99"
CMAKE_C_FLAGS_DEBUG: "-g" CMAKE_C_FLAGS_DEBUG: "-g"
@ -83,10 +83,10 @@ events:
variable: "CMAKE_C_ABI_COMPILED" variable: "CMAKE_C_ABI_COMPILED"
cached: true cached: true
stdout: | stdout: |
Change Dir: 'C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/build/CMakeFiles/CMakeScratch/TryCompile-gwucrf' Change Dir: 'C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/build/CMakeFiles/CMakeScratch/TryCompile-hhqe8k'
Run Build Command(s): C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Scripts/ninja.exe -v cmTC_2c05d Run Build Command(s): C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Scripts/ninja.exe -v cmTC_feb17
[1/2] D:\\ARM_GCC\\bin\\arm-none-eabi-gcc.exe -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -Wall -Wextra -ffunction-sections -fdata-sections -g3 -O0 -std=c99 -v -o CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj -c C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Lib/site-packages/cmake/data/share/cmake-3.31/Modules/CMakeCCompilerABI.c [1/2] D:\\ARM_GCC\\bin\\arm-none-eabi-gcc.exe -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -Wall -Wextra -ffunction-sections -fdata-sections -g3 -O0 -std=c99 -v -o CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj -c C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Lib/site-packages/cmake/data/share/cmake-3.31/Modules/CMakeCCompilerABI.c
Using built-in specs. Using built-in specs.
COLLECT_GCC=D:\\ARM_GCC\\bin\\arm-none-eabi-gcc.exe COLLECT_GCC=D:\\ARM_GCC\\bin\\arm-none-eabi-gcc.exe
Target: arm-none-eabi Target: arm-none-eabi
@ -94,8 +94,8 @@ events:
Thread model: single Thread model: single
Supported LTO compression algorithms: zlib Supported LTO compression algorithms: zlib
gcc version 10.3.1 20210824 (release) (GNU Arm Embedded Toolchain 10.3-2021.10) gcc version 10.3.1 20210824 (release) (GNU Arm Embedded Toolchain 10.3-2021.10)
COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp' COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp'
d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/cc1.exe -quiet -v -imultilib thumb/v7e-m+fp/hard -iprefix d:\\arm_gcc\\bin\\../lib/gcc/arm-none-eabi/10.3.1/ -isysroot d:\\arm_gcc\\bin\\../arm-none-eabi -dD -D__USES_INITFINI__ C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Lib/site-packages/cmake/data/share/cmake-3.31/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mlibarch=armv7e-m+fp -march=armv7e-m+fp -auxbase-strip CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj -g3 -O0 -Wall -Wextra -std=c99 -version -ffunction-sections -fdata-sections -o C:\\Users\\ZHIZHA~1\\AppData\\Local\\Temp\\cc6SOf0g.s d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/cc1.exe -quiet -v -imultilib thumb/v7e-m+fp/hard -iprefix d:\\arm_gcc\\bin\\../lib/gcc/arm-none-eabi/10.3.1/ -isysroot d:\\arm_gcc\\bin\\../arm-none-eabi -dD -D__USES_INITFINI__ C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Lib/site-packages/cmake/data/share/cmake-3.31/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mlibarch=armv7e-m+fp -march=armv7e-m+fp -auxbase-strip CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj -g3 -O0 -Wall -Wextra -std=c99 -version -ffunction-sections -fdata-sections -o C:\\Users\\ZHIZHA~1\\AppData\\Local\\Temp\\cc2Mw2P8.s
GNU C99 (GNU Arm Embedded Toolchain 10.3-2021.10) version 10.3.1 20210824 (release) (arm-none-eabi) GNU C99 (GNU Arm Embedded Toolchain 10.3-2021.10) version 10.3.1 20210824 (release) (arm-none-eabi)
compiled by GNU C version 7.3-win32 20180312, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP compiled by GNU C version 7.3-win32 20180312, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP
@ -116,13 +116,13 @@ events:
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: f3937ce18b4177bfd408ca565336596a Compiler executable checksum: f3937ce18b4177bfd408ca565336596a
COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp' COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp'
d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/as.exe -v -march=armv7e-m -mfloat-abi=hard -mfpu=fpv4-sp-d16 -meabi=5 -o CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj C:\\Users\\ZHIZHA~1\\AppData\\Local\\Temp\\cc6SOf0g.s d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/as.exe -v -march=armv7e-m -mfloat-abi=hard -mfpu=fpv4-sp-d16 -meabi=5 -o CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj C:\\Users\\ZHIZHA~1\\AppData\\Local\\Temp\\cc2Mw2P8.s
GNU assembler version 2.36.1 (arm-none-eabi) using BFD version (GNU Arm Embedded Toolchain 10.3-2021.10) 2.36.1.20210621 GNU assembler version 2.36.1 (arm-none-eabi) using BFD version (GNU Arm Embedded Toolchain 10.3-2021.10) 2.36.1.20210621
COMPILER_PATH=d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/;d:/arm_gcc/bin/../lib/gcc/;d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ COMPILER_PATH=d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/;d:/arm_gcc/bin/../lib/gcc/;d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/
LIBRARY_PATH=d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/;d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/;d:/arm_gcc/bin/../arm-none-eabi/lib/thumb/v7e-m+fp/hard/;d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/;d:/arm_gcc/bin/../lib/gcc/;d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/;d:/arm_gcc/bin/../arm-none-eabi/lib/ LIBRARY_PATH=d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/;d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/;d:/arm_gcc/bin/../arm-none-eabi/lib/thumb/v7e-m+fp/hard/;d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/;d:/arm_gcc/bin/../lib/gcc/;d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/;d:/arm_gcc/bin/../arm-none-eabi/lib/
COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp' COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp'
[2/2] C:\\windows\\system32\\cmd.exe /C "cd . && C:\\Users\\ZHIZHANKEJI\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\cmake\\data\\bin\\cmake.exe -E rm -f libcmTC_2c05d.a && D:\\ARM_GCC\\bin\\arm-none-eabi-ar.exe qc libcmTC_2c05d.a CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj && D:\\ARM_GCC\\bin\\arm-none-eabi-ranlib.exe libcmTC_2c05d.a && cd ." [2/2] C:\\windows\\system32\\cmd.exe /C "cd . && C:\\Users\\ZHIZHANKEJI\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\cmake\\data\\bin\\cmake.exe -E rm -f libcmTC_feb17.a && D:\\ARM_GCC\\bin\\arm-none-eabi-ar.exe qc libcmTC_feb17.a CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj && D:\\ARM_GCC\\bin\\arm-none-eabi-ranlib.exe libcmTC_feb17.a && cd ."
exitCode: 0 exitCode: 0
- -
@ -155,10 +155,10 @@ events:
Parsed C implicit link information: Parsed C implicit link information:
link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)]
linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)]
ignore line: [Change Dir: 'C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/build/CMakeFiles/CMakeScratch/TryCompile-gwucrf'] ignore line: [Change Dir: 'C:/Users/ZHIZHANKEJI/Downloads/rtthread-nano-4.1.1/rtthread-nano-4.1.1/build/CMakeFiles/CMakeScratch/TryCompile-hhqe8k']
ignore line: [] ignore line: []
ignore line: [Run Build Command(s): C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Scripts/ninja.exe -v cmTC_2c05d] ignore line: [Run Build Command(s): C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Scripts/ninja.exe -v cmTC_feb17]
ignore line: [[1/2] D:\\ARM_GCC\\bin\\arm-none-eabi-gcc.exe -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -Wall -Wextra -ffunction-sections -fdata-sections -g3 -O0 -std=c99 -v -o CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj -c C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Lib/site-packages/cmake/data/share/cmake-3.31/Modules/CMakeCCompilerABI.c] ignore line: [[1/2] D:\\ARM_GCC\\bin\\arm-none-eabi-gcc.exe -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -Wall -Wextra -ffunction-sections -fdata-sections -g3 -O0 -std=c99 -v -o CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj -c C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Lib/site-packages/cmake/data/share/cmake-3.31/Modules/CMakeCCompilerABI.c]
ignore line: [Using built-in specs.] ignore line: [Using built-in specs.]
ignore line: [COLLECT_GCC=D:\\ARM_GCC\\bin\\arm-none-eabi-gcc.exe] ignore line: [COLLECT_GCC=D:\\ARM_GCC\\bin\\arm-none-eabi-gcc.exe]
ignore line: [Target: arm-none-eabi] ignore line: [Target: arm-none-eabi]
@ -166,8 +166,8 @@ events:
ignore line: [Thread model: single] ignore line: [Thread model: single]
ignore line: [Supported LTO compression algorithms: zlib] ignore line: [Supported LTO compression algorithms: zlib]
ignore line: [gcc version 10.3.1 20210824 (release) (GNU Arm Embedded Toolchain 10.3-2021.10) ] ignore line: [gcc version 10.3.1 20210824 (release) (GNU Arm Embedded Toolchain 10.3-2021.10) ]
ignore line: [COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp'] ignore line: [COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp']
ignore line: [ d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/cc1.exe -quiet -v -imultilib thumb/v7e-m+fp/hard -iprefix d:\\arm_gcc\\bin\\../lib/gcc/arm-none-eabi/10.3.1/ -isysroot d:\\arm_gcc\\bin\\../arm-none-eabi -dD -D__USES_INITFINI__ C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Lib/site-packages/cmake/data/share/cmake-3.31/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mlibarch=armv7e-m+fp -march=armv7e-m+fp -auxbase-strip CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj -g3 -O0 -Wall -Wextra -std=c99 -version -ffunction-sections -fdata-sections -o C:\\Users\\ZHIZHA~1\\AppData\\Local\\Temp\\cc6SOf0g.s] ignore line: [ d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/cc1.exe -quiet -v -imultilib thumb/v7e-m+fp/hard -iprefix d:\\arm_gcc\\bin\\../lib/gcc/arm-none-eabi/10.3.1/ -isysroot d:\\arm_gcc\\bin\\../arm-none-eabi -dD -D__USES_INITFINI__ C:/Users/ZHIZHANKEJI/AppData/Local/Programs/Python/Python311/Lib/site-packages/cmake/data/share/cmake-3.31/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mlibarch=armv7e-m+fp -march=armv7e-m+fp -auxbase-strip CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj -g3 -O0 -Wall -Wextra -std=c99 -version -ffunction-sections -fdata-sections -o C:\\Users\\ZHIZHA~1\\AppData\\Local\\Temp\\cc2Mw2P8.s]
ignore line: [GNU C99 (GNU Arm Embedded Toolchain 10.3-2021.10) version 10.3.1 20210824 (release) (arm-none-eabi)] ignore line: [GNU C99 (GNU Arm Embedded Toolchain 10.3-2021.10) version 10.3.1 20210824 (release) (arm-none-eabi)]
ignore line: [ compiled by GNU C version 7.3-win32 20180312 GMP version 6.1.0 MPFR version 3.1.4 MPC version 1.0.3 isl version isl-0.18-GMP] ignore line: [ compiled by GNU C version 7.3-win32 20180312 GMP version 6.1.0 MPFR version 3.1.4 MPC version 1.0.3 isl version isl-0.18-GMP]
ignore line: [] ignore line: []
@ -188,8 +188,8 @@ events:
ignore line: [] ignore line: []
ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072]
ignore line: [Compiler executable checksum: f3937ce18b4177bfd408ca565336596a] ignore line: [Compiler executable checksum: f3937ce18b4177bfd408ca565336596a]
ignore line: [COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp'] ignore line: [COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp']
ignore line: [ d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/as.exe -v -march=armv7e-m -mfloat-abi=hard -mfpu=fpv4-sp-d16 -meabi=5 -o CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj C:\\Users\\ZHIZHA~1\\AppData\\Local\\Temp\\cc6SOf0g.s] ignore line: [ d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/as.exe -v -march=armv7e-m -mfloat-abi=hard -mfpu=fpv4-sp-d16 -meabi=5 -o CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj C:\\Users\\ZHIZHA~1\\AppData\\Local\\Temp\\cc2Mw2P8.s]
ignore line: [GNU assembler version 2.36.1 (arm-none-eabi) using BFD version (GNU Arm Embedded Toolchain 10.3-2021.10) 2.36.1.20210621] ignore line: [GNU assembler version 2.36.1 (arm-none-eabi) using BFD version (GNU Arm Embedded Toolchain 10.3-2021.10) 2.36.1.20210621]
ignore line: [COMPILER_PATH=d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/] ignore line: [COMPILER_PATH=d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/]
ignore line: [d:/arm_gcc/bin/../lib/gcc/] ignore line: [d:/arm_gcc/bin/../lib/gcc/]
@ -201,8 +201,8 @@ events:
ignore line: [d:/arm_gcc/bin/../lib/gcc/] ignore line: [d:/arm_gcc/bin/../lib/gcc/]
ignore line: [d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/] ignore line: [d:/arm_gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/]
ignore line: [d:/arm_gcc/bin/../arm-none-eabi/lib/] ignore line: [d:/arm_gcc/bin/../arm-none-eabi/lib/]
ignore line: [COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp'] ignore line: [COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-Wall' '-Wextra' '-ffunction-sections' '-fdata-sections' '-g3' '-O0' '-std=c99' '-v' '-o' 'CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj' '-c' '-mlibarch=armv7e-m+fp' '-march=armv7e-m+fp']
ignore line: [[2/2] C:\\windows\\system32\\cmd.exe /C "cd . && C:\\Users\\ZHIZHANKEJI\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\cmake\\data\\bin\\cmake.exe -E rm -f libcmTC_2c05d.a && D:\\ARM_GCC\\bin\\arm-none-eabi-ar.exe qc libcmTC_2c05d.a CMakeFiles/cmTC_2c05d.dir/CMakeCCompilerABI.c.obj && D:\\ARM_GCC\\bin\\arm-none-eabi-ranlib.exe libcmTC_2c05d.a && cd ."] ignore line: [[2/2] C:\\windows\\system32\\cmd.exe /C "cd . && C:\\Users\\ZHIZHANKEJI\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\cmake\\data\\bin\\cmake.exe -E rm -f libcmTC_feb17.a && D:\\ARM_GCC\\bin\\arm-none-eabi-ar.exe qc libcmTC_feb17.a CMakeFiles/cmTC_feb17.dir/CMakeCCompilerABI.c.obj && D:\\ARM_GCC\\bin\\arm-none-eabi-ranlib.exe libcmTC_feb17.a && cd ."]
ignore line: [] ignore line: []
ignore line: [] ignore line: []
implicit libs: [] implicit libs: []

File diff suppressed because one or more lines are too long

Binary file not shown.

57
drivers/hal/hal.c Normal file
View File

@ -0,0 +1,57 @@
/*
* 硬件抽象层实现
* 功能:实现硬件抽象层的初始化和操作结构体获取
* 依赖硬件STM32F407VE
* 跨平台适配点:通过不同平台的实现文件适配不同硬件
*/
#include "hal.h"
/* 前向声明平台特定的硬件抽象层实现 */
extern const hal_uart_ops_t stm32f4_uart_ops;
extern const hal_i2c_ops_t stm32f4_i2c_ops;
extern const hal_eth_ops_t stm32f4_eth_ops;
/* 硬件抽象层操作结构体 */
static const hal_ops_t hal_ops = {
.uart = &stm32f4_uart_ops,
.i2c = &stm32f4_i2c_ops,
.eth = &stm32f4_eth_ops
};
/**
* @brief 硬件抽象层初始化
* @return hal_status_t: 操作结果
* @note 初始化所有硬件抽象层组件
*/
hal_status_t hal_init(void)
{
hal_status_t status = HAL_STATUS_OK;
/* 初始化串口 */
if (hal_ops.uart->init(HAL_UART_BAUDRATE_115200) != HAL_STATUS_OK) {
status = HAL_STATUS_ERROR;
}
/* 初始化I2C */
if (hal_ops.i2c->init(HAL_I2C_CLOCK_SPEED_100K) != HAL_STATUS_OK) {
status = HAL_STATUS_ERROR;
}
/* 初始化以太网 */
if (hal_ops.eth->init() != HAL_STATUS_OK) {
status = HAL_STATUS_ERROR;
}
return status;
}
/**
* @brief 获取硬件抽象层操作结构体
* @return const hal_ops_t*: 硬件抽象层操作结构体指针
* @note 返回硬件抽象层操作结构体,用于访问各种硬件操作
*/
const hal_ops_t *hal_get_ops(void)
{
return &hal_ops;
}

74
drivers/hal/hal.h Normal file
View File

@ -0,0 +1,74 @@
/*
* 硬件抽象层通用接口
* 功能定义硬件抽象层的通用接口包括串口、I2C和以太网驱动
* 依赖硬件STM32F407VE
* 跨平台适配点:通过不同平台的实现文件适配不同硬件
*/
#ifndef HAL_H
#define HAL_H
#include <stdint.h>
#include "osal.h"
/* 硬件抽象层错误码 */
typedef enum {
HAL_STATUS_OK = 0,
HAL_STATUS_ERROR = -1,
HAL_STATUS_BUSY = -2,
HAL_STATUS_TIMEOUT = -3
} hal_status_t;
/* 串口波特率定义 */
typedef enum {
HAL_UART_BAUDRATE_9600 = 9600,
HAL_UART_BAUDRATE_115200 = 115200,
HAL_UART_BAUDRATE_460800 = 460800,
HAL_UART_BAUDRATE_921600 = 921600
} hal_uart_baudrate_t;
/* I2C时钟速度定义 */
typedef enum {
HAL_I2C_CLOCK_SPEED_100K = 100000,
HAL_I2C_CLOCK_SPEED_400K = 400000
} hal_i2c_clock_speed_t;
/* 串口硬件抽象层接口 */
typedef struct {
hal_status_t (*init)(hal_uart_baudrate_t baudrate);
hal_status_t (*deinit)(void);
hal_status_t (*send)(const uint8_t *data, uint32_t len);
hal_status_t (*recv)(uint8_t *data, uint32_t len, uint32_t timeout);
} hal_uart_ops_t;
/* I2C硬件抽象层接口 */
typedef struct {
hal_status_t (*init)(hal_i2c_clock_speed_t clock_speed);
hal_status_t (*deinit)(void);
hal_status_t (*master_transmit)(uint16_t dev_addr, const uint8_t *data, uint32_t len, uint32_t timeout);
hal_status_t (*master_receive)(uint16_t dev_addr, uint8_t *data, uint32_t len, uint32_t timeout);
} hal_i2c_ops_t;
/* 以太网硬件抽象层接口 */
typedef struct {
hal_status_t (*init)(void);
hal_status_t (*deinit)(void);
hal_status_t (*send)(const uint8_t *data, uint32_t len);
hal_status_t (*recv)(uint8_t *data, uint32_t *len, uint32_t timeout);
hal_status_t (*get_link_status)(void);
} hal_eth_ops_t;
/* 硬件抽象层操作结构体 */
typedef struct {
const hal_uart_ops_t *uart;
const hal_i2c_ops_t *i2c;
const hal_eth_ops_t *eth;
} hal_ops_t;
/* 硬件抽象层初始化函数 */
extern hal_status_t hal_init(void);
/* 获取硬件抽象层操作结构体 */
extern const hal_ops_t *hal_get_ops(void);
#endif /* HAL_H */

View File

@ -0,0 +1,444 @@
/*
* STM32F4以太网硬件抽象层实现
* 功能实现STM32F4平台的以太网硬件抽象层
* 依赖硬件STM32F407VE
* 跨平台适配点:通过硬件抽象层接口适配不同平台
*/
#include "hal.h"
#include "stm32f4xx_hal.h"
#include "lwip/opt.h"
#include "lwip/mem.h"
#include "lwip/memp.h"
#include "lwip/timeouts.h"
#include "netif/etharp.h"
#include "lwip/ethip6.h"
#include <string.h>
/* 以太网句柄 */
static ETH_HandleTypeDef heth;
static uint32_t g_phy_address = 0; /* 存储PHY地址 */
static uint32_t g_last_link_check_time = 0; /* 上次链接状态检测时间 */
static uint32_t g_link_check_interval = 1000; /* 链接状态检测间隔 (ms) */
static uint8_t g_link_state_stable = 0; /* 链接状态稳定性标志 */
static uint8_t g_link_state_counter = 0; /* 链接状态计数器,用于防抖 */
/* DMA描述符和缓冲区 */
/* 优化缓冲区对齐方式,提高内存访问效率 */
__attribute__((section(".RxDecripSection"))) __attribute__((aligned(32))) static ETH_DMADescTypeDef DMARxDscrTab[ETH_RXBUFNB];
__attribute__((section(".TxDecripSection"))) __attribute__((aligned(32))) static ETH_DMADescTypeDef DMATxDscrTab[ETH_TXBUFNB];
__attribute__((section(".RxArraySection"))) __attribute__((aligned(32))) static uint8_t Rx_Buff[ETH_RXBUFNB][ETH_RX_BUF_SIZE];
__attribute__((section(".TxArraySection"))) __attribute__((aligned(32))) static uint8_t Tx_Buff[ETH_TXBUFNB][ETH_TX_BUF_SIZE];
/* 信号量 */
static osal_sem_t s_xSemaphore = NULL;
/**
* @brief 检测并配置PHY
* @return HAL_StatusTypeDef: 操作结果
* @note 负责检测PHY地址并进行配置
*/
static hal_status_t detect_and_configure_phy(void)
{
uint32_t phy_id1 = 0, phy_id2 = 0;
uint8_t detected_phy_addr = 0xFF; /* 无效的初始值 */
uint32_t regvalue;
/* 优先检查常见的PHY地址减少遍历次数 */
uint8_t common_phy_addresses[] = {0, 1, 2, 3, 16, 17, 18, 19, 20};
uint8_t common_phy_count = sizeof(common_phy_addresses) / sizeof(common_phy_addresses[0]);
/* 先检查常见地址 */
for(uint8_t i = 0; i < common_phy_count; i++) {
uint8_t addr = common_phy_addresses[i];
/* 读取PHY ID寄存器通常是Reg 2和3 */
if(HAL_ETH_ReadPHYRegister(&heth, addr, 2, &phy_id1) == HAL_OK &&
HAL_ETH_ReadPHYRegister(&heth, addr, 3, &phy_id2) == HAL_OK) {
if((phy_id1 != 0xFFFF) && (phy_id1 != 0x0000) && (phy_id1 != 0)) {
detected_phy_addr = addr;
osal_log_i("Found PHY at Address %d (ID: %04x %04x)", addr, phy_id1, phy_id2);
goto phy_found;
}
}
}
/* 如果常见地址没找到,再遍历所有可能的地址 */
for(uint8_t addr = 0; addr <= 31; addr++) {
/* 跳过已经检查过的常见地址 */
uint8_t skip = 0;
for(uint8_t i = 0; i < common_phy_count; i++) {
if(addr == common_phy_addresses[i]) {
skip = 1;
break;
}
}
if(skip) continue;
/* 读取PHY ID寄存器通常是Reg 2和3 */
if(HAL_ETH_ReadPHYRegister(&heth, addr, 2, &phy_id1) == HAL_OK &&
HAL_ETH_ReadPHYRegister(&heth, addr, 3, &phy_id2) == HAL_OK) {
if((phy_id1 != 0xFFFF) && (phy_id1 != 0x0000) && (phy_id1 != 0)) {
detected_phy_addr = addr;
osal_log_i("Found PHY at Address %d (ID: %04x %04x)", addr, phy_id1, phy_id2);
goto phy_found;
}
}
}
phy_found:
if (detected_phy_addr != 0xFF)
{
g_phy_address = detected_phy_addr;
/* PHY软复位 */
osal_log_i("Resetting PHY at address %d...", g_phy_address);
/* 写入复位位 */
HAL_ETH_WritePHYRegister(&heth, g_phy_address, PHY_BCR, PHY_RESET);
/* 等待复位完成 */
uint32_t tickstart = osal_tick_get();
uint32_t reset_timeout = 200; // 优化为200ms超时
do {
HAL_ETH_ReadPHYRegister(&heth, g_phy_address, PHY_BCR, &regvalue);
if((regvalue & PHY_RESET) == 0) break;
} while ((osal_tick_get() - tickstart) < reset_timeout); // 200ms超时
/* 添加延迟以确保PHY稳定 */
osal_thread_mdelay(50); // 优化为50ms延迟
return HAL_STATUS_OK;
}
else
{
osal_log_e("No PHY found!");
return HAL_STATUS_ERROR;
}
}
/**
* @brief 配置MAC
* @param macConf: MAC配置结构体指针
* @return 无
* @note 负责配置MAC的双工模式、速度和校验和等
*/
static void configure_mac(ETH_MACConfigTypeDef *macConf)
{
HAL_ETH_GetMACConfig(&heth, macConf);
macConf->DuplexMode = ETH_FULLDUPLEX_MODE;
macConf->Speed = ETH_SPEED_100M;
macConf->ChecksumOffload = ENABLE; /* 启用硬件校验和 */
HAL_ETH_SetMACConfig(&heth, macConf);
}
/**
* @brief 以太网初始化
* @return hal_status_t: 操作结果
* @note 初始化以太网硬件
*/
static hal_status_t stm32f4_eth_init(void)
{
/* 使用固定MAC地址避免冲突/过滤 */
uint8_t macaddress[6] = { 0x00, 0x80, 0xE1, 0x00, 0x00, 0x55 };
ETH_MACConfigTypeDef macConf;
HAL_StatusTypeDef hal_eth_init_status;
osal_log_i("MAC: %02x:%02x:%02x:%02x:%02x:%02x",
macaddress[0], macaddress[1], macaddress[2],
macaddress[3], macaddress[4], macaddress[5]);
/* 初始化ETH句柄 */
heth.Instance = ETH;
heth.Init.MACAddr = macaddress;
heth.Init.MediaInterface = ETH_MEDIA_INTERFACE_RMII;
heth.Init.TxDesc = DMATxDscrTab;
heth.Init.RxDesc = DMARxDscrTab;
heth.Init.RxBuffLen = ETH_RX_BUF_SIZE;
/* 初始化ETHMAC、DMA、GPIO通过MSP以启用MDC/MDIO */
hal_eth_init_status = HAL_ETH_Init(&heth);
if (hal_eth_init_status == HAL_OK)
{
/* 检测并配置PHY */
if (detect_and_configure_phy() == HAL_STATUS_OK)
{
/* 配置MAC */
configure_mac(&macConf);
/* 手动启用混杂模式,因为它不在结构体中 */
heth.Instance->MACFFR |= ETH_MACFFR_PM;
/* 启动ETH中断 */
HAL_ETH_Start_IT(&heth);
/* 创建信号量 */
s_xSemaphore = osal_sem_create("eth_sem", 0);
return HAL_STATUS_OK;
}
}
else
{
osal_log_e("HAL_ETH_Init failed");
}
return HAL_STATUS_ERROR;
}
/**
* @brief 以太网反初始化
* @return hal_status_t: 操作结果
* @note 反初始化以太网硬件
*/
static hal_status_t stm32f4_eth_deinit(void)
{
/* 停止ETH */
HAL_ETH_Stop(&heth);
/* 反初始化ETH */
if (HAL_ETH_DeInit(&heth) != HAL_OK) {
return HAL_STATUS_ERROR;
}
/* 删除信号量 */
if (s_xSemaphore != NULL) {
osal_sem_delete(s_xSemaphore);
s_xSemaphore = NULL;
}
return HAL_STATUS_OK;
}
/**
* @brief 以太网发送数据
* @param data: 数据指针
* @param len: 数据长度
* @return hal_status_t: 操作结果
* @note 发送数据
*/
static hal_status_t stm32f4_eth_send(const uint8_t *data, uint32_t len)
{
ETH_TxPacketConfigTypeDef txConfig;
ETH_BufferTypeDef txBuffer;
memset(&txConfig, 0, sizeof(ETH_TxPacketConfigTypeDef));
/* 启用硬件校验和插入 */
txConfig.Attributes = ETH_TX_PACKETS_FEATURES_CSUM | ETH_TX_PACKETS_FEATURES_CRCPAD;
txConfig.ChecksumCtrl = ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC;
txConfig.CRCPadCtrl = ETH_CRC_PAD_INSERT;
txBuffer.buffer = (uint8_t*)data;
txBuffer.len = len;
txBuffer.next = NULL;
txConfig.Length = len;
txConfig.TxBuffer = &txBuffer;
if (HAL_ETH_Transmit(&heth, &txConfig, 10) == HAL_OK) {
return HAL_STATUS_OK;
} else {
return HAL_STATUS_ERROR;
}
}
/**
* @brief 以太网接收数据
* @param data: 数据指针
* @param len: 数据长度指针
* @param timeout: 超时时间
* @return hal_status_t: 操作结果
* @note 接收数据
*/
static hal_status_t stm32f4_eth_recv(uint8_t *data, uint32_t *len, uint32_t timeout)
{
uint8_t *buffer = NULL;
uint32_t rxLength = 0;
if (s_xSemaphore == NULL) {
return HAL_STATUS_ERROR;
}
if (osal_sem_take(s_xSemaphore, timeout) != OSAL_OK) {
return HAL_STATUS_TIMEOUT;
}
if (HAL_ETH_ReadData(&heth, (void**)&buffer) == HAL_OK)
{
/* Get the received frame length from Rx descriptor list */
rxLength = heth.RxDescList.RxDataLength;
if (rxLength > 0 && buffer != NULL && data != NULL && len != NULL) {
memcpy(data, buffer, rxLength);
*len = rxLength;
return HAL_STATUS_OK;
}
}
return HAL_STATUS_ERROR;
}
/**
* @brief 获取以太网链接状态
* @return hal_status_t: 操作结果
* @note 获取以太网链接状态
*/
static hal_status_t stm32f4_eth_get_link_status(void)
{
uint32_t regvalue = 0;
uint32_t current_time = osal_tick_get();
/* 实现时间间隔控制减少PHY寄存器读取 */
if ((current_time - g_last_link_check_time) < g_link_check_interval)
{
return g_link_state_stable ? HAL_STATUS_OK : HAL_STATUS_ERROR;
}
g_last_link_check_time = current_time;
/* 检查PHY地址是否有效 */
if (g_phy_address == 0 || g_phy_address > 31) {
osal_log_e("Invalid PHY address: %d", g_phy_address);
g_link_state_stable = 0;
g_link_state_counter = 0;
return HAL_STATUS_ERROR;
}
/* 使用配置的PHY地址读取状态寄存器 */
HAL_StatusTypeDef status = HAL_ETH_ReadPHYRegister(&heth, g_phy_address, PHY_BSR, &regvalue);
if (status != HAL_OK) {
osal_log_e("Failed to read PHY register, status=%d", status);
g_link_state_counter--;
if (g_link_state_counter <= 0) {
g_link_state_counter = 0;
g_link_state_stable = 0;
}
return HAL_STATUS_ERROR;
}
osal_log_i("PHY BSR=0x%04x, LinkStatus=%d", regvalue, (regvalue & PHY_LINKED_STATUS) != 0);
if ((regvalue & PHY_LINKED_STATUS) != 0)
{
/* 链接状态防抖 */
g_link_state_counter++;
if (g_link_state_counter >= 3) /* 连续3次检测到链接状态为up */
{
g_link_state_stable = 1;
}
return HAL_STATUS_OK;
}
else
{
/* 链接状态防抖 */
g_link_state_counter--;
if (g_link_state_counter <= 0) /* 连续3次检测到链接状态为down */
{
g_link_state_counter = 0;
g_link_state_stable = 0;
}
return HAL_STATUS_ERROR;
}
}
/* 以太网硬件抽象层操作结构体 */
const hal_eth_ops_t stm32f4_eth_ops = {
.init = stm32f4_eth_init,
.deinit = stm32f4_eth_deinit,
.send = stm32f4_eth_send,
.recv = stm32f4_eth_recv,
.get_link_status = stm32f4_eth_get_link_status
};
/**
* @brief 以太网Rx完成回调
* @param heth: 以太网句柄
* @return 无
* @note 以太网接收完成回调函数
*/
void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *heth)
{
(void)heth;
if (s_xSemaphore != NULL)
{
osal_sem_release(s_xSemaphore);
}
}
/**
* @brief 以太网Rx分配回调
* @param buff: 缓冲区指针
* @return 无
* @note 以太网接收缓冲区分配回调函数
*/
void HAL_ETH_RxAllocateCallback(uint8_t **buff)
{
static int rx_idx = 0;
*buff = Rx_Buff[rx_idx];
rx_idx = (rx_idx + 1) % ETH_RXBUFNB;
}
/**
* @brief 以太网Rx链接回调
* @param pStart: 开始指针
* @param pEnd: 结束指针
* @param buff: 缓冲区指针
* @param Length: 长度
* @return 无
* @note 以太网接收链接回调函数
*/
void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length)
{
(void)Length;
*pStart = (void *)buff;
*pEnd = (void *)buff;
}
/**
* @brief 以太网中断处理函数
* @return 无
* @note 以太网中断处理函数
*/
void ETH_IRQHandler(void)
{
/* 直接调用HAL中断处理函数不使用全局临界区
* HAL_ETH_IRQHandler内部已经有适当的中断保护机制
*/
HAL_ETH_IRQHandler(&heth);
}
/**
* @brief 以太网MSP初始化
* @param heth: 以太网句柄
* @return 无
* @note 初始化以太网的MSP
*/
void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)
{
(void)heth;
GPIO_InitTypeDef GPIO_InitStructure;
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_SYSCFG_CLK_ENABLE();
__HAL_RCC_ETH_CLK_ENABLE();
/* PA1, PA2, PA7 */
GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7;
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStructure.Alternate = GPIO_AF11_ETH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
/* PC1, PC4, PC5 */
GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
/* PB11, PB12, PB13 */
GPIO_InitStructure.Pin = GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13;
HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
HAL_NVIC_SetPriority(ETH_IRQn, 0x07, 0);
HAL_NVIC_EnableIRQ(ETH_IRQn);
}

View File

@ -0,0 +1,144 @@
/*
* STM32F4 I2C硬件抽象层实现
* 功能实现STM32F4平台的I2C硬件抽象层
* 依赖硬件STM32F407VE
* 跨平台适配点:通过硬件抽象层接口适配不同平台
*/
#include "hal.h"
#include "stm32f4xx_hal.h"
/* I2C句柄 */
static I2C_HandleTypeDef hi2c1;
/**
* @brief I2C初始化
* @param clock_speed: 时钟速度
* @return hal_status_t: 操作结果
* @note 初始化I2C硬件
*/
static hal_status_t stm32f4_i2c_init(hal_i2c_clock_speed_t clock_speed)
{
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = clock_speed;
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
hi2c1.Init.OwnAddress1 = 0;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hi2c1.Init.OwnAddress2 = 0;
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
if (HAL_I2C_Init(&hi2c1) != HAL_OK) {
return HAL_STATUS_ERROR;
}
return HAL_STATUS_OK;
}
/**
* @brief I2C反初始化
* @return hal_status_t: 操作结果
* @note 反初始化I2C硬件
*/
static hal_status_t stm32f4_i2c_deinit(void)
{
if (HAL_I2C_DeInit(&hi2c1) != HAL_OK) {
return HAL_STATUS_ERROR;
}
return HAL_STATUS_OK;
}
/**
* @brief I2C主模式发送数据
* @param dev_addr: 设备地址
* @param data: 数据指针
* @param len: 数据长度
* @param timeout: 超时时间
* @return hal_status_t: 操作结果
* @note 发送数据,使用阻塞方式
*/
static hal_status_t stm32f4_i2c_master_transmit(uint16_t dev_addr, const uint8_t *data, uint32_t len, uint32_t timeout)
{
if (HAL_I2C_Master_Transmit(&hi2c1, dev_addr, (uint8_t *)data, len, timeout) != HAL_OK) {
return HAL_STATUS_ERROR;
}
return HAL_STATUS_OK;
}
/**
* @brief I2C主模式接收数据
* @param dev_addr: 设备地址
* @param data: 数据指针
* @param len: 数据长度
* @param timeout: 超时时间
* @return hal_status_t: 操作结果
* @note 接收数据,使用阻塞方式
*/
static hal_status_t stm32f4_i2c_master_receive(uint16_t dev_addr, uint8_t *data, uint32_t len, uint32_t timeout)
{
if (HAL_I2C_Master_Receive(&hi2c1, dev_addr, data, len, timeout) != HAL_OK) {
return HAL_STATUS_ERROR;
}
return HAL_STATUS_OK;
}
/* I2C硬件抽象层操作结构体 */
const hal_i2c_ops_t stm32f4_i2c_ops = {
.init = stm32f4_i2c_init,
.deinit = stm32f4_i2c_deinit,
.master_transmit = stm32f4_i2c_master_transmit,
.master_receive = stm32f4_i2c_master_receive
};
/**
* @brief I2C MSP初始化
* @param i2cHandle: I2C句柄
* @return 无
* @note 初始化I2C的MSP
*/
void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(i2cHandle->Instance==I2C1)
{
/* I2C1 clock enable */
__HAL_RCC_I2C1_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/**I2C1 GPIO Configuration
PB6 ------> I2C1_SCL
PB7 ------> I2C1_SDA
*/
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
}
/**
* @brief I2C MSP反初始化
* @param i2cHandle: I2C句柄
* @return 无
* @note 反初始化I2C的MSP
*/
void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)
{
if(i2cHandle->Instance==I2C1)
{
/* Peripheral clock disable */
__HAL_RCC_I2C1_CLK_DISABLE();
/**I2C1 GPIO Configuration
PB6 ------> I2C1_SCL
PB7 ------> I2C1_SDA
*/
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
}
}

View File

@ -0,0 +1,140 @@
/*
* STM32F4串口硬件抽象层实现
* 功能实现STM32F4平台的串口硬件抽象层
* 依赖硬件STM32F407VE
* 跨平台适配点:通过硬件抽象层接口适配不同平台
*/
#include "hal.h"
#include "stm32f4xx_hal.h"
/* 串口句柄 */
static UART_HandleTypeDef huart1;
/**
* @brief 串口初始化
* @param baudrate: 波特率
* @return hal_status_t: 操作结果
* @note 初始化串口硬件
*/
static hal_status_t stm32f4_uart_init(hal_uart_baudrate_t baudrate)
{
huart1.Instance = USART1;
huart1.Init.BaudRate = baudrate;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart1) != HAL_OK) {
return HAL_STATUS_ERROR;
}
return HAL_STATUS_OK;
}
/**
* @brief 串口反初始化
* @return hal_status_t: 操作结果
* @note 反初始化串口硬件
*/
static hal_status_t stm32f4_uart_deinit(void)
{
if (HAL_UART_DeInit(&huart1) != HAL_OK) {
return HAL_STATUS_ERROR;
}
return HAL_STATUS_OK;
}
/**
* @brief 串口发送数据
* @param data: 数据指针
* @param len: 数据长度
* @return hal_status_t: 操作结果
* @note 发送数据,使用阻塞方式
*/
static hal_status_t stm32f4_uart_send(const uint8_t *data, uint32_t len)
{
if (HAL_UART_Transmit(&huart1, (uint8_t *)data, len, 1000) != HAL_OK) {
return HAL_STATUS_ERROR;
}
return HAL_STATUS_OK;
}
/**
* @brief 串口接收数据
* @param data: 数据指针
* @param len: 数据长度
* @param timeout: 超时时间
* @return hal_status_t: 操作结果
* @note 接收数据,使用阻塞方式
*/
static hal_status_t stm32f4_uart_recv(uint8_t *data, uint32_t len, uint32_t timeout)
{
if (HAL_UART_Receive(&huart1, data, len, timeout) != HAL_OK) {
return HAL_STATUS_ERROR;
}
return HAL_STATUS_OK;
}
/* 串口硬件抽象层操作结构体 */
const hal_uart_ops_t stm32f4_uart_ops = {
.init = stm32f4_uart_init,
.deinit = stm32f4_uart_deinit,
.send = stm32f4_uart_send,
.recv = stm32f4_uart_recv
};
/**
* @brief UART MSP初始化
* @param uartHandle: UART句柄
* @return 无
* @note 初始化UART的MSP
*/
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(uartHandle->Instance==USART1)
{
/* USART1 clock enable */
__HAL_RCC_USART1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
}
/**
* @brief UART MSP反初始化
* @param uartHandle: UART句柄
* @return 无
* @note 反初始化UART的MSP
*/
void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
{
if(uartHandle->Instance==USART1)
{
/* Peripheral clock disable */
__HAL_RCC_USART1_CLK_DISABLE();
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
}
}

125
log.txt Normal file
View File

@ -0,0 +1,125 @@
[Info] MAC: 00:80:e1:00:00:55
[Info] Found PHY at Address 1 (ID: 0007 c0f1)
[Info] Resetting PHY at address 1...
[Debug] Hardware abstraction layer initialized
[Info] Main: OSAL Log Level = 4
[Info] Test osal_log_i from main
[Debug] Initializing application components...
[Info] Event queue initialized
[Debug] Event queue initialized
[Info] Event handler initialized
[Debug] Event handler initialized
[Info] Transaction management initialized
[Debug] Transaction management initialized
[Info] State manager initialized
[Debug] State manager initialized
[Info] Error handler initialized
[Debug] Error handler initialized
[Info] Event handler registered for type 1
[Info] Event handler registered for type 2
[Info] Event handler registered for type 3
[Info] Event handler registered for type 4
[Info] Event handler registered for type 5
[Info] Event handler registered for type 7
[Info] Event handler registered for type 8
[Debug] Event handlers registered
[Debug] Initializing network components...
[Debug] Initializing TCP/IP stack...
[Debug] TCP/IP stack initialized.
[Debug] Network interface added
[Debug] Initializing sensors...
[Info] SHT40: Sending reset command 0x89
[Info] SHT40: Reset successful
[Info] SHT40 sensor initialized successfully
[Info] Sensor state set to 2
[Info] Performing SHT40 self-calibration using heater...
[Info] SHT40 self-calibration completed successfully
[Debug] Creating threads...
[Debug] Thread 'event_dispatch' created.
[Debug] Thread 'net_mon' created.
[Debug] Thread 'eth_input' created.
[Debug] Thread 'tcp_server' created.
[Debug] Thread 'blink' created.
[Debug] Memory Info: Total=88720, Used=12192, MaxUsed=12192
[Debug] System initialization completed. Starting OSAL...
[Info] Starting DHCP...
[Info] PHY BSR=0x7809, LinkStatus=0
.[Info] PHY BSR=0x782d, LinkStatus=1
[Info] Ethernet Link Up
[Info] Network link is up, starting DHCP...
[Info] Ethernet Link Down
.[Info] PHY BSR=0x782d, LinkStatus=1
[Info] Ethernet Link Up
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.[Info] PHY BSR=0x782d, LinkStatus=1
.
[Warning] DHCP Timeout! Fallback to Static IP.
[Debug] Processing event type 2
[Info] Handling network connected event
[Info] Network state set to 2
[Info] IP Address: 192.168.1.10
[Info] Netmask: 255.255.255.0
[Info] Gateway: 192.168.1.1
[Info] PHY BSR=0x782d, LinkStatus=1
[Info] TCP Server Starting...
[Info] TCP Server listening on port 5588
[Info] PHY BSR=0x782d, LinkStatus=1
[Info] PHY BSR=0x782d, LinkStatus=1
[Info] PHY BSR=0x782d, LinkStatus=1
[Info] PHY BSR=0x782d, LinkStatus=1
[Info] PHY BSR=0x782d, LinkStatus=1
[Info] PHY BSR=0x782d, LinkStatus=1
[Info] PHY BSR=0x782d, LinkStatus=1
[Info] PHY BSR=0x782d, LinkStatus=1
[Info] PHY BSR=0x782d, LinkStatus=1
[Info] PHY BSR=0x782d, LinkStatus=1
[Info] PHY BSR=0x782d, LinkStatus=1

View File

@ -6,314 +6,38 @@
#include "netif/etharp.h" #include "netif/etharp.h"
#include "lwip/ethip6.h" #include "lwip/ethip6.h"
#include "osal.h" #include "osal.h"
#include "hal.h"
#include <string.h> #include <string.h>
/* Ethernet Handle */ /* 硬件抽象层操作结构体 */
ETH_HandleTypeDef heth; static const hal_ops_t *hal_ops = NULL;
static uint32_t g_phy_address = 0; /* Stored PHY Address */
static uint32_t g_last_link_check_time = 0; /* 上次链接状态检测时间 */
static uint32_t g_link_check_interval = 1000; /* 链接状态检测间隔 (ms) */
static uint8_t g_link_state_stable = 0; /* 链接状态稳定性标志 */
static uint8_t g_link_state_counter = 0; /* 链接状态计数器,用于防抖 */
/* DMA Descriptors and Buffers */
/* 优化缓冲区对齐方式,提高内存访问效率 */
__attribute__((section(".RxDecripSection"))) __attribute__((aligned(32))) ETH_DMADescTypeDef DMARxDscrTab[ETH_RXBUFNB];
__attribute__((section(".TxDecripSection"))) __attribute__((aligned(32))) ETH_DMADescTypeDef DMATxDscrTab[ETH_TXBUFNB];
__attribute__((section(".RxArraySection"))) __attribute__((aligned(32))) uint8_t Rx_Buff[ETH_RXBUFNB][ETH_RX_BUF_SIZE];
__attribute__((section(".TxArraySection"))) __attribute__((aligned(32))) uint8_t Tx_Buff[ETH_TXBUFNB][ETH_TX_BUF_SIZE];
/* 缓冲区管理优化:可以根据实际网络流量调整缓冲区大小和数量 */
/* 建议值:
* - 高流量场景ETH_RXBUFNB = 8, ETH_TXBUFNB = 8
* - 低内存场景ETH_RXBUFNB = 2, ETH_TXBUFNB = 2
*/
/* Semaphore for Ethernet */
static osal_sem_t s_xSemaphore = NULL;
/* 函数声明 */
static HAL_StatusTypeDef detect_and_configure_phy(void);
static void configure_mac(ETH_MACConfigTypeDef *macConf);
/* MSP Init - Implemented in board.c */
// void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)
// {
// (void)heth;
// GPIO_InitTypeDef GPIO_InitStructure;
// __HAL_RCC_GPIOA_CLK_ENABLE();
// __HAL_RCC_GPIOB_CLK_ENABLE();
// __HAL_RCC_GPIOC_CLK_ENABLE();
// __HAL_RCC_SYSCFG_CLK_ENABLE();
// __HAL_RCC_ETH_CLK_ENABLE();
// /* PA1, PA2, PA7 */
// GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7;
// GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
// GPIO_InitStructure.Pull = GPIO_NOPULL;
// GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
// GPIO_InitStructure.Alternate = GPIO_AF11_ETH;
// HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
// /* PC1, PC4, PC5 */
// GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
// HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
// /* PB11, PB12, PB13 */
// GPIO_InitStructure.Pin = GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13;
// HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
//
// HAL_NVIC_SetPriority(ETH_IRQn, 0x07, 0);
// HAL_NVIC_EnableIRQ(ETH_IRQn);
// }
void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *heth)
{
(void)heth;
if (s_xSemaphore != NULL)
{
osal_sem_release(s_xSemaphore);
}
}
void HAL_ETH_RxAllocateCallback(uint8_t **buff)
{
static int rx_idx = 0;
*buff = Rx_Buff[rx_idx];
rx_idx = (rx_idx + 1) % ETH_RXBUFNB;
}
void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length)
{
(void)Length;
*pStart = (void *)buff;
*pEnd = (void *)buff;
}
void ETH_IRQHandler(void)
{
/* 直接调用 HAL 中断处理函数,不使用全局临界区
* HAL_ETH_IRQHandler 内部已经有适当的中断保护机制
*/
HAL_ETH_IRQHandler(&heth);
}
/**
* @brief 以太网硬件初始化函数
* @param netif: 网络接口结构体指针
* @return 无
* @note 负责初始化以太网硬件包括MAC、DMA、PHY等
*/
static void low_level_init(struct netif *netif)
{
/* Use a fixed MAC address to avoid conflicts/filtering */
uint8_t macaddress[6] = { 0x00, 0x80, 0xE1, 0x00, 0x00, 0x55 };
ETH_MACConfigTypeDef macConf;
HAL_StatusTypeDef hal_eth_init_status;
/* Generate MAC address from UID */
/*
uint32_t uid0 = HAL_GetUIDw0();
uint32_t uid1 = HAL_GetUIDw1();
uint32_t uid2 = HAL_GetUIDw2();
macaddress[0] = 0x02;
macaddress[1] = 0x80;
macaddress[2] = 0xE1;
macaddress[3] = (uid0 >> 16) & 0xFF;
macaddress[4] = (uid1 >> 8) & 0xFF;
macaddress[5] = uid2 & 0xFF;
*/
osal_log_i("MAC: %02x:%02x:%02x:%02x:%02x:%02x",
macaddress[0], macaddress[1], macaddress[2],
macaddress[3], macaddress[4], macaddress[5]);
/* 初始化 ETH 句柄 */
heth.Instance = ETH;
heth.Init.MACAddr = macaddress;
heth.Init.MediaInterface = ETH_MEDIA_INTERFACE_RMII;
heth.Init.TxDesc = DMATxDscrTab;
heth.Init.RxDesc = DMARxDscrTab;
heth.Init.RxBuffLen = ETH_RX_BUF_SIZE;
/* Initialize ETH (MAC, DMA, GPIOs via MSP) first to enable MDC/MDIO */
hal_eth_init_status = HAL_ETH_Init(&heth);
if (hal_eth_init_status == HAL_OK)
{
/* 检测并配置 PHY */
if (detect_and_configure_phy() == HAL_OK)
{
netif->flags |= NETIF_FLAG_LINK_UP;
}
}
else
{
osal_log_e("HAL_ETH_Init failed");
}
/* 配置 MAC */
configure_mac(&macConf);
/* Enable Promiscuous Mode manually as it's not in the struct */
heth.Instance->MACFFR |= ETH_MACFFR_PM;
/* 启动 ETH 中断 */
HAL_ETH_Start_IT(&heth);
/* 创建信号量 */
s_xSemaphore = osal_sem_create("eth_sem", 0);
/* 配置网络接口 */
netif->hwaddr_len = 6;
memcpy(netif->hwaddr, macaddress, 6);
netif->mtu = 1500;
netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
#if LWIP_IPV6
netif->flags |= NETIF_FLAG_IGMP;
#endif
}
/**
* @brief 检测并配置 PHY
* @return HAL_StatusTypeDef: 操作结果
* @note 负责检测 PHY 地址并进行配置
*/
static HAL_StatusTypeDef detect_and_configure_phy(void)
{
uint32_t phy_id1 = 0, phy_id2 = 0;
uint8_t detected_phy_addr = 0xFF; /* Invalid initial value */
uint32_t regvalue;
/* Step 1: PHY address detection */
osal_log_i("Detecting PHY Address...");
/* 优先检查常见的 PHY 地址,减少遍历次数 */
uint8_t common_phy_addresses[] = {0, 1, 2, 3, 16, 17, 18, 19, 20};
uint8_t common_phy_count = sizeof(common_phy_addresses) / sizeof(common_phy_addresses[0]);
/* 先检查常见地址 */
for(uint8_t i = 0; i < common_phy_count; i++) {
uint8_t addr = common_phy_addresses[i];
/* Read PHY ID registers (typically Reg 2 and 3) */
if(HAL_ETH_ReadPHYRegister(&heth, addr, 2, &phy_id1) == HAL_OK &&
HAL_ETH_ReadPHYRegister(&heth, addr, 3, &phy_id2) == HAL_OK) {
if((phy_id1 != 0xFFFF) && (phy_id1 != 0x0000) && (phy_id1 != 0)) {
detected_phy_addr = addr;
osal_log_i("Found PHY at Address %d (ID: %04x %04x)", addr, phy_id1, phy_id2);
goto phy_found;
}
}
}
/* 如果常见地址没找到,再遍历所有可能的地址 */
for(uint8_t addr = 0; addr <= 31; addr++) {
/* 跳过已经检查过的常见地址 */
uint8_t skip = 0;
for(uint8_t i = 0; i < common_phy_count; i++) {
if(addr == common_phy_addresses[i]) {
skip = 1;
break;
}
}
if(skip) continue;
/* Read PHY ID registers (typically Reg 2 and 3) */
if(HAL_ETH_ReadPHYRegister(&heth, addr, 2, &phy_id1) == HAL_OK &&
HAL_ETH_ReadPHYRegister(&heth, addr, 3, &phy_id2) == HAL_OK) {
if((phy_id1 != 0xFFFF) && (phy_id1 != 0x0000) && (phy_id1 != 0)) {
detected_phy_addr = addr;
osal_log_i("Found PHY at Address %d (ID: %04x %04x)", addr, phy_id1, phy_id2);
goto phy_found;
}
}
}
phy_found:
if (detected_phy_addr != 0xFF)
{
g_phy_address = detected_phy_addr;
/* Step 2: PHY Soft Reset */
osal_log_i("Resetting PHY...");
/* Write Reset Bit */
HAL_ETH_WritePHYRegister(&heth, g_phy_address, PHY_BCR, PHY_RESET);
/* Wait for Reset to clear */
uint32_t tickstart = osal_tick_get();
uint32_t reset_timeout = 200; // 优化为 200ms 超时
do {
HAL_ETH_ReadPHYRegister(&heth, g_phy_address, PHY_BCR, &regvalue);
if((regvalue & PHY_RESET) == 0) break;
} while ((osal_tick_get() - tickstart) < reset_timeout); // 200ms timeout
/* Add a delay to ensure PHY is stable */
osal_thread_mdelay(50); // 优化为 50ms 延迟
return HAL_OK;
}
else
{
osal_log_e("No PHY found!");
return HAL_ERROR;
}
}
/**
* @brief 配置 MAC
* @param macConf: MAC 配置结构体指针
* @return 无
* @note 负责配置 MAC 的双工模式、速度和校验和等
*/
static void configure_mac(ETH_MACConfigTypeDef *macConf)
{
HAL_ETH_GetMACConfig(&heth, macConf);
macConf->DuplexMode = ETH_FULLDUPLEX_MODE;
macConf->Speed = ETH_SPEED_100M;
macConf->ChecksumOffload = ENABLE; /* Enable HW Checksum */
HAL_ETH_SetMACConfig(&heth, macConf);
}
static err_t low_level_output(struct netif *netif, struct pbuf *p) static err_t low_level_output(struct netif *netif, struct pbuf *p)
{ {
(void)netif; (void)netif;
err_t errval; err_t errval;
struct pbuf *q; uint8_t *buffer = NULL;
ETH_TxPacketConfigTypeDef txConfig; uint32_t len = p->tot_len;
ETH_BufferTypeDef txBuffers[16];
memset(&txConfig, 0, sizeof(ETH_TxPacketConfigTypeDef)); /* 分配缓冲区 */
/* Enable Hardware Checksum Insertion */ buffer = (uint8_t *)mem_malloc(len);
txConfig.Attributes = ETH_TX_PACKETS_FEATURES_CSUM | ETH_TX_PACKETS_FEATURES_CRCPAD; if (buffer == NULL) {
txConfig.ChecksumCtrl = ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC; return ERR_MEM;
txConfig.CRCPadCtrl = ETH_CRC_PAD_INSERT;
int i = 0;
for(q = p; q != NULL; q = q->next)
{
if (i >= 16) break;
txBuffers[i].buffer = (uint8_t*)q->payload;
txBuffers[i].len = q->len;
if (q->next != NULL) {
txBuffers[i].next = &txBuffers[i+1];
} else {
txBuffers[i].next = NULL;
}
i++;
} }
txConfig.Length = p->tot_len; /* 复制数据到缓冲区 */
txConfig.TxBuffer = &txBuffers[0]; pbuf_copy_partial(p, buffer, len, 0);
if (HAL_ETH_Transmit(&heth, &txConfig, 10) == HAL_OK) { /* 使用硬件抽象层发送数据 */
if (hal_ops && hal_ops->eth && hal_ops->eth->send(buffer, len) == HAL_STATUS_OK) {
errval = ERR_OK; errval = ERR_OK;
} else { } else {
errval = ERR_IF; errval = ERR_IF;
} }
/* 释放缓冲区 */
mem_free(buffer);
return errval; return errval;
} }
@ -324,36 +48,31 @@ static struct pbuf * low_level_input(struct netif *netif)
uint8_t *buffer = NULL; uint8_t *buffer = NULL;
uint32_t rxLength = 0; uint32_t rxLength = 0;
if (HAL_ETH_ReadData(&heth, (void**)&buffer) == HAL_OK) /* 分配缓冲区 */
buffer = (uint8_t *)mem_malloc(ETH_RX_BUF_SIZE);
if (buffer == NULL) {
return NULL;
}
/* 使用硬件抽象层接收数据 */
if (hal_ops && hal_ops->eth && hal_ops->eth->recv(buffer, &rxLength, 100) == HAL_STATUS_OK)
{ {
rxLength = heth.RxDescList.RxDataLength;
// osal_log_i("Rx: rxLength=%d", rxLength);
if (rxLength > 0 && buffer != NULL) { if (rxLength > 0 && buffer != NULL) {
/* 尝试使用 PBUF_REF 模式创建 pbuf实现零拷贝 /* 尝试使用 PBUF_REF 模式创建 pbuf实现零拷贝 */
* 注意:需要确保缓冲区在 pbuf 使用期间有效 p = pbuf_alloc(PBUF_RAW, rxLength, PBUF_POOL);
*/
p = pbuf_alloc(PBUF_RAW, rxLength, PBUF_REF);
if (p != NULL) { if (p != NULL) {
/* 直接设置 pbuf 的 payload 指针,避免数据拷贝 */ pbuf_take(p, buffer, rxLength);
p->payload = buffer;
p->len = rxLength;
p->tot_len = rxLength;
// osal_log_i("Rx: p->tot_len=%d", p->tot_len);
} else { } else {
/* 如果 PBUF_REF 失败,回退到传统方式 */ osal_log_e("pbuf_alloc failed");
p = pbuf_alloc(PBUF_RAW, rxLength, PBUF_POOL);
if (p != NULL) {
pbuf_take(p, buffer, rxLength);
} else {
osal_log_e("pbuf_alloc failed");
}
} }
/* HAL_ETH_ReadData internally calls ETH_UpdateDescriptor, so descriptors are rebuilt automatically */
} }
} else { } else {
/* ReadData failed, maybe no data available */ /* ReadData failed, maybe no data available */
} }
/* 释放缓冲区 */
mem_free(buffer);
return p; return p;
} }
@ -361,25 +80,17 @@ void ethernetif_input(struct netif *netif)
{ {
struct pbuf *p; struct pbuf *p;
if (s_xSemaphore == NULL) { do {
osal_thread_mdelay(100); p = low_level_input(netif);
return; if (p != NULL)
} {
// osal_log_i("Rx: len=%d", p->tot_len); // Debug print
if (osal_sem_take(s_xSemaphore, 100) == OSAL_OK) if (netif->input(p, netif) != ERR_OK)
{
do {
p = low_level_input(netif);
if (p != NULL)
{ {
// osal_log_i("Rx: len=%d", p->tot_len); // Debug print pbuf_free(p);
if (netif->input(p, netif) != ERR_OK)
{
pbuf_free(p);
}
} }
} while(p != NULL); }
} } while(p != NULL);
} }
err_t ethernetif_init(struct netif *netif) err_t ethernetif_init(struct netif *netif)
@ -396,53 +107,38 @@ err_t ethernetif_init(struct netif *netif)
netif->output = etharp_output; netif->output = etharp_output;
netif->linkoutput = low_level_output; netif->linkoutput = low_level_output;
low_level_init(netif); /* 获取硬件抽象层操作结构体 */
hal_ops = hal_get_ops();
if (hal_ops == NULL) {
osal_log_e("Failed to get HAL ops");
return ERR_IF;
}
/* 配置网络接口 */
netif->hwaddr_len = 6;
/* MAC地址由硬件抽象层初始化 */
netif->mtu = 1500;
netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
#if LWIP_IPV6
netif->flags |= NETIF_FLAG_IGMP;
#endif
return ERR_OK; return ERR_OK;
} }
void ethernet_link_check_state(struct netif *netif) void ethernet_link_check_state(struct netif *netif)
{ {
uint32_t regvalue = 0; if (hal_ops && hal_ops->eth) {
uint32_t current_time = osal_tick_get(); if (hal_ops->eth->get_link_status() == HAL_STATUS_OK) {
if (!netif_is_link_up(netif)) {
/* 实现时间间隔控制,减少 PHY 寄存器读取 */
if ((current_time - g_last_link_check_time) < g_link_check_interval)
{
return;
}
g_last_link_check_time = current_time;
/* Use configured PHY Address */
HAL_ETH_ReadPHYRegister(&heth, g_phy_address, PHY_BSR, &regvalue);
if ((regvalue & PHY_LINKED_STATUS) != (uint16_t)RESET)
{
/* 链接状态防抖 */
g_link_state_counter++;
if (g_link_state_counter >= 3) /* 连续 3 次检测到链接状态为 up */
{
if (!netif_is_link_up(netif))
{
netif_set_link_up(netif); netif_set_link_up(netif);
osal_log_i("Ethernet Link Up"); osal_log_i("Ethernet Link Up");
} }
g_link_state_stable = 1; } else {
} if (netif_is_link_up(netif)) {
}
else
{
/* 链接状态防抖 */
g_link_state_counter--;
if (g_link_state_counter <= 0) /* 连续 3 次检测到链接状态为 down */
{
g_link_state_counter = 0;
if (netif_is_link_up(netif))
{
netif_set_link_down(netif); netif_set_link_down(netif);
osal_log_i("Ethernet Link Down"); osal_log_i("Ethernet Link Down");
} }
g_link_state_stable = 0;
} }
} }
} }

View File

@ -1,234 +0,0 @@
/*
******************************************************************************
**
** File : LinkerScript.ld
**
** Author : STM32CubeMX
**
** Abstract : Linker script for STM32F407VETx series
** 512Kbytes FLASH and 192Kbytes RAM
**
** Set heap size, stack size and stack location according
** to application requirements.
**
** Set memory bank area and size if external memory is used.
**
** Target : STMicroelectronics STM32
**
** Distribution: The file is distributed "as is," without any warranty
** of any kind.
**
*****************************************************************************
** @attention
**
** <h2><center>&copy; COPYRIGHT(c) 2025 STMicroelectronics</center></h2>
**
** Redistribution and use in source and binary forms, with or without modification,
** are permitted provided that the following conditions are met:
** 1. Redistributions of source code must retain the above copyright notice,
** this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright notice,
** this list of conditions and the following disclaimer in the documentation
** and/or other materials provided with the distribution.
** 3. Neither the name of STMicroelectronics nor the names of its contributors
** may be used to endorse or promote products derived from this software
** without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**
*****************************************************************************
*/
/* ===============================================
STM32F407VET6 链接脚本中文注释说明
=============================================== */
/* 入口点定义 */
ENTRY(Reset_Handler) /* 程序入口点:复位中断处理函数 */
/* 用户模式堆栈的最高地址 */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* 栈顶地址RAM 结束地址 */
/* 如果堆和栈无法放入 RAM将生成链接错误 */
_Min_Heap_Size = 0x200; /* 最小堆大小512 字节 */
_Min_Stack_Size = 0x400; /* 最小栈大小1024 字节 */
/* 内存区域定义 */
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K /* 主 RAM128KB可读写地址从 0x20000000 开始 */
CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K /* 核心耦合内存64KB可读写地址从 0x10000000 开始 */
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K /* 闪存512KB只读和可执行地址从 0x08000000 开始 */
}
/* 定义输出段 */
SECTIONS
{
/* 启动代码首先放入 FLASH */
.isr_vector : /* 中断向量表段 */
{
. = ALIGN(4); /* 4 字节对齐 */
KEEP(*(.isr_vector)) /* 保留中断向量表(启动代码),防止被优化掉 */
. = ALIGN(4); /* 4 字节对齐 */
} >FLASH /* 此段放入 FLASH 内存区域 */
/* 程序代码和其他数据放入 FLASH */
.text : /* 代码段 */
{
. = ALIGN(4); /* 4 字节对齐 */
*(.text) /* .text 段(代码) */
*(.text*) /* .text* 段(代码) */
*(.glue_7) /* ARM 到 Thumb 代码的粘合代码 */
*(.glue_7t) /* Thumb 到 ARM 代码的粘合代码 */
*(.eh_frame) /* 异常处理框架 */
KEEP (*(.init)) /* 保留初始化代码 */
KEEP (*(.fini)) /* 保留结束代码 */
. = ALIGN(4); /* 4 字节对齐 */
_etext = .; /* 在代码结束处定义全局符号 */
} >FLASH /* 此段放入 FLASH 内存区域 */
/* 常量数据放入 FLASH */
.rodata : /* 只读数据段 */
{
. = ALIGN(4); /* 4 字节对齐 */
*(.rodata) /* .rodata 段(常量、字符串等) */
*(.rodata*) /* .rodata* 段(常量、字符串等) */
. = ALIGN(4); /* 4 字节对齐 */
} >FLASH /* 此段放入 FLASH 内存区域 */
/* ARM 异常表扩展段 */
.ARM.extab : /* "READONLY" 关键字仅在 GCC11 及更高版本支持,使用 GCC10 或更早版本时请移除 */
{
. = ALIGN(4); /* 4 字节对齐 */
*(.ARM.extab* .gnu.linkonce.armextab.*) /* ARM 异常表扩展 */
. = ALIGN(4); /* 4 字节对齐 */
} >FLASH /* 此段放入 FLASH 内存区域 */
/* ARM 索引段 */
.ARM : /* "READONLY" 关键字仅在 GCC11 及更高版本支持,使用 GCC10 或更早版本时请移除 */
{
. = ALIGN(4); /* 4 字节对齐 */
__exidx_start = .; /* 异常索引开始 */
*(.ARM.exidx*) /* ARM 异常索引 */
__exidx_end = .; /* 异常索引结束 */
. = ALIGN(4); /* 4 字节对齐 */
} >FLASH /* 此段放入 FLASH 内存区域 */
/* 预初始化数组段 */
.preinit_array : /* "READONLY" 关键字仅在 GCC11 及更高版本支持,使用 GCC10 或更早版本时请移除 */
{
. = ALIGN(4); /* 4 字节对齐 */
PROVIDE_HIDDEN (__preinit_array_start = .); /* 提供预初始化数组开始的隐藏符号 */
KEEP (*(.preinit_array*)) /* 保留预初始化数组 */
PROVIDE_HIDDEN (__preinit_array_end = .); /* 提供预初始化数组结束的隐藏符号 */
. = ALIGN(4); /* 4 字节对齐 */
} >FLASH /* 此段放入 FLASH 内存区域 */
/* 初始化数组段 */
.init_array : /* "READONLY" 关键字仅在 GCC11 及更高版本支持,使用 GCC10 或更早版本时请移除 */
{
. = ALIGN(4); /* 4 字节对齐 */
PROVIDE_HIDDEN (__init_array_start = .); /* 提供初始化数组开始的隐藏符号 */
KEEP (*(SORT(.init_array.*))) /* 保留排序后的初始化数组 */
KEEP (*(.init_array*)) /* 保留初始化数组 */
PROVIDE_HIDDEN (__init_array_end = .); /* 提供初始化数组结束的隐藏符号 */
. = ALIGN(4); /* 4 字节对齐 */
} >FLASH /* 此段放入 FLASH 内存区域 */
/* 结束数组段 */
.fini_array : /* "READONLY" 关键字仅在 GCC11 及更高版本支持,使用 GCC10 或更早版本时请移除 */
{
. = ALIGN(4); /* 4 字节对齐 */
PROVIDE_HIDDEN (__fini_array_start = .); /* 提供结束数组开始的隐藏符号 */
KEEP (*(SORT(.fini_array.*))) /* 保留排序后的结束数组 */
KEEP (*(.fini_array*)) /* 保留结束数组 */
PROVIDE_HIDDEN (__fini_array_end = .); /* 提供结束数组结束的隐藏符号 */
. = ALIGN(4); /* 4 字节对齐 */
} >FLASH /* 此段放入 FLASH 内存区域 */
/* 用于启动时初始化数据 */
_sidata = LOADADDR(.data); /* .data 段的加载地址(在 FLASH 中的地址) */
/* 初始化数据段放入 RAM加载地址在代码之后 */
.data : /* 初始化数据段 */
{
. = ALIGN(4); /* 4 字节对齐 */
_sdata = .; /* 在数据开始处创建全局符号 */
*(.data) /* .data 段 */
*(.data*) /* .data* 段 */
*(.RamFunc) /* 要放入 RAM 执行的函数 */
*(.RamFunc*) /* 要放入 RAM 执行的函数 */
. = ALIGN(4); /* 4 字节对齐 */
_edata = .; /* 在数据结束处定义全局符号 */
} >RAM AT> FLASH /* 此段放入 RAM 内存区域,但加载地址在 FLASH 中 */
_siccmram = LOADADDR(.ccmram); /* .ccmram 段的加载地址(在 FLASH 中的地址) */
/* CCM-RAM 段
*
* 重要说明!
* 如果初始化变量将放在此段中,
* 需要修改启动代码以复制初始值。
*/
.ccmram : /* CCM-RAM 段 */
{
. = ALIGN(4); /* 4 字节对齐 */
_sccmram = .; /* 在 CCM-RAM 开始处创建全局符号 */
*(.ccmram) /* .ccmram 段 */
*(.ccmram*) /* .ccmram* 段 */
. = ALIGN(4); /* 4 字节对齐 */
_eccmram = .; /* 在 CCM-RAM 结束处创建全局符号 */
} >CCMRAM AT> FLASH /* 此段放入 CCMRAM 内存区域,但加载地址在 FLASH 中 */
/* 未初始化数据段 */
. = ALIGN(4); /* 4 字节对齐 */
.bss : /* BSS 段(未初始化数据) */
{
/* 启动代码使用此符号初始化 .bss 段 */
_sbss = .; /* 在 BSS 开始处定义全局符号 */
__bss_start__ = _sbss; /* 与 _sbss 相同,兼容不同命名 */
*(.bss) /* .bss 段 */
*(.bss*) /* .bss* 段 */
*(COMMON) /* 公共符号 */
. = ALIGN(4); /* 4 字节对齐 */
_ebss = .; /* 在 BSS 结束处定义全局符号 */
__bss_end__ = _ebss; /* 与 _ebss 相同,兼容不同命名 */
} >RAM /* 此段放入 RAM 内存区域 */
/* 用户堆和栈段,用于检查是否有足够的 RAM 剩余 */
._user_heap_stack : /* 用户堆和栈段 */
{
. = ALIGN(8); /* 8 字节对齐 */
PROVIDE ( end = . ); /* 提供 end 符号 */
PROVIDE ( _end = . ); /* 提供 _end 符号,与 end 相同 */
. = . + _Min_Heap_Size; /* 分配最小堆大小 */
. = . + _Min_Stack_Size; /* 分配最小栈大小 */
. = ALIGN(8); /* 8 字节对齐 */
} >RAM /* 此段放入 RAM 内存区域 */
/* 从标准库中移除信息 */
/DISCARD/ : /* 丢弃段 */
{
libc.a ( * ) /* 丢弃标准 C 库的所有信息 */
libm.a ( * ) /* 丢弃标准数学库的所有信息 */
libgcc.a ( * ) /* 丢弃 GCC 库的所有信息 */
}
}

View File

@ -1,521 +0,0 @@
/**
******************************************************************************
* @file startup_stm32f407xx.s
* @author MCD Application Team
* @brief STM32F407xx Devices vector table for GCC based toolchains.
* This module performs:
* - Set the initial SP
* - Set the initial PC == Reset_Handler,
* - Set the vector table entries with the exceptions ISR address
* - Branches to main in the C library (which eventually
* calls main()).
* After Reset the Cortex-M4 processor is in Thread mode,
* priority is Privileged, and the Stack is set to Main.
******************************************************************************
* @attention
*
* <h2><center>&copy; COPYRIGHT 2017 STMicroelectronics</center></h2>
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************
*/
.syntax unified
.cpu cortex-m4
.fpu softvfp
.thumb
.global g_pfnVectors
.global Default_Handler
/* start address for the initialization values of the .data section.
defined in linker script */
.word _sidata
/* start address for the .data section. defined in linker script */
.word _sdata
/* end address for the .data section. defined in linker script */
.word _edata
/* start address for the .bss section. defined in linker script */
.word _sbss
/* end address for the .bss section. defined in linker script */
.word _ebss
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */
/**
* @brief This is the code that gets called when the processor first
* starts execution following a reset event. Only the absolutely
* necessary set is performed, after which the application
* supplied main() routine is called.
* @param None
* @retval : None
*/
.section .text.Reset_Handler
.weak Reset_Handler
.type Reset_Handler, %function
Reset_Handler:
ldr sp, =_estack /* set stack pointer */
/* Copy the data segment initializers from flash to SRAM */
movs r1, #0
b LoopCopyDataInit
CopyDataInit:
ldr r3, =_sidata
ldr r3, [r3, r1]
str r3, [r0, r1]
adds r1, r1, #4
LoopCopyDataInit:
ldr r0, =_sdata
ldr r3, =_edata
adds r2, r0, r1
cmp r2, r3
bcc CopyDataInit
ldr r2, =_sbss
b LoopFillZerobss
/* Zero fill the bss segment. */
FillZerobss:
movs r3, #0
str r3, [r2], #4
LoopFillZerobss:
ldr r3, = _ebss
cmp r2, r3
bcc FillZerobss
/* Call the clock system intitialization function.*/
bl SystemInit
/* Call static constructors */
bl __libc_init_array
/* Call the application's entry point.*/
bl main
bx lr
.size Reset_Handler, .-Reset_Handler
/**
* @brief This is the code that gets called when the processor receives an
* unexpected interrupt. This simply enters an infinite loop, preserving
* the system state for examination by a debugger.
* @param None
* @retval None
*/
.section .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
b Infinite_Loop
.size Default_Handler, .-Default_Handler
/******************************************************************************
*
* The minimal vector table for a Cortex M3. Note that the proper constructs
* must be placed on this to ensure that it ends up at physical address
* 0x0000.0000.
*
*******************************************************************************/
.section .isr_vector,"a",%progbits
.type g_pfnVectors, %object
.size g_pfnVectors, .-g_pfnVectors
g_pfnVectors:
.word _estack
.word Reset_Handler
.word NMI_Handler
.word HardFault_Handler
.word MemManage_Handler
.word BusFault_Handler
.word UsageFault_Handler
.word 0
.word 0
.word 0
.word 0
.word SVC_Handler
.word DebugMon_Handler
.word 0
.word PendSV_Handler
.word SysTick_Handler
/* External Interrupts */
.word WWDG_IRQHandler /* Window WatchDog */
.word PVD_IRQHandler /* PVD through EXTI Line detection */
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */
.word FLASH_IRQHandler /* FLASH */
.word RCC_IRQHandler /* RCC */
.word EXTI0_IRQHandler /* EXTI Line0 */
.word EXTI1_IRQHandler /* EXTI Line1 */
.word EXTI2_IRQHandler /* EXTI Line2 */
.word EXTI3_IRQHandler /* EXTI Line3 */
.word EXTI4_IRQHandler /* EXTI Line4 */
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */
.word CAN1_TX_IRQHandler /* CAN1 TX */
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */
.word CAN1_SCE_IRQHandler /* CAN1 SCE */
.word EXTI9_5_IRQHandler /* External Line[9:5]s */
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */
.word TIM2_IRQHandler /* TIM2 */
.word TIM3_IRQHandler /* TIM3 */
.word TIM4_IRQHandler /* TIM4 */
.word I2C1_EV_IRQHandler /* I2C1 Event */
.word I2C1_ER_IRQHandler /* I2C1 Error */
.word I2C2_EV_IRQHandler /* I2C2 Event */
.word I2C2_ER_IRQHandler /* I2C2 Error */
.word SPI1_IRQHandler /* SPI1 */
.word SPI2_IRQHandler /* SPI2 */
.word USART1_IRQHandler /* USART1 */
.word USART2_IRQHandler /* USART2 */
.word USART3_IRQHandler /* USART3 */
.word EXTI15_10_IRQHandler /* External Line[15:10]s */
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */
.word FSMC_IRQHandler /* FSMC */
.word SDIO_IRQHandler /* SDIO */
.word TIM5_IRQHandler /* TIM5 */
.word SPI3_IRQHandler /* SPI3 */
.word UART4_IRQHandler /* UART4 */
.word UART5_IRQHandler /* UART5 */
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */
.word TIM7_IRQHandler /* TIM7 */
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */
.word ETH_IRQHandler /* Ethernet */
.word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */
.word CAN2_TX_IRQHandler /* CAN2 TX */
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */
.word CAN2_SCE_IRQHandler /* CAN2 SCE */
.word OTG_FS_IRQHandler /* USB OTG FS */
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */
.word USART6_IRQHandler /* USART6 */
.word I2C3_EV_IRQHandler /* I2C3 event */
.word I2C3_ER_IRQHandler /* I2C3 error */
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */
.word OTG_HS_IRQHandler /* USB OTG HS */
.word DCMI_IRQHandler /* DCMI */
.word 0 /* CRYP crypto */
.word HASH_RNG_IRQHandler /* Hash and Rng */
.word FPU_IRQHandler /* FPU */
/*******************************************************************************
*
* Provide weak aliases for each Exception handler to the Default_Handler.
* As they are weak aliases, any function with the same name will override
* this definition.
*
*******************************************************************************/
.weak NMI_Handler
.thumb_set NMI_Handler,Default_Handler
.weak HardFault_Handler
.thumb_set HardFault_Handler,Default_Handler
.weak MemManage_Handler
.thumb_set MemManage_Handler,Default_Handler
.weak BusFault_Handler
.thumb_set BusFault_Handler,Default_Handler
.weak UsageFault_Handler
.thumb_set UsageFault_Handler,Default_Handler
.weak SVC_Handler
.thumb_set SVC_Handler,Default_Handler
.weak DebugMon_Handler
.thumb_set DebugMon_Handler,Default_Handler
.weak PendSV_Handler
.thumb_set PendSV_Handler,Default_Handler
.weak SysTick_Handler
.thumb_set SysTick_Handler,Default_Handler
.weak WWDG_IRQHandler
.thumb_set WWDG_IRQHandler,Default_Handler
.weak PVD_IRQHandler
.thumb_set PVD_IRQHandler,Default_Handler
.weak TAMP_STAMP_IRQHandler
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler
.weak RTC_WKUP_IRQHandler
.thumb_set RTC_WKUP_IRQHandler,Default_Handler
.weak FLASH_IRQHandler
.thumb_set FLASH_IRQHandler,Default_Handler
.weak RCC_IRQHandler
.thumb_set RCC_IRQHandler,Default_Handler
.weak EXTI0_IRQHandler
.thumb_set EXTI0_IRQHandler,Default_Handler
.weak EXTI1_IRQHandler
.thumb_set EXTI1_IRQHandler,Default_Handler
.weak EXTI2_IRQHandler
.thumb_set EXTI2_IRQHandler,Default_Handler
.weak EXTI3_IRQHandler
.thumb_set EXTI3_IRQHandler,Default_Handler
.weak EXTI4_IRQHandler
.thumb_set EXTI4_IRQHandler,Default_Handler
.weak DMA1_Stream0_IRQHandler
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler
.weak DMA1_Stream1_IRQHandler
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler
.weak DMA1_Stream2_IRQHandler
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler
.weak DMA1_Stream3_IRQHandler
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler
.weak DMA1_Stream4_IRQHandler
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler
.weak DMA1_Stream5_IRQHandler
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler
.weak DMA1_Stream6_IRQHandler
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler
.weak ADC_IRQHandler
.thumb_set ADC_IRQHandler,Default_Handler
.weak CAN1_TX_IRQHandler
.thumb_set CAN1_TX_IRQHandler,Default_Handler
.weak CAN1_RX0_IRQHandler
.thumb_set CAN1_RX0_IRQHandler,Default_Handler
.weak CAN1_RX1_IRQHandler
.thumb_set CAN1_RX1_IRQHandler,Default_Handler
.weak CAN1_SCE_IRQHandler
.thumb_set CAN1_SCE_IRQHandler,Default_Handler
.weak EXTI9_5_IRQHandler
.thumb_set EXTI9_5_IRQHandler,Default_Handler
.weak TIM1_BRK_TIM9_IRQHandler
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler
.weak TIM1_UP_TIM10_IRQHandler
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler
.weak TIM1_TRG_COM_TIM11_IRQHandler
.thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler
.weak TIM1_CC_IRQHandler
.thumb_set TIM1_CC_IRQHandler,Default_Handler
.weak TIM2_IRQHandler
.thumb_set TIM2_IRQHandler,Default_Handler
.weak TIM3_IRQHandler
.thumb_set TIM3_IRQHandler,Default_Handler
.weak TIM4_IRQHandler
.thumb_set TIM4_IRQHandler,Default_Handler
.weak I2C1_EV_IRQHandler
.thumb_set I2C1_EV_IRQHandler,Default_Handler
.weak I2C1_ER_IRQHandler
.thumb_set I2C1_ER_IRQHandler,Default_Handler
.weak I2C2_EV_IRQHandler
.thumb_set I2C2_EV_IRQHandler,Default_Handler
.weak I2C2_ER_IRQHandler
.thumb_set I2C2_ER_IRQHandler,Default_Handler
.weak SPI1_IRQHandler
.thumb_set SPI1_IRQHandler,Default_Handler
.weak SPI2_IRQHandler
.thumb_set SPI2_IRQHandler,Default_Handler
.weak USART1_IRQHandler
.thumb_set USART1_IRQHandler,Default_Handler
.weak USART2_IRQHandler
.thumb_set USART2_IRQHandler,Default_Handler
.weak USART3_IRQHandler
.thumb_set USART3_IRQHandler,Default_Handler
.weak EXTI15_10_IRQHandler
.thumb_set EXTI15_10_IRQHandler,Default_Handler
.weak RTC_Alarm_IRQHandler
.thumb_set RTC_Alarm_IRQHandler,Default_Handler
.weak OTG_FS_WKUP_IRQHandler
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler
.weak TIM8_BRK_TIM12_IRQHandler
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler
.weak TIM8_UP_TIM13_IRQHandler
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler
.weak TIM8_TRG_COM_TIM14_IRQHandler
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler
.weak TIM8_CC_IRQHandler
.thumb_set TIM8_CC_IRQHandler,Default_Handler
.weak DMA1_Stream7_IRQHandler
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler
.weak FSMC_IRQHandler
.thumb_set FSMC_IRQHandler,Default_Handler
.weak SDIO_IRQHandler
.thumb_set SDIO_IRQHandler,Default_Handler
.weak TIM5_IRQHandler
.thumb_set TIM5_IRQHandler,Default_Handler
.weak SPI3_IRQHandler
.thumb_set SPI3_IRQHandler,Default_Handler
.weak UART4_IRQHandler
.thumb_set UART4_IRQHandler,Default_Handler
.weak UART5_IRQHandler
.thumb_set UART5_IRQHandler,Default_Handler
.weak TIM6_DAC_IRQHandler
.thumb_set TIM6_DAC_IRQHandler,Default_Handler
.weak TIM7_IRQHandler
.thumb_set TIM7_IRQHandler,Default_Handler
.weak DMA2_Stream0_IRQHandler
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler
.weak DMA2_Stream1_IRQHandler
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler
.weak DMA2_Stream2_IRQHandler
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler
.weak DMA2_Stream3_IRQHandler
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler
.weak DMA2_Stream4_IRQHandler
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler
.weak ETH_IRQHandler
.thumb_set ETH_IRQHandler,Default_Handler
.weak ETH_WKUP_IRQHandler
.thumb_set ETH_WKUP_IRQHandler,Default_Handler
.weak CAN2_TX_IRQHandler
.thumb_set CAN2_TX_IRQHandler,Default_Handler
.weak CAN2_RX0_IRQHandler
.thumb_set CAN2_RX0_IRQHandler,Default_Handler
.weak CAN2_RX1_IRQHandler
.thumb_set CAN2_RX1_IRQHandler,Default_Handler
.weak CAN2_SCE_IRQHandler
.thumb_set CAN2_SCE_IRQHandler,Default_Handler
.weak OTG_FS_IRQHandler
.thumb_set OTG_FS_IRQHandler,Default_Handler
.weak DMA2_Stream5_IRQHandler
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler
.weak DMA2_Stream6_IRQHandler
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler
.weak DMA2_Stream7_IRQHandler
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler
.weak USART6_IRQHandler
.thumb_set USART6_IRQHandler,Default_Handler
.weak I2C3_EV_IRQHandler
.thumb_set I2C3_EV_IRQHandler,Default_Handler
.weak I2C3_ER_IRQHandler
.thumb_set I2C3_ER_IRQHandler,Default_Handler
.weak OTG_HS_EP1_OUT_IRQHandler
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler
.weak OTG_HS_EP1_IN_IRQHandler
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler
.weak OTG_HS_WKUP_IRQHandler
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler
.weak OTG_HS_IRQHandler
.thumb_set OTG_HS_IRQHandler,Default_Handler
.weak DCMI_IRQHandler
.thumb_set DCMI_IRQHandler,Default_Handler
.weak HASH_RNG_IRQHandler
.thumb_set HASH_RNG_IRQHandler,Default_Handler
.weak FPU_IRQHandler
.thumb_set FPU_IRQHandler,Default_Handler
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/