自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(183)
  • 资源 (3)
  • 收藏
  • 关注

原创 35-Openwrt rpcd

rpcd package里面包含了多个模块,session,ubus插件等,是opewnrt的基础组件,只是很少关注到。

2024-06-25 09:09:33 274

原创 34-Openwrt uhttpd与rpcd

uhttpd作为一个简单的web服务器,其代码量并不多,而且组织结构比较清楚。和其它网络服务器差不多,其main函数进行一些初始化(首先parse config-file,然后parse argv),然后进入一个循环,不断地监听,每当有一个客户请求到达时,则对它进行处理。

2024-06-24 16:45:00 554

原创 3-EMMC命令使用

在调试emmc的过程,我们需要用到命令读写emmc,烧录,查看emmc寄存器,设置寄存器等功能,所以uboot和linux下都有各自的命令可以使用。

2024-05-29 14:47:16 948

原创 2-EMMC启动及各分区文件生成过程

跟普通nand或spi flash不同,uboot前面还有好几级在vendor某些厂商的设计中,ATF并不是BOOTROM加载后的第一个启动镜像,可能是这样的:BOOTROM—>PL—>ATF—>optee—>uboot…, 在PL阶段就已经将ATF/optee/uboot镜像的load到内存了.ATF(ARM Trusted firmware)完成启动流程:https://blog.csdn.net/u014426028/article/details/117949006?

2024-05-28 10:08:55 476

原创 1-EMMC介绍

eMMC Device会进行内部初始化,Host需要持续发送CMD1命令,查询eMMC Device是否已经完成初始化,同时进行工作电压和寻址模式协商:eMMC Device 在接收到这些信息后,会将OCR的内容(MMC出厂就烧录在里面的卡的操作电压值)通过 Response 返回给 Host,其中包含了 eMMC Device 是否完成初始化的标志位、设备工作电压范围 Voltage Range 和存储访问模式 Memory Access Mode 信息。MMC完成初始化后,就会进入该阶段。

2024-05-27 17:21:46 856

原创 33-Openwrt nand flash生产烧录

openwrt编译生产的sysupgrade.bin文件是一个升级文件,无法直接提供给工厂进行nand flash烧录使用。因为flash的每一个page是由data+ecc组成的,烧录的时候需要一起烧录,但是sysupgade.bin是原始data内容,没有ecc。

2024-05-22 16:56:05 199

原创 32-Openwrt nand flash坏块管理nmbm功能支持

nand flash很容易有坏块出现,一旦出现坏块数据就会丢失,如果是烧录、写入的时候检测到坏块,驱动可以帮忙跳过不写入之类的,但这不是一个完整的坏块管理,因为我们还是需要写入成功。

2024-05-15 14:46:53 400

原创 9-家长控制-儿童上网

家长控制或者儿童上网,说的都是可以指定某个设备可以在某个时间段允许上网,或者某个时间断不允许上网。

2023-07-20 17:05:15 1013

原创 31-Openwrt 内核版本替换

有些时候因为一些解不了的bug,在新的内核版本里面已经解决了,这时候我们会想着升级下内核版本,而不是把整个openwrt升级。

2023-05-30 09:44:05 5311

原创 30-Openwrt config save and restore

在使用sysupgrade升级的时候,默认需要把配置文件进行备份,升级完成后进行恢复。如果是-n则把配置文件删除,恢复默认配置。

2023-05-24 10:36:18 960

原创 29-Openwrt 防攻击

DOS攻击很常见,路由器可以通过iptables做一些简单的攻击防护,这边主要介绍模拟攻击的工具和防护攻击的手段。

2023-05-18 11:29:25 1650

原创 28-Openwrt 固件签名与验签

openwrt使用sysupgrade升级的时候,只会对固件的头部image进行校验是否合法,不会校验固件的完整性,所以当固件只有头部正常其他地方被破坏修改后,这个固件就是危险的,一旦升级就会出现变砖的情况。为了验证固件的完整性和合法性,可以有两种方式进行保护。

2023-05-09 11:43:40 1010

原创 5-Linux 内存溢出oom

Linux内核为了提高内存的使用效率采用过度分配内存(over-commit memory)的办法,造成物理内存过度紧张进而触发OOM机制来杀死一些进程回收内存。该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽会把该进程杀掉。

2023-04-02 16:44:52 3267

原创 1-Linux 保存kernel panic信息到flash

