当前位置:  编程技术>移动开发
本页文章导读:
    ▪Objective-C学习札记(二)–Category和Extension        Objective-C学习笔记(二)–Category和Extension 1 Category 1.1描述: 是对原有类的一个扩展 1、在Category定义的方法,会成为原始类的一部分,与其他方法的调用 没有区别 2、通过给父类定义Categor.........
    ▪ Tiny210 U-BOOT(9)-DDR2工作时序与原理        Tiny210 U-BOOT(九)----DDR2工作时序与原理前面将DDR的工作原理大致的理了一遍,上述资料大多来源于网上现成资料的再加工和整理,DDR2和DDR相比较除了预取变成成4bit以外,其余的和软件相关的不.........
    ▪ 定位跟踪器       定位追踪器 定位追踪器 技术探讨QQ514179283     担心自己家人的安全吗?想知道不在身边的TA在哪吗?赶快使用定位追踪器吧!下载定追追踪器,按照详细使用说明,将内含的位置发送器.........

[1]Objective-C学习札记(二)–Category和Extension
    来源: 互联网  发布时间: 2014-02-18
Objective-C学习笔记(二)–Category和Extension
1 Category 1.1描述:

是对原有类的一个扩展

1、在Category定义的方法,会成为原始类的一部分,与其他方法的调用 没有区别

2、通过给父类定义Category方法,其子类也会继承这些方法。如果子类添加Category方法

1.2应用:

1、对现有类进行一个扩展

2、作为子类的替代手段:不需要定义和使用一个子类,你可以通过Category直接向已有的类里增加方法

3、对类中的方法归类:用用category指导一个庞大 的类划分为小块来分别进行开发,从而更好的对类中的方法进行更新和维护。

1.3局限性

1、无法向Category中添加新的实例亦是,Category没有位置来容纳实例亦是。如果想增加类的实例亦是,只能通过定义子类的方式。

2、如若,在Category中覆盖现有类的方法。这样会引起 super消息的断裂,因为Category中的方法具有更高的优先级,因此,一般不要覆盖现有类中的方法。

1.4命名与用法

命名规则:类名+扩展方法。如NSString+Reverse

Category的接口声明与类的定义十分相似,但炐不继承父类,只需要带有一个括号,表明该类的主要用途。

项目工程结构:

NSString+Reverse.h

#import "Foundation/Foundation.h";
@interface NSString (Reverse)
-(NSString *)  reverseString;
@end


NSString+Reverse.m

#import "NSString+Reverse.h"

@implementation NSString (Reverse)
-(NSString *)  reverseString
{
NSUInteger  len=[self length];
NSMutableString *restStr=[NSMutableString stringWithCapacity:len  ];
while (len>0) {
unichar  c=  [self characterAtIndex:--len];
NSString  *str=[NSString  stringWithFormat:@"%C",c];
[restStr appendString:str];
}
return   restStr;
}
@end


使用先#import “NSString+Reverse.h”

main.m

#import "Foundation/Foundation.h";
#import "NSString+Reverse.h"
int main(int argc, const char * argv[])
{

@autoreleasepool {
NSString *str= [NSString stringWithFormat:@"hello world"];
NSString  *resverseStr=[strreverseString];
NSLog(@"%@",resverseStr);
}
return 0;

}


2 Extension

类的扩展就如同是“匿名”的Category,extension中声明的方法在类本身的@implementation和对应的@end【在.m文件】之间实现。

类有时候需要方法只有所见,因为只要是在.h文件中声明的方法外部都可以见。所以可以通过extension来实现此类需求。

使用场景:实现方法的私有化

Foo.h

#import "Foundation/Foundation.h";
@interface Foo : NSObject
@end


Foo.m

#import "Foo.h"
@interface Foo()
-(void)  test2;
@end

@implementation Foo
-(void) test1{
[self test2];
}

-(void) test2{
NSLog(@"===test2====");
}
@end

给更多精彩欢迎访问我的个人小站:http://www.90worker.com


    
[2] Tiny210 U-BOOT(9)-DDR2工作时序与原理
    来源: 互联网  发布时间: 2014-02-18
Tiny210 U-BOOT(九)----DDR2工作时序与原理

前面将DDR的工作原理大致的理了一遍,上述资料大多来源于网上现成资料的再加工和整理,DDR2和DDR相比较除了预取变成成4bit以外,其余的和软件相关的不是很多,待以后有时间再来细细整理。


现在网上的S5PV210的u-boot源码中关于内存的初始化过程,基本上我没有找到任何资料有过分析DDR2的内存初始化代码的。在看u-boot的这段代码时,也徘徊了很久,不知道如下手,很多文章或资料都将这一段分析过程隐藏掉了,有的也只是说参考裸板的代码,在找不到任何资料的情况下,我只能依靠芯片手册上,三星在内存控制器这一章,写的关于DDR2的初始化顺序的28个步骤来一条一条去读去看,在安静下来看了芯片手册以后,我发现三星给的裸板的DDR初始化代码和芯片手册上的初始化步骤完全一致,有的时候,最好的资料其实就在手边,只是我一直在想着找捷径,学习哪有那么多捷径?


