OVERLAY - Command of GNU Linker Scripts
Preface 之前在查阅AT的用法时偶然发现了OVERLAY这个关键字,感觉发现了新大陆,本来想马上实践下,奈何打工人要先做好自己本职工作,最近又比较忙,就拖到了现在。话不多说,开始吧。 Content 首先来看这个关键字是做啥的。 The OVERLAY command provides an easy way to describe sections which ar...
Preface 之前在查阅AT的用法时偶然发现了OVERLAY这个关键字,感觉发现了新大陆,本来想马上实践下,奈何打工人要先做好自己本职工作,最近又比较忙,就拖到了现在。话不多说,开始吧。 Content 首先来看这个关键字是做啥的。 The OVERLAY command provides an easy way to describe sections which ar...
Preface 嗯,最近在做OPTEE,其中有个编译宏叫做CFG_ULIBS_SHARED,后续准备写一篇关于这个宏的一些东西,这篇作为先导,复习一下知识。 Content 关于c中的Libary,有两种,一种是static library,一种是dynamic library。其中static libary是直接打包在目标文件里的,而dynamic libary则只是在Dayna...
Preface 最近解决了一个小MCU系统里memory分配的问题。这个小系统本身memory有限,而且还是非连续的两块,原本是把binary(.text,.rodata,.data)放在第一块,其他的(.bss,.stack,.heap)放第二块,现在feature增加,binary超出了第一块的大小,应该怎么办? Content 这个问题其实有个很常用的场景就是ROM code...
上周碰到一个很奇怪的问题,一直出现”malloc(): corrupted top size”这个错误,导致application异常退出。反复检查malloc的size,甚至手动变化这个size的大小,还是一直出错。百思不得其解。这个周末闲来无事,认真检查了整个代码,发现竟然是之前malloc的buffer小了,导致memory操作越界,但竟然没有当场出错,而是再次的malloc的时候...
Preface 在嵌入式开发过程中,博主发现有部分问题涉及到上板子调试就会变复杂了,image怎么生成和打包,怎么输出debug信息,用什么方法调试,怎么调试最方便。这样QEMU就有了用武之地。但QEMU也是有适用范围的,比如只是软件逻辑的调试,比如如果QEMU很好的模拟了硬件特性也可以用来调试硬件相关问题。OPTEE官方提供了QEMU调试方法,值得去setup一套这样的环境。 官...
Preface Open Source真是个好东西,减少重复开发,快速应用,有的还有社区支持。好处网上罗列了一大堆,比如10 Biggest Advantages。Open Source的项目在各大开源网站一大堆,但有句话讲“天下没有免费的午餐”,如果不认真甄别其使用的Open Source License,有可能会出大问题。比较有名的case如:FSF vs Cisco和MySQL ...
Preface 大家都知道Linux User Space调用Kernel Space的function需要用到Syscall,其实在Secure World也是一样。今天就追踪下TA是如何调用OPTEE OS的function的。 注:因为博主用到的SoC都是基于ARM特别是ARMv8架构的,没有特别说明的话,博文也是基于ARMv8来做的解释和总结。比如这里Linux User...
最近IT搞了件很不专业的事情,在没有做备份的情况下,把AWS的service给terminate了,导致几个git repo都没了,是的没了。作为大头兵,只能默默的把git操作好好熟练下。 Introduction git是当今世界上使用最广泛的版本控制系统。在写这篇博文前,博主竟然不知道它竟然是Linus本尊开发的,那它是open sourced就很合理了。之前也用过不少其他的v...
CA调用TA的secure service之前,首先要创建一个连接,这个连接叫session。由于这个连接是从REE发起的,对session的安全性有一定的担忧,比如有需求要求某个TA只服务于特定CA。OPTEE其实提供了方案,但整个代码看下来,实在是比较鸡肋。接下来先分析代码,然后看怎么改进比较合适。 Note:本文中引用的代码版本如下: OPTEE: 4.0.0 Lin...
OPTEE OS提供TEE相关基础设施,TA(Trusted Application)则是Security需求具体实现的载体。如OPTEE Overview图中所示,OPTEE OS运行在Secure EL1,而TA则运行Secure EL0,ARM在TEE端和REE端(Linux OS运行在Kernel Space,Application运行在User Space)保持了一样的设计。关...