Linux 保存kernel panic信息到flash

2023-02-23 14:43:35 1800

原创 2023新的征程

距离上一篇的五年睿进已经过了四年,不知出于什么理由,中间的这三年没有写年终总结,今年也是比较特殊的一年,重新开始自己的年终总结,回顾四年里发生的事情,计划2023新的征程。

2023-01-11 21:04:59 598

原创 27-Openwrt rtc htpdate system

rtc htpdate

2022-11-05 16:32:30 1231

原创 26-Openwrt 端口转发 dmz upnp

端口转发 dmz upnp

2022-06-14 17:42:55 4790

原创 25-Openwrt 访客网络添加

主人网络和访客网络相互隔离

2022-06-14 17:41:15 1535

原创 24-Openwrt dnsmasq

dnsmasq是openwrt一个重要的进程,里面提供了两个重要的功能。一个是dhcp server,给lan口使用的,另一个是dns功能,维护路由器的dns信息,而且支持ipv4和ipv6。1、 dnsmasq启动过程从/etc/init.d/dnsmasq start脚本启动root@Openwrt:/# cat /etc/config/dhcpconfig dnsmasq option domainneeded '1' option boguspriv '.

2022-05-28 16:33:20 4590

原创 23-Openwrt switch vlan配置

2022-05-28 10:13:25 7669 4

原创 22-Openwrt 使用外部kernel和kernel_config

由于内核的修改要通过打patch的方式会比较麻烦,有时候我们会把内核直接解压出来用修改源码的方式,这时候就需要使用外部kernel的这个选项。openwrt的内核config是根据版本保存的,如config-4.19,当我们在一个版本下如果有很多和硬件平台的时候,平台config的分类保存就很重要了,这时候我们会选择使用外部kernel_config的方式。1、使用外部kernel使用外部内核源码的方式,我们一遍会编译一遍openwrt,然后将build_dir/target-aarch64_cor.

2022-05-18 18:07:01 3306

原创 21-Openwrt 内核模块改成.ko自动加载

openwrt下有很多开源的内核模块位于package/kernel/下,如gpio-button-hotplug、mwlwifi等。这些模块都是文件系统启动后,通过autoload的方式进行insmod载入的。1、正常思路在《Openwrt add function module to package》章节里面有介绍,如何添加一个内核模块。上面介绍的是自己添加一个内核应用模块,然后编译成.ko自动载入。如果是内核里面已经有的模块代码,如何将其改成.ko的方式自动载入。调试过程遇到过一个问题,内.

2022-05-18 18:04:19 1491

原创 20-Openwrt crond crontab

crond和corntab都是busybox下的一个工具,crond是一个后台进程,每隔一分钟读取配置文件中的参数,执行对应的动作。crontab是提供的一个命令行,可以对配置文件进行增删改查。这个定时功能对于平常一些功能使用很方便,比如每天晚上12点重启路由器等。1、openwrt上启动crond进程crond的启动参数如下:一般就设置-c指定文件目录,-l日志等级# crond -hcrond: invalid option -- hBusyBox v1.22.1 (2022-03-.

2022-05-14 17:45:10 1131

原创 19-Openwrt双固件升级

在上一章节《Openwrt sysupgrade系统升级》中,我们描述了sysupgrade升级系统的过程,这种升级过程会直接firmware分区进行写入,无法保证系统的安全性,只要在写入过程突然断电就会出现系统写入失败,升级失败无法启动系统的问题。为了解决该问题一般会使用双固件升级的方式,有一个主分区firmware和一个备份分区firmware_backup,常见的有双固件升级方式有很多种,这边只介绍一种通用方式1.升级流程1.根据sysupgrade的过程,将固件进行校验写入,不过写入的时.

2022-05-04 15:04:16 3952

原创 18-Openwrt sysupgrade系统升级

openwrt的升级是使用sysupgrade工具来升级的,该工具为sbin下面的一个脚本,可以附带很多参数,但是我们一般就直接sysupgrade openwrt-ramips-mt7621-device-squashfs-sysupgrade.bin升级参数说明-i开启交互模式-d重启前延迟,延迟秒数是传进来的-v会打印sysupgrade脚本中的一些信息,脚本中默认打印-q与-v相反-n升级后不保存配置,默认保存配置-c保存所有的改.

2022-05-04 15:03:24 6341 2

原创 17-Openwrt banner文件生成

