This article has been deprecated. Please go to the URL below:
个人博客笔记导读目录(全部)
置顶推荐:
1、ARMV8-aarch64的通用寄存器和系统寄存器介绍
2、ARM trustzone学习和总结-一篇就够了
3、ARMV8的一些总结-一篇就够了
4、ARMV8-aarch64的虚拟内存(mmu/tlb/cache)介绍-概念扫盲
5、ARM cache的学习笔记-一篇就够了
6、ARM MMU的学习笔记-一篇就够了
7、ATF的代码学习篇-一篇就够了
8、linux和optee的中断处理流程举例(gicv3举例)
文末有微信群二维码
快速链接
★★ARM/Linux/嵌入式/驱动必需知道的官网网站★★
私有笔记.
导读目录
- 一、ARM64
- 二、optee
- 三、Hypervisor
- 四、Crypto
- 五、Linux
- 六、Android
- 七、MTK
- 八、Linaro社区开发
- 九、其它
============= (以下是正文) =============
类别 | 博文 | 说明 |
---|---|---|
ARM Core | 1、ARM core timeline 2、ARM-A系列Core的分类和总结(表格) 3、ARM Core的分类和总结 4、ARM A76学习笔记 |
reserved |
architecture (armv8、armv7) |
1、ARMV8的一些总结-一篇就够了 2、ARMv8/armv7/linux的栈/sp的学习和总结 3、ARM AMBA/AXI/ACE/LITE总线介绍 4、AMBA AXI AHB APB学习总结 5、Generic Timer 6、CPU(ARM)启动的第一条指令 7、Cortex-A53的configuration signals |
reserved |
ARMV9 | 1、ARMv9 CCA(Arm Confidential Compute Architecture)介绍 2、Introducing-Arm-Confidential-Compute-Architecture |
|
mmu/cache | 1、ARMV8-aarch64的虚拟内存(mmu/tlb/cache)介绍-概念扫盲 2、ARM cache的学习笔记-一篇就够了 3、ARM MMU的学习笔记-一篇就够了 4、ARMV8 MMU内存管理中的Memory attributes和Cache policies 5、cache的一些基本概念介绍 6、Cache Type Register(CTR)寄存器介绍–InProgress 7、cache在linux和optee中的应用–InProgress 8、ARMV8的cache的指令集介绍 9、MMU的地址翻译(Address translation)指令介绍 10、TCR(Translation Control Register)寄存器详解 |
reserved |
toolchain | 1、ARM ToolChains介绍 | reserved |
assembly | 1、ARMv8-A64指令集总结和学习–InProgress 2、A64指令学习笔记 3、A64的load/store指令学习笔记 4、ARM64的汇编语言学习笔记 5、ARM asm内联汇编的学习 6、汇编示例:c语言翻译成汇编 7、ARMV8-A64指令编码介绍 8、ARMV8的exclusive和inexclusive的介绍 9、ARM交叉编译器下编译的各个镜像的反汇编文件分析 10、C语言和汇编对比学习 11、全局变量/静态全局变量/初始化/未初始化变量的存放位置分析 12、ARM向量浮点指令集 快速参考卡 13、Thumb指令集快速参考卡 14、ARMv8 A64 Quick Reference |
reserved |
register | 1、ARMV8-aarch64的通用寄存器和系统寄存器介绍 2、ARM常用系统寄存器详解-InProcess 3、ARMv8的寄存器介绍 4、ARMV8-aarch64-通用寄存器介绍 5、ARMV8-aarch64-系统寄存器总结 6、ARMV8-aarch64的寄存器介绍(二) |
reserved |
异常/中断 | 概念/原理: 1、ARM Core如何响应中断的 2、ARMV8-aarch64异常和中断处理概念详细介绍 3、图解armv7/armv8的异常向量表和基地址 4、ARMV8-aarch64 异常(中断)是如何跳转到向量表的 5、linux中(aarch/aarch64)异常向量表介绍 6、同步异常产生和返回(svc/hyc/smc/eret) 7、ARMV8的中断的routing和Mask表 8、ARMV8-aarch32的异常向量表介绍 9、MTK的LK代码异常向量表解析 答疑/feature: 10、答疑:中断流程举例:在TEE侧时产生了FIQ,回到REE后为啥又产生了IRQ 11、SPIs(共享中断)routing到指定CPU的方法 12、armv8-aarch64下当中断来时自动触发的硬件行为 13、Linux Kernel中gicv3实现:SPIs中断routing到指定的CPU Inprocess: 14、ARM Core中与中断相关的寄存器(inProgress) 15、ARMV8的异常详细介绍(inProgress) |
reserved |
gic | 模型: 1、linux和optee的中断处理流程举例(gicv3举例) 概念/原理: 2、ARM gicv2/gicv3的详解 3、ARM gicv3/gicv4的详细介绍 4、ARM gic总结 5、ARM gicv3/gicv2的总结和介绍-PPT feature/解读: 6、gicv2的bypass功能 7、gicv3的1020-1023号的中断的使用 8、中断流程举例:在TEE侧时产生了FIQ,回到REE后为啥又产生了IRQ 9、中断流程举例:在REE(SCR.FIQ=1)侧时产生了FIQ,跳转到EL3后做了哪些事情? 10、ATF中异常向量表为何没有实现“Current Exception level with SP_ELx, x>0 |
reserved |
Timer | 1、Generic Timer介绍 | reserved |
trustzone | 概念: 1、ARM trustzone学习和总结-一篇就够了 2、ARM trustzone技术下常见的软件框图 3、Trustzone安全扩展-思维导图 4、ARMV8的aarch64和aarch32环境下ELx级别的理解 5、TZC400学习总结 Inprocess: 5、ARMV8 trustzone学习总览 |
reserved |
ATF | 1、ATF的异常向量表介绍-(irq,fiq,smc,hyc…) 2、smc指令详解 3、ARM级别/异常/状态切回时候的寄存器保存与恢复 4、TEE/REE系统切换时ATF的寄存器的保存和恢复 5、ATF代码分析 6、ATF的RT_SVC的详解(runtime service) 7、ATF启动–BL31跳转到optee和uboot 8、中断配置:SCR.FIQ/SCR.IRQ的配置详解 9、ATF的代码学习篇-一篇就够了 10、ATF makefile的导读 11、ARMV7架构下SecureMonitor双系统切换时保存和恢复哪些寄存 |
reserved |
hypervisor | 1、ARMV8的hypervisor技术介绍–InProgress | reserved |
实验与思考 | 1、32位的应用程序为什么不能跑64位的应用程序 2、实验:从汇编代码来看volatile关键字的作用 3、ARM LR寄存器的思考 |
reserved |
类别 | 博文 | 说明 |
---|---|---|
内存管理 | 1、optee的内存管理的详细介绍 2、optee内存管理和页表建立 3、optee内核中malloc函数的原理介绍 4、optee应用程序中malloc函数的原理介绍 5、optee中的arm64的virt_to_phys的实现 6、optee中core_init_mmu_regs函数解读 7、optee的共享内存的介绍 8、optee的Share Memory介绍 9、optee os中共享内存的类型 10、optee_os中静态共享内存的注册 |
reserved |
异常与中断/smc/RPC | 1、optee中的异常向量表的实现 2、optee的异常向量表-(irq,fiq,svc…) 3、optee中的thread_vector_table线程向量表 4、optee中的中断处理详解 5、optee切换到REE的几种方式 6、optee的RPC设计(模型)详解 7、optee的RPC流程的代码详解 8、optee对std smc的处理的详解 9、optee运行时来了一个REE(linux)中断–代码导读 10、optee的fast call的介绍 |
reserved |
core | 1、optee的error codes 2、optee的启动过程 3、optee中utee syscall的实现(系统调用实现) 4、optee系统服务/service的实现方式 -------- 5、optee:kernel space调用user space进程时候的硬件行为 6、32位的应用程序和64位的应用程序有什么区别 7、optee代码中和ARM硬件相关的函数解读 |
reserved |
TA/CA | 1、optee中User TA的加载和运行 2、TA的签名和验签 3、optee的Offline Signing of TAs方案 4、opteeTA启动的过程(open_ta的过程) 5、Globalplatform TEE api介绍 6、TEE Internal Core API总结 7、GP API的归类和总结 8、TEEC_Context和TEEC_InitializeContext介绍 9、CA/TA参数传输中tmpref,memref和Value的区别 10、TEEC_RegisterSharedMemory和TEEC_AllocateSharedMemory的区别 |
reserved |
同步机制 | 1、optee同步机制的介绍 2、optee中spinlock的实现原理详解 3、optee中mutex的实现方式 |
reserved |
启动/进程切换/栈 | 1、optee的栈指针和栈内存的介绍 2、optee aarch64体系下栈的设计(sp_el0/sp_el1) old: 1、optee栈的介绍(一) 2、optee栈的介绍(二) |
reserved |
Virtualization | 1、optee堆Virtualization(hypervisor)的支持 | reserved |
环境搭建 | 1、optee3.8 qemu_v8的环境搭建篇 2、optee3.12.0 qemu_v8的环境搭建篇 3、一个简单的CA/TA应用 4、TA中的crypto接口的使用 5、TA中的secure storge接口的使用 |
reserved |
TA的开发
类别 | 地址 |
---|---|
GP TEE optee_os |
1、GP-optee-TA编程-aes 2、GP-optee-TA编程-SHA 3、GP-optee-TA编程-hmac 4、GP-optee-TA编程-RSA 5、GP-optee-TA编程-sfs 6、GP-optee-TA编程-rpmb |
豆荚TEE私有接口 | reserved |
Trustonic-TEE私有接口 | reserved |
调试 | 1、GP TEE_ObjectInfo结构体在不同的版本之间的变化 |
类别 | 博文 | 说明 |
---|---|---|
Hypervisor | 1、ARMv8 AArch64 (hypervisor)Virtualization学习笔记 | reserved |
类别 | 博文 | 说明 |
---|---|---|
PSA | 1、PSA Certified简介 |
类别 | 博文 | 说明 |
---|---|---|
概念 | 1、aes/rsa/数字摘要hash对称加解密/非对称加解密概念详解 2、openssl命令行的使用(aes/rsa签名校验/rsa加密解密/hmac) 3、国产密码算法(国密算法sm2/sm3/sm4)介绍 4、CA证书介绍和使用方法 5、PKCS #1 RSA Encryption Version 1.5介绍 6、openssl版本介绍 7、RSA的因子(nedp…)拼接pem |
reserved |
应用 | 1、Armv8 Cryptographic Extension在linux中的应用> 2、Armv8 Cryptographic Extension介绍 3、Linux Kernel aarch64 Crypto原理和框架介绍 4、Linux kernel内核调用crypto算法的方法 5、Linux Kernel aarch64的ARM-CE aes-ecb的底层代码导读 6、Linux kernel crypto的介绍 7、crypto engion的学习和总结 |
reserved |
代码实现 | 1、base64_encode和base64_decode的C语言实现 2、RSA私钥pem转换成der, 在将der解析出n e d p q dp dq qp 3、python3中rsa(签名验签加密解密)aes(ecb cbc ctr)hmac的使用,以及unittest测试用例 |
reserved |
类别 | 博文 | 说明 |
---|---|---|
bootup启动篇 | 1、linux kernel中的FDT的解析 2、向linux kernel中添加cmdline的四种方式 3、在linux kernel或android中解析cmdline参数 4、linux kernel中的cmdline的详细介绍 5、linux kernel中的__setup()的调用 6、linux kernel中的第一个程序:init程序的调用 7、linux kernel中的module_init/initcall代码导读 |
reserved |
core | 1、Linux Kernel中的系统调用 2、ARMV7架构下Linux Kernel的Userspace进程切换时保存和恢复哪些寄存器 |
|
arch强相关篇 | 1、linux kernel中local_irq_disable()、local_irq_enable()代码解读 2、linux kernel中cache代码解读 3、linux kernel中的virt_to_phys代码解读 4、linux kernel进程切换(寄存器保存与恢复) 5、linux kernel中的栈的介绍 6、linux kernel中的进程栈 |
reserved |
同步机制 | 1、linux kernel的spin_lock的详细介绍 2、linux kernel的spinlock代码导读和分析 3、linux kernel的spinlock在armv7和armv8中的不同 4、linux kernel的信号量semaphore的代码导读和介绍 5、wait_for_completion和complete总结 6、linux kernel同步方法的总结 |
reserved |
中断/异常 | 1、linux中的SGI(核间中断)IPI_RESCHEDULE详解 2、linux kernel的异常量表介绍 3、linux kernel中的中断处理流程 4、在linux、optee、ATF中的中断异常向量表 5、linux kernel中设置向量表基地址 |
reserved |
内存管理 | 1、linux kernel的virtual kernel memory layout介绍 2、linux kernel内存管理学习篇 |
reserved |
crypto | 1、Armv8 Cryptographic Extension在linux中的应用> 2、Armv8 Cryptographic Extension介绍 3、Linux Kernel aarch64 Crypto原理和框架介绍 4、Linux kernel内核调用crypto算法的方法 5、Linux Kernel aarch64的ARM-CE aes-ecb的底层代码导读 6、Linux kernel crypto的介绍 |
reserved |
技巧使用篇 | 1、linux kernel使用技巧 2、linux kernel的问与答 3、linux kernel的ErrorLog随记录 4、linux kernel变长数组使用示例 5、linux kernel中的数据结构和算法 6、linux kernel中netlink的使用示例 |
reserved |
其它 | 1、ioctl,unlocked_ioctl,compat_ioctl之间的区别 | resrved |
1、Linux内核设计与实现学习笔记目录
类别 | 博文 | 参考/说明 |
---|---|---|
security | gatekeeper 1、Android locksettings/gatekeeper代码导读 2、Android Gatekeeper流程深度解剖 3、android密码解锁/指纹解锁返回的authToken深度解剖 4、LockSettingsService的setLockCredentialInternal函数详解 5、Android手机使用命令行增加/删除/修改密码(password/pin/pattern) 生物支付: 人脸/指纹 Android fingerprint指纹/face人脸代码导读 keymaster/keystore 1、Android keymaster的介绍和总结 2、Android keymaster4.0- device集成笔记 3、Android keystore/Keymaster的代码导读 |
Gatekeeper-官方参考: 1、Gatekeeper官方文档 2、Gatekeeper接口函数介绍-hal 3、Gatekeeper接口函数介绍-type 生物支付-官方参考: 1、生物支付官方文档 2、fingerprint接口函数介绍-hal 3、fingerprint接口函数介绍-type 4、face接口函数介绍-hal 5、face接口函数介绍-type keymaster-官方参考: 1、keymaster官方文档 2、keymaster接口函数介绍-hal 3、keymaster接口函数介绍-type |
vts | 1、Android11有哪些vts 2、如何编写一个测试HIDL接口的vts(gtest)的testcase 3、VTS工具测试指定的testcase函数(以VtsHalKeymasterV4_0TargetTest为例) |
reserved |
build/makefile | 1、Android Makefile编译流 2、Android makefile编译流程(二) 3、剖析boot.img的制作流程 4、System.img是如何打包的 |
reserved |
启动 | 1、android/linux中的第一个init程序的启动 | |
问题 | 1、Device is not certified by Google |
类别 | 博文 | 参考/说明 |
---|---|---|
zerotouch | 1、Google zerotouch方案介绍 |
类别 | 博文 | 说明 |
---|---|---|
integrate TEE | 1、MTK平台Trustonic-TEE使用-问题记录 2、MTK for Google AttestationKey介绍 3、MTK平台命令行写入googlekey的步骤 4、MTK代码中enable trustonic-TEE 5、MTK豆荚TEE的TZ driver学习笔记 6、MTK tee.img的打包原理介绍 7、MTK方案下tee.img的打包方式的详细拆解 |
reserved |
platform feature | 1、MTK的oemlock介绍 2、android手机系统的启动流程-secureboot流程(以MTK平台为例) |
|
preloader | 1、MTK preloader的ASSERT函数的实现 2、MTK镜像(PL/ATF/TEE/LK/kernel)的memory layout介绍/启动地址介绍/lds文件分析 |
|
LK | 1、MTK平台LK中的APP_START(LK app service)介绍 |
类别 | 博文 | 说明 |
---|---|---|
git/github | 1、github:已经提交并push后再次追加提交 | |
Docs | 1、如何编写Linux kernel documentation | |
Android | 1、下载android官方源码 |
类别 | 博文 | 说明 |
---|---|---|
git | 1、git命令总结 | |
C语言 | leetcode-C语言代码练习 2、C语言:构建一个二级链表并完成增删改查 |
|
指令速查 | 1、ARM/TEE/security等论文中的缩写和参考文献 2、Linux shell/makefile/gic/python指令速查-inprocess |
reserved |
makefile | 1、GCC,Clang,make,cmake,makefile,CMakeLists.txt的概念 | |
Linux Shell | 1、Linux shell字符串截取与拼接 2、Linux Shell的dirname和readlink的使用 |
|
Python | 1、python编写一个压测重启的测试程序 2、python编写测试工具:tee的相关vts测试 3、python自动化测试locksetting/gatekeeper/keymaster/vts等 4、python3:读取目录下的文件名字生成html所需的格式 5、python批量处理jira上的issue 6、python脚本:从博客导读页中提取博客的id号 7、python脚本:增加csdn阅读量 环境搭建: 1、python venv虚拟环境 |
|
环境安装 | 1、软件下载和安装汇总 2、virtualbox下安装ubuntu14.04超详细 3、图解virtualbox下安装ubuntu20.04虚拟机 4、git/gerrit配置方法 5、ubuntu下快速搭建http 6、ubuntu下安装selenium 7、外网访问自己的HTTP服务器 8、Ubuntu 20.04修改终端标题栏文字 9、堡垒机快捷登陆SSH服务器 10、亿赛通破解工具-python/window 11、ubuntu20.10上安装Pulse Secure客户端 12、ubuntu20.10安装openjrok指南 13、openjrok维护手册 14、How to install maven 15、How to Install Python Pip on Ubuntu 20.04 16、在ubuntu20.10上搭建SVN Server 17、windows安装wget工具 18、android手机安装google play |
reserved |
经验/总结 |
---|
travis-ci中的checkpatch工具使用 |
linux shell变量while循环内改变无法传递到循环外 |
python报错:UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe0 in position 0: ordinal not in rang |
欢迎添加微信、微信群,多多交流