<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[学无止境]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hyl1718</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hyl1718]]></copyright><item><title><![CDATA[v4l2_ioctl调用过程]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/120327030</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/120327030</guid><author>hyl1718</author><pubDate>Thu, 16 Sep 2021 13:33:36 +0800</pubDate><description><![CDATA[v4l2_ioctl调用过程

应用层：
ioctl(dev-&gt;fd, VIDIOC_DQBUF, &amp;buf))
ioctl(dev-&gt;fd, VIDIOC_QBUF, &amp;buf)

驱动层：
v4L2_fops.unlocked_ioctl
--&gt;.v4L2_ioctl
	--&gt;vdev = video_devdata(filp);
	   vdev-&gt;fops-&gt;unlocked_ioctl(filp, cmd, arg);//调用设备提供的unloc]]></description><category></category></item><item><title><![CDATA[rk3399 Android模块化编译及调试]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/117767256</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/117767256</guid><author>hyl1718</author><pubDate>Thu, 10 Jun 2021 09:12:43 +0800</pubDate><description><![CDATA[rk3399 Android模块化编译及调试
文章目录rk3399 Android模块化编译及调试导入环境mm编译手动push




内核版本
Linux4.4




平台
rk3399


作者
nineyole


我们在调试Android的时候会经常需要对某些模块进行模块化编译，下面讲讲其中的一个方法是如何实现的。
导入环境
source build/envsetup.sh 

 xxx@ubuntu-server:~ rk3399-android7.1/ rk3399-android7.1$ s]]></description><category></category></item><item><title><![CDATA[神经网络中经常使用的激活函数--sigmoid函数]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/117687806</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/117687806</guid><author>hyl1718</author><pubDate>Tue, 08 Jun 2021 08:38:53 +0800</pubDate><description><![CDATA[神经网络中经常使用的激活函数–sigmoid函数σ(x)
sigmoid函数（σ）
sigmoid函数原型
sigmoid函数是机器学习中的一个比较常用的函数，其函数原型如下图所示：

sigmoid函数的函数曲线以及其导数曲线如下图所示：

通过上图可以看出在趋于正无穷或负无穷时，sigmoid函数都趋近平滑状态。当x趋近负无穷时，y趋近于0；趋近于正无穷时，y趋近于1。由于sigmoid函数输出范围为（0，1），所以二分类的概率常常用使用这个函数。
sigmoid函数求导
Sigmoid函数的导数是其本]]></description><category></category></item><item><title><![CDATA[rk3399 Android休眠/唤醒分析（2）]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/117668063</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/117668063</guid><author>hyl1718</author><pubDate>Mon, 07 Jun 2021 17:05:04 +0800</pubDate><description><![CDATA[rk3399 Android休眠/唤醒分析（2）
rk3399休眠唤醒kernel驱动
state_store
在kernel\kernel\power\main.c
state_show()和state_store()即是用户层/sys/power/state的读写操作。
这两个都是通过power_attr(state)来申明的，attr是Linux实现sys接口的重要函数定义。具体实现可以去关注power_attr.
state_store函数
static ssize_t state_store(st]]></description><category></category></item><item><title><![CDATA[rk3399 Android休眠/唤醒分析（1）]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/117667822</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/117667822</guid><author>hyl1718</author><pubDate>Mon, 07 Jun 2021 17:02:48 +0800</pubDate><description><![CDATA[rk3399 Android休眠/唤醒分析（1）
文章目录rk3399 Android休眠/唤醒分析（1）Android休眠/唤醒简介休眠唤醒硬件分析硬件电路按键驱动分析




内核版本
Linux4.4




平台
rk3399


作者
nineyole


Android休眠/唤醒简介
休眠/唤醒在嵌入式Linux中是非常重要的部分,嵌入式设备尽可能的进入休眠状态来延长电池的续航时间。这篇文章就详细介绍一下Linux中休眠/唤醒是如何工作的,还有[Android]中如何把这部分和Linux的机制联]]></description><category></category></item><item><title><![CDATA[鸿蒙OpenHarmony开篇-2021.06.02]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/117471025</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/117471025</guid><author>hyl1718</author><pubDate>Wed, 02 Jun 2021 15:49:14 +0800</pubDate><description><![CDATA[鸿蒙OpenHarmony开篇-2021.06.02
文章目录鸿蒙OpenHarmony开篇-2021.06.02框架及说明内核层系统服务层框架层应用层源码内核层Linux内核LiteOS-ALiteOS-M总结




内核版本
Linux4.19




平台
OpenHarmony


作者
nineyole


今天是2021年6月2日，晚上就有鸿蒙2.0发布会，去OpenHarmony的官网看了一下，发现2.0也已经发布了。

其下载地址在这里，可以自行下载。
框架及说明
整个OpenHarmon]]></description><category></category></item><item><title><![CDATA[RK3399外设驱动之MIPI显示-panel配置]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/117259761</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/117259761</guid><author>hyl1718</author><pubDate>Tue, 25 May 2021 16:54:31 +0800</pubDate><description><![CDATA[RK3399外设驱动之MIPI显示-panel配置
文章目录RK3399外设驱动之MIPI显示-panel配置MIPI命令dts配置信息8inch显示屏mipi配置实例mipi命令格式说明panel代码分析panel_simple_dsi_probepanel_simple_probepanel_simple_get_cmdspanel_simple_funcs




内核版本
Linux4.4




平台
rk3399


作者
nineyole


MIPI命令dts配置信息
8inch显示屏mip]]></description><category></category></item><item><title><![CDATA[RK3399外设驱动之MIPI]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/117256799</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/117256799</guid><author>hyl1718</author><pubDate>Tue, 25 May 2021 15:14:14 +0800</pubDate><description><![CDATA[RK3399外设驱动之MIPI
文章目录RK3399外设驱动之MIPIMIPI命令解析入口代码mipi显示配置实例rk3399mipi驱动rk mipi驱动注册过程rk32_mipi_dsi.c解析




内核版本
Linux4.4




平台
rk3399


作者
nineyole


MIPI命令解析入口代码
MIPI的入口代码如下：kernel\drivers\video\rockchip\screen\lcd_mipi.c
static int __init rk_mipi_screen_in]]></description><category></category></item><item><title><![CDATA[高通8953 Android 9.0 在user模式下使用fastboot烧录]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/116696884</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/116696884</guid><author>hyl1718</author><pubDate>Wed, 12 May 2021 10:02:24 +0800</pubDate><description><![CDATA[高通8953 Android 9.0 在user模式下使用fastboot烧录
高通8953 Android 9.0 在user模式下，默认是无法使用fastboot烧录的，这个非常影响我们的调试。
bootable/bootloader/lk/makefile
可以屏蔽掉DDISABLE_FASTBOOT_CMDS即可，原来的命令中会去对TARGET_BUILD_VARIANT进行判定，如果是user模式就会DDISABLE_FASTBOOT_CMDS置位，从而禁止fastboot使用，因此只需要屏蔽掉D]]></description><category></category></item><item><title><![CDATA[高通8953 Android 9.0 打开user调试串口]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/116696714</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/116696714</guid><author>hyl1718</author><pubDate>Wed, 12 May 2021 09:59:37 +0800</pubDate><description><![CDATA[高通8953 Android 9.0 打开user调试串口
文章目录高通8953 Android 9.0 打开user调试串口1、user模式打开kernel log调试2、另外需要修改user版本串口只有输出不能输入的问题




内核版本
Linux4.9




平台
高通8953


作者
nineyole



我们在调试msm8953 9.0的版本的时候发现在userdebug模式下是可以使用串口控制台调试的，而在user模式下则是关闭的。
1、user模式打开kernel log调试
​   ]]></description><category></category></item><item><title><![CDATA[关于高通8953修改动态logo bootanimation不起作用问题]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/116655482</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/116655482</guid><author>hyl1718</author><pubDate>Tue, 11 May 2021 15:02:03 +0800</pubDate><description><![CDATA[关于高通8953修改动态logo bootanimation不起作用问题
文章目录关于高通8953修改动态logo bootanimation不起作用问题问题描述：问题分析动态logo加载过程解决方法




安卓版本
Android9.0




平台
高通8953


作者
nineyole


问题描述：
我们在调试高通8953 Android9.0的时候发现，按照之前的方式修改bootanimation.zip，总是不起作用通过，本着实事求是的原因，总归需要搞清楚是为什么。
问题分析
下面这个图显示]]></description><category></category></item><item><title><![CDATA[Linux调试方式之动态打印(module_param_named)]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/116267151</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/116267151</guid><author>hyl1718</author><pubDate>Thu, 29 Apr 2021 13:36:10 +0800</pubDate><description><![CDATA[Linux调试方式之动态打印(module_param_named)
文章目录Linux调试方式之动态打印(module_param_named)module_param_named分析module_param_named使用案例




内核版本
Linux4.4




作者
nineyole


module_param_named分析
在很多时候，我们需要记录一些调试信息，如果每次都用printk打印，会有很多无用代码，因此可以调用如下代码来申明一个变量。
module_param_named(db]]></description><category></category></item><item><title><![CDATA[RK3399外设驱动之RTC驱动(二)：hym8563驱动]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/116233805</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/116233805</guid><author>hyl1718</author><pubDate>Wed, 28 Apr 2021 14:55:55 +0800</pubDate><description><![CDATA[RK3399外设驱动之RTC驱动(二)：hym8563驱动
文章目录RK3399外设驱动之RTC驱动(二)：hym8563驱动hym8563硬件相关注册驱动probe函数hym8563_init_devicedevm_request_threaded_irqdevm_rtc_device_registerhym8563_rtc_read_timehym8563_rtc_set_timehym8563_clkout_ops遇到的问题附录1：hym8563寄存器




内核版本
Linux4.4




平台]]></description><category></category></item><item><title><![CDATA[高通8953 Android9.0修改设备节点权限问题]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/116225067</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/116225067</guid><author>hyl1718</author><pubDate>Wed, 28 Apr 2021 09:25:30 +0800</pubDate><description><![CDATA[高通8953修改设备节点权限问题
文章目录高通8953修改设备节点权限问题问题描述问题分析解决方法




安卓版本
Android9.0




平台
高通8953


作者
nineyole


问题描述
有的时候我们会自己增加一些驱动设备，而需要给这些设备一些设备权限，一般来说都是通过在init.target.rc中添加相应命令实现,
其修改的路径:device/qcom/xxx/init.target.rc
index fa467d08bd..2dcb07e05c 100755
--- a/devi]]></description><category></category></item><item><title><![CDATA[关于高通8953开机需要按pwrkey很长时间的问题]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/116224505</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/116224505</guid><author>hyl1718</author><pubDate>Wed, 28 Apr 2021 09:07:26 +0800</pubDate><description><![CDATA[关于高通8953开机需要按pwrkey很长时间的问题
高通8953方案每次开机都需要按pwrkey很长时间，经过排查跟踪代码
./lk/platform/msm_shared/reboot.c:161: dprintf(CRITICAL, "Going down for shutdown.\n");

继续跟踪代码：
void shutdown_device()
{
  dprintf(CRITICAL, "Going down for shutdown.\n");
  /* Configure PMIC ]]></description><category></category></item><item><title><![CDATA[高通8953烧录之后报ERROR: UFDT apply overlay failed]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/116224064</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/116224064</guid><author>hyl1718</author><pubDate>Wed, 28 Apr 2021 08:54:24 +0800</pubDate><description><![CDATA[高通8953烧录之后报ERROR: UFDT apply overlay failed
文章目录高通8953烧录之后报ERROR: UFDT apply overlay failed烧录新的系统之后报错误问题定位问题解决方法




安卓版本
Android9.0




平台
高通8953


作者
nineyole


烧录新的系统之后报错误
在某一天，突然发现系统总是无法单独烧录镜像，一旦烧录就会卡死死机。然后报ERROR: UFDT apply overlay failed
一直找不到解决方法。总是]]></description><category></category></item><item><title><![CDATA[屏蔽高通8953长按电源键的截屏按钮]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/116144254</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/116144254</guid><author>hyl1718</author><pubDate>Mon, 26 Apr 2021 10:09:57 +0800</pubDate><description><![CDATA[屏蔽高通8953长按电源键的截屏按钮
文章目录屏蔽高通8953长按电源键的截屏按钮源码定位修改方法




安卓版本
Android9.0




平台
高通8953


作者
nineyole


我们有时候需要屏蔽掉长按电源键出现的截屏按钮，本文将来分析其源码和修改方法。
源码定位
frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java
当我们长按的时候就会执行powerLongPress代]]></description><category></category></item><item><title><![CDATA[高通8953平台usb转以太网芯片ax88772驱动]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/116143303</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/116143303</guid><author>hyl1718</author><pubDate>Mon, 26 Apr 2021 09:30:36 +0800</pubDate><description><![CDATA[高通8953平台usb转以太网芯片ax88772驱动
文章目录高通8953平台usb转以太网芯片ax88772驱动ax88772电路图ax88772 mac地址烧录工具使用说明增加eeprom的读写USB读写函数进入eeprom获取数据读写eeprom检查网络设备的mac地址获取mac地址可能遇到的问题分析ax8872针对eeprom无法写入信息排查关于eeprom器件的焊接关于eeprom器件的选择问题烧录工具无法使用




内核版本
Linux4.4




平台
rk3399&amp;高通8953
]]></description><category></category></item><item><title><![CDATA[RK3399外设驱动之RTC驱动(一)]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/115867548</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/115867548</guid><author>hyl1718</author><pubDate>Mon, 19 Apr 2021 16:22:15 +0800</pubDate><description><![CDATA[RK3399外设驱动之RTC驱动(一)
文章目录RK3399外设驱动之RTC驱动(一)RTC驱动概述rtc应用层的几个接口是如何创建的rtc如何创建/dev/rtcNrtc的sys接口rtc的proc接口硬件抽象层rtc_read_time解析rtc_set_time解析class.c解析设备驱动层硬件相关




内核版本
Linux4.4




平台
rk3399


作者
nineyole


RTC驱动概述
rtc的驱动框架如下图所示：

我们都知道Linux时间有两个，一个是系统时间(Wall ]]></description><category></category></item><item><title><![CDATA[Linux的c语言哲学之offsetof和container_of]]></title><link>https://blog.youkuaiyun.com/hyl1718/article/details/115742041</link><guid>https://blog.youkuaiyun.com/hyl1718/article/details/115742041</guid><author>hyl1718</author><pubDate>Thu, 15 Apr 2021 22:36:34 +0800</pubDate><description><![CDATA[Linux的c语言哲学之offsetof和container_of
offsetof
宏定义：
#define offsetof(TYPE, MEMBER) ((size_t) &amp;((TYPE *)0)-&gt;MEMBER)

offsetof宏定义的主要作用：获得结构体(TYPE)的变量成员(MEMBER)在此结构体中的偏移量。
( (TYPE *)0 )

上面代码是将0强制转换为一个类型为TYPE类型的指针，并且这个TYPE类型的指针的地址是0。
((TYPE *)0)-&gt;MEMBER]]></description><category></category></item></channel></rss>