在每次串口或ssh登录后台的时候,一按回车键就会出现openwrt的字段,如果想换成自己自定义的内容如何实现。banner:语牌和横幅这个文件存放在如下位置:./package/base-files/files/etc/banner,所以我们只需要修改这个文字的内容就可以。那我们如何生成上面好看的内容,可以使用如下工具生成:sudo apt-get install sysvbanner toilet figletubuntu:~/$ banner openwrt #### #####.

2022-01-21 11:05:22 1472

原创 16-Openwrt patch生成

在开源模块的基础上修改代码,更多的时候是通过打补丁的方式进行修改。1.内核patch生成1.1 编译内核模块命令vim 19.07/target/linux/Makefileprereq clean download prepare compile install menuconfig nconfig oldconfig update refresh: FORCE @+$(NO_TRACE_MAKE) -C $(BOARD) $@清空内核:make target/linux/cle.

2022-01-21 10:50:35 1175

原创 远程调试frp

嵌入式设备上线之后,如果遇到问题想要线上维护,最直接的方法的能够远程ssh进入到设备里,然后查看日志定位问题,这边介绍使用frp配合mqtt的方式进行设备远程调试。1.远程调试原理远程调试的原理如下:本地网关与MQTT服务器保持长连接,用来接收开启远程/关闭远程命令fprs服务器需要有公网IP,开发人员可以通过该公网IP和指定的端口远程开发人员通过约定好的MQTT消息,发送开启远程命令给本地网关。本地网关收到开启远程的命令后,就启动frpc去连接对应的frps服务器。本地网关frpc连接f.

2021-09-23 11:48:16 732

原创 5-Openwrt ipv6 6to4

当电信宽带不下发ipv6地址,但是我们又有ipv4的公网地址的时候,就可以使用公网ipv4地址生成一个唯一的ipv6地址,使得一个ipv6数据包可以在ipv4的网络中传输时,这就是ipv6的6to4协议.1、6to4原理路由器A及B分别是两个站点(站点A与站点B的出口路由器,并且都是IPv4及IPv6双栈路由器)。两边都申请到一个IPv4公网地址,使用这个公网IPv4地址进行映射得到全球唯一的6to4 IPv6地址,这个IPv6地址 /48位,空间非常大,用于相应站点内的IPv6用户。如此一来.

2021-08-28 10:11:27 1538

原创 4-Openwrt ipv6之NAT6

在实际使用过程有时候电信宽带可以下发给Wan口使用的ipv6地址,但是不下发给lan口使用的ipv6地址前缀。这时候可以使用NAT6的方式,跟ipv4的NAT一样,有自己的内网地址,访问外部的时候经过NAT转化。ipv6也使用内网地址,根据ipv6的规则FD::/8开始的地址为内网地址。IPv6的NAT关键在于设置br-lan端口的ipv6的网段/前缀设置ip6tables规则,将br-lan网段的数据包通过snat地址转换后发出1. nat6配置开启config配置CONFIG.

2021-08-28 10:09:27 2814

原创 0-Linux coredump捕获分析

1.制作debug-rootcommit a4a3b5ba5a7bdb3fb98028793d62f37788c0790aconfig: CONFIG_DEBUG use debug rootfs, sstrip real rootfs9ad4d66b7aa27f7ee42281466662d51044001278 debug: add debug-root for debug coredump and panicVIM 系统编译加上-g3,在strip之前,将这些文文件存放到debug-r

2021-07-16 09:36:58 745

原创 4-Linux 内存泄漏工具

1、mtrace应用环境:Linux GLIBC编程语言:C使用方法: 包含头文件mcheck.h,定义环境变量MALLOC_TRACE为输出文件名,程序开始时调用mtrace()即可。结果输出:用户指定的文件设计思路: 为malloc,realloc,free函数添加钩子函数,记录每一对malloc-free的执行优缺点:只能检查使用malloc/realloc/free造成的的内存泄露如何获取:GLIBC自带,可直接使用2、memwatch应用环境:Linux编程语言:C使用方法:

2020-11-13 15:32:09 457

原创 3-Linux 进程中的某个线程占用时间

在比较大型的项目中,通常都会使用多线程技术,而且通常是多人合作开发,各方自测OK之后,整合在一起往往会出现一些问题,CPU使用率过高就是其中之一。如何在不熟悉所有模块代码的情况下,快速的定位到具体哪一个线程在消耗CPU,显得很有必要。在X86上,可以借助一些工具进行定位分析,但是在嵌入式系统中,工具就比较匮乏,各命令功能也比较简单,就不好定位。现介绍一种简单通用的办法:1.获取各个线程的tidps查看进程root@zihome:/proc/2111# ps | grep ZGateway 21.

