<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[IAYLBL的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/IAYLBL</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; IAYLBL]]></copyright><item><title><![CDATA[Linux socket编程]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/145919960</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/145919960</guid><author>IAYLBL</author><pubDate>Fri, 28 Feb 2025 09:39:09 +0800</pubDate><description><![CDATA[domain用于指定协议族（PF）或地址族（AF），不过通常两者区别不大，选择其中一种使用即可。经常使用的参数类型有如下几种：type用于指定socket的类型，常见的类型如下：protocol用于指定协议，通常与第二个参数搭配使用，常见的如下：typetypeSOCK_DGRAMtypeSOCK_RAM※注：当protocol参数设置为 0 时，系统会根据domain（地址族）和type（套接字类型）参数自动选择一个合适的默认协议。]]></description><category></category></item><item><title><![CDATA[基于Qcom虚拟化平台vdev virtio的EF BE实现（八）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/144762802</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/144762802</guid><author>IAYLBL</author><pubDate>Fri, 27 Dec 2024 11:11:05 +0800</pubDate><description><![CDATA[还记得前面QNX将收到的msg->name从“test”修改为“txdone”么，修改以后使用。函数来获取buffer，获取以后我们将msg结构体打印出来看看是不是我们想要的数据。虽然驱动我们创建了两个vq分别用来发送和收取，这里我们实际只是用其中一个来演示。，这里的结构与QNX驱动中定义的结构是一样的，保证他们之间可以正常解析数据。我们可以通过log来看看是不是按照我们设计的进行的数据收发。到此基本的数据收发就可以完成，虽然没有使用rx的回调函数。消息，然后就可以执行对应的处理从vq中拿到数据并解析。]]></description><category></category></item><item><title><![CDATA[基于Qcom虚拟化平台vdev virtio的EF BE实现（七）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/144762781</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/144762781</guid><author>IAYLBL</author><pubDate>Fri, 27 Dec 2024 11:10:26 +0800</pubDate><description><![CDATA[完成find操作以后，可以将找到的vq分别放到我们的priv结构体中保存，tx_vq使用的就是vqs[0]，rx_vq使用的就是vqs[1]。函数中，首先我们定义了两个virtqueue的name分别是“test_tx”和“test_rx”；为了测试，这里启动一个工作队列，然后持续发送数据到BE，接下来的数据收发我们详细讲解。所以当安卓驱动准备好后，QNX也会收到对应OK的消息，保证双方状态一致。没错，这里对应的就是QNX驱动中vio_vwrite函数中。这里没什么说的，首先申请驱动自己的结构体。]]></description><category></category></item><item><title><![CDATA[基于Qcom虚拟化平台vdev virtio的EF BE实现（六）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/144762744</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/144762744</guid><author>IAYLBL</author><pubDate>Fri, 27 Dec 2024 11:09:18 +0800</pubDate><description><![CDATA[【代码】基于Qcom虚拟化平台vdev virtio的EF BE实现（六）]]></description><category></category></item><item><title><![CDATA[基于Qcom虚拟化平台vdev virtio的EF BE实现（五）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/144762663</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/144762663</guid><author>IAYLBL</author><pubDate>Fri, 27 Dec 2024 11:06:43 +0800</pubDate><description><![CDATA[首先是设备地址：1c900000，这个地址与QNX我们定义的地址是一个，需要与之匹配。按照makefile，我们将编译出virtio_test.ko这一驱动模块。首先在Android.mk文件中仿照其他模块添加我们自己定义的模块。，也就是QNX配置的device id，这里注意需要与QNX匹配。接着是compatible属性，使用的是。，通常虚拟设备都是挂在mmio驱动下的。号中断（76 + 32 = 108）。修改kbuild将文件夹添加进去。将模块名称添加到dlkm文件中。，也就是QNX我们配置的。]]></description><category></category></item><item><title><![CDATA[基于Qcom虚拟化平台vdev virtio的EF BE实现（四）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/144762613</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/144762613</guid><author>IAYLBL</author><pubDate>Fri, 27 Dec 2024 11:05:24 +0800</pubDate><description><![CDATA[其次是。]]></description><category></category></item><item><title><![CDATA[基于Qcom虚拟化平台vdev virtio的EF BE实现（三）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/144762570</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/144762570</guid><author>IAYLBL</author><pubDate>Fri, 27 Dec 2024 11:04:27 +0800</pubDate><description><![CDATA[code代码比较多，单独放一章节，后续对这些代码进行讲解。]]></description><category></category></item><item><title><![CDATA[基于Qcom虚拟化平台vdev virtio的EF BE实现（二）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/144762434</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/144762434</guid><author>IAYLBL</author><pubDate>Fri, 27 Dec 2024 11:03:29 +0800</pubDate><description><![CDATA[这里简单说一下，vdev后面加的就是你需要启动的二进制文件，对应的我们的驱动文件；loc后面填写使用的地址，与我们前面设备树配置的地址保持一致；intr后面填写使用的中断号，同样与设备树配置的一致；根据上面的配置我们的文件就可以正常启动加载了，另外如果命令没有包含intr等参数，会导致驱动无法正常加载，所以需要尽可能保持完整。在上面的路径中，包含很多vdev虚拟设备驱动，这里就包括了可能需要的虚拟regulator、虚拟i2c等。完成上面的配置内容以后，我们还需要通过配置文件让他能够正常启动。]]></description><category></category></item><item><title><![CDATA[基于Qcom虚拟化平台vdev virtio的EF BE实现（一）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/144762333</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/144762333</guid><author>IAYLBL</author><pubDate>Fri, 27 Dec 2024 11:00:42 +0800</pubDate><description><![CDATA[基于Qcom虚拟化架构我们知道，QNX作为Host端，Android作为Geust端。因此在安卓侧使用某些资源时，而对应的资源在QNX侧控制，这就需要vdev来进行交互。这里以regulator模块作为例子简单讲解一下：如果是通常的Android系统，当某一个设备驱动控制电源时，就需要使用regulator驱动进行控制。但是当安卓作为虚拟机时，而regulator控制又在QNX侧，此时就像上图，需要使用驱动。与QNX的之间进行交互，实际操作由完成。]]></description><category></category></item><item><title><![CDATA[Qcom QNX系统下中断使用]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/144089829</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/144089829</guid><author>IAYLBL</author><pubDate>Wed, 27 Nov 2024 17:11:08 +0800</pubDate><description><![CDATA[为了能将gpio端子作为中断使用，需要先对选定端子号，对其进行中断配置，例如触发方式等。需要使用的接口函数以及流程如下：打开gpio设备文件使用fd对需要配置的端子进行中断设置gpio_number是需要配置的端子号，比如需要使用第100个端子，gpio_number即为100。在函数中，会根据gpio中断配置表找到对应端子的配置并获取下来，包括中断号之类的。表在中会被初始化，其中端子对应的中断号会以两种方式进行初始化：首先会通过函数，查找direct表。]]></description><category></category></item><item><title><![CDATA[基于Qcom A14虚拟化平台的qcom-ethqos-thin驱动的分析（七）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/143201847</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/143201847</guid><author>IAYLBL</author><pubDate>Thu, 24 Oct 2024 10:16:14 +0800</pubDate><description><![CDATA[前面整体流程大概过了一遍，这里做一个结构图和时序图总结吧，由于qnx库文件封装的缘故，时序图不一定准确，大概帮助理解即可。]]></description><category></category></item><item><title><![CDATA[基于Qcom A14虚拟化平台的qcom-ethqos-thin驱动的分析（六）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/143201698</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/143201698</guid><author>IAYLBL</author><pubDate>Thu, 24 Oct 2024 10:12:52 +0800</pubDate><description><![CDATA[前面说的都是android侧FE的处理，现在来看看BE端，也就是qnx侧。但是由于都是以库形式，不能分析代码，就以log来简单看看处理流程吧。]]></description><category></category></item><item><title><![CDATA[基于Qcom A14虚拟化平台的qcom-ethqos-thin驱动的分析（五）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/143201491</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/143201491</guid><author>IAYLBL</author><pubDate>Thu, 24 Oct 2024 10:10:36 +0800</pubDate><description><![CDATA[前面说的都是ethqos-thin驱动的基本功能实现，这篇就看看驱动中重要的emac_fe_ev_wq工作队列，emac_fe_ev_wq负责收取cmd通知，来判断当前的网卡状态，并基于不同的状态对驱动做出不同的处理。同时emac_ctrl_fe_virtio驱动负责与BE端通信，获取的cmd发送到emac_fe_ev_wq队列中处理。]]></description><category></category></item><item><title><![CDATA[基于Qcom A14虚拟化平台的qcom-ethqos-thin驱动的分析（四）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/143201295</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/143201295</guid><author>IAYLBL</author><pubDate>Thu, 24 Oct 2024 10:01:37 +0800</pubDate><description><![CDATA[probe函数完成了驱动的初始化流程，并且成功创建网络设备，网络设备就必然会有网络接口的注册，再来看看网络接口中打开网络设备时以及数据传输的接口实现。]]></description><category></category></item><item><title><![CDATA[基于Qcom A14虚拟化平台的qcom-ethqos-thin驱动的分析（三）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/143201181</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/143201181</guid><author>IAYLBL</author><pubDate>Thu, 24 Oct 2024 09:56:59 +0800</pubDate><description><![CDATA[前面看过了ethqos-thin的设备树，接下来看看驱动具体的实现内容。]]></description><category></category></item><item><title><![CDATA[基于Qcom A14虚拟化平台的qcom-ethqos-thin驱动的分析（二）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/143200808</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/143200808</guid><author>IAYLBL</author><pubDate>Thu, 24 Oct 2024 09:54:47 +0800</pubDate><description><![CDATA[前面提到了qnx侧的网卡驱动对应的设备是emac0，android侧通过virtio-net创建虚拟网络设备节点eth0，两者之间进行通信，接下来就从设备树来看看ethqos-thin驱动的设备信息。]]></description><category></category></item><item><title><![CDATA[基于Qcom A14虚拟化平台的qcom-ethqos-thin驱动的分析（一）]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/143190124</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/143190124</guid><author>IAYLBL</author><pubDate>Wed, 23 Oct 2024 17:54:22 +0800</pubDate><description><![CDATA[io-pkt就是qnx微内核的网络管理模块（network manager），这是一个kernel空间以外的进程，运行在app空间。同时它也支持TCP/IP（TCP、UDP、IPv4、IPv6）。你可以使用以下方式动态的加载驱动：当启动io-pkt时当io-pkt运行时io-sock就是qnx微内核的网络管理模块（network manager），这是一个kernel空间以外的进程，运行在app空间。同时它也支持TCP/IP（TCP、UDP、IPv4、IPv6）。]]></description><category></category></item><item><title><![CDATA[Linux电源管理STR以及STD详解]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/143054150</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/143054150</guid><author>IAYLBL</author><pubDate>Fri, 18 Oct 2024 15:21:27 +0800</pubDate><description><![CDATA[即指说系统处于低电源供应状态，在 windows or BIOS 中可设定萤幕讯号输出关闭、 硬碟停止运转进入待命状态、电源灯号处于闪烁状态。此时动一动滑鼠、按键盘任一键均可叫醒电脑。和 S1 几乎是一样。即是把 windows 现在存在记忆体中的所有资料保存不动，然后进入「假关机」。此时除了记忆体需要电源来保持资料以外，其它的设备、装置全部停止供电。也就是说，理论上可以把 CPU, PCI, AGP device 拿掉又插回去，电脑也可能正常完成开机及运作，只要不动到记忆体和电源的部份。]]></description><category></category></item><item><title><![CDATA[基于Qcom QNX虚拟化平台的Android14与QNX间的Vlan通信配置]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/143017988</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/143017988</guid><author>IAYLBL</author><pubDate>Thu, 17 Oct 2024 15:00:54 +0800</pubDate><description><![CDATA[VLAN（Virtual Local Area Network），即虚拟局域网，他可以将物理的LAN在逻辑上划分为多个广播域的技术。VLAN内主机之间可以相互通信，VLAN与VLAN之间无法通信。当以太网中主机数量过多时，会导致性能下降等问题，此时可以将整个局域网划分为多个VLAN，从而降低维护成本。]]></description><category></category></item><item><title><![CDATA[QNX系统下虚拟I2C]]></title><link>https://blog.youkuaiyun.com/IAYLBL/article/details/142873366</link><guid>https://blog.youkuaiyun.com/IAYLBL/article/details/142873366</guid><author>IAYLBL</author><pubDate>Sat, 12 Oct 2024 11:24:42 +0800</pubDate><description><![CDATA[在①中的描述，只需要按照qnx侧配置使用即可；②的描述就是所谓的透传（passthrough），将硬件控制权从qnx透传到gvm侧，gvm按照普通的设备使用即可；③就需要使用VirtIO-i2c，gvm侧需要使用virtio设备和驱动，经过virtio最终由qnx侧的驱动来执行相应的控制。]]></description><category></category></item></channel></rss>