- 博客(28)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 SKW99(QCA9531)关于DDR2的CL的设置
主芯片搭载DDR在实际运行中,只做简单的测试,有些问题未必能显现。但在满负荷运行时,问题出现的频率就大大增加了。这里以SKYLAB的SKW99和SKW92A在实际使用过程中遇到的问题进行分析说明。 SKW92A使用原厂提供的SDK,一般打包固件4MByte左右,系统运行后,CPU一般空闲90%,DDR一半空闲。但遇到有客户使用openwrt的SDK自主开发的情况,客户使用后,满负荷运行,出现read page问题。针对这个问题,DDR供应商给我们的回复是检查CL值。这是我首次去关注DDR的CL
2024-07-30 18:09:47
289
原创 Openwrt接UVC摄像头丢帧分析
最近在应用过程中,需求完成后,发现视频码流下降了,相同时间内,对应数据量减少了。由于摄像头的工作模式为MJPG,每一帧对应一张完整的图像,在接收端保存一帧数据,发现一帧数据的大小并没有明显的变化,因此此处判断,数据量减少为丢帧。当分析到3时,用户提出,启动时,DDR的速率有所下降。不同的uboot对应DDR的速率不同,高速率DDR时,对应的码流要高一些,如下图所示。这样控制后,使用网口有线连接,码流有显著提高,但是wifi连接时,仍存在丢帧问题。1.清理缓存,清理后码流会瞬时降低,并不是此处的解决方案。
2024-07-30 17:43:53
374
原创 MT7628原厂SDK添加数据存储分区
这里以SKW92A为例进行说明,原厂SDK打包固件,启动后,固件只有一个kernel分区,数据再掉电后无法保存。一般通过nvram_set去存储键值对数据,通过nvram_get获取数据。如:获取WIFI热点名,修改WIFI热点名,操作如下。下面介绍通过划分分区,将分区设置为可读写,然后映射到文件夹下。此处我们划分1Mbyte的RootFS分区用于保存数据,后面的4Mbyte用于Back固件。关于RootFS分区:【1MByte---》0x100000】大小根据需求改。关于Kernel分区。
2024-07-22 21:19:01
326
原创 MT7628指定分区备份固件
为了避免升级过程突然断电,或者其他不良操作导致的路由器“变砖”。在MT7628使用过程中,我们可以对固件进行备份。MT7628原厂SDK有关于双备份的选项,选择对应选项后,可对固件进行备份。
2024-07-22 21:07:49
533
原创 MT7628原厂Uboot修改交互串口
工作中,遇到用户用Skylab的SKW92A模组,在参考设计时,将UART接口预留错的情况,对于这种情况,需要将原厂SDK对应默认的交互串口UART0,改为UART1。在开发过程中,经常需要在Uboot阶段升级固件,若是无法交互,对开发会造成很多困扰。以上默认Console对应RT2880_UART1(在规则书中对应UART0),下标有所偏移。修改后,即可在Uboot阶段使用UART1作为交互串口。(2)关于MT7628对应三路串口的UART register在Uboot SDK中的定义。
2024-05-26 13:53:09
346
原创 WIFI国家码设置的影响
分析原因:SDZ202是高通(QCA9531+QCA9886)方案,高通SDK打包固件默认的信道为auto,国家码默认US,在交互终端看到启动默认工作信道为5.5GHZ,对应信道为100,这个信道正好不在我国范围的5G范围内,而我们使用的手机是国内版的,所以搜不到这个热点;分析原因:SKW99为高通方案,默认国家码为美国(US),对应2.4G的的信道范围为1-11,而需要连接的热点,工作在13信道,所以无法搜索到;现象一:客户使用SKW99的STA功能去连接某个热点,出现热点搜索不到的情况;
2024-05-26 12:41:42
971
原创 Openwrt21.02支持SKW78(MT7621)
升级完后,待模组稳定启动后,在/etc/config/wireless下,去掉wifi的disabled状态,打开wifi。配置完后,退出,运行make V=s,开始编译,首次编译用时会比较长,可以用以下链接中的dl,减少源码包下载时间。源码下载更新完后,此时SDK中没有.config配置文件,需要运行make defconfig后生成。下载完后,会有一个openwrt目录,进入openwrt目录。参考“MTK软件升级作业指导书.pdf”完成固件升级。固件编译完成后,对应的路径如下所示。
2024-04-15 20:09:06
751
原创 openwrt局域网配置多个IP
在局域网配置过程中,若是DHCP服务器关闭,又忘记了配置的ip,将很难访问到路由器重新进行配置。这种情况可以在路由器出厂时做一个备用ip去避免。
2024-04-15 20:00:46
1034
原创 Openwrt源码下载出现“The remote end hung up unexpected”
最近项目原因需要下载openwrt21.02版本源码,花费了很多时间,找到正确方法后,发现可以节省很多时间,记录下过程,方便自己,可能方便他人。
2023-12-11 18:53:26
804
原创 《无线权威指南》—网络概述:802.11网络的运作方式(二)
2.3 802.11网络的运作方式(1) 802.11为了克服无线频道可靠度不够的缺点,纳入了某些机制以确保基本的可靠度,但帧传递实际上是不可靠的;(2)802.11既要提供MAC层次的移动性,又要依循之前802标准所规划的道路,所以必须加入一些额外的服务与较复杂的帧格式;2.3.1网络服务802.11总共提供9中服务,其中3种用来传送数据,其余6种均属管理作业,目的是让网络能够追踪行动节点以及传递帧。(1)传输(Distribution) 基础型网络中,一旦基站接收到帧,就会..
2021-03-04 19:57:19
440
1
原创 《无线权威指南》—网络概述:相关术语与设计(一)
本章概述:(1)描述了802.11 wireless LAN的整体架构。(2)802.11网络将会接触到的网络元件,这些元件包括工作站、基站以及传输系统本身。(3)名称简介: 工作站:station配置无线网卡的运行设备; 基站:accesspoint,位于工作站与传输系统之间的桥接器 传输系统:cistrihutionsystem,即有线骨干网络 工作站在逻辑上被划归它各个基本服务集组合BasicServiceset,简称BSS 由工作站彼...
2021-03-02 18:36:09
425
原创 无线权威指南学习——《无线网络导论》(一)
最近在学习《无线权威指南》这本专业书,下面是一些学习笔记,供以后自查。本章论述:(1)论述无线网络与传统有线网络之间的差异;(2)采用无线介质时面临的问题;1.1为何需要无线无线最明显的优点是提供人们移动性(mobility)。早期使用红外线,但它本身有限制,容易受到墙壁、隔间以及其他办公室设备阻隔;目前市面上绝大多数的802.11产品均采用无线波作为物理层;1.1.1无线频谱:关键资源(1)无线设备被限定在某个特定频段(frequencyband)上操作...
2021-03-01 20:31:35
431
1
原创 MT7688原厂SDK任意4个GPIO模拟SPI接口
原厂默认SDK不支持GPIO模拟SPI接口,主要SPIGPIO需要依赖于GENERIC_GPIO,MTK原厂SDK有专门提供了ralink_gpio.c对gpio进行管理,不支持GENERIC_GPIO。下面介绍将MT7688的GPIO0、GPIO4、GPIO5、GPIO11分别转为SPI的MOSI、SCK、CS、MISO脚的过程:(1)将GPIO0/4/5/11对应的脚转为GPIO脚MT7688规格书中对GPIO0/4/5/11的定义如下:上面的功能寄存器的配置对应寄存器地址为0.
2021-02-18 18:32:36
1355
1
原创 MT7688下的RA8871 LCD屏开发测试
最近在调LCD屏时,走了很多弯路,浪费了很多时间,写文档做个记录。RA8871没有写寄存器/写数据切换脚,它使用的是命令类型;每次会传送双倍的数据,如写数据0x22,则需要发送0x80 0x22;#define SPI_WRITE_DATA 0x80#define SPI_READ_DATA 0xC0#define SPI_WRITE_CMD 0x00#define SPI_READ_STATUS 0x40下面是写数据的:发数据【0x80 value】void
2020-12-11 18:54:20
1019
原创 QCA9531修改寄存器值控制GPIO
由高通9531芯片规格书可知,芯片对应的GPIO有18个GPIO0-17,下图是规格书定义。下面以SKYLAB的SKW99模块为例进行说明。SKYLAB的SKW99模块使用源码为QSDK,GPIO0-3默认为JTAG功能,GPIO9和10为uart串口,剩下的GPIO11-16为默认为灯的功能,GPIO17为WPS按键功能。GPIO11-17对应功能源码地址为:qsdk/target/linux/ar71xx/files/arch/mips/ath79/mach-ap147.c...
2020-10-23 21:18:37
1431
原创 MT7688通过寄存器控制GPIO
在开发中,有些GPIO口做为状态灯或其他用途,当我们临时需要手动控制控制它时,可以修改对应寄存器值,使它转为GPIO口,进行控制。参考MT7688的芯片规格书,以操作/获取GPIO43-P0_LED的状态为例:查看文档可知,P0此时对应的功能是EPHYP0LED默认对应寄存器的值为0:EPHY P0 LED,下面将其寄存值设置为1:GPIO操作步骤如下:系统有地址映射,需要先执行reg s 0;reg s 0# reg s 0switch register base ..
2020-10-20 20:05:40
999
原创 I2C没有设备/dev/i2c-0
前提:insmod i2c-gpio-custom bus0=0,X1,X2安装没有问题;(X1、X2表示可以的GPIO口)检查:下面路径下是否有i2c-dev.ko如果有:root@JoySince:/lib/modules/3.10.49# ls i2c-i2c-dev.ko i2c-gpio-custom.koroot@JoySince:/lib/modules/3.1...
2018-04-02 19:18:00
4945
原创 Tomcat上部署Wifidog认证服务器
前言:这个服务器的搭建只是为了了解wifidog与认证服务器的具体交互过程,在搭建商用认证服时,需要有所改进。关于wifidog认证的流程,下面几篇博客介绍的很不错:http://blog.csdn.net/huithe/article/details/27195903一.了解认证交互的数据搭建wifidog authpuppy服务器,通过抓包,了解了认证过
2018-02-02 10:59:22
1073
原创 服务器使用环形缓冲区处理接收数据
(一).前言 通信过程中,对接收数据,若是网络环境糟糕,会出现多个数据包同时到达; 在recv 读取数据时,一般读取固定长度的数据,可能出现读出下图,读出不完整数据包的情况,若是直接处理,数据不完整,若是忽略,那么下次读取的时候,读到的数据也不完整,出现数据丢失,或数据发送错误的断言; 最近研究一些前辈对这种情况的处理方法,就是使用环形缓冲区,写这篇博客记录下;(二).环形缓冲的介绍链接htt
2017-07-13 16:26:34
1186
1
原创 开线程做时间调度器
最近在写服务端逻辑业务时,有很多处理与时间相关,需要在不影响主线程的情况下,间隔一段时间后做某种处理。如:录制一段3s的远程视屏,主线程运行触发startRecord后,等3s,再发送stopRecord,若在主线程sleep(3);则这3s内,主线程将不能处理自己的逻辑业务;首先,通过gettimeofday函数获取当前时间;函数如下所示:#include <sys/time.h>//系统64位
2017-06-28 10:36:17
476
原创 setsockopt和getsockopt参数说明和使用
说明:setsockopt和getsockopt用于设置和获取通信栈上所有层上的选项; 头文件:#include <sys/types.h>#include <sys/socket.h>函数原型:int setsockopt(int s, int level, int optname, void *optval, int optlen);int getsockopt(int
2017-05-11 12:33:03
2491
原创 openwrt使用静态html做web界面
目前官网openwrt系统集成的web界面,使用luci和luci2,关于luci和luci2的不同,可参见下面链接,作者介绍的很详细: http://blog.csdn.net/wdsfup/article/details/51024150?locationNum=11&fps=1本人也是使用luci2实现前后端数据交互的,只是界面使用的是html写成的界面,这样界面制作会更灵活,界面风格能更自
2017-02-24 20:07:05
13220
8
原创 openwrt学习小结
1.openwrt源码下载 (1).使用链接下载: https://dev.openwrt.org/wiki/GetSource#a14.07branchBarrierBreaker 可以下载各个版本的openwrt源码; (2).使用svn命令下载: svn co svn://svn.openwrt.org.cn/openwrt/trunk 下载官网的源码(trunk测试版) (3).
2017-02-23 17:21:59
607
原创 mwan3实现负载均衡分析
使用的配置环境:openwrt的x86系统;每个接口都是独立的网口,局域网中,拥有唯一的mac地址;1.配置多wan口;(1).在/etc/config/network中,配置对应网口的信息,这里我将eth1配置成wan1了;注意:metric值一定要与wan的不同;(2).在/etc/config/firewall中,配置wan1的防火墙规则,将wan1加入到opti
2017-02-23 11:34:13
17045
2
原创 获取网口名称和mac地址
下面介绍两种方法获取网口名字和其对应的mac地址:1.通过socket方式获取:代码如下:此代码只能获取到网口的名字2.读网卡信息的文件文件路径:/sys/class/net/实现代码如下:
2016-12-28 16:18:36
3336
原创 Openwrt的uci操作
uci操作命令参数如下:命令1:uci batch 说明:进入uci命令操作模式,与在终端操作的区别是,操作不需要加uci前缀。该模式下,只能识别uci命令;如下面的:changes system命令2:uci export [配置文件的名称]说明:缺省时,显示所有uci能读取的配置文件的信息,查看的信息包括修改过
2016-11-24 14:28:40
7188
原创 linux下目录的操作
头文件:#include #include 1、打开目录 opendir 形式:DIR * opendir(const char * name);DIR * fopendir(int fd);返回值:文件夹不存在,返回NULL,存在返回DIR * dir;2.读目录readdir形式:struct dirent * d
2016-07-21 17:14:57
488
1
原创 linux下文件操作
fopen、fclose、fwrite、fread(下文简称”前者”)与open、close、write、read(下文简称“后者”)的区别和各自的使用区别:1.前者是C标准I/O库函数,后者位于C标准库的I/O缓冲区的底层称为无缓冲I/O;2.前者是C标准的一部分,而后者是UNIX标准的一部分,在所有支持C语言的平台上都可以用C标准库函数,而后者只有在UNIX平台上才能使用;3.
2016-07-16 18:37:06
353
Linux中mysql地址越界
2017-05-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人