2020-11-13 15:31:28 1306 1

原创 2-Linux 进程内存

ps查看进程root@zihome:/proc/2111# ps | grep ZGateway 2111 root 76112 S {MainThread} /zihome/plugins/zgateway/ZGateway /dev/ttyS2 /dev/ttyS1 2114 root 1520 S {ZGatewayTimerCh} /bin/sh /zihome/plugins/zgateway/ZGatewayTimerCheck.sh /zihome/plug

2020-11-13 15:29:00 324

原创 1-Linux 系统总内存

1.内存使用情况我们一般会使用free命令来查看系统的内存使用情况,如下root@zihome:# free total used free shared buffersMem: 125848 57332 68516 0 3160-/+ buffers: 54172 71676Swap:

2020-11-13 15:26:39 498

原创 14-Linux gpio模拟spi

1.config配置首先是spidev,要在/dev/下面产生设备文件,需要spidev的支持CONFIG_SPI_SPIDEV=y使用的是gpio模拟spi,gpio模拟spi的时序原理是bitbang文件实现的,所以这个也需要打开,如果是在openwrt下动态加载的话就是如下两个配置CONFIG_PACKAGE_kmod-spi-bitbang=y+CONFIG_PACKAGE_kmod-spi-gpio=y如果是直接内核的话是如下两个CONFIG_SPI_BITBANG=yCONF

2020-11-12 11:34:57 2034 1

原创 13-Linux-gpio-system

对于gpio的应用其实会在很多地方,最常用的就是led和key,我们也可以使用类似单片机的写法,去直接读写寄存器来控制,没有文件的体现,但这样总感觉不够Linux,所以我们还是要使用linux已有的一些设备节点来实现。一 概述Linux内核中gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0~MAX_INT之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,.

2020-11-12 11:34:04 338

原创 12-Linux mmc system

Linux mmc systemMMC、SD、SDIO的技术本质是一样的(使用相同的总线规范,等等),都是从MMC规范演化而来;MMC强调的是多媒体存储(MM,MultiMedia),SD强调的是安全和数据保护(S,Secure);SDIO是从SD演化出来的,强调的是接口(IO,Input/Output),不再关注另一端的具体形态(可以是WIFI设备、Bluetooth设备、GPS等等)。先查看下MMC的驱动框架,如下:在Linux中MMC/SD卡的记忆体都当作块设备。MMC/SD设备驱动

2020-11-12 11:33:12 336

原创 11-Linux usb system(driver)

Linux usb system(driver)USB的应用用来用广泛了,键盘、鼠标、打印机、摄像头、网卡…而且传输的速度也越来越快,USB2.0的480MB/s,到USB3.0已经是USB2.0的十倍了。Linux中USB的内容实在是太多了,有兴趣的可以查看《Linux那些事兒之我是USB》这本书,这边对USB的驱动进行简要的说明和总结。还是先看一下框架图,如下:由图可知USB驱动的各个层次:USB主机控制器,位于/drivers/usb/host/下面,USB主机控制器接口标准有OHCI

2020-11-12 11:32:39 374

原创 11-Linux usb system(descriptor)

Linux usb system(descriptor)为了更好地描述USB设备的特征,USB提出了设备架构的概念。从这个角度来看,可以认为USB设备是由一些配置、接口和端点组成,即一个USB设备可以含有一个或多个配置,在每个配置中可含有一个或多个接口,在每个接口中可含有若干个端点。这个步骤一般是在设备接入主机时设备进行枚举时完成的这些单元之间的关系如下:解释说明:USB设备可以看作提供了多个串口的设备,依据USB的规范,我们将每个串口称作端点(Endpoint),要和这个端点通信,我们就要

2020-11-12 11:32:05 539 1

MT2503手册

MT2503 datasheet。。。。。。。。。。。。。。。。。。。。。。。。

2018-04-13

MT6261芯片手册

MT6261芯片手册 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2018-04-13

Qt从零开始制作串口调试助手源代码(V1.0)-Creator_Ly

Qt从零开始制作串口调试助手源代码(V1.0)-Creator_Ly

2016-01-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除