STM32 LWIP网络PING不通问题

1、问题现象描述:

        在配置STM32 LWIP时,ping不通网络,但是并不影响客户端访问STM32配置的web服务器;就是除了无法PING通,网络一切都正常。

2、解决方法:

        (1)启用 ICMP 协议

    LWIP 默认可能未启用 ICMP 协议(ping 使用的是 ICMP 协议)。需要检查并确保 ICMP 功能已启用。在 lwipopts.h 文件中,确保以下配置已启用:

#define LWIP_ICMP               1  // 启用 ICMP 协议
#define LWIP_BROADCAST_PING     1  // 允许响应广播 Ping
#define LWIP_MULTICAST_PING     1  // 允许响应多播 Ping
        (2)硬件校验和卸载

        某些以太网控制器(如 STM32 的以太网外设)支持硬件校验和卸载功能,即在硬件层面自动计算和验证校验和。如果启用了硬件校验和卸载,同时又在软件层面启用了校验和生成和检查,可能会导致冲突。在软件中禁用校验和生成和检查:

#define CHECKSUM_GEN_IP        0
#define CHECKSUM_GEN_UDP       0
#define CHECKSUM_GEN_TCP       0
#define CHECKSUM_GEN_ICMP      0
#define CHECKSUM_CHECK_IP      0
#define CHECKSUM_CHECK_UDP     0
#define CHECKSUM_CHECK_TCP     0
#define CHECKSUM_CHECK_ICMP    0
        (3)扩大Freertos栈分配的内存

        扩大任务函数的栈内存,将原来的stack_size = 256 * 4 改为stack_size = 512* 4。

/* USER CODE END Variables */
/* Definitions for defaultTask */
osThreadId_t defaultTaskHandle;
const osThreadAttr_t defaultTask_attributes = {
  .name = "defaultTask",
  .priority = (osPriority_t) osPriorityHigh1,
  .stack_size = 512 * 4           
};

/* Definitions for name_APP1 */
osThreadId_t name_APP1Handle;
const osThreadAttr_t name_APP1_attributes = {
  .name = "name_APP1",
  .priority = (osPriority_t) osPriorityHigh,
  .stack_size = 256 * 4
};

void StartDefaultTask(void *argument)
{
	/* init code for LWIP */
	MX_LWIP_Init();
	/* USER CODE BEGIN StartDefaultTask */
	osDelay(1000*100);
	connect_to_all_server();	
	
	for(;;)
	{         
	
		osDelay(500);
	}
  /* USER CODE END StartDefaultTask */
}

如果还不行,那就在FreeRTOSConfig.h下将堆内存(configTOTAL_HEAP_SIZE)扩大:

#define configUSE_PREEMPTION                     1
#define configSUPPORT_STATIC_ALLOCATION          1
#define configSUPPORT_DYNAMIC_ALLOCATION         1
#define configUSE_IDLE_HOOK                      0
#define configUSE_TICK_HOOK                      0
#define configCPU_CLOCK_HZ                       ( SystemCoreClock )
#define configTICK_RATE_HZ                       ((TickType_t)100000)
#define configMAX_PRIORITIES                     ( 56 )
#define configMINIMAL_STACK_SIZE                 ((uint16_t)128)
#define configTOTAL_HEAP_SIZE                    ((size_t)25600)
#define configMAX_TASK_NAME_LEN                  ( 16 )
#define configUSE_TRACE_FACILITY                 1
#define configUSE_STATS_FORMATTING_FUNCTIONS     1 
#define configUSE_16_BIT_TICKS                   0
#define configUSE_MUTEXES                        1
#define configQUEUE_REGISTRY_SIZE                8
#define configCHECK_FOR_STACK_OVERFLOW           2
#define configUSE_RECURSIVE_MUTEXES              1
#define configUSE_COUNTING_SEMAPHORES            1
#define configUSE_PORT_OPTIMISED_TASK_SELECTION  0

### H20 算力优化及性能指标分析 #### INT8 和 FP16 的性能提升 英伟达H20在INT8和FP16精度下的表现尤为突出,其设计旨在最大化推理效率并降低延迟。相比前代产品,H20通过架构改进实现了更高的吞吐量,在INT8模式下提供了显著增强的TOPS(Tera Operations Per Second),而在FP16模式下则提升了TFLOPS(Tera Floating-point Operations Per Second)。这种优化使得H20成为机器学习模型部署的理想选择[^2]。 #### FLOPS 性能对比 就FLOPS而言,H20相较于前一代GPU有明显进步。具体来说,它不仅提高了单精度浮点运算能力(FP32),还大幅增强了混合精度计算的支持力度,这对于需要高精度与高效能平衡的应用场景尤为重要。此外,借助Tensor Core的新特性,H20能够在特定工作负载中实现更高倍率的速度增益。 #### 功耗管理与 TDP 设计 功耗方面,尽管H20拥有更强悍的处理能力和更大的晶体管数量,但由于采用了先进的制程技术和高效的电源管理系统,整体能耗得到了有效控制。对于GB300、B300以及HGX平台上的配置版本,各自的热设计功率(TDP)均经过精心调整以适应不同的应用场景需求。例如,在数据中心环境中运行时,即使面对极高负荷的任务也能保持稳定而持久的表现。 #### 前代产品的比较 当我们将目光投向前几代NVIDIA GPU时可以发现,无论是从原始算力还是实际应用效能来看,H20都树立了一个新的标杆。特别是在针对AI训练和推理任务进行了专门调优之后,无论是在每瓦特性能还是单位面积内的计算密度上都有所突破。这表明相对于早期型号如V100或A100等,新一代硬件已经迈入了一个全新阶段——即更加注重可持续发展的同时追求极致性能。 ```python # 示例代码展示如何查询 NVIDIA GPU 的基本规格信息 (伪代码) import nvidia_smi nvidia_smi.nvmlInit() handle = nvidia_smi.nvmlDeviceGetHandleByIndex(0) info = nvidia_smi.nvmlDeviceGetPowerUsage(handle) print(f"Current Power Usage: {info / 1000} W") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值