自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (18)
  • 收藏
  • 关注

原创 编写SPI_Master驱动程序_新方法

在SPI Master对应的设备树节点下,每一个子节点都对应一个SPI设备,这个SPI设备连接在该SPI Master下面。其他属性都是驱动程序相关的,不同的SPI Master驱动程序要求的属性可能不一样。

2023-08-04 15:11:22 362

原创 Qemu搭建ARM Vexpress开发环境

QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器软件,在GNU/Linux平台上使用广泛。可以在没有硬件开发板的情况下调试验证问题。最初搭建Qemu时遇到一些问题,新版Qemu的教程网上少之又少,向大佬请教时得到的答复是用别人验证过的东西靠谱,Qemu很少有人源码级debug。这回答有点颠覆三观,一个开源认可度很高的软件怎么可能会因为编译安装而需要源码级debug,于是便有了后续……

2023-06-09 12:45:42 896

原创 Gadget应用实例之serial

启动Linux内核时传入commandline参数"console=ttyGS0"后,内核的printk的信息通过Gadget串口打印出来(Host要打开USB串口)。在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!使用USB线连接板子的OTG口和PC的USB口。仅此向嵌入行业里的每一个认真做技术的从业者致敬!

2023-03-21 12:38:08 1182 1

原创 Gadget应用实例之serial

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!参考libusb示例:libusb\examples\xusb.c。仅此向嵌入行业里的每一个认真做技术的从业者致敬!先安装g_zero驱动程序:在开发板上执行。先编译:在Ubuntu里执行如下命令。测试:在Ubuntu里执行如下命令。然后连接OTG线到PC。

2023-03-04 07:00:00 773

原创 编写SPI_Master驱动程序_老方法

在SPI Master对应的设备树节点下,每一个子节点都对应一个SPI设备,这个SPI设备连接在该SPI Master下面。在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!其他属性都是驱动程序相关的,不同的SPI Master驱动程序要求的属性可能不一样。仅此向嵌入行业里的每一个认真做技术的从业者致敬!

2023-03-03 07:00:00 542

原创 SPI_Master驱动程序框架

使用SPI传输时,最小的传输单位是"spi_transfer",对于一个设备,可以发起多个spi_transfer,这些spi_transfer,会放入一个spi_message里。spi_transfer:指定tx_buf、rx_buf、len同一个SPI设备的spi_transfer,使用spi_message来管理:从spi_master的队列里取出每一个spi_message从spi_message的队列里取出一个spi_transfer处理spi_transfer。

2023-03-02 07:00:00 303

原创 编写SPI设备驱动程序

聚是一团火,散是满天星!在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!在SPI子系统中,用spi_transfer结构体描述一个传输,用spi_message管理过个传输。可以构造多个spi_transfer结构体,把它们放入一个spi_message里面。SPI设备的设备树节点,会被转换为一个spi_device结构体。

2023-03-01 07:00:00 1412

原创 spidev的使用(SPI用户态API)

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!使用read、write函数时,只能读、写,这是半双工方式。使用read、write函数时,只能读、写,这是半双工方式。仅此向嵌入行业里的每一个认真做技术的从业者致敬!使用ioctl可以达到全双工的读写。使用ioctl可以达到全双工的读写。匹配之后,spidev.c的。

2023-02-28 07:00:00 1364

原创 SPI设备树处理过程

在SPI Master对应的设备树节点下,每一个子节点都对应一个SPI设备,这个SPI设备连接在该SPI Master下面。在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!在设备树里,使用一个节点来表示SPI Master,使用子节点来表示挂在下面的SPI设备。在设备树里,会有一个节点用来表示SPI控制器。

2023-02-27 07:00:00 1820

原创 SPI总线设备驱动模型

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!Linux中使用spi_master结构体描述SPI控制器,里面最重要的成员就是。左边注册一个platform_driver结构体,里面是比较固定的、通用的代码。SPI子系统中涉及2类硬件:SPI控制器、SPI设备。SPI控制器有驱动程序,提供SPI的传输能力。

2023-02-26 07:00:00 538

原创 SPI协议介绍

首先CS0先拉低选中SPI Flash,0x56的二进制就是0b0101 0110,因此在每个SCK时钟周期,DO输出对应的电平。在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!通常去参考外接的模块的芯片手册。CPHA:表示相位,即第一个还是第二个时钟沿采样数据,0为第一个时钟沿,1为第二个时钟沿。

2023-02-25 07:00:00 597

