关于DM8168的SATA接口与SATA3设备连接建立失败的问题 影响CPU的版本:
2.0
细节:当DM8168的SATA接口与一个SATA GEN3设备(如一个硬盘)连接的时候,在复位和上电后,进行速度协商失败,不能建立连接。
有两种结果一样的连接失败类型:
(1) 丢失同步
对GEN3设备,它总是以其支持的最大速度来启动速度协商:通过送ALIGNp原生数据模式到HOST SATA子系统,Host SATA子系统以GNE1速度(1.5GBits/Sec)送一个连续的D10.2 Tone,理想情况下,应当保持这个状态直到Host认识目标的ALIGNp原生数据模式(以GEN2,或者GEN1,而非GEN3速度),然而目标还处于GEN3,由于混叠(aliasing)等原因,Host SATA子系统不能以一个不同的速度(GEN2速度)用ALIGNp原生数据模式回应给目标,Host以GEN2速度完成协商,在目标超时(54.6us)之前过渡到一个逻辑IDLE状态(Non-ALIGNp原生SYNCp),对于GEN3速度一旦超时,目标启动以GEN2速度发送一个ALIGNp原生数据模式,期望Host的一个ALIGNp原生数据模式永远不会发生,因为Host正处于GEN2速度的逻辑IDLE状态,另一个超时会发生,因为目标不能以GEN2速度收到ALIGNp原生数据,这迫使目标将其速度由GEN2降到GEN1,并企图以GEN1速度建立一个连接。Host依然处于GEN2速度的逻辑IDLE状态,在最后一个超时发生之后,目标请求一个复位(通过送COMINIT信号)来重新启动与Host建立连接建立的过程,这个新的连接建立的结果是一样的,Host和目标总是处于非同步状态。
(2) 未知状态/锁定
对GEN3,目标总是以支持的最大速度来启动速度协商:通过送ALIGNp原生数据模式到HOST SATA子系统,Host SATA子系统以GNE1速度(1.5GBits/Sec)送一个连续的D10.2 Tone,理想情况下,应当保持这个状态直到Host认识目标的ALIGNp原生数据模式(以GEN2,或者GEN1,而非GEN3速度),然而目标还处于GEN3,由于混叠(aliasing)等原因,Host SATA子系统不能以一个不同的速度(GEN2速度)用ALIGNp原生数据模式回应给目标,并维持这个状态(送GEN2 ALIGNp原生数据),目标超时(54.6us),并启动以GEN2速度发送一个ALIGNp原生数据模式,目标现在认识Host GEN2 ALIGNp原生数据模式,以一个逻辑IDLE状态(Non-ALIGNp原生SYNCp)回应,从目标方龛,完成了连接的建立,然而,Host被陷入到一个未知状态,送GEN2 ALIGNp原生,并从来没有完成连接的建立,Host和目标维持这种状态,直到更高层的Host SATA控制器应用(用户软件)执行一个复位。
注意:这个问题在目标最大速度为GEN2或者GEN1速度时候并不会出现。
解决办法:1) 使用速度为GEN2或GEN1的设备,以避免这个问题,或者:
2) 使用SATA3设备的跳线器,将其速度显示到GEN2,或者
3) HOST应用软件能连续执行端口复位,重新启动连接建立,最终成功建立一个连接,注意,这不是一个好的方法,因为为了建立一个连接可能需要进行很多次的复位。
$sudo fdisk -l //查看挂载的u盘,选择w95 fat32系统那个
$sudo mount /dev/sdc1 //挂载u盘,会提示挂到 /media/UBUNTU下
$sudo cp android-ndk-r8c-linux-x86.tar.bz2 /home/
$cd /home
$sudo tar jxvf android-ndk-r5b-linux-x86.tar.bz2 //解压ndk包,时间大概2分钟
$sudo cd android-ndk-r8c/
$vi ~/.bashrc //添加NDK环境变量
在最后加上
export PATH=${PATH}:/home/android-sdk-linux/tools
export PATH=${PATH}:/home/android-sdk-linux/platform-tools
export PATH=${PATH}:/home/android-ndk-r8c
这样就搭建好了ndk环境
安装android sdk
.下载Android SDK for linux包,地址:http://dl.google.com/android/android-sdk_r10-linux_x86.tgz
最新的:http://developer.android.com/sdk/index.html
.sudo cp android-sdk_r10-linux_x86.tgz
.sudo tar zxvf android-sdk_r10-linux.tgz
# tools/android //启动SDK manager
安装jdk
.下载Sun-java6-jdk,不是ubuntu 自带的default-jdk或openjdk-6-jdk
.#mkdir /opt/java //opt目录存放linux第三方软件
.#tar zxvf ./jdk-7u9-linux-i586.gz -C /opt/java //解压到指定目录
.配置环境变量
$ sudo gedit /etc/environment
在environment中修改PATH,追加JDK路径,添加CLASSPATH与JAVA_HOME后如下:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/java/jdk1.7.0_09/bin"
CLASSPATH="/opt/java/jdk1.7.0_09/bin"
JAVA_HOME="/opt/java/jdk1.7.0_09"
然后就是要告诉系统,我们使用的sun的JDK,而非OpenJDK了:
$ sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.7.0_09/bin/java 300
$ sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.7.0_09/bin/javac 300
$ sudo update-alternatives --config java
参考:
http://147731489.blog.sohu.com/227882005.html
我们得到了一台搭载百度云智能终端平台的 TCL S710 手机,在将近一个月的使用之后,我们认为虽然我们理解百度这样的互联网巨头定制手机的动机,但是从这台手机的实际表现来看,这样的定制并不靠谱。
互联网公司为何定制手机?
移动操作系统是真正的移动互联网入口,手机硬件带来的只是一些参数,而手机中的操作系统才是承载应用和移动互联网服务的基础。从操作系统层面开始进行定制,对于抢占移动互联网入口,控制用户资源有着重要的意义。
产品推广在系统层面获得主动权之后,厂商可以以各种方式推广自己的应用产品,而 Android 系统本身的种种特性,也确实为厂商基于定制系统的产品推广打开了方便之门:
在我们之前的 Android 简史回顾中提到,从 Android 2.0 开始,Google 允许第三方厂商将自己的账号服务植入到系统级账号同步体系中。这为国内的广大厂商剥离 Google 账号用自己的账号服务取而代之铺平了道路。