<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dang_guoying的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dang_guoying</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dang_guoying]]></copyright><item><title><![CDATA[UART通信协议]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/74584222</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/74584222</guid><author>dang_guoying</author><pubDate>Thu, 06 Jul 2017 17:47:23 +0800</pubDate><description><![CDATA[1.UART

    UART(Universal Asynchronous Receiver and Transmitter)通用异步收发器（异步串行通信口），是一种通用的数据通信协议，它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范，即UART是异步串行通信口的总称。
   而RS232、RS499、RS423、RS422和RS485等，是]]></description><category></category></item><item><title><![CDATA[spi协议及工作原理分析]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/74575389</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/74575389</guid><author>dang_guoying</author><pubDate>Thu, 06 Jul 2017 17:30:34 +0800</pubDate><description><![CDATA[说明.文章摘自：SPI协议及其工作原理浅析 http://bbs.chinaunix.NET/thread-1916003-1-1.html

一、概述.

     SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处]]></description><category></category></item><item><title><![CDATA[I2C协议解析]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/74573811</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/74573811</guid><author>dang_guoying</author><pubDate>Thu, 06 Jul 2017 17:26:13 +0800</pubDate><description><![CDATA[1、基本概念

      主机            初始化发送，产生时钟信号和终止发送的器件

      从机            被主机寻址的器件

      发送器        发送数据到总线的器件

      接收器        从总线接收数据的器件

      多主机        同时有多于一个主机尝试控制总线 但不破坏报文

      仲裁 ]]></description><category></category></item><item><title><![CDATA[ARM的编程模型]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/74323156</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/74323156</guid><author>dang_guoying</author><pubDate>Tue, 04 Jul 2017 14:30:03 +0800</pubDate><description><![CDATA[1. ARM处理器的工作状态

1)从编程的角度看，ARM微处理器的工作状态一般有两种，并可在两种状态之间切换：
    • ARM状态：此时处理器执行32位的字对齐的ARM指令；
    • Thumb状态：此时处理器执行16位的、半字对齐的Thumb指令。

2) Thumb和ARM

     THUMB指令是ARM指令的子集，可以相互调用，只要遵循一定的调用规则，Thumb]]></description><category></category></item><item><title><![CDATA[ARM的体系架构]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/74322389</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/74322389</guid><author>dang_guoying</author><pubDate>Tue, 04 Jul 2017 14:27:50 +0800</pubDate><description><![CDATA[1. ARM概述



1.1 Application Cortex Processors (ARM Cortex 应用处理器 )

       • Cortex™-A 系列 - 开放式操作系统的高性能处理器 
     Cortex 应用处理器在先进工艺节点中可实现高达 2GHz+ 标准频率的卓越性能，从而可支持下一代的移动 Internet 设备。这些处理器具有单核和多核种类，]]></description><category></category></item><item><title><![CDATA[ARM编程模型]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/71425508</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/71425508</guid><author>dang_guoying</author><pubDate>Mon, 08 May 2017 17:19:15 +0800</pubDate><description><![CDATA[1. ARM处理器的工作状态

1)从编程的角度看，ARM微处理器的工作状态一般有两种，并可在两种状态之间切换：
    • ARM状态：此时处理器执行32位的字对齐的ARM指令；
    • Thumb状态：此时处理器执行16位的、半字对齐的Thumb指令。

2) Thumb和ARM

     THUMB指令是ARM指令的子集，可以相互调用，只要遵循一定的调用规则，Thumb]]></description><category></category></item><item><title><![CDATA[I2C和SPI总线对比]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/71172638</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/71172638</guid><author>dang_guoying</author><pubDate>Thu, 04 May 2017 17:23:40 +0800</pubDate><description><![CDATA[I2C与SPI总线的对比

一 IIC总线

I2C--INTER-IC串行总线的缩写，是PHILIPS公司推出的芯片间串行传输总线。它以1根串行数据线（SDA）和1根串行时钟线（SCL）实 现了双工的同步数据传输。具有接口线少，控制方式简化，器件封装形式小，通信速率较高等优点。在主从通信中，可以有多个I2C总线器件同时接到I2C总线 上，通过地址来识别通信对象。

IIC 接口的协议]]></description><category></category></item><item><title><![CDATA[C语言的数据类型]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/70868168</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/70868168</guid><author>dang_guoying</author><pubDate>Thu, 27 Apr 2017 18:11:21 +0800</pubDate><description><![CDATA[1.概述

　　C 语言包含的数据类型如下图所示：



2.各种数据类型介绍

2.1整型

　　整形包括短整型、整形和长整形。

2.1.1短整形

　　short a=1;

2.1.2整形

　　一般占4个字节（32位），最高位代表符号，0表示正数，1表示负数，取值范围是-2147483648~2147483647，在内存中的存储顺序是地位在前、高位在后]]></description><category></category></item><item><title><![CDATA[GDB调试]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/55251166</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/55251166</guid><author>dang_guoying</author><pubDate>Thu, 16 Feb 2017 08:58:27 +0800</pubDate><description><![CDATA[db常用命令：













命令

描述





backtrace（或bt）

查看各级函数调用及参数



finish

连续运行到当前函数返回为止，然后停下来等待命令



frame（或f） 帧编号

选择栈帧



info（或i） locals

查看当前栈帧局部变量的值


]]></description><category></category></item><item><title><![CDATA[Linux2.6.32下的spi驱动的移植]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/55046215</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/55046215</guid><author>dang_guoying</author><pubDate>Mon, 13 Feb 2017 11:17:56 +0800</pubDate><description><![CDATA[Linux2.6.32下SPI驱动的移植如下图所示：












下面需要修改部分内核代码，具体操作如下：
1.  修改arch/arm/mach-s3c2440/mach-mini2440.c文件



在include头文件代码行之后增加如下代码

//spi  add by shiguang 
#include Linux/spi/spi]]></description><category></category></item><item><title><![CDATA[SPI设备的驱动]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/54970414</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/54970414</guid><author>dang_guoying</author><pubDate>Fri, 10 Feb 2017 14:48:52 +0800</pubDate><description><![CDATA[主要包括两个SPI设备，AT45DB321D和MCP2515，一个是串行的数据闪存，一个是可以总线设备芯片。前者对于我们来说非常重要，我们可以借助该设备对uboot的和内核以及根文件系统进行更新。
    预备知识：设备和驱动是如何匹配的？系统的热插拔是如何实现的？
    首先一点，设备和驱动是严格区分的，设备是设备，驱动是驱动，设备通过struct device来定义，当然用户也可以将该结]]></description><category></category></item><item><title><![CDATA[Linux系统自带spi驱动加载及应用程序编写方法详解]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/54970383</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/54970383</guid><author>dang_guoying</author><pubDate>Fri, 10 Feb 2017 14:46:48 +0800</pubDate><description><![CDATA[硬件平台：飞思卡尔IMX6，

内核版本：kernel3.0.35





Linux系统中，和I2C一样，SPI也有系统自带的设备驱动程序，位于源码目录下drivers/spi/spidev.c，以下为驱动的移植和对应应用程序编写方法




驱动代码移植

要将此设备驱动加入到内核中，要做两件事情


第一：将此驱动编译进内核

步骤：make men]]></description><category></category></item><item><title><![CDATA[linux内核中，在/drivers/char目录的Kconfig文件中加入自己编写的新驱动，make menuconfig却不显示的问题]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/54945262</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/54945262</guid><author>dang_guoying</author><pubDate>Thu, 09 Feb 2017 11:20:38 +0800</pubDate><description><![CDATA[修改了一个同学编写的基于i2c接口的气压传感器sht21驱动，文件名SHT21.c，文件中将sht21注册成字符设备，现需要将驱动重新编译。

按照mini2440用户手册7.3.3节的步骤，将SHT21 module加入内核代码树并编译，

第一步： 
编辑配置文件Kconfig，加入驱动选项，使之在make menuconfig 的时候出现 
打开 Linux-2.6.32.2/d]]></description><category></category></item><item><title><![CDATA[Linux驱动的两种加载方式过程分析]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/54944890</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/54944890</guid><author>dang_guoying</author><pubDate>Thu, 09 Feb 2017 10:56:36 +0800</pubDate><description><![CDATA[一、概念简述

在Linux下可以通过两种方式加载驱动程序：静态加载和动态加载。

静态加载就是把驱动程序直接编译进内核，系统启动后可以直接调用。静态加载的缺点是调试起来比较麻烦，每次修改一个地方都要重新编译和下载内核，效率较低。若采用静态加载的驱动较多，会导致内核容量很大，浪费存储空间。

动态加载利用了Linux的module特性，可以在系统启动后用insmod命令添加模块（.ko]]></description><category></category></item><item><title><![CDATA[linux驱动加载模块查看命令]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/54943833</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/54943833</guid><author>dang_guoying</author><pubDate>Thu, 09 Feb 2017 09:41:11 +0800</pubDate><description><![CDATA[驱动操作命令：

      insmod / modprobe 加载驱动

      rmmod                     卸载驱动

      lsmod                       查看系统中所有已经被加载了的所有的模块以及模块间的依赖关系

      modinfo                    获得模块的信息]]></description><category></category></item><item><title><![CDATA[深入理解linux设备驱动]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/54906756</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/54906756</guid><author>dang_guoying</author><pubDate>Tue, 07 Feb 2017 10:07:39 +0800</pubDate><description><![CDATA[· 应用程序、库、内核、驱动程序的关系

· 设备类型

· 设备文件、主设备号与从设备号

· 驱动程序与应用程序的区别

· 用户态与内核态

· Linux驱动程序功能

一、应用程序、库、内核、驱动程序的关系

1) 应用程序调用一系列函数库，通过对文件的操作完成一系列功能： 
      

应用程序以文件形式访问各种硬件设备（Linux特有的抽象方式，]]></description><category></category></item><item><title><![CDATA[杨辉三角]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/54881389</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/54881389</guid><author>dang_guoying</author><pubDate>Sun, 05 Feb 2017 15:33:50 +0800</pubDate><description><![CDATA[杨辉三角是我们从初中就知道的，现在，让我们用C语言将它在计算机上显示出来。

在初中，我们就知道，杨辉三角的两个腰边的数都是1，其它位置的数都是上顶上两个数之和。这就是我们用C语言写杨辉三角的关键之一。在高中的时候我们又知道，杨辉三角的任意一行都是的二项式系数，n为行数减1。也就是说任何一个数等于这个是高中的组合数。n代表行数减1，不代表列数减1。如：第五行的第三个数就为=6。

现在我们]]></description><category></category></item><item><title><![CDATA[C语言指针的总结]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/54881323</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/54881323</guid><author>dang_guoying</author><pubDate>Sun, 05 Feb 2017 15:26:39 +0800</pubDate><description><![CDATA[指针（Pointer）就是内存的地址，C语言允许用一个变量来存放指针，这种变量称为指针变量。指针变量可以存放基本类型数据的地址，也可以存放数组、函数以及其他指针变量的地址。

程序在运行过程中需要的是数据和指令的地址，变量名、函数名、字符串名和数组名在本质上是一样的，它们都是地址的助记符：在编写代码的过程中，我们认为变量名表示的是数据本身，而函数名、字符串名和数组名表示的是代码块或数据块的首地]]></description><category></category></item><item><title><![CDATA[Linux系统SPI驱动学习笔记（二）]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/54862821</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/54862821</guid><author>dang_guoying</author><pubDate>Sat, 04 Feb 2017 14:15:54 +0800</pubDate><description><![CDATA[五. SPI驱动的软件架构




在内核的SPI驱动的软件架构中，进行了合理的分层和抽象，如下图所示：



SPI控制器驱动程序


SPI控制器不用关心设备的具体功能，它只负责把上层协议驱动准备好的数据按SPI总线的时序要求发送给SPI设备，同时把从设备收到的数据返回给上层的协议驱动，因此，内核把SPI控制器的驱动程序独立出来。SPI控制器驱动负责控制具体的控制器硬件]]></description><category></category></item><item><title><![CDATA[Linux系统SPI驱动学习笔记（一）]]></title><link>https://blog.youkuaiyun.com/dang_guoying/article/details/54862801</link><guid>https://blog.youkuaiyun.com/dang_guoying/article/details/54862801</guid><author>dang_guoying</author><pubDate>Sat, 04 Feb 2017 14:13:33 +0800</pubDate><description><![CDATA[SPI是"Serial Peripheral Interface" 的缩写，是一种四线制的同步串行通信接口，用来连接微控制器、传感器、存储设备，SPI设备分为主设备和从设备两种，用于通信和控制的四根线分别是：



CS    片选信号SCK  时钟信号MISO  主设备的数据输入、从设备的数据输出脚MOSI  主设备的数据输出、从设备的数据输入脚
因为在大多数情况下，CPU或SOC一侧]]></description><category></category></item></channel></rss>