<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Android系统开发-VR OS-系统安全隐私]]></title><description><![CDATA[暮春三月，江南草长，杂花生树，群莺乱飞]]></description><link>https://blog.youkuaiyun.com/d_uanrock</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; d_uanrock]]></copyright><item><title><![CDATA[Android安全支付（7）-软件架构-JavaCardKeymaster]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/147409910</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/147409910</guid><author>d_uanrock</author><pubDate>Tue, 22 Apr 2025 11:23:46 +0800</pubDate><description><![CDATA[HAL的实现比较简单，主要是基于标准的IKeymasterDevice4.0和4.1的接口实现了一个JavacardKeymaster4Device。在分析Android上基于Trusty的实现机制之前，我们来看下一个JavaCard的一个keymaster的实现（及其上层的Applet）。1.hal层，基于标准的IKeymasterDevice4.0和4.1的接口实现了一个JavacardKeymaster4Device类。HAL层实现以后，就可以通过IKeymasterDevice接口调用到HAL层。]]></description><category></category></item><item><title><![CDATA[小型初创企业自建免费的研发云桌面]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/146591550</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/146591550</guid><author>d_uanrock</author><pubDate>Fri, 28 Mar 2025 12:05:16 +0800</pubDate><description><![CDATA[一般初创的小企业，如果想要搭建一个自己的研发云桌面系统，来方便和三方合作开发，早期对于性能和安全性没有特别高的要求。一种可行的自建云桌面的方案是：3322.org动态域名解析+MobaXterm+RDP+SSH+跳板机+Ubuntu跳板机+Ubuntu编译服务器。最后，就可以在跳板机和编译服务器创建不同的账号，给不同的开发人员使用了。4.然后通过MobaXterm可以以RDP或者ssh的方式连接到跳板机，再进一步通过Ubuntu跳板机连接内网的编译服务器。1.确保自己的办公室有公网IP，可以找电信。]]></description><category></category></item><item><title><![CDATA[Android安全支付（6）-软件架构-trusty core及驱动层IPC机制]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/146340685</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/146340685</guid><author>d_uanrock</author><pubDate>Tue, 18 Mar 2025 14:38:56 +0800</pubDate><description><![CDATA[前面我们已经整体从APP一直到TA分析了各个模块的调用过程和各个模块的架构设计。这里，我们详细深入trusty内核，先看下驱动部分。]]></description><category></category></item><item><title><![CDATA[Android支付安全（4）-软件架构-system/keymaster]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/146318421</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/146318421</guid><author>d_uanrock</author><pubDate>Mon, 17 Mar 2025 16:26:57 +0800</pubDate><description><![CDATA[前面我们看了App到keyStore部分的调用。这里，我们看下keymaster这部分的框架设计。]]></description><category></category></item><item><title><![CDATA[Android安全支付（2）-软件架构-KeyStore2-APP到Framework层的调用]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/146213112</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/146213112</guid><author>d_uanrock</author><pubDate>Wed, 12 Mar 2025 19:38:08 +0800</pubDate><description><![CDATA[验证签名的真实性，确保交易合法。服务器端预存了APP的公钥，收到请求后，使用该公钥对签名进行验证，确保数据未被篡改。2.在交易请求时，APP使用KeyStore中的私钥对交易数据进行数字签名。这个签名可以保证数据的完整性和真实性。2.将公钥Base64编码后传到服务器端。并且将公钥和用户ID绑定。这里要指定KeyGenParameterSpec的初始化对象。1.首先在应用（钱包）首次安装或首次使用时，在。生成的密钥只能在当前设备上使用，且无法导出。签名交易数据并发送给服务器。，因为私钥永远不会离开设备！]]></description><category></category></item><item><title><![CDATA[Android安全支付（3）-安全架构-KeyStore2-Key类簇和Spi类簇]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/146209342</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/146209342</guid><author>d_uanrock</author><pubDate>Wed, 12 Mar 2025 19:09:10 +0800</pubDate><description><![CDATA[这个Context派生类对这些接口的实现通常都是通过device_类簇去实现的。这里cpp文件中的实现。getAttestation Key主要是根据传入的不同算法参数返回不同的密钥，默认提供了两种算法密钥获取的实现。这个类簇主要实现的是各个keymaster版本的IKeymasterDevice.hal中定义的接口。1.因为底层的TA都是基于keymaster的框架去做派生实现的，所以，这里我们看下头文件部分的类接口设计。2.attestaion_context.h中定义的生成证书链所需信息的抽象接口。]]></description><category></category></item><item><title><![CDATA[Android安全支付（1）-整体架构-keymint]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/146074137</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/146074137</guid><author>d_uanrock</author><pubDate>Thu, 06 Mar 2025 18:27:12 +0800</pubDate><description><![CDATA[（1）接口定义hardware/interfaces/security/keymint/aidl/android/hardware/security/keymint/IKeyMintDevice.aidl。keymint是keymaster v4之后的替代设计。所以android 15上最好采用keymint的接口进行硬件功能的对接。同时，我们会集成一款紫光的芯片。3.可以用keyStore.getKey(）来获取存储在keyStore中的数据进行加密和解密。四、关于keymint的接口定义和具体实现。]]></description><category></category></item><item><title><![CDATA[Android安全支付（5）-软件架构-trusty-keymaster TA]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/145014688</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/145014688</guid><author>d_uanrock</author><pubDate>Wed, 08 Jan 2025 18:54:40 +0800</pubDate><description><![CDATA[TrustyKeymaster类（trusty_keymaster.cpp）会通过SecureStorageManager类进行底层能力的封装和调用。在keymaster启动的时候会建立secure和nonsecure空间的ipc管道，并开启事件监听循环，如果接收到相应的事件，就进行处理。接收到对应消息（比如KM_GENERATE_KEY）的时候，就会调用TrustyKeymaster类进行处理。源码路径：trusty/app/keymaster部分是对system/keymaster框架的一个实现。]]></description><category></category></item><item><title><![CDATA[Android TV 视图体系分析-笔记SurfaceFlinger]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/46953015</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/46953015</guid><author>d_uanrock</author><pubDate>Sun, 03 Mar 2019 20:36:49 +0800</pubDate><description><![CDATA[首先可以梳理出SurfaceFlinger的类图



