易截截图软件、单文件、免安装、纯绿色、仅160KB

关于 s3c2416 hspi spi linux 驱动


        最近在做samsung
s3c2416
在linux下的spi驱动程序,测试了下samsung发布的spi的内核源代码,无论是采用dma或者非dma模式都无法工作。阅读该驱动代码,发现
这码应该是一个未完成的版本,存在很多的bug。于是在这个版本的基础上进行修改,重写一个可用的、支持全双工的通讯的驱动。目前测试基本能够正常工作,
支持半双工、全双工、spi硬件中断模式和dma模式。
        对hspi-s3c2443.[ch]源文件根据数据发送和接收的流程进行分析,在未采用dma模式下,函数调用的流程:s3c_spi_xfer
-> s3c_spi_doxfer -> s3c_spi_message_start ->
down_interruptible(&spi->sem),到这里,硬件会产生spi中断,进入到中断服务程序
s3c_spi_irq 中,中断函数调用 spi_s3c_irq_nextbyte
进行数据发送,根据spi->state的值做相应的操作,数据发送或接收完成后,调用 s3c_spi_stop
关闭spi,并up(&spi->sem),程序流程回到了s3c_spi_doxfer函数的
down_interruptible(&spi->sem),函数返回退出,一个spi的数据收发流程完成。
        在这个发送接收流程中,中断服务程序存在很多不足的地方。
        先看spi发送,发送最终调用的是:
        while(!(tx_msgend(spi)))
                s3c_spi_write_fifo(spi);
        这两行代码的功能是判断写缓冲里是否还有数据,有的话就写入到spi发送寄存器(S3C_SPI_TX_DATA)中。我们知道spi的硬件能够缓冲64
个字节的数据,如果我们一次发送的数据长度小于64个字节,并且下一次发送数据时缓冲中的数据发送完成,那么这段代码表面上应该是没什么问题。如果我们发
送的数据长度大于64个字节,那么这段代码至少造成的后果是产生一个SPI transmit over run error。
         在看spi接收,接收调用的代码是:
        while(!(rx_msgend(spi))){
                spi->msg->rbuf[spi->msg_rd_pt


相关文档:

Linux驱动的配置和编译脚本

  在完成了驱动程序代码的编写之后,接下来的任务就是编译。linux内核编译的过程是通过内核源码的根目录和各子目录中的Makefile分级管理的。其中根目录的Makefile是最重要的,它可以看成是其他Makefile最初的入口。它负责定义所有与体系结构无关的变量和目标,读取.config文件,并根据其信息最终生成vmlinux(elf格式的 ......

Linux select()详解

Linux select()详解
 
    select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。
文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是 ......

ubuntu下安装linux fetion

ubuntu 下编译 linux fetion 应用程序demo
注:这里给出界面模块的源代码,而libfetion库(32位)则是以静态库的形式放进去了。
1:建立编译环境:
在终端执行以下命令:
sudo apt-get install automake
sudo apt-get install libc-dev
sudo apt-get install g++
sudo apt-get install libcurl4-openssl-dev
sudo ......

linux 字符驱动2


导航:[首页]>[linux内核学习笔记]
目录
 [隐藏]
1 字符设备驱动知识讲解
1.1 描述字符设备基本结构体
1.2 作用
1.3 各字段详解
1.4 操作
1.5 实例
1.5.1 代码
1.5.2 运行
[编辑]字符设备驱动知识讲解
作者:[牛涛]
[编辑]描述字符设备基本结构体
/linux/ ......

Linux 下常用软件的安装命令(转载)

 sudo apt-get install virtualbox
sudo apt-get install ntfs-3g ntfs-config #ntfs写入支持,装完后运行ntfs-config,把两个钩打上即可。楼下方法作废
sudo apt-get install googleearth googlizer gtalk#google相关,skyx友情提示:不推荐马甲 gtalk
sudo apt-get install ghex #GNOME 上的十六进制文件编辑器
su ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号