<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[gooogleman#foxmail.com]]></title><description><![CDATA[学海无涯]]></description><link>https://blog.youkuaiyun.com/gooogleman</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; gooogleman]]></copyright><item><title><![CDATA[优快云手机APP终于可以写博客了]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/120447066</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/120447066</guid><author>gooogleman</author><pubDate>Fri, 24 Sep 2021 07:17:47 +0800</pubDate><description><![CDATA[随着年龄增长，博客是更新的越来越慢了，在公司没时间，现在在路上时间挺多，当时想着APP能写博客就好了，记得开始事不可以的，如今这时代，回到家开电脑逛论坛的时间真少了。希望以后可以在上下班路上写一些东西。

...]]></description><category></category></item><item><title><![CDATA[记录调试Android 休眠唤醒过程中遇到的问题以及解决办法]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/107904776</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/107904776</guid><author>gooogleman</author><pubDate>Mon, 10 Aug 2020 09:22:15 +0800</pubDate><description><![CDATA[最近在调试休眠唤醒，遇到不少问题，现在记录下解决问题问题的过程。

1、休眠或者唤醒过程中内核异常

   具体解决办法，请看这篇linux 遇到的内核异常问题分析解决汇总

2、休眠过程中唤醒

   调试的时候发现，本来Android 系统已经休眠下去，CPU已经暂停运行，但是串口log记录一段时间发现有时候内核log会重新打印，一些驱动重新resume了，或者有时候休眠到一半，系统又被唤醒了，log 大概如下：

[2020/8/9 6:46:31] [ 2956.891633] P...]]></description><category></category></item><item><title><![CDATA[linux 遇到的内核异常问题分析解决汇总]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/107785610</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/107785610</guid><author>gooogleman</author><pubDate>Tue, 04 Aug 2020 14:47:07 +0800</pubDate><description><![CDATA[这些年曾经遇到过一些比较棘手的linux 异常问题，遗憾的是很多时候没有及时更新总结，导致我自己再次遇到的时候也要靠网络搜索相关文章去回忆解决办法，本文会持续更新，逐步完善linux 崩溃异常解决问题办法。

   linux 崩溃异常无非是死锁，空指针，访问非法区域等问题，通常一般的方法，用静态的分析方式可以解决问题，实在比较复杂的情况只能用KGDB的等方式来解决。

 


 为了方便调试和测试代码，内核提供了许多与内核调试相关的配置选项。这些选项大部分都在内核配置编辑器的内核开...]]></description><category></category></item><item><title><![CDATA[MIPI lcd屏幕调试方法总结]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/106993105</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/106993105</guid><author>gooogleman</author><pubDate>Sun, 28 Jun 2020 10:07:41 +0800</pubDate><description><![CDATA[以前工作都比较忙，很少写总结性的东西了，现在有空就写写吧。

   mipi 时钟比较高，一般的小公司示波器是没法测试到波形的，此时必须注意步骤，否则会因为某些小细节而搞好几天甚至更久。

1、保证MIPI lcd 的各路电压都正常，如果有条件，测试mipi 时钟以及各个数据通道的正负线波形；

2、保证复位引脚时序正常；

3、找一款已经成功验证过的MIPI 屏幕驱动程序来修改；

4、保证MIPI 屏幕各项设置参数以及MIPI接口参数设置函数是对的；

5、保证lcd 的dclk 设置正...]]></description><category></category></item><item><title><![CDATA[关于如何降低wifi 功耗]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/106474257</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/106474257</guid><author>gooogleman</author><pubDate>Mon, 01 Jun 2020 16:14:34 +0800</pubDate><description><![CDATA[最近在调试wifi，以前都是基于Linux Android之下调试，要么是做的相对完善，只是了解一个大概情况，要么就是对功耗要求不高，直接用就可以了。现在用在一个非标的系统上，并且电池较小，对功耗要求挺高，于是就花了点时间看了一下802.11 协议，现在把wifi 降低功耗办法总结一下。

1、在wifi 没有连接AP的时候，休眠时候可以直接给wifi 下电，唤醒重连和是否下电时间没什么差距，这种wifi 休眠模式最低，但是连接时间最长；

2、进入深度休眠，断开AP，但是不对wifi进行下电...]]></description><category></category></item><item><title><![CDATA[Linker Scripts SECTIONS 部分的一个疑问]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/103157212</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/103157212</guid><author>gooogleman</author><pubDate>Wed, 20 Nov 2019 10:17:55 +0800</pubDate><description><![CDATA[在M4 里面Linker Scripts 看到有如下部分描述

SECTIONS
{
  .AppinInfo :
  {
    KEEP(*(.AppinInfo))
  }&gt;FLASH = 0xff

}

一直没搞明白 这个= 0xff 是什么意思，相关中文网是找遍了也没这部分解释，于是只能找老外的网站了，尤其是要找到官方资料。

https://sourcew...]]></description><category></category></item><item><title><![CDATA[[-Wunused-but-set-variable]和[-Wunused-variable]的区别]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/103140913</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/103140913</guid><author>gooogleman</author><pubDate>Tue, 19 Nov 2019 14:58:27 +0800</pubDate><description><![CDATA[公司严格要求，要求把警告全部消除才算是合格代码，于是打开gcc -Wall 有两个警告很像。

warning: unused variable 'ucRet' [-Wunused-variable]

warning: variable 'Attr' set but not used [-Wunused-but-set-variable]

开始以为是一样的，直接屏蔽Attr就出错了...]]></description><category></category></item><item><title><![CDATA[在Linux 下开发cortex M3 是什么感觉？]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/102803416</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/102803416</guid><author>gooogleman</author><pubDate>Tue, 29 Oct 2019 17:11:25 +0800</pubDate><description><![CDATA[这几天，公司让去windows环境下用gcc 编译cortex M3的代码，囧。开始还真是有点摸不着头脑，后面发现已经做好了很多各种gcc的exe版本工具链，稍微修改一下Linux 下的Makefile就可以在window下 用bat 文件调用make.exe 编译了。不过真的没Linux强大，有时候报错也牛头不对马嘴，编译速度也是有点慢。既然都是编译器，那把cortex M3 代码用L...]]></description><category></category></item><item><title><![CDATA[warning: jobserver unavailable: using -j1. Add `+' to parent make rule问题怎么解决]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/102802567</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/102802567</guid><author>gooogleman</author><pubDate>Tue, 29 Oct 2019 16:49:41 +0800</pubDate><description><![CDATA[最近在整windows 下的gcc 工具链编译，发现bat 调用make -j4 会有如下警告

warning:jobserverunavailable:using-j1.Add`+'toparentmakerule，以为是windows 下make 不支持多核编译的原因，但是今天我把同一份代码放到ubuntu下 编译，一样的警告，并且ubuntu 编译别的Linux ...]]></description><category></category></item><item><title><![CDATA[cmake 从入门到放弃]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/102689831</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/102689831</guid><author>gooogleman</author><pubDate>Tue, 22 Oct 2019 20:27:31 +0800</pubDate><description><![CDATA[以前在Linux下看过一些auto make 工具生成的Makefile，感觉生成的Makefile有一个原则，就是死命让人看不懂，显得很高深莫测，我不甘心，一些网友又给我推荐cmake，搜索一下果然是吹的神乎其技，并且说大型工程，自己手工写Makefile的人就是SB。于是我就整起来，开始在windows下整，遇到一些问题始终很奇怪，解决不了，于是还是在ubuntu下来搞吧。

  ...]]></description><category></category></item><item><title><![CDATA[C语言和设计模式（总结篇）]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/102581218</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/102581218</guid><author>gooogleman</author><pubDate>Wed, 16 Oct 2019 10:43:48 +0800</pubDate><description><![CDATA[【 声明：版权所有，欢迎转载，请勿用于商业用途。 联系信箱：feixiaoxing @163.com】

设计模式的书相信很多人都看过。对于设计模式这样一种方法，相信不同的人有不同的理解。我在这里写的博客只是我个人对设计模式的粗浅认识。文中肯定存在很多的不足和不成熟之处，希望朋友们谅解。望大家多多指正，谢谢！

01）C语言和设计模式（继承、封装、多态）

02）C语言和设计模式（访问者...]]></description><category></category></item><item><title><![CDATA[cortex M3 系统svc 系统调用]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/102526419</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/102526419</guid><author>gooogleman</author><pubDate>Sat, 12 Oct 2019 19:58:20 +0800</pubDate><description><![CDATA[STM32 SVCall

一个特殊的中断：SVCall

简述：一种由程序进行触发的中断，默认开启

起源：SVC（系统服务调用，亦简称系统调用）多用于在操作系统之上的软件开发中。SVC 用于产生系统函数的调用请求。例如，操作系统不让用户程序直接访问硬件，而是通过提供一些系统服务函数，用户程序使用 SVC 发出对系统服务函数的呼叫请求，以这种方法调用它们来间接访问硬件。因此，当用户程序想要控制特...]]></description><category></category></item><item><title><![CDATA[linux文件描述符限制及使用详解]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/102454500</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/102454500</guid><author>gooogleman</author><pubDate>Wed, 09 Oct 2019 09:52:48 +0800</pubDate><description><![CDATA[背景
最近调试一款网关设备，它部署在客户端和服务端之间。在工作时，它同时接收来自客户端的连接，同时又向服务端建立连接。

网关在完全接收来自客户端的数据后，会校验数据合法性，只有数据合法，网关才会向服务器建立连接并转发数据。

这样，当存在一个客户端和服务端的通信时，网关有可能需要同时建立两个连接，占用两个fd。这对网关的数据处理能力提出了较高的要求。

在调试中出现的现象是，当客户端以较多的并发...]]></description><category></category></item><item><title><![CDATA[htonl/htons以及ntohl/ntohs等函数使用说明]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/100935896</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/100935896</guid><author>gooogleman</author><pubDate>Tue, 17 Sep 2019 19:05:24 +0800</pubDate><description><![CDATA[htonl/htons以及ntohl/ntohs等函数都是为了解决主机和网络字节序不同而实现的函数，不同的是使用情况不同：htonl/htons用在主机设置相关参数到网络之前，ntohl/ntohs是从网络读出参数到主机之前。

#include &lt;arpa/inet.h&gt;

   uint32_t htonl(uint32_t hostlong);

   ui...]]></description><category></category></item><item><title><![CDATA[int socket(int domain, int type, int protocol); domain AF_UNIX，PF_UNIX， AF_LOCAL，AF_NETLINK等了解]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/100743318</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/100743318</guid><author>gooogleman</author><pubDate>Wed, 11 Sep 2019 17:48:02 +0800</pubDate><description><![CDATA[#include &lt;sys/socket.h&gt;

   int socket(int domain, int type, int protocol); 函数里面domain 的值有如下

   Name        Purpose             Man page
   AF_UNIX, AF_LOCAL ...]]></description><category></category></item><item><title><![CDATA[各种进程间通信效率比較以及使用注意事项]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/99737273</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/99737273</guid><author>gooogleman</author><pubDate>Mon, 19 Aug 2019 16:56:33 +0800</pubDate><description><![CDATA[各种进程间通信效率比較

类型
			无连接
			可靠
			流控制
			记录消息类型
			优先级
		普通PIPE
			N
			Y
			Y
			
			N
		流PIPE
			N
			Y
			Y
			
			N
		命名PIPE(FIFO)
			N
			Y
			Y
			
			N
		消息队列
			N
			Y
			Y
			
			Y
		信号量
		...]]></description><category></category></item><item><title><![CDATA[结构体（或者联合体）变量的成员在内存里是如何分布的]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/99647104</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/99647104</guid><author>gooogleman</author><pubDate>Thu, 15 Aug 2019 17:47:58 +0800</pubDate><description><![CDATA[结构体（或者联合体）变量的成员在内存里是如何分布的

1.概述

结构体变量的成员在内存里是如何分布的、成员先后顺序是怎样的、成员之间是连续的还是分散的、还是其他的什么形式？这些问题既和软件相关又和硬件相关。所谓软件相关主要是指和具体的编程语言的编译器的特性相关，编译器为了优化CPU访问内存的效率，在生成结构体成员的起始地址时遵循着某种特定的规则，这就是所谓的结构体成员“对齐”；所谓硬件相关主要...]]></description><category></category></item><item><title><![CDATA[谨慎使用多线程中的fork]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/98484614</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/98484614</guid><author>gooogleman</author><pubDate>Mon, 05 Aug 2019 14:16:42 +0800</pubDate><description><![CDATA[谨慎使用多线程中的fork

2015-02-07 19:23 by origins 转自https://www.cnblogs.com/liyuan989/p/4279210.html

前言

在单核时代，大家所编写的程序都是单进程/单线程程序。随着计算机硬件技术的发展，进入了多核时代后，为了降低响应时间，重复充分利用多核cpu的资源，使用多进程编程的手段逐渐被人们接受和掌握。然而因为创建一...]]></description><category></category></item><item><title><![CDATA[wpa_supplicant与wpa_cli之间通信过程]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/97279432</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/97279432</guid><author>gooogleman</author><pubDate>Thu, 25 Jul 2019 17:53:19 +0800</pubDate><description><![CDATA[wpa_supplicant编译：

1. wpa_supplicant/Android.mk :

-- wpa_cli

-- wpa_supplicant



-- libwpa_client.so



2. hostapd/Android.mk :

-- hostapd_cli

-- hostapd







从通信层次上划分，wpa_supplicant提供向上的控...]]></description><category></category></item><item><title><![CDATA[进程空间分配和堆栈大小]]></title><link>https://blog.youkuaiyun.com/gooogleman/article/details/96480438</link><guid>https://blog.youkuaiyun.com/gooogleman/article/details/96480438</guid><author>gooogleman</author><pubDate>Fri, 19 Jul 2019 14:54:40 +0800</pubDate><description><![CDATA[进程空间分配和堆栈大小

1. Linux中进程空间的分配情况如下：



　　从上图可以看出，进程的空间分配：与进程相关的数据结构（页表、内核栈、task） ---&gt; 物理内存 ---&gt; 内核代码和数据---&gt; 用户栈 ---&gt; 共享库的内存映射区 ---&gt; 运行时堆 ---&gt;未初始化数据段.bss---&gt; 已初始化数据段.data ---...]]></description><category></category></item></channel></rss>