然后可以看下这些类大致是干嘛的，梳理出主要的类

===========先看主文件夹下的类================

1.Barrier

用于控制互斥访问的

2.Colorizer

用户颜色转换

3.DisplayDevice（重要类）

显示设备类

4.DispSync（重要类）

DispSync维护了显示设备基于硬件的...]]></description><category></category></item><item><title><![CDATA[Google VR开发-Cardboard VR SDK头部追踪实现（罗德里格旋转公式）]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/76576575</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/76576575</guid><author>d_uanrock</author><pubDate>Wed, 02 Aug 2017 14:07:22 +0800</pubDate><description><![CDATA[一、罗德里格旋转矩阵的作用
可以参考百度百科和维基百科进行了解。
个人概括来说就是罗德里格旋转公式是用来求旋转后新向量的公式：



而这个公式可以转换成矩阵形式：




也就是说罗德里格旋转矩阵是用来和某个向量V相乘得到这个向量旋转后新向量Vrot的]]></description><category></category></item><item><title><![CDATA[Google VR开发-Cardboard VR SDK头部追踪实现（牵涉到的抽象模型）]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/76576551</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/76576551</guid><author>d_uanrock</author><pubDate>Wed, 02 Aug 2017 14:04:43 +0800</pubDate><description><![CDATA[待完善]]></description><category></category></item><item><title><![CDATA[Google VR开发-Cardboard VR SDK头部追踪实现（隐马尔可夫模型）]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/76576468</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/76576468</guid><author>d_uanrock</author><pubDate>Wed, 02 Aug 2017 14:01:11 +0800</pubDate><description><![CDATA[隐马尔可夫模型是理解卡尔曼滤波的基础。这里只单纯记录一下对这个模型的理解，实际这部分只需要看维基百科就可以了。


维基百科：
https://zh.wikipedia.org/wiki/%E9%9A%90%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E6%A8%A1%E5%9E%8B
1. 
其中{\displaystyle x(t)}我们称为隐藏变数（h]]></description><category></category></item><item><title><![CDATA[Google VR开发-Cardboard VR SDK头部追踪实现（卡尔曼滤波）]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/76576426</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/76576426</guid><author>d_uanrock</author><pubDate>Wed, 02 Aug 2017 13:56:32 +0800</pubDate><description><![CDATA[待完善]]></description><category></category></item><item><title><![CDATA[Google VR开发-Cardboard VR SDK反畸变实现]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/76576289</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/76576289</guid><author>d_uanrock</author><pubDate>Wed, 02 Aug 2017 13:53:29 +0800</pubDate><description><![CDATA[上一篇文章分析了Cardboard SDK的生命周期设计。
这里我们看下畸变部分的实现。

Cardboard中将畸变这部分封装成了一个Distortion类和DistortionRenderer类。
我们看下Distortion这个类：
      private static final float[] DEFAULT_COEFFICIENTS = { 250.0F, 50000.0]]></description><category></category></item><item><title><![CDATA[Google VR开发-Cardboard VR SDK生命周期设计]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/76573970</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/76573970</guid><author>d_uanrock</author><pubDate>Wed, 02 Aug 2017 11:57:51 +0800</pubDate><description><![CDATA[本篇从两个角度分析Cardboard VR SDK生命周期的设计
目录：
一、应用端生命周期调用
二、SDK端生命周期功能实现


一、应用端生命周期调用

（1）主MainActivity中有一个CardboardOverlayView类型的成员mOverlayView，这是遮盖层的视图
（2）CardboardOverlayView中有CardboardOverlayEyeV]]></description><category></category></item><item><title><![CDATA[Oculus VR SDK实现-Oculus针对大量显示数据的buffer设计]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/76572461</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/76572461</guid><author>d_uanrock</author><pubDate>Wed, 02 Aug 2017 10:57:35 +0800</pubDate><description><![CDATA[参考文章：Vertex Array的性能表现：
http://www.openglsuperbible.com/2013/12/09/vertex-array-performance/
关于Vertex Array的官方解释：
https://www.khronos.org/opengl/wiki/Vertex_Specification#Vertex_Array_Object
这里说明v]]></description><category></category></item><item><title><![CDATA[Oculus VR SDK实现-Oculus针对双眼显示的交换链设计]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/76572064</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/76572064</guid><author>d_uanrock</author><pubDate>Wed, 02 Aug 2017 10:40:06 +0800</pubDate><description><![CDATA[首先我们关注一下ovrFramebuffer这个结构体：
typedef struct {
      int Width;
      int Height;
      int Multisamples;
      int TextureSwapChainLength;
      int TextureSwapChainIndex;
      ovrTextureSwapChain *]]></description><category></category></item><item><title><![CDATA[Oculus VR SDK实现-Oculus左右眼视角的偏移实现]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/76571896</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/76571896</guid><author>d_uanrock</author><pubDate>Wed, 02 Aug 2017 10:27:51 +0800</pubDate><description><![CDATA[首先人的头部在场景中是对应有一个姿态的，我们称这个为头部姿态（HeadPose）。
而因为头部和双眼之间还有一个差异，因此我们将双眼中心的姿态称为双眼中心姿态（centerEyePose）。
我们分两步来计算：
一、首先计算出双眼中心视角矩阵centerEyeViewMatrix
二、然后根据双眼中心视角矩阵计算出左右眼视角矩阵。


一、计算出双眼中心视角矩阵centerEyeVi]]></description><category></category></item><item><title><![CDATA[Google VR Android开发（二）-Simplevideowidget分析]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/75313355</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/75313355</guid><author>d_uanrock</author><pubDate>Tue, 18 Jul 2017 17:10:48 +0800</pubDate><description><![CDATA[Simplevideowidget这个Demo运行起来的效果如下：


单击视频显示区域可以暂停/继续播放。
点击眼镜按钮可以进入到双眼VR模式：


现在分析下代码实现：
只有一个Activity文件：


主要是显示了一个SDK中的VrVideoView控件
进入VR双眼模式和全屏显示的切换按钮都在这个控件里面。所以要分析下这个控件的实现。
模式切换的实现是在VrVi]]></description><category></category></item><item><title><![CDATA[zephyr-浮点运算服务]]></title><link>https://blog.youkuaiyun.com/d_uanrock/article/details/52863213</link><guid>https://blog.youkuaiyun.com/d_uanrock/article/details/52863213</guid><author>d_uanrock</author><pubDate>Wed, 19 Oct 2016 21:10:03 +0800</pubDate><description><![CDATA[注意：
当前浮点运算服务只在基于ARM Cortex-M4或者inter X86架构的开发板上可用，此服务与体系架构相关
概念
内核允许应用的tasks和fibers使用开发板配置中支持的浮点寄存器（内核不支持通过ISRs方式使用浮点寄存器）
内核可以配置成仅为应用提供需要的浮点运算服务。支持下面三种操作模式。此外，内核对SSE寄存器的支持也可以被包含，舍弃或者关闭


No FP ]]></description><category></category></item></channel></rss>