现在开始关注一下芯片手册上关于DDR2的初始化流程,P598页:

1.查看芯片手册DDR2的初始化顺序

Initialization sequence for DDR2 memory type
1.  To provide stable power for controller and memory device, the controller must assert and hold CKE to a logic low level. Then apply stable clock. Note: XDDR2SEL should be High level to hold CKE to low. 
2. Set the PhyControl0.ctrl_start_point and PhyControl0.ctrl_incbit-fields to correct value according to clock frequency. Set the PhyControl0.ctrl_dll_onbit-field to ‘1’ to turn on the PHY DLL. 
3. DQS Cleaning: Set the PhyControl1.ctrl_shiftc and PhyControl1.ctrl_offsetcbit-fields to correct value according to clock frequency and memory tAC parameters. 
4. Set the PhyControl0.ctrl_start bit-field to ‘1’.  
5. Set the ConControl. At this moment, an auto refresh counter should be off.  
6. Set the MemControl. At this moment, all power down modes should be off. 
7. Set the MemConfig0 register. If there are two external memory chips, set the MemConfig1 register. 
8. Set the PrechConfigand PwrdnConfigregisters. 
9. Set the TimingAref, TimingRow, TimingDataand TimingPower registers according to memory AC parameters. 
10. If QoS scheme is required, set the QosControl0~15and QosConfig0~15registers. 
11. Wait for thePhyStatus0.ctrl_lockedbit-fields to change to ‘1’. Check whether PHY DLL is locked. 
12. PHY DLL compensates the changes of delay amountcaused by Process, Voltage and Temperature (PVT) variation during memory operation. Therefore, PHY DLL should not be off for reliable operation. It can be off except runs at low frequency. If off mode is used, set thePhyControl0.ctrl_forcebit-field to correct value according to thePhyStatus0.ctrl_lock_value[9:2]bit-field to fix delay amount. Clear the PhyControl0.ctrl_dll_on bit-field to turn off PHY DLL. 
13. Confirm whether stable clock is issued minimum 200us after power on 
14. Issue a NOPcommand using the DirectCmdregister to assert and to hold CKE to a logic high level.
15. Wait for minimum 400ns. 
16. Issue a PALL command using the DirectCmd register. 
17. Issue an EMRS2 command using the DirectCmd register to program the operating parameters. 
18. Issue an EMRS3 command using the DirectCmd register to program the operating parameters. 
19. Issue an EMRS command using the DirectCmd register to enable the memory DLLs. 
20. Issue a MRS command using the DirectCmd register to reset the memory DLL. 
21. Issue a PALL command using the DirectCmd register. 
22. Issue two Auto Refreshcommands using the DirectCmd register. 
23. Issue a MRS command using the DirectCmd register to program the operating parameters without resetting the memory DLL. 
24. Wait for minimum 200 clock cycles. 
25. Issue an EMRS command using the DirectCmd register to program the operating parameters. If OCD calibration is not used, issue an EMRS command to set OCD Calibration Default. After that, issue an EMRS command to exit OCD Calibration Mode and to program the operating parameters. 
26. If there are two external memory chips, perform steps 14~25 for chip1 memory device. 
27. Set the ConControlto turn on an auto refresh counter. 
28. If power down modes is required, set the MemControl registers. 

