<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SLASH_24的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SLASH_24</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SLASH_24]]></copyright><item><title><![CDATA[信号量与自旋锁的区别]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/55222669</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/55222669</guid><author>SLASH_24</author><pubDate>Wed, 15 Feb 2017 20:39:29 +0800</pubDate><description><![CDATA[区别一：实现方式
自旋锁是自旋等待，进程状态始终处于TASK_RUNNING。

信号量是睡眠等待，进程在等待是处于TASK_INTERRUPTIBLE。


区别二：睡眠死锁陷阱：
在自旋锁的临界区中，进程是不能陷入睡眠的。
而信号量可以睡眠。

同时，基于上面的原因，中断上下文中只能使用自旋锁（中断里不能休眠），在有睡眠代码的临界区只能使用信号量


区别三：CPU的]]></description><category></category></item><item><title><![CDATA[TCP和UDP的区别]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/55047460</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/55047460</guid><author>SLASH_24</author><pubDate>Mon, 13 Feb 2017 13:21:23 +0800</pubDate><description><![CDATA[一、TCP和UDP的区别

1. TCP是面向连接的协议，而UDP是无连接的协议。

2. 可靠性
TCP提供交付保证，即使用TCP协议发送的消息是保证交付给客户端的，若消息在传输过程中丢失，则重发，这是由TCP协议本身控制的，而UDP是不可靠的，他不提供任何交付保证。一个数据包在传输过程中可能会丢失。
UDP不适合保证交付的项目。

3. 有序性
除了提供交付保证，TCP也保证]]></description><category></category></item><item><title><![CDATA[Linux内核定时器]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/54973018</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/54973018</guid><author>SLASH_24</author><pubDate>Fri, 10 Feb 2017 18:07:49 +0800</pubDate><description><![CDATA[一、内核时间的相关概念
1. 墙上时钟：也就是实际时间。

2. 系统时间：自系统启动开始所经过的时间。

3. 时钟中断：内核会周期性的产生时钟中断，在中断处理函数中执行一些与时间相关的操作，如更新时间，进程调度，检查时间片等。

4. 节拍率：在linux内核中，通过编程定义节拍率，也就是HZ。每1/HZ秒发生一次时钟中断。在ARM中，节拍率被定义为100，节拍率越大，系统进入时]]></description><category></category></item><item><title><![CDATA[混杂设备驱动模型设计LED驱动]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/54952767</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/54952767</guid><author>SLASH_24</author><pubDate>Thu, 09 Feb 2017 19:05:46 +0800</pubDate><description><![CDATA[一、使用混杂设备驱动，设计字符设备设备驱动程序的流程
1. 定义一个混杂设备
2. 定义混杂的file_operations和其接口函数
3. 将物理地址申请为内核的一个资源，request_mem_region()
4. 通过ioremap()函数得到物理地址对应的虚拟地址
5. 注册混杂设备 --->已经创建了class和device
6. 访问虚拟地址，控制硬件。


二、]]></description><category></category></item><item><title><![CDATA[常用的GPIO的标准接口函数]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/54946121</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/54946121</guid><author>SLASH_24</author><pubDate>Thu, 09 Feb 2017 12:58:45 +0800</pubDate><description><![CDATA[一、GPIO的标准接口函数
为了使得GPIO具有更好的可移植性，在Linux内核中，有一些基本的模块可以使用标准的接口函数来操作，如：GPIO、INT、Timer、Clock等基本模块。使用该GPIO口必须先对其进行申请(GPIO也是一个资源，一个GPIO只能申请一次，再次申请会报错。)，在内核源码中，每一个GPIO口都对应一个唯一的"ID"，根据硬件平台的不同，可在内核源码目录下的arch/对]]></description><category></category></item><item><title><![CDATA[C语言存储级别关键字详解]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/54932135</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/54932135</guid><author>SLASH_24</author><pubDate>Wed, 08 Feb 2017 19:58:32 +0800</pubDate><description><![CDATA[1. const
关键字const的作用是为给读你代码的人传达这个参数的应用目的。通过给优化器一些附加的信息，使用关键字const也许能产生更紧凑的代码。并且合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数，防止其被无意的代码修改。
与volatile合称“cv特性”，指定变量不可被当前线程/进程改变（但有可能被系统或其他线程/进程改变）

实例：
a. cons]]></description><category></category></item><item><title><![CDATA[Linux驱动简介]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/54914304</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/54914304</guid><author>SLASH_24</author><pubDate>Tue, 07 Feb 2017 19:08:15 +0800</pubDate><description><![CDATA[一、什么是驱动
操作系统是通过各种驱动程序来驱使硬件设备的，也就是说，驱动是操作系统内核与机器硬件之间的桥梁，它为内核操作硬件提供接口。驱动程序在Linux系统中以内核模块的形式存在，其编写方式遵循模块的编程方式。


驱动程序在系统的程序中介于HAL层与硬件层之间，向上与系统各部分衔接，向下处理硬件的各种操作请求。


驱动主要完成以下功能：
1. 对设备初始化和释放。
2. ]]></description><category></category></item><item><title><![CDATA[Linux内核模块]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/54906272</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/54906272</guid><author>SLASH_24</author><pubDate>Tue, 07 Feb 2017 09:15:35 +0800</pubDate><description><![CDATA[一、 Linux内核模块概念
内核模块是Linux内核向外部提供的一个接口，其全称为动态可加载内核模块（Loadable Kernel Module，LKM），简称为模块。Linux内核之所以提供模块机制，是因为它本身是一个单内核（monolithic kernel）。单内核的最大优点是效率高，因为所有的内容都集成在一起，但其缺点是可扩展性和可维护性相对较差，模块机制就是为了弥补这一缺陷。
模]]></description><category></category></item><item><title><![CDATA[C语言产生随机数]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/54852844</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/54852844</guid><author>SLASH_24</author><pubDate>Sat, 04 Feb 2017 00:31:18 +0800</pubDate><description><![CDATA[一、简介
1. 随机数：数学上产生的都是伪随机数，真正的随机数是使用物理方法产生的。
2. 随机数种子：随机数的产生是由算术规则产生的，srand(seed)的随机数种子(seed)不同，
  rand()的随机数值就不同，如果每次的seed一样，则rand()产生的随机数也将一样。因此
  要产生随机数，seed也必须是随机的值。
  
3. srand()产生随机数种子seed]]></description><category></category></item><item><title><![CDATA[在Linux终端输出带颜色的文字的方法]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/54846392</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/54846392</guid><author>SLASH_24</author><pubDate>Fri, 03 Feb 2017 13:22:55 +0800</pubDate><description><![CDATA[一、shell下的实现方法
只要设置输出属性，就可输出带颜色的文字 ，shell中的部分属性：

      \033[0m 关闭所有属性
      \033[1m 设置高亮度
      \033[4m 下划线
      \033[5m 闪烁
      \033[7m 反显
      \033[8m 消隐
      \033[30m 至 \33[37m 设置前景色]]></description><category></category></item><item><title><![CDATA[数据结构之线性表]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/54839695</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/54839695</guid><author>SLASH_24</author><pubDate>Fri, 03 Feb 2017 01:35:40 +0800</pubDate><description><![CDATA[一、线性表简介
线性表(List)是零个或多个数据元素的有限序列，线性表有如下特点：


 线性表是一个序列，即元素之间是有顺序的。若元素存在多个，则第一个元素无前驱，最后一个元素无后继，其他每个元素都有且只有一个前驱和后继。线性表元素是有限的，事实上，在计算机中处理的对象都是有限的，那种无限的数列，只存在于数学的概念中。



若用数学方式表示：若将线性表记为(a1, ……, a]]></description><category></category></item><item><title><![CDATA[排序算法之冒泡排序]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/54810095</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/54810095</guid><author>SLASH_24</author><pubDate>Wed, 01 Feb 2017 19:48:59 +0800</pubDate><description><![CDATA[一、冒泡排序原理
       冒泡排序(Bubble Sort)是一种较简单的排序算法，其原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束。

二、冒泡排序实例
#include 

void Bubble_Sort(int array[], int n)
{]]></description><category></category></item><item><title><![CDATA[ARM体系结构（一）]]></title><link>https://blog.youkuaiyun.com/SLASH_24/article/details/54800033</link><guid>https://blog.youkuaiyun.com/SLASH_24/article/details/54800033</guid><author>SLASH_24</author><pubDate>Tue, 31 Jan 2017 20:02:24 +0800</pubDate><description><![CDATA[一、ARM概述
ARM全称为：Acorn RISC Machine，是由英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。ARM处理器在全球拥有更多的合作伙伴，不仅因其低功耗高性能的特点，除此，ARM处理器支持ARM(32位)/Thumb(16位)双指令集，能很好的兼容16/8位器件、指令格式统一、大量使用寄存器，指令执行速度更快、寻址方式高效灵活，因此，ARM处理器已经深入工控、]]></description><category></category></item></channel></rss>