<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[北落师门'的专栏]]></title><description><![CDATA[嵌入式Linux+ARM之探索]]></description><link>https://blog.youkuaiyun.com/beyondioi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; beyondioi]]></copyright><item><title><![CDATA[隐私政策网址(URL)]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/122176283</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/122176283</guid><author>beyondioi</author><pubDate>Mon, 27 Dec 2021 17:07:44 +0800</pubDate><description><![CDATA[本软件尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务，本软件会按照本隐私权政策的规定使用和披露您的个人信息。但本软件将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外，在未征得您事先许可的情况下，本软件不会将这些信息对外披露或向第三方提供。本软件会不时更新本隐私权政策。您在同意本软件服务使用协议之时，即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本软件服务使用协议不可分割的一部分。

1.适用范围

a)在您使用本软件网络服务，本软件自动接收并记录的您的手机]]></description><category></category></item><item><title><![CDATA[高通平台android 环境配置编译及开发经验总结]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/18675055</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/18675055</guid><author>beyondioi</author><pubDate>Wed, 22 Jan 2014 21:48:28 +0800</pubDate><description><![CDATA[1、高通平台android开发总结




1.1 搭建高通平台环境开发环境
在高通开发板上烧录文件系统
建立高通平台开发环境
高通平台，android和 modem 编译流程分析
高通平台 7620 启动流程分析
qcril 流程分析，设置sim卡锁
python scons 语法学习
Python 语言之 scons 工具流程分析：
 
1.2 搭建高通平台环境开发]]></description><category></category></item><item><title><![CDATA[android MSM8974 上DeviceTree简介]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/18674927</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/18674927</guid><author>beyondioi</author><pubDate>Wed, 22 Jan 2014 21:35:19 +0800</pubDate><description><![CDATA[简介

主要功能是不在代码中硬编码设备信息，而是用专门的文件来描述。整个系统的设备节点会形成一个树，设备节点里可以设置属性。官网在http://www.devicetree.org 。入门指南请参考http://www.devicetree.org/Device_Tree_Usage 。Linux上一些状况请参考"kernel/Document/devicetree/"，其中"bindings]]></description><category></category></item><item><title><![CDATA[串口编程tcflush()函数]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9860415</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9860415</guid><author>beyondioi</author><pubDate>Fri, 09 Aug 2013 17:43:32 +0800</pubDate><description><![CDATA[tcflush函数刷清（扔掉）输入缓存（终端驱动法度已接管到，但用户法度尚未读）或输出缓存（用户法度已经写，但尚未发送）.
  int tcflush（int filedes，int quene）
  quene数该当是下列三个常数之一:
    *TCIFLUSH  刷清输入队列
    *TCOFLUSH  刷清输出队列
    *TCIOFLUSH 刷清输入、输出队列
  例如：]]></description><category></category></item><item><title><![CDATA[Linux下的串口编程(二）]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9834397</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9834397</guid><author>beyondioi</author><pubDate>Thu, 08 Aug 2013 12:41:44 +0800</pubDate><description><![CDATA[Linxu下的串口编程（二）
---------------------------------------------------------
Author             :tiger-john
WebSite            :blog.youkuaiyun.com/tigerjb
Email               
：jibo.tiger@gmail.com

Upd]]></description><category></category></item><item><title><![CDATA[上拉电阻下拉电阻的总结]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9817907</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9817907</guid><author>beyondioi</author><pubDate>Wed, 07 Aug 2013 15:35:41 +0800</pubDate><description><![CDATA[上拉电阻：
1、当TTL 电路驱动COMS 电路时，如果TTL 电路输出的高电平低于COMS
电路的最低高电平(一般为3.5V)，这时就需要在TTL 的输出端接上拉电阻，
以提高输出高电平的值。
2、OC 门电路必须加上拉电阻，才能使用。
3、为加大输出引脚的驱动能力，有的单片机管脚上也常使用上拉电阻。
4、在COMS 芯片上，为了防止静电造成损坏，不用的管脚不能悬空，一般接上
拉电]]></description><category></category></item><item><title><![CDATA[Android Low memory killer]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9370599</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9370599</guid><author>beyondioi</author><pubDate>Thu, 18 Jul 2013 16:55:22 +0800</pubDate><description><![CDATA[Android Low memory killer
                    
                        
                    by 永远的伊苏


Android中，进程的生命周期都是由系统控制的，即使用户关掉了程序，进程依然是存在于内存之中。这样设计的目的是为了下次能快速启动。当然，随着系统运行时间的增长，内存会越来越少。An]]></description><category></category></item><item><title><![CDATA[read_proc的用法实例]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9365471</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9365471</guid><author>beyondioi</author><pubDate>Thu, 18 Jul 2013 11:44:15 +0800</pubDate><description><![CDATA[说明
本测试程序主要参考了《linux设备驱动程序》第三版的第四章“调试技术”的‘/proc文件’一节。
并对一些关键函数进行了实例化。


以下是mod1.c

#include
#include
#include
#include /* read_proc需要的头文件。 */

MODULE_LICENSE("GPL");
/*
    原型函数：int (*rea]]></description><category></category></item><item><title><![CDATA[写了一个内核模块 实现简单的类似ps命令]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9363107</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9363107</guid><author>beyondioi</author><pubDate>Thu, 18 Jul 2013 09:22:35 +0800</pubDate><description><![CDATA[内核模块创建在proc文件系统上建立_ps文件.遍例进程内核链表task_struct.将遍例结果存入缓冲区.影射到/proc/_ps文件中.用户态的程序去读取 这个文件.打印显示 当前进程的的pid,ppid 和进程名.


[CODE] 
#include  
#include  
#include  
#include  
#include  

MODULE_LICEN]]></description><category></category></item><item><title><![CDATA[open和fopen的区别]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9356627</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9356627</guid><author>beyondioi</author><pubDate>Wed, 17 Jul 2013 15:43:48 +0800</pubDate><description><![CDATA[open和fopen的区别：
1.缓冲文件系统
缓冲文件系统的特点是：在内存开辟一个“缓冲区”，为程序中的每一个文件使用，当执行读文件的操作时，从磁盘文件将数据先读入内存“缓冲区”， 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时，先将数据写入内存“缓冲区”，待内存“缓冲区”装满后再写入文件。由此可以看出，内存 “缓冲区”的大小，影响着实际操作外存的次数，内存“缓冲区”越大，则]]></description><category></category></item><item><title><![CDATA[使用call_usermodehelper在Linux内核中直接运行用户空间程序]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9356595</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9356595</guid><author>beyondioi</author><pubDate>Wed, 17 Jul 2013 15:41:58 +0800</pubDate><description><![CDATA[系统初始化时kernel_init在内核态创建和运行应用程序以完成系统初始化.  内核刚刚启动时，只有内核态的代码，后来在init过程中，在内核态运行了一些初始化系统的程序，才产生了工作在用户空间的进程。




/* This is a non __init function. Force it to be noinline otherwise gcc
 736 * makes it ]]></description><category></category></item><item><title><![CDATA[使用异步 I/O 大大提高应用程序的性能（AIO）]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9351697</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9351697</guid><author>beyondioi</author><pubDate>Wed, 17 Jul 2013 10:40:55 +0800</pubDate><description><![CDATA[简介： Linux® 中最常用的输入/输出（I/O）模型是同步 I/O。在这个模型中，当请求发出之后，应用程序就会阻塞，直到请求满足为止。这是很好的一种解决方案，因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元（CPU）。但是在某些情况中，I/O 请求可能需要与其他进程产生交叠。可移植操作系统接口（POSIX）异步 I/O（AIO）应用程序接口（API）就提供了这种功能。在本文]]></description><category></category></item><item><title><![CDATA[select - I／O多路转接全面透析]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9303057</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9303057</guid><author>beyondioi</author><pubDate>Thu, 11 Jul 2013 17:51:58 +0800</pubDate><description><![CDATA[select()系统调用提供一个机制来实现同步多元I/O：






#include
sys/time.h>
#include 
sys/types.h>
#include 
unistd.h>

int select 
(int n,
fd_set *readfds,
fd_set *writefds,
fd_set *exceptfds,
struct]]></description><category></category></item><item><title><![CDATA[select函数与I/O多路转接]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9302969</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9302969</guid><author>beyondioi</author><pubDate>Thu, 11 Jul 2013 17:44:57 +0800</pubDate><description><![CDATA[select函数与I/O多路转接


相作大家都写过读写IO操作的代码，例如从socket中读取数据可以使用如下的代码：
while( (n = read(socketfd, buf, BUFSIZE) ) >0)
   if( write(STDOUT_FILENO, buf, n) = n)
   {
printf(“write error”);
exit(1);
   }]]></description><category></category></item><item><title><![CDATA[linux等待队列 第四篇]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9297711</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9297711</guid><author>beyondioi</author><pubDate>Thu, 11 Jul 2013 10:11:06 +0800</pubDate><description><![CDATA[Linux内核里的等待队列机制在做驱动开发时用的非常多，多用来实现阻塞式访问，下面简单总结了等待队列的四种用法，希望对读者有所帮助。

1. 睡眠等待某个条件发生(条件为假时睡眠)：

    睡眠方式：wait_event, wait_event_interruptible
            唤醒方式：wake_up (唤醒时要检测条件是否为真，如果还为假则继续睡眠，唤醒前一定要]]></description><category></category></item><item><title><![CDATA[linux 等待队列 第三篇]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9297307</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9297307</guid><author>beyondioi</author><pubDate>Thu, 11 Jul 2013 09:52:02 +0800</pubDate><description><![CDATA[1、为什么要使用等待队列？等待队列就是阻塞型字符设备驱动的必需品。阻塞型就是说某个设备可读或者可写，但是呢，某个时候这个设备没有东西给你读，但你的应用程序（进程）操作却要向设备去读取数据，那没办法，要么就出错，要么就阻塞着在那里等着要读取数据。一旦设备有东西可以给你读了，进程就可以继续进行读操作了。
2、定义并初始化等待队列。 
    (1) 定义"等待队列头"
        wait_]]></description><category></category></item><item><title><![CDATA[linux 等待队列 第二篇]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9297179</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9297179</guid><author>beyondioi</author><pubDate>Thu, 11 Jul 2013 09:46:02 +0800</pubDate><description><![CDATA[Linux内核的等待队列是以双循环链表为基础数据结构，与进程调度机制紧密结合，能够用于实现核心的异步事件通知机制。
在这个链表中，有两种数据结构：等待队列头（wait_queue_head_t）和等待队列项（wait_queue_t）。等待队列头和等待队列项中都包含一个list_head类型的域作为"连接件"。它通过一个双链表和把等待tast的头，和等待的进程列表链接起来。从上图可以清晰看到。所]]></description><category></category></item><item><title><![CDATA[linux等待队列]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9297051</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9297051</guid><author>beyondioi</author><pubDate>Thu, 11 Jul 2013 09:32:59 +0800</pubDate><description><![CDATA[Linux内核的等待队列是以双循环链表为基础数据结构，与进程调度机制紧密结合，能够用于实现核心的异步事件通知机制。在Linux2.4.21中，等待队列在源代码树include/linux/wait.h中，这是一个通过list_head连接的典型双循环链表，如下图所示。









在这个链表中，有两种数据结构：等待队列头（wait_queue_head_t）和等待队列项（]]></description><category></category></item><item><title><![CDATA[poll_wait新的理解]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9292367</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9292367</guid><author>beyondioi</author><pubDate>Wed, 10 Jul 2013 16:23:59 +0800</pubDate><description><![CDATA[应用程序使用 select() 或 poll() 调用设备驱动程序的 poll() 函数，该函数把输入输出复用处理的等待队列追加到由内核管理的进程的 poll_table()上。此时，poll() 函数上传递的参数包括含有设备文件信息的 struct file 结构体的指针参数 struct file *filp ，以及追加到设备驱动上的 poll_table结构体指针参数 poll_table ]]></description><category></category></item><item><title><![CDATA[理解poll_wait]]></title><link>https://blog.youkuaiyun.com/beyondioi/article/details/9292335</link><guid>https://blog.youkuaiyun.com/beyondioi/article/details/9292335</guid><author>beyondioi</author><pubDate>Wed, 10 Jul 2013 16:22:38 +0800</pubDate><description><![CDATA[poll_wait()是用在select系统调用中的. 
一般你的代码会有一个struct file_operations结构, 
其中fop->poll函数指针指向一个你自己的函数, 
在这个函数里应该调用poll_wait() 
当用户调用select系统调用时,select系统调用会 
先调用 
poll_initwait(&table); 
然后调用你的 
fop->pol]]></description><category></category></item></channel></rss>