- 博客(82)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 基于zephyr的maxlinear交换机的开发备份
airoha是基于freertos上做的一个mw,开发难度相对高,很多函数不是标准的,甚至c的动态内存分配函数无法完美支持,内存优化不好,cJSON的库都跑不起来,自己拼接json,费时费力,freertos自带的core_json只支持解析不支持构建,而且解析的话,只能解析一层,多层的话还需要自己做判断,调用起来不方便,说句题外话,他们自己传的数据也是手动拼接的!估计微软在开发的时候没有用不加密的测试过,我反正测试的时候不能工作,参考了zephyr的开发手册才能用的,建议改成我这样的形式。
2024-08-10 17:42:07 934
原创 如何向嵌入式设备中添加tcpdump工具
当然现在还是有问题的,直接make去编译会出现如下的报错,当然了,如果直接没有报错说明你的交叉编译工具是直接对变量名进行“说明”的,这个说明是没有一点用的,如果出现下面的报错,直接删除restrict即可。同样的方法复制openssl的库到交叉编译的库中,同样是一个头文件夹,和一个库文件的文件夹,而openssl的编译可以参考我以前写的文章。--float28的问题,只需要删除tcpdump的文件夹下的makefile中的一句即可,如下图所示的标记的位置。复制到tcpdump的文件夹下即可,如下图所示。
2024-01-04 15:06:37 799
原创 ubuntu22的make如何降级
然后使用make -v后显示make的版本是4.3,用4.3会有全量编译的问题一个30s编译完的项目可能需要5分钟左右,时间太长,浪费时间。出现__alloca或者__stat的报错可以注释掉指定位置的宏定义即可。需要下载指定的make,比如20版的4.2.1,下载地址如下。放到linux系统下,解压到指定位置。直接使用apt升级的时候使用命令。一、原因:为什么要降级?
2023-10-25 17:53:38 1037
原创 goahead服务器搭建备份
两者的区别是非常的大的,毕竟迭代了这么多的版本,这两种对应的是两种不同的方案,因为以前的代码是用2.5搭建的,只是添加一个ssl的服务,但是ssl现在的浏览器支持的不是很好,比如chrome和firefox是不支持tls1.0的,那么ssl3.0就更加不用说了,而5.2是自带openssl是支持新的协议的,所以搭建的方式是goahead2.5+martixssl+openssl和goahead5.2这两种方式。本文搭建了两种goahead的方式,一种是goahead2.5,另一种是goahead5.2。
2023-05-31 19:03:07 821
原创 从嵌入式设备使用tftp命令到windows时出现: tftp: server says: Not allowed to overwrite existing files.问题的解决方法
tftp: server says: Not allowed to overwrite existing files
2023-04-11 17:25:27 499 1
原创 在linux下进行驱动模块编程vscode无法找到头文件的问题
虽然在linux下不需要用vscode和gcc进行编译,直接用makefile就行,但是当将工程打开的时候是无法找到头文件的源位置的,因为vscode默认是将系统的目录当成查找目录的,即在usr/include文件夹下找头文件,如果没有找到那么你也找不到它的定义只能去内核文件夹下用gedit(和记事本类似的软件)打开,但是用两个软件不仅不方便而且界面也不太好看。于是可以设置c/c++插件的配置来改变当前工程的指向的头文件的位置,具体方法如下:首先打开一个工程文件可以看到红色的波浪线,按位ctrl+鼠标左
2022-04-22 11:01:46 6950 7
原创 Linux内核出现了depmod: applet not found的解决方法
出现上述的错误的原因是在根文件下没有使能depmod命令。解决方法:在buildroot下输入命令 make busybox-menuconfig出现上图的界面,如果提示有问题,请拉大界面选择Linux Module Utilities出现下图的界面选中depmod,按y将其使能成*号选择exit后拉到最下面可以保存此配置输入命令make busybox后编译完成了修改了的busybox,再输入命令make就可以在output/images里生成对应的文件..
2022-04-18 16:11:26 6192
原创 88E6321 uboot的问题修改方案
uboot的driver/net/phy文件夹中有mv88e61xx.c这个文件,但是没有88e6321这个系列的注册函数,我在网上搜索了最多看到的是它的switch id的定义即0x310,当然6320是0x115,然而它们的这个定义在芯片手册上可以找到而且它的低4位是要问FAE要的,当然是找人不到的是吧,那么在linux内核也可以找到这个定义,即0x3100但是将注册函数写成这样也没有用参考609X和6390的编写方式一定是以141开头的在它的芯片手册上找到不过也是问FAE的。那么有
2022-03-22 16:14:27 838
原创 备份:在网页同一位置显示不同的图片
因为做的嵌入式设备支持220v交流电供电和直流供电,在市电断了之后使用直流电供电,那么作为在前端网页上作提示的图片需要显示绿灯,但是在设备在直流电的提示灯和交流电的提示灯是在一起的,即系统在工作时就会亮起,那么用两个灯来表示就有些不合适(和设备对应不起来),于是通过不同的id号来区分不同的响应,但是又将这两张图片叠加在一起,那么只要供电就会变成绿灯,代码如下。<img id="dpwr1" style = "position:absolute;" src="images/TPK-I4M2GS8G-
2022-01-19 15:32:47 278
原创 STM32cubeIDE+Proteus 8只需两个软件即可进行stm32的仿真与调试
1、首先打开Proteus 8它的主界面如下图所示2、 新建工程并选择保存位置3、画出单片机的最小系统,如下图所示4、在此基础上,画出输入输出的引脚连接的物件,如图中的LED和按键开关5、打开stm32cubeide,并新建stm32工程6、选择单片机的型号为stm32f103r6 选择LQFP64封装7、取个名字,点击完成,在弹出的窗口中有Linux的选项中选择No,之后就进行了如下图所示的界面8、配置PA4和PA5引脚分别是输出和输入的引脚,如图.
2022-01-11 15:12:46 13406 8
原创 STM32MP157学习--通过stm32idecube用按键点亮灯和蜂鸣器
1、新建工程,和之前一样2、选择芯片的型号,这是选择的是STM32mp157daax,点击next3、给工程定一个名称,不要用中文4、选择NO5、按如图所示的方式配置引脚,前面的文章有配置的过程6、在工程管理处勾选生成.c/.h文件7、在M4内核的文件夹下新建文件夹BSP(其他名称也可以,不要用中文)8、在BSP文件夹下新建名为Include和src的文件夹,做好文件分层,并在这两个文件夹下新建3个.c的文件以及它们的头文件9、右键...
2021-12-17 14:20:32 1192
原创 STM32MP157学习--通过stm32idecube配置外部高速时钟HSE
1、打开ide软件在主页上或者左上角都可以新建工程,这里用左上角的方式,因为更加地通用2、通过如下图的方式在左上角新建工程3、在搜索框内搜索芯片型号,这里输入stm32mp157d然后在右边选择DAAx 如下图点击Next4、在弹出的窗口中输入工程的名称,这里输入hal_hse,然后点击Finish5、会有弹出的窗口在如下的窗口中选择No(Possibly Later),因为没有Linux所以选择No6、点击system core选择其中的RCC,然后单击H...
2021-12-03 18:34:13 1288
原创 STM32MP157学习--通过stm32cubeide用HAL库亮灯(闪烁)
1、新建工程2、选择型号3、添加工程文件夹的名称,并下载所需的库函数文件4、不需要设置Linux选择No5、在右下角的搜索内搜索到PI0,这时该引脚会闪烁6、左键选择将其定义为输出 7、右键将其pin 保留至Cortex-M4内核使用8、选择system view页面,将Cortex A7 secure,Cortex-A7 non secure,Cortex-M4勾选上。9、点开system Core 选中GPIO...
2021-11-12 14:55:09 781
原创 STM32MP157学习--Reset_Handler函数
如果是使用stm32cubeide编译的话是会用到gcc/linker文件下的startup_stm32mp15xx.s,当然了如果是用mdk的话是纯纯的汇编它是在arm/linker文件夹下的startup_stm32mp15xx.s这两个文件功能是一样的只是编写风格十分不同,如果是想看mdk的说明可以移步本站的其他文章。其代码如下,十分的简洁,而且熟悉arm汇编的话,很容易就能理解Reset_Handler PROC EXPORT Reset_Handl
2021-10-22 09:48:10 1802
原创 简单的代码分析,C++中的引用和指针交换子函数中的值
这里只做备份,后续有时间再完整分析//引用和取地址的区别#include<iostream>using namespace std;void swap_1(int &a,int &b);void swap_2(int *kk,int *dd);void swap_3(int ds,int dds);enum tt{ x0=11, x1, x2, x3, x4, x5};int main(){ int
2021-09-28 11:35:55 141
原创 c primer plus链表例子films2.c段错误 (核心已转储)
贴上原版代码/* films2.c -- 使用结构链表 */#include <stdio.h>#include <stdlib.h> /* 提供malloc()原型 */#include <string.h> /* 提供strcpy()原型 */#define TSIZE 45 /* 储存片名的数组大小 */struct film { char title[TSIZE]; int rating; struct
2021-09-24 17:09:29 471
原创 一个简单的配置备份程序
可以将配置或文件以时间戳的形式备份,也可以将备份的配置还原为源配置的名称,其实就是复制粘贴#include<stdio.h>#include<windows.h>#include<string.h>#include<time.h>int main(){ char iput[99]; char buf[99]; char ge[99]; time_t timep; struct tm *p; in
2021-08-26 11:12:37 127
原创 printf()和scanf()的*修饰符
printf()和scanf()都可以使用*修饰符来修改转换说明的含义。但是,它们的用法不太一样。首先,我们来看printf()的*修饰符。如果你不想预先指定字段宽度,希望通过程序来指定,那么可以用*修饰符代替字段宽度。但还是要用一个参数告诉函数,字段宽度应该是多少。也就是说,如果转换说明是%*d,那么参数列表中应包含*和 d对应的值。这个技巧也可用于浮点值指定精度和字段宽度。#include <stdio.h>int main(void){unsigned width,..
2021-08-26 10:57:36 247
原创 交换机是如何实现QoS的
一、简介:Qos(Quality of Service,服务质量),指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。QoS的保证对于容量有限的网络来说是十分重要的,特别是对于流多媒体应用,例如VoIP和IPTV等,因为这些应用常常需要固定的传输率,对延时也比较敏感。------摘自百度百科通俗点讲就是有许多的报文在传输有些重要性高的报文要优先传输,可靠传输,而重要性不高的报文可以靠后传输,有点类似于TCP/UDP的
2021-07-16 16:23:01 3341
原创 交换机笔记8
8寄存器说明略芯片手册已翻译完大部分,寄存器的文本太大,使用时自行查看即可注意事项: 1、操作寄存器注意偏移量和其所在的位置 2、索引代表多个位的合集可以表示的多个操作方式如0x1A中的 3、在程序设计的时候注意分层HAL、NSM、SDK、协议层、应用层等 4、寄存器的分布图可以帮助快速查找寄存器,注意多熟悉 5、Marvell原厂有源码和例程注意多看,它叫DSDT_3.X...
2021-06-29 09:08:13 287 4
原创 交换机笔记7.5
7.5请求和响应的支持 设备使用请求和响应的格式是0x0001。 可以与在设备的SMI接口引脚(MDC和MDIO)上接收到的寄存器操作同时执行无损远程管理请求。同样有,如果SMI接口将其操作限制为非破坏性操作,则可以同时完成任何远程管理请求。破坏性动作是任何更改寄存器数据的请求。寄存器写入属于此类,但刷新命令(如在ATU,MIB等上)以及任何导致由于读取而被清除的寄存器读取也属于此类。注意破坏性的远程管理命令。 设备支持请求代码:...
2021-06-28 14:19:06 403 1
原创 交换机笔记7.4
7.4响应帧格式——第3层 远程管理响应帧的第3层部分包含请求的数据。这些响应封装在响应格式后面(下图)。响应格式支持各种设备系列,由于特定设备系列的内部性质,它们可能需要非常不同的命令和/或响应格式。7.4.1初始化响应帧——GotID GetID的初始化请求帧的响应是GotID响应。GotID的响应包含设备的响应格式编号通过产品编号和修订版,然后是响应代码和响应数据。7.4.2错误的处理 对请求帧的请求代码的第3层部分进行了完全解码...
2021-06-28 11:42:20 113
原创 交换机笔记7.3
7.3请求帧的格式——第3层 远程管理请求帧的3层部分包括特殊寄存器的操作请求。这些请求被封闭在请求格式的后面(下图)。请求帧格式支持各种设备系列,它需要非常不同的命令和响应格式由于特定的设备系列的内部性质。...
2021-06-28 11:26:33 106
原创 交换机笔记7.2
7.2响应帧的格式-第2层和DSA部分 远程管理是一个请求/响应协议,因此CPU需要从交换机返回的所有的请求数据中获取需要的响应,并验证交换机是否收到了请求帧,例如,它没有被丢弃在途中的某个地方(如果请求仅在寄存器中写入则显然是需要的)。响应会承认(确认)所有有效的远程管理请求,因此软件知道请求已收到并已执行。 远程管理帧的2层部分包含了正常的IEEE802.3目的地址、源地址等的字段。这些帧目的地址被定义为从请求帧来的源地址。帧的DSA部分的定义在下图,而以太类型(...
2021-06-28 10:16:04 380
原创 交换机笔记7.1
7.1请求帧的格式-第2层和DSA部分 远程管理是一个请求/响应协议,因此CPU需要发送一个请求帧到交换机。一旦到达了CPU的外部,帧需要获取期望的篁交换机设备的芯片。 远程管理帧的2层部分包含了正常的IEEE802.3目的地址、源地址等的字段。这些帧的目的地址在01:50:43:00:00:00的Marvell多播地址或交换机的单播地址中被定义。请求帧的分布式交换机体系结构(DSA)在下图定义,而帧的以太类型(长度/类型)在用户可定义中被定义。DSA 部分在以太类型...
2021-06-24 18:15:41 662 4
原创 交换机笔记7.0
7 远程管理 远程管理是一种使用以太网帧访问交换机寄存器的方法。它目的是成为访问寄存器的另一种方式,除此之外,还可以使用原来的访问方式(即使用系统管理接口(SMI),由MDC和MDIO信号或EEPROM组成)。远程管理的好处是: 1、更快的CPU可访问大型的数据库信息-特别是地址数据库(即ATU6.3节)和端口统计(即MIBs 1.1.3.8节和1.1.3.9节) 2、使用CPU的帧接口(如MII或GMII)来访问交换机寄存器以节省用于备用接口...
2021-06-24 16:43:41 1707
原创 交换机笔记6.3
6.3地址翻译单元操作 在设备中的地址翻译单元(ATU)支持用户命令访问MAC地址数据库的内容。什么是STU的描述和如何在交换机的操作中使用ATU的描述在6.2.6节的表中。本章节着重于ATU的结构和怎样访问它的内容。 所有的ATU操作有相同的用户接口和协议。六个全局1寄存器的使用方式在下表中。ATU的协议的操作如下:通过检查在ATU操作寄存器的ATUBusy位可以确保ATU是可用的。ATU一次只能执行一个用户命令。 如果需要的话通过选择操作载入ATU数据,AT...
2021-06-24 15:48:54 867 1
原创 交换机笔记6.2
6.2VLAN转换单元(VTU)的操作 在设备中虚拟局域网转换单元支持通过用户命令来访问和修改VLAN成员数据的内容。 所有的VTU操作有相同的用户接口和协议。全局1寄存器的使用方法在下表。VTU的协议操作如下所示:1、通过检查在VTU操作寄存器中的 VTUBusy位来确保VTU是有效的。VTU一次只能执行一条用户命令。2、如果需要的话通过期望的操作载入VTU数据和VTU VID寄存器。3、通过定义所需的FID,VTUOp和在VTU操作寄存器中设置VTU...
2021-06-23 11:49:40 907
原创 交换机笔记6.1
6访问数据结构该设备包含许多用于控制交换机的数据结构。较大的结构具有专用的访问方式,如果需要服务,它可以向CPU产生中断。这些较大的结构是三进制内容可寻址的内存(TCAM-6.1节),通过VTU(6.2节)控制VLAN的数据库,通过ATU(6.3节)控制地址数据库。6.1三进制内容可寻址的内存(TCAM)-本章节仅在支持TCAM的设备上有效在设备中三进制内容可寻址内存支持用户命令访问和修改TCAM条目的内容。本章节注重TCAM的结构和如何访问它的内容。所有的TCAM操作有相同的用户接口和协议,全局3
2021-06-22 13:58:57 584 3
原创 交换机笔记5.12
5.12中断控制器设备包含一个中断控制器,用于将各种中断合并到该器件的INTn引脚中。交换机的全局控制寄存器(全局1偏移量0x04)决定INTn引脚是否有效,当发生中断时。在交换机的全局控制寄存器中的每个中断位(DeviceInt,StatsDone,VTUProb,VTUDone,ATUProb,ATUDone,PHYIntEn或EEINTn)可以单独取消或屏障,以启动交换机的内核中断。PHY中断通过PHYIntEn位启用,它也在交换机的全局控制寄存器中。交换机全局状态寄存器(全局1偏移量0x00)报
2021-06-17 11:08:02 215
原创 交换机笔记5.11
5.11精确时间协议(PTP)到目前为止,IEEE 802标准机构已将以太网定义为异步网络,其中终端站不会在公共时基之外运行,并且它们也没有时间概念。合并时间的概念,使它成为同步的以太网,这样对许多的应用有好处。如:IPTV、高保真音频初步消费类设备流、电信网络、工业自动化等。时间和/或时钟信息使用IEEE802.1AS标准委员会中定义的协议通过网络传播。此标准称为精确定时协议(PTP).PTP通过定期交换控制数据包来实现以下目的:1、 选举一个拥有最佳质量时钟的网络元件作为PTP网络的总的时间管理单
2021-06-17 09:49:08 178
原创 marvell芯片中的LACP中的trunk负载均衡是如何实现的
LACP:链路聚合控制协议简单来说就是通过将多个端口合并成一条。报文通过时可以从这些端口来传输,那么传输的速率就是这些端口的总合,前提是这些端口的速率,自适应等配置是一样的。那么它是怎么运作的呢?大家可以参考我的交换机笔记的5.10的翻译。LACP是管理帧,管理帧的地址格式是01-80-C2-00-00-0X(X代表0-F共16个),而LACP的目的地址是0x01, 0x80, 0xC2, 0x00, 0x00, 0x02。从端口来的报文是通过目的地址和源地址的低3位的异或来确定的,也可以使用哈希来
2021-06-16 15:34:06 566 1
原创 交换机笔记5.10
5.10端口中继的支持该设备通过端口的任意组合(片内和跨芯片)支持端口中继。端口关联中继需要有所有的端口成员定义到相同的中继ID(端口偏移量0x05)并且他们的中继端口位设置为1(端口偏移量0x05),支持最多16个中继组,每个组最多6个端口。PS:我公司是用的LACP(链路聚合控制协议)来实现的,只是叫法不同5.10.1中继地址的学习当帧进入到中继端口时它的源地址(SA)会被学习,它会关联到入口端口的中继ID号(它的T位被置1在6.3.1节)。这样的话,无论进入交换机的中继线是哪个链路,地址的数据
2021-06-16 14:45:17 218
原创 以太网端口有3种链路类型:Access,Trunk,Hybrid其中的Trunk与LACP中的Trunk有何异同?
先说概念:以太网端口有 3种链路类型Access类型端口:只能属于1个VLAN,一般用于连接计算机端口;Trunk类型端口:可以允许多个VLAN通过,可以接收和发送多个VLAN 报文,一般用于交换机与交换机相关的接口。Hybrid类型端口:可以允许多个VLAN通过,可以接收和发送多个VLAN 报文,可以用于交换机的间连接也可以用于连接用户计算机。那么计算机A与交换机C相连的是Access端口,同理B与D相连的也是Access端口,而C与D相连的是Trunk端口。E是路由器。Trunk端口的作用是
2021-06-15 18:34:21 1066
TA创建的收藏夹 TA关注的收藏夹
TA关注的人