- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 C语言 LSB->MSB,MSB->LSB转换
在C编程中,会遇到lsb和msb相互转换的问题,这里有一种比较高效的转换方式,提供了32位、16位、8位数据的lsb和msb互转的算法,亲测没有问题,
2023-10-31 11:40:39 978
原创 lwip udp无法发送大于1472字节数据问题解决
1.问题定位首先抓包工具进行抓包wireshark勾选UDP 协议的checksum选项抓包以后发现是udp的checksum有问题2.原因剖析有些网卡的硬件校验对于小于1500字节的数据的校验计算是正确的,大于1500字节的数据的校验计算是错误的,导致接收端无法接收。3.解决之道根据以上原因我们应该禁用网卡的硬件校验,使能lwip的软件校验便可以成功解决这个问题。另外还需要打开IP_FRAG 和 IP_REASSEMBLY两个宏定义,打开分包发送功能,使能这两个宏,只要
2021-04-30 14:39:55 4858
原创 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 1597
原创 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 4748
原创 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 7785
原创 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 537
原创 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 1742
原创 TM4C1294移植FreeRTOS注意事项
在Ti的TM4C1294平台上移植FreeRTOS和在STM32上基本移植,但有一点需要注意,就是中断的优先级设置,stm32优先级分组是4位,而TM4C是三位。具体参考TM4C的datasheet的APINT寄存器的说明。在裸机的状态下,中断可以设置抢占优先级和从优先级,在FreeRTOS里,中断只有抢占优先级,没有从优先级,所以优先级分组必须全部设置成抢占式,否则会有异常。所以在TM4...
2020-09-16 16:38:28 638
原创 lwip1.4.1双网卡调试笔记
平台:Ti TM4C1294网卡1:TM4C1294内置网卡网卡2:亚信AX88796B,兼容NE2000标准网卡,接口类型ISA16bit,TM4C EPI驱动面临问题:在ARP协议调通的情况下(其他主机可以识别此网卡),TM4C内置网卡可以ping通,外置网卡ping不通。通过抓包发现是校验问题导致问题分析:由于内置网卡可以进行硬件校验,所以关闭了软件生成校验的宏定...
2020-09-16 16:37:35 1193
原创 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 1454
原创 *.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 5453 1
原创 LattePanda开发板救砖
手头有一块LattePanda开发板,CR110版本的,DFRobot出了10.1英寸的屏幕,就买来试了一下,不过要支持这款屏幕,需要刷入专用BIOS,但是这个BIOS只给CR200版本的板子出了,其他版本的板子没有,卧槽,MMP,买屏之前没有仔细看,买了之后发现买了个大坑,算了买都买了,MMP,LZ赌一把,强刷BIOS试试,之所以这么决定是因为我分析了BIOS发现各大版本硬件差异不大,即便刷成了砖块,也有CH341来救砖,即便真的就不回来,也不损失啥,因为板子是白嫖的,就这样下好了BIOS,进入原有BIO
2020-07-03 13:05:01 1297 2
原创 记一次systick不中断故障排除
移植FreeRTOS,只运行一个任务,不能进行任务的调度和切换,倒也不fault,后来经过单步调试,发现xPortSysTickHandler函数断不下来,也就是说systick中断一直被屏蔽了,也就导致FreeRTOS不能进行任务切换,也不能抢占。继续寻找原因发现执行taskENTER_CRITICAL()之后,按理要执行taskEXIT_CRITICAL(),结果我没看仔细将宏搞错了,执行了taskENTER_CRITICAL_FROM_ISR(),然后就吡了,相当于程序一直在临界区,systick .
2020-07-03 11:21:11 926
原创 树莓派3B无法开机
最近测试一个树莓派的扩展板,结果树莓派无法开机了,我还以为我把CPU搞挂了,毕竟GPIO直连CPU,连个隔离措施都没有,在耐操和成本之间树莓派放弃了耐操选择了成本,毕竟树莓派太容易坏了,我都不怎么玩GPIO,不过这么设计能很好提高树莓派的销量,毕竟坏了压根没有地方去修,一来芯片买不到,即便是买到了,对于没有专业设备的玩家来讲,太难焊了,所以一般坏了你只能买新的。○●○:闪烁 ●●●:常亮 ○○○:不亮 ●○●:有规律闪烁我的是第二种,重新烧写镜像一般可以解决。第四种也要重新烧写镜像。出...
2020-06-10 13:03:21 1841 4
原创 QT编译在注释中遇到意外的文件结束
QT版本:5.13取消函数外的/************************************/类型注释,就可以编译通过,原因未知,或者函数外的/************************************/类型注释用//替代。
2020-06-03 12:45:11 800
原创 关于wolfssl RSA加密与解密注意事项
wolfssl 运行在单片机上,操作系统FreeRTOS,我的秘钥长度是2048bit,需要说明的是栈大小至少5KB,小于5KB会Fault,而且还是疯狂的fault。
2020-05-27 11:39:58 824 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 924
原创 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 1466
原创 FreeRTOS 各版本下载
方法1:访问https://github.com/FreeRTOS/FreeRTOS/releases下载相应的版本;方法2:访问https://sourceforge.net/projects/freertos/点code选项然后点击tags出现如下界面,选你想要的版本下载即可
2020-05-21 15:16:20 10520
原创 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 450
原创 多用户无法使用的问题
1.配置多用户,编辑s*s的脚本配置文件vi /etc/shadowsocks.json打开以后将原来的删掉,用一下内容替代,port_password根据用户数量添加,格式:"端口":"密码"{ "server":"0.0.0.0", "local_address": "127.0.0.1", "local_port":1080, "port_password": { "2333":"mima12345", "6666":"mima1234...
2020-05-09 14:02:18 329
原创 mbedtls rsa使用pem文件
最近有个项目需要用到rsa加密和解密,平台是cortex-m4单片机,于是我想用炒的比较火的mbedtls库实现。既然这玩意炒的比较火,资料应该不少才对,上手以后才发现资料少的可怜,仅有的资料基本都是在注水,参考意义不大,pem格式的秘钥操作这一块基本相当于没有资料,只能自己硬着头皮搞了。搞了两天以后终于搞出来了。关于pem相关知识这里不做介绍,我就直接贴代码。#if !defined(...
2020-05-07 17:36:58 4771 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 5378 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 1294
原创 TM4C Hibernate RTC实现
项目有个地方需要RTC,我研究了TM4C Hibernate RTC的Demo,发现了一些问题。TM4C Hibernate实现RTC有个主意的地方就是不能用官方给的demo,我的平台是TM4C1294KCPDT,用官方的demo,调试发现卡在HibernateEnableExpClk(SysCtlClockGet())里,不能用,研究库源码发现这个函数仅仅是置位HIBCTL寄存器的CLK32...
2020-02-20 17:38:16 722
原创 C语言字浮点字符串转化为浮点数据
#include <stdio.h>#include <string.h>#include <math.h>#include <iostream>#include <stdlib.h>double str2double(char *str){ double Int=0.0, Dec=0.0,Result; int i,le...
2018-05-04 21:18:45 1958
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人