类似的文章看到
https://blog.csdn.net/shuaifengyun/article/details/71499619$ sudo apt-get install android-tools-fastboot autoconf bison cscope curl \
flex gdisk libc6:i386 libfdt-dev libglib2.0-dev \
libpixman-1-dev libstdc++6:i386 libz1:i386 netcat \
python-crypto python-serial uuid-dev xz-utils zlib1g-dev
$ mkdir opentee.v8 //创建目录
$ cd opentee.v8 //切换到创建的目录
$ repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml --repo-url=git://codeaurora.org/tools/repo.git
$ sed -i "s/\.git//g" .repo/manifest.xml //解决repo sync错误的方法,将manifest.xml文件中的所有的.git都删除
//初始化repo,
$repo sync -j22 //开始获取OP-TEE源代码
$ cd build
$ make -f toolchain.mk toolchains
$ cd build //切换到build目录
$ make -f qemu_v8.mk all //编译工程 (注意到这里不是qemu.mk. 这个是以前的旧文件,是ARMv7的)
第五步, 启动qemu
$cd build //切换到build目录
$make -f qemu_v8.mk run-only //启动qemu v8并运行OP-TEE
第六步, 运行OP-TEE和linux
opentee.v8/build$ make -f qemu_v8.mk run-only
* QEMU is now waiting to start the execution
................
cd /data/kernel/opentee.v8/build/../arm-trusted-firmware/build/qemu/release && \
/data/kernel/opentee.v8/build/../qemu/aarch64-softmmu/qemu-system-aarch64 \
-nographic \
-serial tcp:localhost:54320 -serial tcp:localhost:54321 \
-smp 1 \
-machine virt,secure=on -cpu cortex-a57 -m 1057 -bios /data/kernel/opentee.v8/build/../arm-trusted-firmware/build/qemu/release/bl1.bin \
-s -S -semihosting-config enable,target=native -d unimp \
-initrd /data/kernel/opentee.v8/build/../out-br/images/rootfs.cpio.gz \
-kernel /data/kernel/opentee.v8/build/../linux/arch/arm64/boot/Image -no-acpi \
-append 'console=ttyAMA0,38400 keep_bootcon root=/dev/vda2' \
QEMU 2.12.0 monitor - type 'help' for more information
(qemu)
2) 端口号54320的打印
listening on port 54320
soc_term: accepted fd 4
soc_term: read fd EOF
soc_term: accepted fd 4
listening on port 54321
soc_term: accepted fd 4
soc_term: read fd EOF
soc_term: accepted fd 4
在qemu的console里敲c,(小写)让系统继续运行
D/TC:0 add_phys_mem:521 TEE_SHMEM_START type NSEC_SHM 0x42000000 size 0x00200000
D/TC:0 add_phys_mem:521 TA_RAM_START type TA_RAM 0x0e400000 size 0x00c00000
D/TC:0 add_phys_mem:521 VCORE_UNPG_RW_PA type TEE_RAM_RW 0x0e149000 size 0x001b7000
...............
D/TC:0 tee_ta_register_ta_store:534 Registering TA store: 'REE' (priority 10)
D/TC:0 tee_ta_register_ta_store:534 Registering TA store: 'Secure Storage TA' (priority 9)
D/TC:0 mobj_mapped_shm_init:559 Shared memory address range: f000000, 11000000
I/TC: Initialized
D/TC:0 init_primary_helper:917 Primary CPU switching to normal world boot
I/TC: Dynamic shared memory is enabled
listening on port 54320
soc_term: accepted fd 4
soc_term: read fd EOF
soc_term: accepted fd 4
mmap:
VA:0 PA:0x0 size:0x4000 attr:0x2 granularity:0x40000000
...............
[ 1.864859] ALSA device list:
[ 1.865094] No soundcards found.
[ 1.867994] uart-pl011 9000000.pl011: no DMA platform data
[ 1.949458] Freeing unused kernel memory: 1088K
Starting logging: OK
Initializing random number generator... [ 2.638346] random: dd: uninitialized urandom read (512 bytes read)
done.
Starting tee-supplicant...
Starting network: OK
Welcome to Buildroot, type root to login
buildroot login:
第八步, 运行hello_world
buildroot login: root
# hello_world
Invoking TA to increment 42
TA incremented value to 43
D/TC:0 core_mmu_entry_to_finer_grained:631 xlat tables used 4 / 5
D/TC:0 tee_ta_init_pseudo_ta_session:274 Lookup pseudo TA 8aaaf200-2450-11e4-abe2-0002a5d5c51b
D/TC:0 load_elf:842 Lookup user TA ELF 8aaaf200-2450-11e4-abe2-0002a5d5c51b (Secure Storage TA)
D/TC:0 load_elf:842 Lookup user TA ELF 8aaaf200-2450-11e4-abe2-0002a5d5c51b (REE)
D/TC:0 load_elf_from_store:810 ELF load address 0x40005000
D/TC:0 tee_ta_init_user_ta_session:1019 Processing relocations in 8aaaf200-2450-11e4-abe2-0002a5d5c51b
D/TA: TA_CreateEntryPoint:39 has been called
D/TA: TA_OpenSessionEntryPoint:68 has been called
I/TA: Hello World!
D/TA: inc_value:105 has been called
I/TA: Got value: 42 from NW
I/TA: Increase value to: 43
D/TC:0 tee_ta_close_session:380 tee_ta_close_session(0xe169c70)
D/TC:0 tee_ta_close_session:399 Destroy session
I/TA: Goodbye!
D/TA: TA_DestroyEntryPoint:50 has been called
D/TC:0 tee_ta_close_session:425 Destroy TA ctx
至此,编译并且完整的运行了qemu v8的系统。
上图了
下一步,可以自己去加一个TA和CA。吸取教训,这里记录下目前ArmV8的版本commit id. 避免万一以后github更新导致无法运行
(在下面内容里头搜索revision,就知道commit id了)
/data/kernel/opentee.v8/.repo$ cat manifest.xml