存档

2012年3月 的存档

[整理]SD协议概述

2012年3月29日 sigma 没有评论 5,956 views

这段时间折腾某芯片上的SDIO,在这里将相关知识整理下,以便备忘。需要注意的是,由于我们的SD只支持SD模式,不支持SPI模式,因此文中内容也是针对SD模式的,后面不再强调此点。

信号

CLK:时钟信号
CMD:双向命令和响应信号
DAT0-3:双向数据信号
VDD,VSS:电源和地信号
注:SD模式下可以选择总线宽度, 即选用几根DAT信号线(1或4根), 可以在主机初始化后设置.

比特流

SD协议规范的比特流类型有三类:

  • 命令: 是在CMD上传输的用于启动一个操作的比特流. 由主机发往从机, 可以是点对点也可以是广播的.
  • 响应: 是在CMD上传输的用于之前命令回答的比特流. 由从机发往主机.
  • 数据: 是在DAT上传输的比特流, 双向传输.

命令和数据流都有一个开始位和结束位.

命令

SD协议定义了两类命令,广播命令以及点对点命令,

  • 广播命令:给所有卡都发送, 某些命令需要响应.
  • 点对点命令:给指定地址的卡发送, 需要响应.

工作模式

  • 卡识别模式:主机上电复位后即处于此模式,它会在总线上等待卡. 卡复位后也处于此模式, 直到SEND_RCA(CMD3)命令到来.此模式下主机复位总线所有的卡, 验证工作电压, 询问卡的地址. 这个模式下所有数据的传输都是只通过CMD线来完成.
  • 数据传输模式:卡收到SEND_RCA(CMD3)命令后即进入此模式. 主机识别到卡后也进入此模式.CMD7命令用于使指定地址的卡进入传输模式, 任何指定时刻只能有一个卡处于传输模式.传输模式下所有的数据传输都是点对点的, 并且所有有地址的命令都需要有响应.
分类: 贝壳 标签: , ,

启用FTS编译sqlite并用update更新列值

2012年3月16日 sigma 3 条评论 6,199 views

今天,折腾sqlite,需要update一个数据库,发现可以用下面的命令:

UPDATE <table> SET  <col=new_val> WHERE <oth_col=val>

但是,在ubuntu里面用apt-get安装sqlite后,直接执行上面的语句,会报“no such module:FTS3”,因为默认sqlite编译是没有启用FTS3的。因此,需要自己下源码编译,手动编译是加入以下编译选项:

-DSQLITE_ENABLE_FTS3
-DSQLITE_ENABLE_FTS3_PARENTHESIS

用autoconf版本的话,在configure时,加入:

CPPFLAGS= "-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS "/configure <options>

上面两种方法的目的都是一样的,就是在编译时定义SQLITE_ENABLE_FTS3 和SQLITE_ENABLE_FTS3_PARENTHESIS宏。

参考资料:http://www.sqlite.org/fts3.html

分类: 沙子 标签: ,

无觅相关文章插件,快速提升流量