自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 CEVA-X16自由式编程-4-JTAG探索

其实一开始我对JTAG是不抱希望的,因为JTAG的移位寄存器特性(读取的同时必须写入),使得它不能直接实现一个像总线一样的地址空间,也就很难“直接”实现调试逻辑的接口。十分幸运的是,这个DSP貌似是在JTAG层直接实现的各个调试寄存器。猜测有几种可能:可能把寄存器分成了只读和只写的,也可能每个寄存器有特定的位需要置1才能写入,也有可能每个寄存器的初始值都是确定的。可以确定这就是保存PC的寄存器,只不过它似乎不是直接的PC值,而是PC+4或者PC-4,这可能和VLIW之类的有关系。它也许就是PC的值?

2023-04-24 14:13:33 197

原创 CEVA-X16自由式编程-3-破译指令编码

得到DSP机器码和汇编语言之间的编码规则,对于后期编写汇编器和反汇编器是必须的。但是我们只有在中得到的对应关系,因此只能根据它来整理了。

2023-04-24 13:27:57 391

原创 CEVA-X16自由式编程-2-编写第一个“应用程序”

因为我也是尝试了很久才意识到这个DSP的VLIW特性,流水线上同时执行的多条指令之间可能产生资源冲突,但对于很多VLIW的DSP、GPU来说,它们硬件本身并不会处理这种冲突,这个工作交给了编译器做。我这里的NOP是随意插入的,并不一定是最优的。因此在ARM上,我们只需要把想让DSP读取的指令写入0x70000000,如果DSP程序正常的话,就可以在0x70000004上得到DSP读取的值了。这不仅说明我们的第一个DSP程序已经正常运行,也验证了在这个平台上,DSP的代码和数据空间合并成了统一的空间。

2023-04-23 23:12:47 361 3

原创 CEVA-X16自由式编程-1-指令穷举

既然我们无法获取到官方的指令集文档和编译器,我想到了一个简单粗暴的点子:Trace32支持这个DSP架构的调试,因此它一定自带有这个指令集的反汇编器。因此我们的思路就是把T32的反汇编功能当作黑盒,用穷举的方式得到每一个机器码和对应的汇编指令,然后做成一个查找表,用静态的方式实现一个(人工的)汇编器。然而,该DSP使用了VLIW,想要保存全部的指令-机器码对应关系并不现实。

2023-04-23 20:10:39 414

原创 使用PongoOS读取苹果ARM64 CPU功能支持寄存器

前言苹果自A6开始采用定制CPU核心,A7是全球第一款使用64位ARM的处理器。苹果CPU性能一直领先高通,必有一定的原因。通过读取ARM64 ID registers,或许能侧面揭晓一些答案。PongoOS自2019年checkm8漏洞公开以来,很快有大神们利用该漏洞制作了checkra1n越狱工具,为了方便地支持A7-A11多个硬件平台,多个iOS版本,checkra1n实现了一个Preboot environment,名为PongoOS,一个简易的操作系统。checkra1n运行时利用

2021-07-16 18:17:03 1593 2

原创 展讯SC8810平台虚拟机分析&在QEMU中模拟运行

前言早在2017年,因为酷爱刷机,把玩了很久的三星手机(GT-S7568)刷成了黑砖,bootloader无法启动,很是头疼。那时候没有现在流行的高通方案方便(可以9008),一旦固件底层损坏,通常维修店只能通过ISP(emmc飞线)重写底层固件。那时的我刚上初二,对这些只有浅薄的理解。我发现展讯也有一个USB下载模式,但三星没有在软件(u-boot-SPL)中实现,于是我只能通过自制一根工程线来进入。之后我尝试了多个工具,直接读写emmc,结果没有一个工具支持。原因是当时展讯出了多个版本的sc8810

2021-07-03 18:09:12 2540 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除