![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式
RIGOU精电科技
毕业于中国家里蹲坑技大学,资深栈溢出工程师。
展开
-
lwip udp无法发送大于1472字节数据问题解决
1.问题定位首先抓包工具进行抓包wireshark勾选UDP 协议的checksum选项抓包以后发现是udp的checksum有问题2.原因剖析有些网卡的硬件校验对于小于1500字节的数据的校验计算是正确的,大于1500字节的数据的校验计算是错误的,导致接收端无法接收。3.解决之道根据以上原因我们应该禁用网卡的硬件校验,使能lwip的软件校验便可以成功解决这个问题。另外还需要打开IP_FRAG 和 IP_REASSEMBLY两个宏定义,打开分包发送功能,使能这两个宏,只要原创 2021-04-30 14:39:55 · 4705 阅读 · 0 评论 -
lwip udp无法发送超过1500字节数据
1.检查opt.h内IP_FRAGIP_REASSEMBLY两个宏是否打开,一般默认是打开的,这两个宏定义跟ip分包有关。2.如果以上宏定义打开还出现这个问题,那十有八九是网卡的问题,最好用抓包工具抓一下,看看数据有没有发出来,其次检查checksum是否正确。3.如果checksum不正确,请关闭网卡的硬件checksum,使能lwip软件checksum校验的宏定义。比如我遇到的问题是checksum不正确,发现是网卡硬件checksum在超过一定数据长度后就不正确了,关掉,打开软件生成..原创 2021-03-19 16:59:56 · 1543 阅读 · 0 评论 -
FreeRTOS运行不稳定的原因记录
最近用FreeRTOS开发一个商用项目,用到了FreeRTOS,测试时发现一个奇怪的问题,代码运行一段时间后要么fault,要么某个任务像死了一样不在运行。找了很久没找到是什么问题,最后无奈,打开了FreeRTOS调试功能发现以下代码报错。#if( configASSERT_DEFINED == 1 ) void vPortValidateInterruptPriority( void ) { extern uint32_t ulPortGetIPSR( void ); uint32_t u原创 2020-10-12 16:06:53 · 4585 阅读 · 0 评论 -
Xilinx vivado2020.1官网下载链接
Vivado Design Suite HLx Editions - Accelerating High Level DesignThe new Vivado® Design Suite HLx editions supply design teams with the tools and methodology needed to leverage C-based design and optimized reuse, IP sub-system reuse, integration automati原创 2020-09-25 11:08:27 · 7706 阅读 · 0 评论 -
STM32F103C8 HAL EC11编码器
1.CubeMX配置2.代码static void MX_TIM3_Init(void){ TIM_Encoder_InitTypeDef sConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; /* USER CODE BEGIN TIM3_Init 1 */ /* USER CODE END TIM3_Init 1 */ htim3.Instance = TIM3; htim3.Init.Pr原创 2020-09-08 18:08:24 · 1432 阅读 · 0 评论 -
*.so文件建立软链接
linux下的软链接类似window下的快捷方式,在linux下开发一个项目用到openssl,编译的时候找不到相关动态库,查看usr/lib下发现openssl的so文件没有软链接,用如下命令可以给*.so文件添加软链接。命令格式:ln -sf a bln -sf libssl.so.1.1 libssl.soln -sf libcrypto.so.1.1 libcrypto.so...原创 2020-08-20 17:52:58 · 5327 阅读 · 1 评论 -
记一次systick不中断故障排除
移植FreeRTOS,只运行一个任务,不能进行任务的调度和切换,倒也不fault,后来经过单步调试,发现xPortSysTickHandler函数断不下来,也就是说systick中断一直被屏蔽了,也就导致FreeRTOS不能进行任务切换,也不能抢占。继续寻找原因发现执行taskENTER_CRITICAL()之后,按理要执行taskEXIT_CRITICAL(),结果我没看仔细将宏搞错了,执行了taskENTER_CRITICAL_FROM_ISR(),然后就吡了,相当于程序一直在临界区,systick .原创 2020-07-03 11:21:11 · 904 阅读 · 0 评论 -
关于wolfssl RSA加密与解密注意事项
wolfssl 运行在单片机上,操作系统FreeRTOS,我的秘钥长度是2048bit,需要说明的是栈大小至少5KB,小于5KB会Fault,而且还是疯狂的fault。原创 2020-05-27 11:39:58 · 795 阅读 · 2 评论 -
Wolfssl RSA解密
#include "wolfssl/wolfcrypt/rsa.h"#include <wolfssl/wolfcrypt/wc_port.h>#include <stdio.h>extern TaskHandle_t rsa_decrypt_Task_Handle;int len =128;byte out[128] = {142,82,162,181,22,125,59,109,49,194,185,79,96,23,45,251,137, 20, 5.原创 2020-05-26 11:24:36 · 897 阅读 · 0 评论 -
wolfssl RSA加密和解密
int main(){ RsaKey enc, enc2; int ret,len; RNG rng; byte out1[256] = { 0 }; byte out2[128] = { 0 }; byte msg[] = { 1,2,3,4,5 }; byte out[2048] = { 0 }; wc_InitRng(&rng); ret = wc_InitRsaKey(&enc, NULL); if (ret != 0) { cout <&.原创 2020-05-25 16:28:15 · 1447 阅读 · 0 评论 -
FreeRTOS 各版本下载
方法1:访问https://github.com/FreeRTOS/FreeRTOS/releases下载相应的版本;方法2:访问https://sourceforge.net/projects/freertos/点code选项然后点击tags出现如下界面,选你想要的版本下载即可原创 2020-05-21 15:16:20 · 10202 阅读 · 0 评论 -
Heap_4.c
/* Copyright 2018 Canaan Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LIC.原创 2020-05-21 15:08:28 · 444 阅读 · 0 评论 -
mbedtls rsa使用pem文件
最近有个项目需要用到rsa加密和解密,平台是cortex-m4单片机,于是我想用炒的比较火的mbedtls库实现。既然这玩意炒的比较火,资料应该不少才对,上手以后才发现资料少的可怜,仅有的资料基本都是在注水,参考意义不大,pem格式的秘钥操作这一块基本相当于没有资料,只能自己硬着头皮搞了。搞了两天以后终于搞出来了。关于pem相关知识这里不做介绍,我就直接贴代码。#if !defined(...原创 2020-05-07 17:36:58 · 4617 阅读 · 9 评论 -
lwip select函数分析和优化
我的设备有两个网卡,我需要开两路socket,一路UDP,一路TCP,lwip的版本是1.4.1的,实际运行发现,UDP 运行一段时间以后挂了,通信挂了,线程继续运行,调试发现select 函数读取read_fds.fd_bits始终等于0,导致UDP发回来的数据不能被读取,UDP线程像死了一样。 FD_SET(sockfd,&read_fds); s...原创 2020-03-27 17:17:01 · 5238 阅读 · 2 评论 -
修复LWIP_ASSERT ("p->ref == 1",p->ref == 1)bug
问题出现在1.4.1版本的版本问题出在ip.c修复加入之后,问题成功解决。参考:https://lists.gnu.org/archive/html/lwip-devel/2012-10/msg00028.html原创 2020-02-25 19:48:49 · 1266 阅读 · 0 评论 -
TM4C Hibernate RTC实现
项目有个地方需要RTC,我研究了TM4C Hibernate RTC的Demo,发现了一些问题。TM4C Hibernate实现RTC有个主意的地方就是不能用官方给的demo,我的平台是TM4C1294KCPDT,用官方的demo,调试发现卡在HibernateEnableExpClk(SysCtlClockGet())里,不能用,研究库源码发现这个函数仅仅是置位HIBCTL寄存器的CLK32...原创 2020-02-20 17:38:16 · 712 阅读 · 0 评论 -
lwip1.4.1双网卡调试笔记
平台:Ti TM4C1294网卡1:TM4C1294内置网卡网卡2:亚信AX88796B,兼容NE2000标准网卡,接口类型ISA16bit,TM4C EPI驱动面临问题:在ARP协议调通的情况下(其他主机可以识别此网卡),TM4C内置网卡可以ping通,外置网卡ping不通。通过抓包发现是校验问题导致问题分析:由于内置网卡可以进行硬件校验,所以关闭了软件生成校验的宏定...原创 2020-09-16 16:37:35 · 1133 阅读 · 0 评论 -
TM4C1294移植FreeRTOS注意事项
在Ti的TM4C1294平台上移植FreeRTOS和在STM32上基本移植,但有一点需要注意,就是中断的优先级设置,stm32优先级分组是4位,而TM4C是三位。具体参考TM4C的datasheet的APINT寄存器的说明。在裸机的状态下,中断可以设置抢占优先级和从优先级,在FreeRTOS里,中断只有抢占优先级,没有从优先级,所以优先级分组必须全部设置成抢占式,否则会有异常。所以在TM4...原创 2020-09-16 16:38:28 · 625 阅读 · 0 评论 -
LWIP+FreeRTOS双网卡调试笔记
软件版本:FreeRTOS10,lwip1.4.1平台:Ti TM4C1294开发环境:CCS 6问题:网卡1能够ping通,网卡2无法ping通解决办法:通过打开LWIP_DEBUG选项,然后打开IP_DEBUG选项跟踪调试,发现执行到如下代码内,导致ping不通也就是说netif =NULL,导致ping不通,我单步跟踪了消息队列内的网卡,发现不是NULL,那说明问题...原创 2020-09-16 16:38:54 · 1672 阅读 · 0 评论 -
LWIP+FreeRTOS调试笔记
问题:LwipAssert:memp_malloc: memp properly aligned和memp_free: mem properly aligned解决方法:FreeRTOS自身会设置Systick等中断的优先级,具体看port.c文件,如下图:而我在其他地方重新设置了Systick的中断优先级,打乱了FreeRTOS的设置,导致不能进行临界段保护,即进入了临界段,依然会发...原创 2020-09-16 16:40:13 · 521 阅读 · 0 评论