译文如下:
1. 提供稳压电源给内存控制器和内存芯片,内存控制器必须保持CLE在低电平,此时就会提供稳压电源。注:当CKE引脚为低电平时,XDDR2SEL应该处于高电平
2. 依照时钟频率正确配置PhyControl0.ctrl_start_point和PhyControl0.ctrl_incbit-fields的值。配置的PhyControl0.ctrl_dll_on值为'1'以打开PHY DLL。
3. DQS Cleaning:依照时钟频率和内存的tAC参数正确设置PhyControl1.ctrl_shiftc and PhyControl1.ctrl_offsetcbit-fields位的值。
4. 配置PhyControl0.ctrl_start位的值为'1'
5. 配置ConControl,与此同时,auto refresh自动刷新计数器应该关闭
6. 配置MemControl,与此同时,所有的power down(休眠模式)应该闭关
7. 配置MemConfig0寄存器。如果有两组内存芯片(比如有8片DDR,这8片DDR是分别挂在Memory Port1和Memory Port2上),再配置MemConfig1寄存器。
8. 配置PrechConfig和PwrdnConfig寄存器
9. 依照内存的tAC参数配置TimingAref, TimingRow, TimingData和TimingPower寄存器
10. 如果需要QoS标准,配置QosControl0~15和QosConfig0~15r寄存器
11. 等待PhyStatus0.ctrl_locked位变为'1'。检查是否PHY DLL是否已锁
12. PHY DLL补偿在内存操作时由PVT(Process, Voltage and Temperature,处理器、电压和温度)变化引起的延迟量。但是,PHY DLL不能因某些可靠的内存操作而切断,除非是工作在低频率下。如果关闭PHY DLL,依照PhyStatus0.ctrl_lock_value[9:2]位的值正确配置PhyControl0.ctrl_force位的值来弥补延迟量(fix delay amount)。清除PhyControl0.ctrl_dll_on位的值来关闭PHY DLL。
13. 上电后,确定最小值为200us的稳定时钟是否发出
14. 使用DirectCmd寄存器发出一个NOP命令,保证CKE引脚为高电平
15. 等最小400ns
16. 使用DirectCmd寄存器发出一个PALL命令
17. 使用DirectCmd寄存器发出一个EMRS2命令,program操作参数
18. 使用DirectCmd寄存器发出一个EMRS3命令,program操作参数
19. 使用DirectCmd寄存器发出一个EMRS命令来使能内存DLLs
20. 使用DirectCmd寄存器发出一个MRS命令,重启内存DLL
21. 使用DirectCmd寄存器发出一个PALL命令
22. 使用DirectCmd寄存器发出两个Auto Refresh(自动刷新)命令
23. 使用DirectCmd寄存器发出一个MRS命令,program操作参数,不要重启内存DLL
24. 等待最小200时钟周期
25. 使用DirectCmd寄存器发出一个EMRS命令给程序的运行参数。如果OCD校正(Off-Chip Driver,片外驱动调校)没有使用,改善一个EMRS命令去设置OCD校准的默认值。在此之后,发送一个EMRS指令去退出OCD校准模式,继续program操作参数
26. 如果有两组DDR芯片,重复14-25步给chip1的内存,刚刚设计的是chip0,也就是第一组内存芯片
27. 配置ConControlto来打开自动刷新计数器
28. 如果需要power down(休眠)模式,配置MemControl寄存器.


知道了上面的这些初始化步骤,现在再去看三星给的裸板代码中关于SDRAM的BL1的代码,就比较清楚了。










    
[3] 定位跟踪器
    来源: 互联网  发布时间: 2014-02-18
定位追踪器
定位追踪器 技术探讨QQ514179283

    担心自己家人的安全吗?想知道不在身边的TA在哪吗?赶快使用定位追踪器吧!下载定追追踪器,按照详细使用说明,将内含的位置发送器安装到您所关心的人的安卓手机上,把位置接收器安装到您自己的手机上,就可以用您的手机查看你所关心的人在哪里啦!


定位追踪器APK下载地址:http://pan.baidu.com/s/1qs2ae


    详细使用说明:

    1. 本软件为内含位置发送器和位置接收器两个组件的安装向导(以下简称“安装向导”).在安装位置发送器和位置接收器之前,请先登陆www.163.com,注册一个免费的163邮箱,请不要使用自己的私人或者工作用163邮箱,以免影响您163邮箱的正常使用.


    2. 通过安装向导将定位发送器安装到需要监控的安卓手机上,位置发送器安装过程中需要您填写您在电脑上注册的163邮箱的用户名和密码,位置发送器安装完成之后,会一直在安卓手机的后台运行,在手机桌面上没有启动图标,从此安装向导对位置发送器不再有任何影响,可以将安装向导从被监控手机的桌面上删除.位置发送器每隔5分钟会自动开启3G网络(无需手动开启3G网络),检测本手机当前位置信息,如果该手机移动距离超过500米,位置发送器就向上述163邮箱发送位置信息,定位一次需要0.3k网络流量,发送一次邮件需要0.5k网络流量。


    3. 通过安装向导将位置接收器安装到另一部安卓手机上,位置接收器会在安卓手机的桌面上创建名为“你在哪”的图标,您可以点击该图标启动位置接收器.通过位置接收器,您可以实时动态的获取位置发送器发送到163邮箱中的位置信息(位置信息有一定的误差,一般不超过1000米),并将当天所有的位置信息连接成位置轨迹,点击红色气泡可以查看被监控手机处在该位置的时间. 安装完位置发送器或者位置接收器后,安装向导对位置接收器不再有任何影响,可以将安装向导从手机桌面上删除.   


图1.定位追踪器使用方法

图2.北京五道口附近效果图

图3. 从北京驾车到沧州的路线图(俯视图) 

图4. 从北京驾车到沧州的路线图(45度角观察) 


图5. 从北京乘高铁到济南的路线图

1楼ljt843254701昨天 19:46群怎么查找不到呀

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3