- 博客(48)
- 资源 (2)
- 收藏
- 关注
原创 MTK wifi驱动源码分析
1、驱动加载入口module_init(wifi_drv_init_module);module_exit(wifi_drv_cleanup_module);完成对驱动的注册调用static int __init wifi_drv_init_module(void){ int status = 0; os_module_init();#ifdef RTMP_PCI_SUPPORT status = rt_pci_init_module(); if (st...
2021-12-07 15:34:31
3766
1
原创 linux驱动字符设备class_create、device_create
1 class结构体介绍 内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create(…)函数来在/dev目录下创建相应的设备节点。这样,加载模块的时候,用户空间中的udev会自动响应device_create(…)函数,去/sysfs下寻找对应的类从而创建设备节点。2 class_create..
2021-05-07 20:10:32
2630
原创 Linux驱动字符设备分析misc_register、register_chrdev
杂项设备(misc device)杂项设备也是在嵌入式系统中用得比较多的一种设备驱动。使用misc_register(&ff_wdt_miscdev); 在 Linux 内核的include/linux目录下有Miscdevice.h文件,要把自己定义的misc device从设备定义在这里。其实是因为这些字符设备不符合预先确定的字符设备范畴,所有这些设备采用主编号10,一起归于misc device,其实misc_register就是用主标号10调用register_chrdev()的...
2021-05-07 11:54:31
5888
原创 Linux 内核的驱动函数解析
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:(1)I/O映射方式(I/O-mapped)典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和OUT指令)来访问这一空间中的地址单元。(2)内存映射方式(Memory-mapped) RISC指令系统的.
2021-04-29 16:15:00
391
转载 深入理解 WLAN 中的WPS
第6章深入理解Wi-Fi Simple Configuration本章主要内容:介绍Wi-Fi Simple Configuration相关知识;介绍Android中WSC的相关代码。6.1概述在Wi-Fi相关技术体系中,除了802.11定义的标准规范外,Wi-Fi Alliance(Wi-Fi联盟)也推出了两项比较重要的技术规范,他们分别是Wi-Fi Simple Configuration和Wi-Fi P2P。其中:Wi-Fi Simple Configuration(以后简...
2021-03-27 18:01:19
3340
原创 Linux 网桥配置br-lan、eth0、eth1、ra0、rai0
Linux网关模式下将有线LAN和无线LAN共享网段实现局域网内互联:思路其实很简单:就是将虚拟出一个bridge口,将对应的有线LAN和无线LAN都绑定在这个虚拟bridge口上,并给这个bridge口分配一个地址,其他子网微机配置网关为bridge口的地址便可以了。当然,因为是设备是网关模式,路由和nat也是必须的了。如果设备本身便是网桥模式,那么路由和nat便可以省掉了。Linux 网桥配置br-lan、eth0、eth1、ra0、rai0如果你的设备含有不少于1个的LAN接口,那这个设备
2021-03-26 11:27:08
20385
1
原创 Window下adb shell 显示乱码解决方式
window下打开adb shellls显示时,出现颜色前后缀,非常不方便查看,是因为adb中输出了颜色,但是window不支持,所以要把他关掉用如下方式:alias ls='busybox ls --color=never'
2021-03-12 11:26:03
2157
1
转载 WIFI6 80211.ax 的理论速率计算及对照表
根据WiFi6协议可知,使用80MHz信道,1024-QAM可以产生600Mb / s的理论单流数据速率,相信大部分只是知道这个数据,但不知道这个数据是如何得到的,在学习的过程中,老师都教导我们某些数据是可以通过公式得出的,那么这WLAN速率也是如此,可以通过公式得出:速率 = 一次传输的数据量 / 传输时间但是这个一次传输数据量与传输时间是如何得到的,通过查询802.11协议可得一个名词与这个一次传输的数据量有关,就是Symbol,翻译过来就是符号,Symbol就表示一次传输的数据。QAM将每
2021-03-03 14:11:11
36962
原创 openwrt编译流程分析
最近开始整5G CPE项目,系统基于OpenWrt,打算详细研究了一下整个工程的构建过程,记录一下:编译过程概述编译的总体过程如下:1.编译host工具2.编译交叉工具链3.编译内核模块4.编译ipk5.安装ipk到文件系统6.编译内核7.将内核和文件系统组合成最终binary1. 编译host工具虽然我们在开始编译前已经安装了一些必要的工具,但编译过程中还需要其他一些主机工具。这部分工具将首先编译。2. 编译交叉工具链openwrt自带交叉编译链,当然在
2021-02-18 16:20:54
7014
转载 Openwrt更换内核版本后重新编译
1;将openwrt14.07中的内核版本从3.10.49更换成3.10.102a;更改文件include/kernel-version.mkb;修改文件target/linux/<路由器架构> 下的Makefile,将KERNEL_PATCHVER:= ××那一行的xx改成自己希望的版本系列即可,但不能具体为3.10.102,应为3.10。不然会报错。c;修改target/linux/generic/patches-3.10中的文件。在这个网址中可以找到相关补丁:https.
2021-02-18 14:32:47
4849
转载 linux iptables 基础知识及用法规则
iptables [-t table] 指定规则表-t 参数用来,内建的规则表有三个,分别是:nat、mangle 和filter,当未指定规则表时,则一律视为是filter。个规则表的功能如下:nat:此规则表拥有PREROUTING 和POSTROUTING 两个规则链,主要功能为进行一对一、一对多、多对多等网址转换工作(SNAT、DNAT),这个规则表除了作网址转换外,请不要做其它用途。mangle:此规则表拥有PREROUTING、FORWARD 和POSTROUTING 三...
2020-12-31 14:07:25
727
转载 Linux内核系统由哪些部分组成的
Linux内核的组成:Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。Linux内核源代码的目录结构Linux内核源代码包含如下目录。arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录,如i386、arm、arm64、powerpc、mips等。Linux内核目前已经支持30种左右的体系结构。在arch目录下,存放的是各个平台以及各个平台的芯片对Linux内核进程调度、内存管理、中断等的支持,以及每个具体的SoC和电路板的板级支持代码
2020-12-30 15:34:15
9797
1
转载 Linux驱动mmap内存映射
Linux驱动mmap内存映射mmap在linux哪里?什么是mmap?上图说了,mmap是操作这些设备的一种方法,所谓操作设备,比如IO端口(点亮一个LED)、LCD控制器、磁盘控制器,实际上就是往设备的物理地址读写数据。但是,由于应用程序不能直接操作设备硬件地址,所以操作系统提供了这样的一种机制——内存映射,把设备地址映射到进程虚拟地址,mmap就是实现内存映射的接口。操作设备还有很多方法,如ioctl、ioremapmmap的好处是,mmap把设备内存映射到虚拟内存,则用户
2020-12-30 11:44:27
242
原创 Linux内存分配函数kmalloc、kzalloc、vmalloc、get_free_pages、malloc的区别
简单的说:kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存 kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,malloc不保证任何东西(这点是自己猜测的,不一定正确) kmalloc能分配的大小有限,vmalloc和malloc能分配的大小相对较大 内存只有在要被DMA访问的时候才需要物理上连续 vmalloc比kmalloc要慢详细的解释: 对于提供了MMU(存储管理器,辅助操作系统进行内存管理...
2020-12-30 09:50:44
1534
原创 linux 路由转发及udhcpd的配置上网
海思V711平台4G模组上路由转发配置:1、配置udhcpd.conf文件 vim /etc/udhcpd.confstart 192.168.9.1#定义地址池的开始地址end 192.168.9.254 #定义地址池的结束地址interface gmac0 #dhcp服务器中响应dhcp协议的接口opt dns 8.8.8.8 219.239.26.42#定义dns服务器地址option subnet 255.255.255.0opt router 192...
2020-12-28 17:38:43
3319
原创 linux内核的内存映射函数of_iomap和ioremap
of_iomapvoid __iomem *of_iomap(struct device_node *node, int index);通过设备树的设备结点直接进行设备内存区间的 ioremap(),index是内存段的索引。若设备结点的reg属性有多段,可通过index标示要ioremap的是哪一段,只有1段的情况, index为0。采用Device Tree后,大量的设备驱动通过of_iomap()进行映射,而不再通过传统的ioremap。ioremap 几乎每一种...
2020-12-25 11:24:09
7986
原创 删除Windows下samba保存的用户名和密码
当我们访问Windows共享目录或者NAS共享盘时,Windows会提示输入共享用户名和密码,这时如果我们选择了“记住我的凭据”,Windows就会将认证凭证保存到计算机中,这样下次再访问共享时,就不需要再输入共享用户名和密码了,方便的用户的使用。但是如果一旦共享的密码修改了,我们无法再访问共享了。本文就是以Windows7为例,为您展示如何删除之前保存到计算机中的Windows共享认证凭据。1、常情况下,我们在Windows资源管理器里输入“\\IP地址\共享目录”或者通过Wind...
2020-12-24 16:24:39
19008
1
原创 linux系统堆、栈及内存分配、CPU寄存器
堆和栈:栈主要用来存放局部变量, 传递参数, 存放函数的返回地址.esp 始终指向栈顶, 栈中的数据越多, esp的值越小.堆用于存放动态分配的对象, 当你使用 malloc , new 等进行分配时,所得到的空间就在堆中. 动态分配得到的内存附带有分配信息, 所以你能够 realloc 和 free调它们.全局,静态和常量是分配在数据区中的。数据区包括bss和初始化区。堆向高内存地址生长栈向低内存地址生长堆和栈相向而生,堆和栈之间有个临界点,称为stkbrk内存分配:Linux
2020-12-09 17:36:07
4274
2
原创 嵌入式软件工程师成长方向的思考
最近有点空闲,总结下嵌入式工程师所需要掌握的技能,及成长方向。主体知识:C语言、数据结构 + 算法、linux系统+ linux网络、数据库 、内核编译裁剪+驱动开发一、常用数据结构:平衡二叉树链表栈/队列C方向数据结构二、linux系统:常用的系统命令及工具linux系统的堆和栈、内存分区、虚拟内存 + 物理内存、进程 + 线程 + ipc、死锁、分片机制、五大组件、中断和系统调用 、同步和异步等等问题。三、linux网络:OSI 七层模型和 TCP/IP 四层体.
2020-12-08 11:39:59
1224
1
原创 linux 服务器加装硬盘流程及sda sdb加载顺序
使用中服务器容量不够了,于是准备加装硬盘,步骤如下于是公司加了 500 G 的普通硬盘用于存放不常用的源码。环境:Linux ubuntu 4.11.0-15-generic以下是步骤:1、安装硬盘到服务器中2、查看硬盘情况可以看到 sdb 是我们的第二块硬盘3、对硬盘进行分区fdisk /dev/sdb弹出如下界面:做如下操作: n(新建分区)、 p(基本分期) 、1(表示新建一个分区) 、1-3916(回车默认选择硬盘柱面的起始位置),w(将表写...
2020-11-17 19:34:41
6725
原创 NandFlash OOB及UBI文件系统分析
Nand Flash,每一个页,对应一个空闲区域(OOB),这个区域是基于Nand Flash的硬件特性,数据在读写的时候容易出错,为了保证数据的正确性,就产生了这样一个检测和纠错的区域,用来放置数据的校验值。OOB的读写操作,一般都是随着页的操作一起完成,也就是在读写页的时候,对应的OOB就产生了,那么OOB有什么用途呢?1). 标记是否存在坏块1.为什么会出现坏块 由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生...
2020-11-05 19:37:58
1710
原创 win7无法访问samba(80070035/800704cf/)问题
出现“错误代码:0x800704cf 不能访问网络位置”等提示,而您的工作组的其他机器却可以正常打开和访问这个共享文件夹,出现这种情况主要是Win7的一个已知问题引起的(详细情况请访问http://support.microsoft.com/kb/980486/),解决方法打开"设备管理器",点击"网络适配器",点击菜单查看中的“显示隐藏的设备”,你会发现许多Microsoft ISATAP Adapter # (数字)全部删除后就可以了...
2020-10-09 09:14:57
889
原创 LTE中扫频及小区搜索
2.1 扫频 2.1.1 概述 在指定频点、小区或者候补频点、小区搜索失败或者这些信息不存在时,会进行全频 段扫描,搜索 UE 能力支持频段范围内存在的所有小区。物理层会将 RRC 下发的扫描 频段分成单位 100KHz 的小频段进行扫描,并根据可能存在小区的可能性进行排序, 每个扫描结果上报将最高可能性的频带上报给 RRC。然后 RRC 会根据上报的结果指示 物理层进行指定频点的小区搜索。如图 2-1 所示。 图2-1 扫频原语 RRC_LPHY_BAND_SCAN_R
2020-08-20 15:42:23
4734
原创 LTE 中设置voice/data centric的差异
1. 什么是voice centric和data centric Voice centric和data centric的差别在于以语音为中心还是以数据为中心。这里的以某某为中心可不是说说而已。举个栗子,UE一般搜网注册都会按照LUG(LTE->UMTS->GSM)或者LC(LTE->CDMA)的顺序进行,如果UE(未开通VOLTE)注册到LTE时,网络提示不支持语音,比如CSFB。UE就必须disable LTE后回到GU或者CDMA,否则留在不能语音的网络下,UE就会...
2020-08-18 17:03:13
4380
原创 LTE网络中的EPS和PDN
LTE网络是一个只有PS域的全IP的移动网络,没有CS域,因此UE必须连接到至少一个PDN (Packet Data Network) 才能执行数据通信的工作。在EPS系统中,PDN指的是外部的数据网络(相对于LTE运营商而言),例如互联网、企业专用网等,使用APN作为PDN的标示。P-GW位于EPC和PDN的边界,EPS Bearer存在于UE和P-GW之间。通常情况下,EPS承载可以看作是UE和P-GW之间的逻辑电路,EPS承载取代了UMTS网络中的PDP。 在UE的第一条Initi...
2020-08-13 13:50:59
18489
原创 adb 出现devices offline的解决方法
1、终端设备adbd 进程是否开启 /sbin/adbd &2、adb 驱动是否正常 更新驱动3、adb版本是否匹配 更新版本以上都正常后执行:adb kill-serveradb start-serveradb remountadb shell...
2020-07-27 10:32:07
8949
原创 linux内核空间跟用户空间通信方法
linux驱动程序一般工作在内核空间,但也可以工作在用户空间,内核空间和用户空间之间如何进行通讯?1、系统调用read,write,ioctlA.get_user(x,ptr):在内核中被调用,获取用户空间指定地址的数值并保存到内核变量x中。B.put_user(x,ptr):在内核中被调用,将内核空间的变量x的数值保存到到用户空间指定地址处。C.Copy_from_user()/copy_to_user():主要应用于设备驱动读写函数中,通过系统调用触发。2、虚拟文件系统pr..
2020-06-09 16:40:08
2491
1
原创 关于私钥、公钥、数字签名、数字证书、https、RSA原理解释
根据非对称密码学的原理,每个证书持有人都有一对公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由证书持人自己持有,并且必须妥善保管和注意保密。数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。首先要搞清楚三个概念,即加密,签名和认证。一、公钥...
2020-04-17 16:00:58
3746
1
原创 TCP协议中常用的FTP/HTTP/HTTPS/SSH等常见端口号
在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。分类情况:(1)公认端口(WellKnownPorts)...
2020-04-16 10:14:50
8245
原创 解决SVN出现错误“error running context: an error occurred during ssl communication”的问题
确认版本、网络无问题后,排查保存的信息。1、删除保留的信息C:\Users\#yourusrname#\AppData\Roaming\Subversion\auth\2、打开注册表运行窗口执行 regedit检测注册表,搜索Subversion或者你的SVN服务器IP,发现用户名和密码保存的位置如下图:删除保存的配置即可...
2020-04-15 17:34:42
14754
原创 LTE 注网流程log分析
总体流程一、初始化找卡:User Identity Module/High[ mmgsdi.c 9083] USIM app. present 读取搜网nv:1) NV 00010:Digital/Analog Mode Preference,接入技术,通常采用Auto/2G/3G/4G四 个选项...
2020-03-20 17:38:14
11943
10
原创 android 移植4G 模块调试记录
https://blog.youkuaiyun.com/u010164190/article/details/79096345
2020-03-06 16:57:27
789
原创 linux SSL/TLS加密协议
SSL和TLS的关系SSL(Secure Sockets Layer)和TLS(Transport Layer Security)的关系就像windows XP和windows 7的关系,升级后改了个名字而已。下面这张表格列出了它们的历史:协议 创建时间 创建者 RFC 注释 SSL1.0 n/a Netscape n/a 由于有很多安全...
2020-03-06 15:08:43
4697
1
原创 linux 的md5使用
MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。md5sum命令采用MD5报文摘要算法(128位)计算和...
2020-03-06 11:42:29
1438
原创 UART、I2C、SPI三种串行总线的原理及应用
链接如下https://blog.youkuaiyun.com/weiqifa0/article/details/8845281
2020-03-03 15:36:15
347
原创 ubuntu14 搭建gerrit服务器及使用说明
Gerrit安装使用指导简介:本指导主要分三部分组成,一是Gerrit的安装配置,二是本地git的修改提交到Gerrit仓库,三是代码审查说明。一、依赖组件Gerrit依赖的组件主要有以下四个:1、jdk --Gerrit主要由java实现其功能,所以需要jdk支持;sudo apt-getinstall ope...
2020-02-24 09:47:09
985
原创 ubuntu14 设置开机启动定时启动的方法
在Linux下设置软件开机自动有这几种方式:1、 自动启动应用程序——rc.local脚本2、 自动启动服务——update-rc.d1、rc.local脚本rc.local脚本是一个Ubuntu开机后会自动执行的脚本,在该脚本内添加命令行,开机时会自动执行。 脚本路径/etc/rc.local2、自动启动服务——update-rc.d使用 update-rc.d...
2020-01-17 17:13:10
727
原创 ubuntu14 编译安装更新内核及驱动
为了方便修改驱动,使用原生安装的内核跟自己编译的驱动已经不匹配,所以需要重新下载内核源码编译安装。一、内核更新安装1、查看自身系统的内核版本2、去内核官网下载内核源码3、配置内核得到内核之后你肯定要对其进行配置,不然最后和你的电脑不适配,也是有问题的。我进行配置的办法是将现有内核的配置选项复制到你要编译的新内核上去。首先,我们要把原来内核的选项配置复制出来cp /boo...
2020-01-13 15:42:51
1633
原创 window下USB驱动的安装和ADB使用
1、usb驱动的安装以官方的google android 驱动作为蓝本,然后修改驱动文件,把自己的设备加进去就可以了。一、找到设备ID在设备管理器里,找到设备,右键属性,在详细信息面板,属性选硬件ID,下面会出现一到两行文字,这段文字下面要用到。二、请出谷歌驱动,修改android_winusb.inf,打开这个文件,在[Google.NTx86]和[Google.NTamd64]节...
2020-01-10 13:32:31
3290
原创 高通QMI IDL格式介绍,方便增加QMI message
主要方便单个的增加qmi 消息。[背景]由于idl文件和自动生成工具不开放给客户,客户如果想要扩展qmi结构或者新增QMI消息需要手动按照IDL的格式修改qmi消息对应的<api>.c和<api>.h 文件。这篇KBA主要介绍一些常见的QMI 结构与<api>.c中的宏定义的对应关系,客户可以参照现有代码学习,自行添加。[数据结构描述信息格式...
2019-09-30 11:34:42
2544
单片机的蓝牙接收发射模块设计报告.doc
2019-12-09
交通灯课程设计--嵌入式.doc
2019-12-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人