原创 编写使用多buffer的应用程序

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!vmware使用桥接,或者不使用vmware而是直接使用服务器:假设Ubuntu IP为192.168.19.25。这表示:当屏幕为blank(黑屏)时,无法等待VSYNC。为了省电,LCD在10分钟左右会自动黑屏。循环显示整屏幕的红、绿、蓝、黑、白。重新编译内核、设备树。

2023-02-24 07:00:00 305

原创 Gadget应用实例之zero

涉及的程序如下图所示:基于libusb编写程序:在Ubuntu里执行如下命令:可以列出zero设备的描述符:它有2个配置:参考libusb示例:libusb\examples\xusb.c实验步骤:先安装g_zero驱动程序:在开发板上执行然后连接OTG线到PC在Ubuntu中识别出设备执行测试程序先编译:在Ubuntu里执行如下命令测试:在Ubuntu里执行如下命令00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 0

2023-02-23 07:00:00 543 1

原创 单Buffer的缺点与改进方法

参考资料内核自带的LCD驱动程序。

2023-02-22 07:00:00 225

原创 编程_配置LCD控制器之寄存器操作_基于IMX6ULL

聚是一团火,散是满天星!在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!仅此向嵌入行业里的每一个认真做技术的从业者致敬!

2023-02-21 07:00:00 350

原创 编程_配置LCD控制器之获得LCD参数_基于IMX6ULL

聚是一团火,散是满天星!在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!仅此向嵌入行业里的每一个认真做技术的从业者致敬!

2023-02-20 07:00:00 441

原创 编程_配置时钟_基于IMX6ULL

聚是一团火,散是满天星!在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!设置频率:只需要设置pixel clock的频率。仅此向嵌入行业里的每一个认真做技术的从业者致敬!

2023-02-19 23:45:02 279

原创 分析内核自带的LCD驱动程序_基于IMX6ULL

聚是一团火,散是满天星!在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!文件:drivers\video\of_display_timing.c。文件:drivers\video\of_display_timing.c。文件:drivers\video\fbdev\core\modedb.c。文件:drivers\video\fbdev\core\fbmon.c。文件:drivers\video\fbdev\mxsfb.c。

2023-02-18 07:00:00 677

原创 硬件_IMX6ULL的LCD控制器

支持MPU模式:有些显示屏自带显存,只需要把命令、数据发送给显示屏即可;就是前面讲的8080接口VSYNC模式:跟MPU模式类似,多了VSYNC信号。针对高速数据传输(行场信号)支持DOTCLK模式:RGB接口,就是前面讲的TFT-RGB接口支持ITU-R BT.656接口,可以把4:2:2 YcbCr格式的数据转换为模拟电视信号8/16/18/24/32 bit 的bpp数据都支持,取决于IO的复用设置及寄存器配置MPU模式,VSYNC模式,DOTCLK模式,都可以配置时序参数。

2023-02-17 07:00:00 609

原创 编程_写出框架

聚是一团火,散是满天星!在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!仅此向嵌入行业里的每一个认真做技术的从业者致敬!根据APP的需求来。

2023-02-16 07:00:00 239

原创 硬件_8080接口LCD时序分析

聚是一团火,散是满天星!在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!仅此向嵌入行业里的每一个认真做技术的从业者致敬!

2023-02-16 07:00:00 729

原创 Framebuffer驱动程序框架

聚是一团火,散是满天星!在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!仅此向嵌入行业里的每一个认真做技术的从业者致敬。

2023-02-15 07:00:00 420

原创 不同接口的LCD硬件操作原理

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!需要的内存为:xres * yres * 16 / 8,也就是要设置所有像素的颜色,需要这么大小的内存。既然是Bus(总线),就是既能发送数据,也能发送命令,常用的8080接口就属于DBI接口。只要我们能控制任意一个像素的颜色,就可以在LCD上绘制文字、图片。

2023-02-14 07:00:00 451

原创 怎么编写PCIe设备驱动程序

