- 博客(56)
- 资源 (37)
- 收藏
- 关注
原创 TSN 3. Ethernet AVB 协议栈分析
1. IEEE 802.1AS 精准时钟同步协议IEEE 802.1AS 是一种用于网桥网络的精准时钟同步协议标准,它在 IEEE 1588 精准时间同步协议的基础上进行修改,得到广义的精准时间同步协议(gPTP, generalized Precision Time Protocol)。通过最佳主时钟算法(BMCA,Best Master Clock Algorithm)来选择网络中唯一的主时钟(Grandmaster)节点,并以它作为时 钟同步生成树的根节点。其他节点拥有一个或多个主端口(Master
2020-09-27 16:10:54 5545
原创 TSN 2.车载 Ethernet AVB 通信协议
1 物理层 BroadR-Reach 技术美国博通(Broadcom)半导体公司的 BroadR-Reach 专利技术使得车载 Ethernet物理层研究取得突破性进展,该技术可通过一对非屏蔽双绞线实现 100 Mb/s 的传输速度,而且辐射的电磁噪声小,可以满足汽车环境内严格的 EMI 和 EMC 要求,因而在汽车行业引起了广泛关注。博通还联合宝马公司成立了该项技术的推广兴趣团体——OPEN 联盟(One Pair Ether Net Alliance),该联盟旨在加快 Ethernet 在车载网络领域
2020-09-27 15:33:16 3214
原创 TSN 1. Ethernet AVB/TSN 综述
以太网音视频桥接技术(Ethernet AVB)通过在传统以太网的基础上新增一系列协议标准,能提供高质量的音视频传输服务,以支持各种多媒体应用的通信需求。Ethernet AVB 主要用于音视频信息和控制类信息的数据传输,根据不同类型消息的实时性与可靠性要求,最多可划分八种预留流量类(Stream Reservation Class),也可利用尽最大努力类消息进行数据传输。2012 年 11 月,IEEE 将音视频桥接网络改名为时间敏感网络(TSN,Time-Sensitive Networking),由于
2020-09-27 15:21:09 4935
转载 Linux下TC使用说明
一、命令格式:tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ] tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific para
2020-09-25 15:36:50 1344
原创 iproute 设置vlan命令
1.增加vlan[root]# ip link add link eth0 name eth0.1 type vlan id 1[root]# ip link add link eth0 name eth0.2 type vlan id 2[root]# ip addr add 192.168.1.1/24 dev eth0.1 brd +[root]# ip addr add 192.168.2.1/24 dev eth0.2 brd +[root]# ip link set eth0.1 up
2020-09-24 18:59:02 2250 1
转载 linux驱动中probe函数是怎么调用的
linux驱动的三个概念:设备、驱动、总线probe何时被调用:在总线上驱动和设备的名字匹配,就会调用驱动的probe函数probe函数被调用后,系统就调用platform设备的probe函数完成驱动注册最后工作。下面是probe被调用前的一些流程。device一般是先于driver注册,但也不全是这样的顺序。Linux的Device和Driver的注册过程分别枚举挂在该BUS上所有的Driver和Device实现了这种时序无关性。Platform机制的本身使用并不复杂,由两部分组成:platfo
2020-08-04 17:37:41 1727
转载 Linux kernel mmc 框架说明,包括mmc_test使用方法
1.Linux 总线模型Linux下的任何驱动在内核中最终都抽象为bus, driver以及device三者间的相互作用。 总线是处理器和一个或多个设备之间的通道,在设备模型中,所有的设备都通过总线相连 接。总线将设备和驱动绑定,在系统每注册一个设备的时候,会遍历该总线上的driver list, 通过bus的math函数寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会便利该 总线上的device 寻找与之匹配的设备,而匹配由总线的match函数完成。一但匹配,则
2020-08-04 15:21:04 1712
原创 hwrng
hwrng目前是Linux kernel中产生随机数的一个driver,位于 /dev/hwrng.以NXP imx6DL 为例,使用命令如下:root@imx6dlsabresd:~# dd if=/dev/hwrng of=data.bin bs=200 count=11+0 records in1+0 records out200 bytes copied, 0.000799333 s, 250 kB/sroot@imx6dlsabresd:~# hexdump data.bin00000
2020-07-29 15:24:54 1186
原创 PCI设备驱动解析
首先我想引用一下官方的源代码中的文档,对设备驱动的工作做一个概括性的叙述:1 首先是调用 pci_register_driver()函数,对设备进行注册。2.Once the driver knows about a PCI device and takes ownership, thedriver generally needs to perform the following initialization: Enable the device Request MMIO/IOP resourc
2020-07-24 16:24:34 4020
转载 浅谈Linux PCI设备驱动(二)
我们在浅谈Linux PCI设备驱动(一)中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的。后面我们会举个例子来说明Linux PCI设备驱动的主要工作内容(不是全部内容),这里只做文字性的介绍而不会涉及具体代码的分析,因为要分析代码的话,基本就是对 Linux内核源代码情景分析(下册)第八章的解读,读者若想分析代码,可以参考该书的内容,我们这里就不去深入分析这些代码了。Linux PCI设备驱动代码必须扫描系统中所有的PCI总线,寻找系统中所
2020-07-22 16:05:44 299
转载 浅谈Linux PCI设备驱动(一)
要弄清楚Linux PCI设备驱动,首先要明白,所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分。不知道读者理不理解这句话,本人觉得这句话很重要,对于PCI、USB这样的驱动来说,必须要理解这个概念,才能明白该如何看待Linux下的PCI和USB以及类似的总线型的驱动。理由也很简单,就是Linux PCI驱动是内核自带的,或者说内核帮你写好了!而我们需要完成的就是设备本身的驱动,比如网卡驱动等。当然,并不是说内核帮咱们写好了Linux PCI驱动我们什么就不用做了,至
2020-07-22 15:35:26 782
原创 Vigiles 漏洞扫描工具使用
1. 前言在linux嵌入式软件开发的过程中,我们有可能会遇到一些机构检测出的BUGS,在这里介绍一款软件:vigiles。利用它你可以进行漏洞扫描,找出你有可能未修复的漏洞。2.环境设置这款软件是伴随着Yocto环境使用的,其实就是在yocto 编译的时候扫一下现在code中的漏洞。2.1 Yocto环境编译的要预装一些一些软件,可以参考一下链接:https://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#ref-manual
2020-07-09 22:48:21 498
转载 Linux内核 Crash分析
在工作中经常会遇到一些内核crash的情况,本文就是根据内核出现crash后的打印信息,对其进行了分析,使用的内核版本为:Linux2.6.32。每一个进程的生命周期内,其生命周期的范围为几毫秒到几个月。一般都是和内核有交互,例如用户空间程序使用系统调用进入内核空间。这时使用的不再是用户空间的栈空间,使用对应的内核栈空间。对每一个进程来说,Linux内核都会把两个不同的数据结构紧凑的存放在一个单独为进程分配的存储空间中:一个是内核态的进程堆栈,另一个是紧挨进程描述符的数据结构thread_info,叫线程
2020-07-08 23:22:03 734
转载 内核调试工具 — kdump & crash
1. kdump简介kdump是系统崩溃的时候,用来转储运行内存的一个工具。系统一旦崩溃,内核就没法正常工作了,这个时候将由kdump提供一个用于捕获当前运行信息的内核,该内核会将此时内存中的所有运行状态和数据信息收集到一个dump core文件中以便之后分析崩溃原因。一旦内存信息收集完成,可以让系统将自动重启。kdump是RHEL5之后才支持的,2006被主线接收为内核的一部分。它的原理简单来说是在内存中保留一块区域,这块区域用来存放capture kernel,当production kernel
2020-07-08 23:00:44 985
转载 PCIe 2. 深入PCI与PCIe之二:软件篇
本篇主要介绍PCI和PCIe的软件界面和UEFI对PCI的支持。PCI/PCIe软件界面1.配置空间PCI spec规定了PCI设备必须提供的单独地址空间:配置空间(configuration space),前64个字节(其地址范围为0x00-0x3F)是所有PCI设备必须支持的(有不少简单的设备也仅支持这些),此外PCI/PCI-X还扩展了0x40~0xFF这段配置空间,在这段空间主要存放一些与MSI或者MSI-X中断机制和电源管理相关的Capability结构。前文提到过,PCI配置空间和内存空
2020-07-06 17:44:48 1704
转载 PCIe 1. PCI与PCIe学习一——硬件篇
最近在学习驱动开发过程中涉及到PCI相关知识,在网上看了很多文章,良莠不齐,我总结一下比较好的文章分享给大家,那就从源头开始说起。PCI总线和设备树是X86硬件体系内很重要的组成部分,几乎所有的外围硬件都以这样或那样的形式连接到PCI设备树上。虽然Intel为了方便各种IP的接入而提出IOSF总线,但是其主体接口(primary interface)还依然是PCIe形式。我们下面分成两部分介绍PCI和他的继承者PCIe(PCI express):第一部分是历史沿革和硬件架构;第二部分是软件界面和U
2020-07-06 17:03:10 3396
原创 NXP芯片 i.MX系列Uboot 移植过程简析
我们拿到芯片厂商提供的软件,经常要根据自己的需要移植到自己设计的板子上,因为自己设计的开发板难免会与官方给出的存在差异。在这里我简单地介绍下,uboot的移植过程,在这里还是以NXP i.MX 的芯片为例。1. DDR首先说一下DDR,用户在根据官方的开发板定制自己的板子的时候,除了去除一些外设,DDR方面也经常会有不同之处。在这里就讲一下在i.MX 系列的芯片中DDR 是如何更改的。在这里说一下DCD table,这个DCD table是在最终的uboot image 中进行ddr 初始化的代码。那么
2020-07-05 18:12:20 867
原创 NXP芯片 i.MX系列 UBOOT 启动分析
做嵌入式工作的朋友都知道,uboot是大家经常接触到的,在uboot中会去加载我们的kernel(linux),进而跳转到我们的操作系统中去。下面我们那就分析下,Uboot的启动是如何实现的,本篇是以NXP 的i.MX 6 系列的芯片为例。废话不多说,现在开讲。1. vector.s在uboot刚开始启动的时候,会用到一个向量表,里面会有各种异常向量,这个的定义位置是在/arch/arm/lib/vectors.S,具体代码如下。/* * vectors - Generic ARM except
2020-07-03 20:12:15 1645
原创 NXP芯片 i.MX系列 UBOOT reset 命令简析
在uboot命令行中我们会经常用到reset 命令,那么这个reset命令是怎么在代码中实现的呢,现在我们来一探究竟。在这里我们以NXP的i.MX 系列芯片为例。1. do_reset首先我们看对于reset命令的定义,在cmd/boot.c文件中。代码如下:U_BOOT_CMD( reset, 1, 0, do_reset, "Perform RESET of the CPU", "");这里就涉及到一个关键的函数,do_reset,下
2020-07-03 17:06:24 1271 1
原创 Android 编译错误集锦
1.Out of memory error在编译Android 8的时候遇到了内存不足的问题/bin/bash: line 0: [: =: unary operator expected[ 3% 39/1150] Building with Jack: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dexFAILED: out/target/common/obj/JAVA_LIBRA
2020-07-02 18:10:09 412 1
原创 NXP 之s32系列 汽车平台芯片及应用集锦
S32系列是NXP开发的针对汽车的芯片,在这里总结一下下官的资料,希望对大家有所帮助。1.S32G1.1 S32G processors for Vehicle Networking资料1.2 Target ApplicationsGatewayService-Oriented Gateway2.S32S2.1 S32S microcontrollers for Safe Vehicle Dynamics2.2 Target ApplicationsActive SuspensionAu
2020-06-29 23:15:56 3351
原创 NXP I.MX芯片开发板资源集锦
这篇文章旨在收集NXP I.MX 系列芯片开发板资源的合集,方便大家查阅,如果需要,Android,Linux软件资源,请参考文章:NXP I.MX 芯片软件资源集锦如果需要NXP I.MX 系列芯片有关信息请参考文章:NXP I.MX芯片资源合集1. I.MX61.1 MCIMX6SLL-EVK: Evaluation kit for the i.MX 6SLL Applications Processor1.2 MCIMX6ULL-EVK: Evaluation kit for the i
2020-06-27 11:32:25 1042
原创 NXP I.MX芯片资源合集
这篇文章旨在收集NXP I.MX reference manual,Data sheet,Application note,User guide 等文档的合集,方便大家查阅,如果需要,Android,Linux软件资源,请参考文章:NXP芯片软件资源集锦0.I.MXRT系列0.1 I.MXRT11700.2 I.MXRT10640.3 I.MXRT10600.4 I.MXRT10500.5 I.MXRT10200.6 I.MXRT10150.7 I.MXRT10100.8 I.MXRT6
2020-06-27 10:47:07 1308
原创 NXP I.MX芯片软件资源集锦
此篇文章为NXP I.MX系列芯片相关的公开开源资源,旨在帮助大家快速找到需要学习资源。LINUXLINUX DOCS这部分的链接是linux的相关文档,包括Yocto环境的搭建,如何烧写image以及一些移植说明的文档。L4.1.15_1.0.0_LINUX_DOCSL4.1.15_1.2.0_LINUX_DOCSL4.1.15_2.1.0_LINUX_DOCSL4.14.98_2.1.0_LINUX_DOCSL4.14.98_2.2.0_LINUX_DOCSL4.14.98_2.3.1
2020-06-26 18:17:37 1521
原创 Trace 32 使用
Trace 32 是我们在调试MPU的重要工具,在这里简单介绍下Trace 32的使用步骤。1. 打开软件首先连接好硬件,然后打开界面,如果没有连接硬件会出现打开错误的提示框。错误提示如下:打开的界面如下所示:2.Attach 设备a.在File选项下,选择和板子对应的script以NXP imx8qm mek 板子为例,可以选择coresight-ca53_ca72.cmmb.选择命令模式 或者CPU选项下 选 up3.下载编译文件在设备attach 上之后呢,我们就可以下载编译的文
2020-06-24 20:23:26 5136 2
原创 Bluetooth 学习分享
关于Bluetooth的文章,感觉写的超好,在这里分享给大家。蓝牙核心技术概述(一):蓝牙概述蓝牙核心技术概述(二):蓝牙使用场景蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、链路管理)蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)...
2020-06-18 18:54:08 320
原创 Linux 驱动 4. Device tree 解析
关于Device Tree 蜗窝科技的博客中有写的非常好的文章。再次做一个链接,分享给大家。Device Tree(一):背景介绍Device Tree(二):基本概念Device Tree(三):代码分析Device Tree(四):文件结构解析...
2020-06-18 18:44:42 399
转载 Linux驱动 3.Linux Platform devices 平台设备驱动
设备总线驱动模型:http://blog.csdn.net/lizuobin2/article/details/51570196本文主要参考:http://www.wowotech.net/device_model/platform_device.htmlplatform平台设备驱动是基于设备总线驱动模型的,它只不过是将 device 进一步封装成为 platform_device,将 device_driver 进一步封装成为 platform_driver,前面已经分析过设备总线驱动模型,关于dev
2020-06-18 18:33:07 479
转载 Linux驱动 2.Linux驱动之Kobject、Kset (二)(uevent mdev ktype type)
LDD3中说,Kobject的作用为: 1、sysfs 表述:在 sysfs 中出现的每个对象都对应一个 kobject, 它和内核交互来创建它 的可见表述。 2、热插拔事件处理 :kobject 子系统将产生的热插拔事件通知用户空间。 3、数据结构关联:整体来看, 设备模型是一个极端复杂的数据结构,通过其间的大量链接而构 成一个多层次的体系结构。kobject 实现了该结构并将其聚合在一起。 其中,第一条已经在前一篇文章中介绍过了,如果不了解请移驾 http://blog.csdn
2020-06-18 18:13:16 241
转载 Linux驱动 1.linux设备驱动之Kobject,Kset(一)
纠结又纠结,虽然看了一些关于kobject 和 kset 的书与文章,但是对于这两个东西,还是不太明白,又分析了一遍2.6.32.2内核的代码,结合前人的努力,终于有了一点眉目。总结一下,给自己做个笔记,也给初学者一点指引。LDD3中说,Kobject的作用为:1、sysfs 表述:在 sysfs 中出现的每个对象都对应一个 kobject, 它和内核交互来创建它的可见表述。2、热插拔事件处理 :kobject 子系统将产生的热插拔事件通知用户空间。3、数据结构关联:整体来看, 设备模型是一个极端
2020-06-18 17:41:18 334
转载 Linux驱动 0. Kobject
核心结论:1、sys 目录下的层次结构依赖于 kobject.parent ,未指定parent时,默认使用 kobject.kset.kobject 作为 parent,如果都没有,就出现在 /sys 目录下。2、该 kobject 目录下的属性文件依赖于 kobject.ktype在linux的驱动表示中,主要有三个基本的结构,分别是kobject,kset,ktype. Kobject,kset,kypte这三个结构是设备模型中的下层架构。模型中的每一个元素都对应一个kobject。kset
2020-06-18 16:27:38 226
原创 NXP之imx系列芯片 linux代码编译简介
NXP的imx系列芯片使用很广的芯片,这篇文章就介绍下imx 芯片 Yocto 环境的搭建,以及单独编译 uboot,kernel 的方法。PC: ubuntu 16.041.环境设置1.1 PC软件预装在编译之前首先要预装一些相关的软件,安装命令如下:sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \build-essential chrpath socat libsdl1.2-dev如
2020-06-17 16:09:31 5494 1
原创 linux驱动 9.Linux input设备驱动
1.前言linux input是我们都会用到的一个模块,比如触摸屏,鼠标,键盘。今天在这里以触摸屏为例,简单分析下,input 驱动的架构以及相关代码实现。Software: L4.14.98Hardware: imx8qInput 设备驱动框架主要分为三层:1.input_device(设备驱动层)2.input_core(核心层)3.input_handle(事件处理层)2.初始化input 的初始化主要包括三个部分,下面一个一个来说。2.1 input core 初始化代码路径
2020-06-17 15:01:05 410
原创 Android 2.bootloader编译简析
众所周知,Android系统是比较复杂的,在这里我们简析一下Android 系统中的UBOOT是怎么编译的。软件版本我们以Android p 9.0.0_2.3.x auto 版本Software:Android p 9.0.0_2.3.x autoHardware:imx8qm/imx8qxp mek在这里我们主要看两个文件,下面我们细细讲来。1.BoardConfig.mk文件路径如下:android-auto-p\android_build\device\fsl\imx8q\mek_8q
2020-06-17 00:21:58 1662 1
原创 Linux 编译错误以及解决方案集锦
1.在linux中编译一个应用出现了以下错误: “fatal error: openssl/aes.h: No such file or directory”.出现这个原因是因为linux系统中缺少openssl相应的文件。To fix this problem, you have to install OpenSSL development package, which is available in standard repositories of all modern Linux distribu
2020-06-14 21:09:06 2564
原创 Android 1. Android verify boot (AVB)
前言众所周知,安全问题现在越来越被大家所重视,目前运行Android系统的设备市场占有率很大,我们在这里就简单地分析下Android如何保证自己的系统运行安全的。熟悉Android 系统的朋友们都知道,Android整个系统的的image有好多个。有bootloader、包含kernel的boot.img,还有system.img和vendor.img。在芯片刚启动的时候会利用芯片中的OTP fuse的值对bootloader 镜像文件进行校验。bootloader启动后会根据Android veri
2020-06-14 20:38:07 4009
原创 密码学基础知识简述
这篇文章主要介绍一些密码学的密钥以及HASH算法的一些基本知识,旨在让大家对PPT的内容的理解有些帮助。密钥密钥分为对称密钥和非对称密钥。对称密钥就是加密文件的密钥和解密文件的密钥是同一个,而非对称密钥是由一对密钥组成,分为公钥和私钥,可以用一把密钥去加密,用另一把密钥去解密。下面用两张图简单地说下两个密钥加解密的区别。对称密钥的算法一般有以下几种:DES,3DES,AES等。非对称的有RSA,ECC。两者的对比如下:Hash算法Hash算法在密码学中主要用于产生消息摘要和签名。简单地说,
2020-06-14 09:30:28 402
原创 Bootargs参数设置
Bootargs参数,通常由uboot传递至kernel。有两种方法可以设置。1.在UBOOT中利用命令行设置进入命令行模式:输入以下命令u-boot=>setenv bootargs root=/dev/mmcblk0p1 或者 u-boot=>setenv bootargs console=ttymxc0,115200 root=/dev/mmcblk3p2u-boot=>saveenv 2.在DTS中设置例如:..........................
2020-06-11 17:50:41 1700
原创 linux驱动 8. SPI驱动
0.简介SPI也是嵌入式设备经常用到的一种总线,它采用主从架构,也可以全双工通讯。今天我们来分析一下SPI在linux中的驱动。software:linux 4.14.98hardware: imx8和I2C驱动有些类似。SPI的驱动大致可以分为三部分。1.SPI设备驱动部分2.SPI核心层部分3.SPI控制器驱动部分摘录网络上面一张图,如下图所示1.SPI控制器驱动在这里先分析一下SPI控制器驱动给,下面看代码。FILE:drivers/spi/spi-imx.cstatic S
2020-06-11 14:39:52 798
原创 linux驱动 7.I2C驱动
简述I2c是一个应用很广的总线。通讯协议简单,而且一条总线上可以挂载多个设备,在这里讲一下I2c在linux中的架构。首先借一下网络上的一张图:I2c的框架主要分为以上这么几个部分。下面根据代码,相机讲述一下,各个部分的实现。软件版本:linux 4.14.98硬件型号:imx71. I2C core 初始化文件位置:drivers/i2c/i2c-core-base.c首先来看i2c_init()函数。static int __init i2c_init(void){
2020-06-10 19:39:34 584
Bluetooth core v4.2
2016-06-05
802.15.4 协议(标准文档)
2016-05-31
加密算法与网络安全英文版
2016-05-31
C语言参考手册英文版
2016-05-31
C语言参考手册
2016-05-31
Source insight 教程
2016-05-31
Java基础教程
2016-05-27
Source Insight 经典教程
2020-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人