<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[silvervi的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/silvervi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; silvervi]]></copyright><item><title><![CDATA[将qemu的dmesg打印通过串口重定向到host机器]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/77528916</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/77528916</guid><author>silvervi</author><pubDate>Thu, 24 Aug 2017 13:26:41 +0800</pubDate><description><![CDATA[1.      在qemu的启动参数中添加-serialpty选项，如下
-enable-kvm -smp 2 -vga std \
-serial pty \
 
pty会创建一个伪终端，所有对串口的设置（如波特率等）对pty无效。此时如果启动qemu，host会有如下打印
char device redirected to /dev/pts/28 (label serial0)
最]]></description><category></category></item><item><title><![CDATA[Android 4.x下基于wm8994的mic检测]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/23743155</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/23743155</guid><author>silvervi</author><pubDate>Tue, 15 Apr 2014 10:52:14 +0800</pubDate><description><![CDATA[本文基于Android 4.4和4.2，检测所用codec为wm8994。
        Android和Kernel下的mic检测是建立在headset检测的基础上的，具体过程如下：
        1)       kernel通过Jack检测脚中断检测到有耳机插入
        2)       读取codec寄存器判断headset是否带mic
        3)]]></description><category></category></item><item><title><![CDATA[Android 4.x耳机插拔检测实现方法]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/23281087</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/23281087</guid><author>silvervi</author><pubDate>Wed, 09 Apr 2014 16:59:15 +0800</pubDate><description><![CDATA[Android耳机插拔可以有两个机制实现：
       1.      InputEvent
       2.      UEvent]]></description><category></category></item><item><title><![CDATA[Android开发使用adb时出现adb server is out of date的解决方法]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/8756309</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/8756309</guid><author>silvervi</author><pubDate>Wed, 03 Apr 2013 16:00:14 +0800</pubDate><description><![CDATA[最近在Android开发使用adb push时出现了一个奇怪的问题，不管执行adb push之类命令还是adb start-server，都会出现如下的错误提示信息：

 adb server is out of date.  killing... 
 ADB server didn't ACK 
* failed to start daemon *  
         究其原因就是And]]></description><category></category></item><item><title><![CDATA[Linux内核代码中的__setup的用途]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/7042185</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/7042185</guid><author>silvervi</author><pubDate>Mon, 05 Dec 2011 14:47:24 +0800</pubDate><description><![CDATA[在Linux内核代码中经常会看到__setup，如下所示：
    __setup("nfsroot=", nfs_root_setup);

   这是一个宏，它的定义在include/linux/init.h
   #define __setup(str, fn)   __setup_param(str, fn, fn, 0)


   我们这里暂不管__setup_param的]]></description><category></category></item><item><title><![CDATA[LFS6.8搭建过程中遇到的一些问题和解决方法]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6656513</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6656513</guid><author>silvervi</author><pubDate>Wed, 03 Aug 2011 14:40:52 +0800</pubDate><description><![CDATA[大概三周前被安排做LFS6.8的搭建，今天终于成功启动。顺着LFS book一路走来，也遇到了一些问题，留此记录。]]></description><category></category></item><item><title><![CDATA[编译LDD第三版中scullc代码时遇到的问题及解决方法]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6459994</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6459994</guid><author>silvervi</author><pubDate>Wed, 01 Jun 2011 20:09:00 +0800</pubDate><description><![CDATA[<br />      最近在学习Linux driver，按照LDD第三版书附赠的一些源代码在自己的机器上编译，由于自己的Linux系统是2.6.35的内核，而LDD书中附的代码是基于2.6.10版的，因此难免会出现一些问题，下面就是我在编译scullc代码中出现的问题和解决方法。<br /> <br />      编译中即有error也有warning，我这里先处理error<br /> <br />1.  *** CFLAGS was changed in "/.../scullc/scullcte]]></description><category></category></item><item><title><![CDATA[MFC中WinHelp函数在64位系统上重载失败的原因]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6445172</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6445172</guid><author>silvervi</author><pubDate>Wed, 25 May 2011 15:59:00 +0800</pubDate><description><![CDATA[<br />      MFC中，键盘上的F1加速键会直接和基类的WinHelp函数关联，从而按下F1打开和应用同名的HLP文件。如果我们的帮助文件格式是其它格式，如chm，或者文件的名字不一样，则需要重载WinHelp函数，在函数内部修改m_pszHelpFilePath变量。<br /> <br />      如果在Visual Studio中采用wizard重载WinHelp函数，它的格式如下：<br /> <br />virtual void WinHelp(DWORD dwData, UINT ]]></description><category></category></item><item><title><![CDATA[编译内核时遇到“dpkg-gencontrol: error: package not in control info”的解决办法]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6326726</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6326726</guid><author>silvervi</author><pubDate>Fri, 15 Apr 2011 22:02:00 +0800</pubDate><description><![CDATA[<br />      在Ubuntu 10.10下编译Linux 2.6.35内核时，编译过程中止，并提示：<br /> <br />      dpkg-gencontrol: error: package not in control info<br /> <br />      
国内论坛上没有搜到相关的任何信息，在国外的论坛上搜到了一些解决办法。这个问题是make-kpkg（属于kernel package）的一个bug，大致原因如下：<br />     make-kpkg会在编译过程中会给l]]></description><category></category></item><item><title><![CDATA[Linux下tar.xz结尾的文件的解压方法]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6325698</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6325698</guid><author>silvervi</author><pubDate>Fri, 15 Apr 2011 14:45:00 +0800</pubDate><description><![CDATA[<br /> <br />      今天尝试编译内核，下载到了一份tar.xz结尾的压缩文件，网上解决方法比较少，不过还是找到了，如下：<br /> <br />$xz -d ***.tar.xz<br />$tar -xvf  ***.tar<br />      可以看到这个压缩包也是两层压缩，外面是xz压缩方式，里层是tar压缩方式。<br /> ]]></description><category></category></item><item><title><![CDATA[如何使Android应用程序获得root权限]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6315888</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6315888</guid><author>silvervi</author><pubDate>Mon, 11 Apr 2011 16:28:00 +0800</pubDate><description><![CDATA[<br /><br />       写这篇文章前，首先要感谢Simon_fu，他的两篇关于root权限的文章对于我的工作起到了非常大的帮助，这篇文章可以说是对他的文章的一个补充。Simon_fu的文章可以参考如下两个网页：<br />Android程序的安全系统<br />Android应用程序获得
root权限<br /> <br />       一般来说，Android下的应用程序可以“直接”得到的最大的权限为system，但是如果我们需要在程序中执行某些需要root权限的命令，如ifconfig]]></description><category></category></item><item><title><![CDATA[如何将Android应用程序编译至image/rom中]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6315606</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6315606</guid><author>silvervi</author><pubDate>Mon, 11 Apr 2011 15:07:00 +0800</pubDate><description><![CDATA[<br />      有时我们希望将自己的Android应用程序编译至image/rom中，这样程序将被安装至/system/app目录下，并且不能被卸载。下面我以自己的程序TestJniApp为例子，仿照源代码中自带的SimpleJNI，演示一下怎样将自己的应用程序编译至rom中。<br /> 1.    搭建编译环境<br />编译环境： Ubuntu 10.10<br />
Android版本：Android 2.2<br /><br />
编译过程中可能需要在Ubuntu上安装必要的一些软件，]]></description><category></category></item><item><title><![CDATA[Android应用程序如何访问/sys和/proc等目录下的系统文件]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6315548</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6315548</guid><author>silvervi</author><pubDate>Mon, 11 Apr 2011 14:45:00 +0800</pubDate><description><![CDATA[<br /><br />Android下应用程序不能直接
获得root权限，因此如果需要修改/sys或/proc等目录下的文件时，有以下两种方法可以选择：<br /> 通过service或虚拟设备的方法将使得应用程序临时
获得root权限对/sys或/proc目录下的文件修改访问权限，使得它们能够被程序访问<br /> <br />对于方法1，可以参看我后续会写到的一篇文章《如何使Android应用程序获得root权限》，也可以在网上搜索别的相关文章。<br /> <br />这里讲讲方法2。<br /]]></description><category></category></item><item><title><![CDATA[vmware上安装的ubuntu不能上网的解决方法]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6187985</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6187985</guid><author>silvervi</author><pubDate>Wed, 16 Feb 2011 14:33:00 +0800</pubDate><description><![CDATA[<br />    这个办法可能不能适用于所有情况，我这里是在vmware上安装的ubuntu 10.10，网络连接采用的NAT方式，之前上网一直OK。<br /> <br />    昨天升级了内核重启后突然不能上网，搜了一些资料，每次重启后输入sudo dhclient重新获取ip即可上网，但这样的话每次重启系统后都需要手动输入sudo dhclient才行，于是又找了相应的设置办法，可以配置网络为dhcp动态获取ip，具体方法如下：<br /> <br />    将 /etc/network/int]]></description><category></category></item><item><title><![CDATA[Ubuntu 10.10安装vmware tools时遇到的问题及解决办法]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6187847</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6187847</guid><author>silvervi</author><pubDate>Wed, 16 Feb 2011 13:46:00 +0800</pubDate><description><![CDATA[<br />    以下问题的解决办法大多从网络上搜索得到，自己只是整理照搬过来而已。<br /> <br />    在ubuntu 10.10上安装vmware tools，我这里主要遇到的问题都出现在以下这步中，<br /> <br />    What is the location of the directory of C header files that match your running  kernel? [/usr/src/linux/include]
<br /> <br />  ]]></description><category></category></item><item><title><![CDATA[Android ndk-x86 编译so文件时提示版本不支持的解决方案]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6107191</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6107191</guid><author>silvervi</author><pubDate>Thu, 30 Dec 2010 14:58:00 +0800</pubDate><description><![CDATA[<br />      最近在做Android -x86平台下的应用程序移植时，需要用到ndk-x86来将jni编写的C程序编译为so文件，从http://www.android-x86.org/documents/ndk-how-to下载到了ndk-x86，按照该页的说明，将工程拷贝至apps目录下，然后运行：      <br />build/host-setup.shmake TARGET_PRODUCT=eeepc APP=helloNDK <br />    HelloNDK为我的工程名，运行后总]]></description><category></category></item><item><title><![CDATA[WinSock TCP keepalive的机理及使用]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6031975</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6031975</guid><author>silvervi</author><pubDate>Wed, 24 Nov 2010 13:44:00 +0800</pubDate><description><![CDATA[<br /> <br /><br />TCP是面向连接的,在实际应用中通常都需要检测对端是否还处于连接中。如果已断开连接，主要分为以下几种情况：<br /> <br />1.           连接的对端正常关闭，即使用closesocket关闭连接。<br />2.           连接的对端非正常关闭，包括对端异常关闭，网络断开等情况。<br /> <br />       对于第一种情况，很好判断，但是对于第二种情况，可能会要麻烦一些。在网上找到了一些文章，大致有以下两种解决方法：<br />]]></description><category></category></item><item><title><![CDATA[DebugView 在Vista及Win7下打印kernel mode调试信息的方法]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/6014619</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/6014619</guid><author>silvervi</author><pubDate>Wed, 17 Nov 2010 13:39:00 +0800</pubDate><description><![CDATA[<br /><br /><br />       这两天在开发中，想用DebugView查看Win7下service的相关TRACE信息，却总是不成功，baidu到了一些信息，只有user mode下的APP信息打印的方法，没有kernel mode下的，最后在sysinternals的论坛中找到了答案。<br />       <br />       步骤如下：<br /><br /><br />      1. 首先，在注册表中设置：<br />      HKLM/SYSTEM/CurrentCon]]></description><category></category></item><item><title><![CDATA[Windows静态链接库使用小结]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/5997616</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/5997616</guid><author>silvervi</author><pubDate>Tue, 09 Nov 2010 15:10:00 +0800</pubDate><description><![CDATA[<br /> <br />      对于实用多了DLL动态链接库的同学来说，可能乍一看到静态链接库，会不由自主的想到导出函数，导入函数之类的概念。最近我在看一个离职同事的代码时就陷入了对静态库中全局函数导出的疑问，明明在代码中没有看到有地方对该全局变量有导出，但是在使用该LIB的AP中仍然能看到对该变量extern后的使用。<br /> <br />      究其原因，静态链接库不存在导出的概念，在链接过程中，静态链接库LIB中的指令都全部被直接包含在最终生成的 EXE 文件中了
，因此如果用的是静态]]></description><category></category></item><item><title><![CDATA[log off时应用程序不退出的2种解决办法]]></title><link>https://blog.youkuaiyun.com/silvervi/article/details/5979925</link><guid>https://blog.youkuaiyun.com/silvervi/article/details/5979925</guid><author>silvervi</author><pubDate>Mon, 01 Nov 2010 16:57:00 +0800</pubDate><description><![CDATA[<br />     最近公司开发一个加密的项目，客户要求在log off以后加密过程不能停止，即数据转换过程必须还要继续。之前的程序是用MFC写的，为了最小化工作量，我做了一些调研，大致找到有两种办法。<br /> <br />1. 将数据转换过程写为service<br /> <br />      <br />这是最通用的方法，方法是将数据转换的线程转移到service
中。当需要进行数据转换时，由AP通知service
对需要加解密的目标进行数据转换。<br />这个方法实现起来改动幅度相对较大]]></description><category></category></item></channel></rss>