聚是一团火,散是满天星!在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!怎么判断pci_driver和pci_dev是否匹配?参考代码:`kernel\drivers\scsi\3w-9xxx.c。参考代码:`drivers\nvme\host\pci.c。参考代码:`drivers\nvme\host\pci.c。

2023-02-13 07:00:00 3793 1

原创 MSI_MSI-X中断之源码分析

GITS_TRANSLATER寄存器的CPU地址是:0xfee20000 + 0x010000 + 0x0040 = 0xfee30040。对应的PCI地址也是0xfee30040(驱动程序里为例方便,故意使得CPU地址跟PCI地址相同,这2个地址属于不同地址空间),在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!

2023-02-12 07:00:00 1520 1

原创 MSI_MSI-X中断之体验与使用

聚是一团火,散是满天星!对应的PCI地址也是0xfee30040(驱动程序里为例方便,故意使得CPU地址跟PCI地址相同,这2个地址属于不同地址空间),在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!仅此向嵌入行业里的每一个认真做技术的从业者致敬!所以下图中PCI地址都是0xfee30040。

2023-02-11 07:00:00 2723

原创 GICv3_LPI机制

中断号0-15保留用于SGI的中断号。能产生MSI中断的设备,都有一个DeviceDI(设备ID),它产生的每一个MSI中断都有一个EventID(事件ID)。它们标识CPU核私有的中断源,并且独立于另一个内核上的相同中断源,比如,每个核的计时器。对于原来的SPI,它也是可以使用MSI的方式传递的,这个功能是可选的。在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!在复杂系统中有成本上千的中断时,就需要成本上千的中断信号线,这太复杂了。

2023-02-10 07:00:00 761

原创 INTx中断机制源码分析

因为发生legacy中断时,rockchip_pcie_legacy_int_handler函数要进一步分辨发生的是INTA还是INTB、INTC、INTD中断,然后处理。PCIe设备在硬件信息里表明自己可以发出哪个中断,比如INTA、INTB、INTC或INTD,这个中断要转换为中断号,我们编写的软件才可以为它注册中断处理函数。在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!为什么legacy中断的函数,不是使用。

2023-02-09 07:00:00 841 2

原创 INTx_MSI_MSIX三种中断机制分析

参考资料:《PCI_SPEV_V3_0.pdf》6.8节。

2023-02-08 07:00:00 2115

原创 RK3399_PCIe_Host驱动分析_设备枚举

resource结构体如下,要注意的是:里面记录的start、end等,是基于CPU角度看待的。也就是说,如果记录的是内存地址、IO地址,那么是CPU地址,不是PCI地址。每个PCI/PCIe设备都有配置空间,就是一系列的寄存器,对于普通的设备,它的配置空间格式如下。Class Code:这是只读的寄存器,它含有3个字节,用来表明设备的功能,它分为3部分。对应pci_dev结构体里的设备信息:读取PCI设备的配置空间即可获得。把这块空间对应的PCI地址写入PCIe设备的BAR。

2023-02-07 07:00:00 1250

原创 RK3399_PCIe_Host驱动分析_地址映射

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!所谓建立CPU和PCI地址空间的映射,就是设置Region对应的寄存器,都是使用函数。即:只写读写0xF8000000这段空间,就可以只写读写PCIe设备的配置空间。其中Region 0大小为32MB,Region1~31大小分别为1MB。,就是PCIe控制器,它的驱动做什么?

2023-02-06 07:00:00 2192 1

原创 RK3399_PCIe芯片手册解读

CPU读写某个地址,就可以读写某个PCIe设备的配置空间:CPU读写某个地址,就可以读写某个PCIe设备的内存、寄存器:简单地说,就是把CPU发出的addr,转换为右边的TLP头部:PCI地址、头部的其他信息。怎么把CPU地址转换为PCI地址怎么提供TLP头部信息中的其他部分CPU访问一个地址,导致PCIe控制器发出TLP。TLP里含有PCIe地址、其他信息。地址转换:把CPU地址转换为PCIe地址提供TLP的其他信息。

2023-02-05 07:00:00 2458 1

原创 PCI驱动程序框架

聚是一团火,散是满天星!在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!仅此向嵌入行业里的每一个认真做技术的从业者致敬!

2023-02-04 07:00:00 731

原创 PCIe路由方式

聚是一团火,散是满天星!在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!主设备要给EndPoint的内存写数据,它发出"内存写报文",不需要对方回应。主设备要给EndPoint的IO写数据,它发出"IO写报文",需要对方回应。主设备要读EndPoint的内存数据,它发出"内存读报文",需要对方回应。主设备要读EndPoint的IO数据,它发出"IO读报文",需要对方回应。PCIe设备(EndPoint)被配置后,它记录有分配给它的基地址。

2023-02-03 10:30:08 708

原创 PCIe设备的配置过程

在软件的角度,我们先关注事务层(Transaction Layer),在事务层传输TLP(Transaction Layer Packet,事务层包)。在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!如果要配置的设备,就在当前总线上,即目标设备的Bus号等于当前桥的Secondary Bus Number,

2023-02-02 12:13:25 2268 1

原创 devicetree和启动参数解析流程

AARCH64架构下内核可以通过设备树或acpi方式获取设备信息,其中acpi主要用于服务器领域,而设备树用于嵌入式领域。在设备树方式中,bootloader启动之前将设备树拷贝到内存中,并将地址通过x2寄存器传递给kernel,kernel启动时从设备树中读取启动参数和设备配置节点。由于内存配置信息是由device tree传入的,而将device tree解析为device node的流程中需要为node和property分配内存。

2023-02-01 11:08:19 721

原创 从软件角度看PCIe设备的硬件结构

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!事务层(Tansaction Layer):传输的是Transaction Layer Packet(TLP)数据链路层(Data Link Layer):传输的是Data Link Layer Packet(DLLP)既然PCIe是串行信号,那只能在"包"里传输地址、数据了。

2023-01-31 13:11:25 621

原创 PCI设备的访问方法_桥设备(type1)

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!CPU读取配置空间的BAR,得知:这个PCI设备想申请多大空间。怎么访问配置空间:发起一个type 0的配置命令。仅此向嵌入行业里的每一个认真做技术的从业者致敬!CPU分配PCI地址,写到PCI设备的BAR里。怎么判读设备的类别?怎么访问到某个PCI设备?

2023-01-31 12:59:10 912

原创 PCI设备的访问方法_非桥设备(type0)

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!回答1:需要配置,软件通过PCI桥查询PCI设备的地址需求,分配一块addr_pci空间给它。内存空间或IO空间:PCI本地总线上有AD总线,它是地址、数据复用的总线。CPU读取配置空间的BAR,得知:这个PCI设备想申请多大空间。配置空间:PCI设备的配置寄存器。

2023-01-31 12:42:56 1109

原创 从软件开发角度看待PCI和PCIe

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!PCI/PCIe设备上有配置空间(配置寄存器),用来表明自己"需要多大的地址空间"。关键在于:内存控制器,它会根据地址范围发出对应的片选信号,选中对应的设备。不是的,所有的"ram-like"接口设备都可以这样操作。分配地址空间:注意,分配的是PCI/PCIe地址空间。

2023-01-31 12:34:09 548

FastDFS分布式存储实战 - FastDFS.pdf

FastDFS分布式存储介绍

2021-11-15

e1-链路技术原理与实现.pdf

E1/CE1 链路技术原理与实现,2.048M的原理,基本概念普及,E1与CE1的链接方式,配置与接口排错

2020-08-12

史密斯圆图知识点总结.pdf

史密斯圆图图表是由菲利普·史密斯(Phillip Smith)于1939年发明的,当时他在美国的RCA公司工作。史密斯曾说过,“在我能够使用计算尺的时候,我对以图表方式来表达数学上的关联很有兴趣”。

2020-05-23

TCP那些事.pdf

TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。

2020-05-23

Linux内核设备树.docx

网络上整理的linux内核核设备树 详解,愿能帮到有需要的人

2019-07-04

Linux设备树文件结构与解析深度分析.docx

设备树开发详解,初学linux的朋友可心看看,很不错的入门资料

2019-07-04

ARM裸机编程.pdf

整理韦东山老师的开发笔记 -- ARM祼机开发部分,有需要的拿走,在此向韦东山老师致敬

2019-07-04

rtthread_manual.zh.pdf

rtthread_manual.zh.pdf RT-Thread的编程手册,用于指导在RT-Thread实时操作系统环境下如何进行编程。

2018-12-28

RFC3261-SIP协议中文版

SIP是一个轻形的,多用途的工具,可以用来创建,修改和终止会话,它独立运作于通讯协议之下,并且不依赖建立的会话类型。该文档详细介绍了SIP协议

2018-12-26

RFC3261-SIP协议

RFC3261-SIP协议, 英文版 SIP协议的详细流程,SIP即时消息

2018-12-26

HyperSnap+8破解版(屏幕截图工具)官方正式版V8.16.02

HyperSnap+8破解版(屏幕截图工具)官方正式版V8.16.02,非常好用的截图工具,可以滚屏截图

2018-07-27

linux上配置计划任务知识

linux上配置计划任务知识及流程,cron的使用,如何编辑,添加查看计划任务

2018-07-27

《Pro Git》中文第二版

《Pro Git》中文第二版

2017-06-02

深度实践嵌入式Linux系统移植_完整版

深度实践嵌入式Linux系统移植 高清 带目录

2017-05-15

ARM体系结构与编程(第二版)

ARM体系结构与编程 第二版 杜春雷

2017-05-15

ARM Generic Interrupt Controller Architecture Specification

ARM Generic Interrupt Controller Architecture Specification 官方手册

2016-03-09

ubuntu上安装与配置samba服务

ubuntu上安装与配置samba服务

2016-03-09

8051系列单片机c程序设计完全手册.pdf

8051系列单片机c程序设计完全手册.求实科技出版

2011-03-17

空空如也

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

TA关注的人

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