SlideShare a Scribd company logo
1 of 49
Download to read offline
ARM Trusted Firmwareの
BL31を単体で使う!
@Vengineer
2016/10/10
2016/10/22 (追記)
Vengineer DEATH
無限ゲームのなか
いつものように、
よろしくお願いします。
@Vengineer に居ます
SlideShareにアップしてある
ATF : BL31 Runtime Service : SiP Service calls
http://www.slideshare.net/ssuser479fa3/atf-bl31-run
time-service-sip-service-calls
ZynqMPのブートとパワーマネージメント
http://www.slideshare.net/ssuser479fa3/zynq-mp-5849
0589
参考資料
ARM Trusted Firmware
ARMv8では重要なソフトウェア
Githubにて、仕様およびソースコードが公開されている
https://github.com/ARM-software/arm-trusted-firmware
現在は、Version 1.3
・ARM FVP (シミュレーション・モデル)
 http://www.arm.com/ja/products/tools/models/foundation-model.php
 Foundation_Platform (Version 10.1, Build 10.1.32)
 FVP_Base_AEMv8A-AEMv8A (Version 7.7, Build 0.8.7701)
 FVP_Base_Cortex-A57x4-A53x4 (同上)
 FVP_Base_Cortex-A57x1-A53x1 (同上)
 FVP_Base_Cortex-A57x2-A53x4 (同上)
AArch32 : FVP_Base_AEMv8A-AEMv8A/FVP_Base_Cortex-A32x4
・ARM Juno (A72x2 or A57x2 + A53x4)
・Mediatek MT6795 / MT8173
・NVIDIA Tegra-K1 (t132:DENVER) /Tegra-X1 (t210)
・RockChip RK3368 / RK3399
・Xilink Zynq UltraScale+ MPSoC
サポートしているSoC
http://www.virtualopensystems.com/en/services/arm-trusted-firmware-extended-services/
ARM Trusted Firmwareの構造
Secure World
・BL1 :AP Boot ROM (通常、非公開)
・BL2 :Trusted Boot Firmware
・BL31 :EL3 Runtime Firmware
・BL32 :Secure EL1 payload
Normal World
・BL33 :Non Trusted Firmware to load the non Secure OS
 (U-Boot, EDK2)
各階層の簡単な説明
Docsディレクトリに以下のものがある
 auth-framework.md
 cpu-specific-build-macros.md
 firmware-design.md / fimware-update.md
 interrupt-framework-design.md
 platform-migration-guide.md
 porting-guide.md
 psci-lib-integration-guide.md / psci-pd-tree.md
 reset-design.md
 rt-svc-writers-guide.md
 trusted-board-boot.md
 user-guide.md 
ドキュメント
ARM Trusted Firmware Reset Design
1. Introduction
2. General reset code flow
3. Programmable CPU reset address
4. Cold boot on a single CPU
5. Programmable CPU reset address, Cold boot on a single CPU
6. Using BL31 entrypoint as the reset address
reset-design.md
https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/reset-design.md
Makefile内の変数(RESET_TO_BL31)を1にすることで、BL31を単独に
使うことができる
 % make RESET_TO_BL31=1 bl31
ただし、CPUコアのRVBAR_EL3 (reset vector base address)に、
BL31のジャンプ先アドレスを事前に設定しておく必要がある
RESET_TO_BL31
Home > System Control > AArch64 register
descriptions > Reset Vector Base Address, EL3
4.3.60 Reset Vector Base Address, EL3
 Defines the address that execution starts
from after reset when executing in the
AArch64 state.
RVBAR_EL3
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0488c/CIHIJEID.html
Xilinx Zynq UltraScale+ MPSoC
 plat/xilinx/zynqmp/platform.mk
 RESET_TO_BL31 := 1
 ....
 ifneq (${RESET_TO_BL31},1)
  $(error "Using BL31 as the reset vector is only one  
option supported on ZynqMP. Please set RESET_TO_BL31
to 1.")
 endif
 
RESET_TO_BL31=1 な SoC
BL1 :BootROM
BL2 :FSBL (First Stage Boot Loader)
BL31 :ATF
BL32 :オプション (Secure Payload)
BL33 :U-Boot
Zynq UltraScale+ MPSoCの場合
https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/plat/xilinx-zynqmp.md
http://www.virtualopensystems.com/en/services/arm-trusted-firmware-extended-services/
Zynq UltraScale+ MPSoCの場合
BootROM
FBSL
U-Boot
option
% make ERROR_DEPRECATED=1 
  RESET_TO_BL31=1 
  CROSS_COMPILE=aarch64-none-elf- 
  PLAT=zynqmp bl31
RESET_TO_BL31=1 にしている
クロスコンパイラは、aarch64-none-elf-
ターゲットは、bl31 のみ
BL31をビルドするには
https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/plat/xilinx-zynqmp.md
The FSBL populates a data structure with
image information for the ATF.
The ATF uses that data to hand off to the loaded images.
The address of the handoff data structure is passed in the
PMU_GLOBAL.GLOBAL_GEN_STORAGE6 register.
The register is free to be used by other software once the
ATF is bringing up further firmware images.
FSBLからATFへのパラメータ渡し方
https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/plat/xilinx-zynqmp.md
ソースコード解析
plat/xilinx/zynqmp
BL31では、下記の関数が各プラットフォームとして必要
plat/xilinx/zynqmp/bl31_zynqmp_setup.c
bl31_early_platform_setup() [mandatory]
bl31_plat_arch_setup() [mandatory]
bl31_platform_setup() [mandatory]
bl31_plat_runtime_setup() [optional]
bl31_plat_get_next_image_ep_info() [mandatory]
plat/xilinx/zynqmp/aarch64/zynqmp_common.c
plat_get_syscnt_freq2() [mandatory]
(この関数については、ここでは解析していないです)
porting-guide.md
https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/porting-guide.md
ENTRY(bl31_entrypoint)
…
.text . : {
__TEXT_START__ = .;
*bl31_entrypoint.o(.text*)
*(.text*)
*(.vectors)
. = NEXT(4096);
__TEXT_END__ = .;
} >RAM
bl31/bl31.ld.S
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/bl31.ld.S
リセット解除後、実行されるコードは、bl31_entrypoint
bl31_entrypoint
// 前処理
・例外処理の設定 (runtime_exceptions)
・bl31_early_platform_setup
・bl31_plat_arch_setup
// メイン部
・bl31_main
・bl31_platform_setup
・bl31_plat_get_next_image_ep_info
・bl31_plat_runtime_setup
// EL3を抜け、BL32 or BL33 (U-Boot) へ
・el3_exit
処理の流れ
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/aarch64/bl
31_entrypoint.S
func bl31_entrypoint
// 各種前処理
el3_entrypoint_common 
_set_endian=1 
_warm_boot_mailbox=!PROGRAMMABLE_RESET_ADDRESS

_secondary_cold_boot=!COLD_BOOT_SINGLE_CPU 
_init_memory=1 
_init_c_runtime=1 
_exception_vectors=runtime_exceptions
例外が発生すると、runtime_exceptionsが呼ばれる
(bl31/aarch64/runtime_exceptions.S)
bl31/aarch64/bl31_entrypoint.S
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/aarch64/bl
31_entrypoint.S
// RESET_TO_BL31=1の場合は、
// bl31_early_platform_setup関数の引数(x0/x1)を
// 0でクリアする
mov x0, 0
mov x1, 0
// Zynq UltraScale+ MPSoC用のセットアップ
  bl bl31_early_platform_setup
bl bl31_plat_arch_setup
// BL31のmain関数を実行
bl bl31_main
bl31_entrypoint.Sの続き
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/aarch64/bl
31_entrypoint.S
void bl31_early_platform_setup(
bl31_params_t *from_bl2,
void *plat_params_from_bl2)
{
// コンソールの設定
console_init(ZYNQMP_UART_BASE,
zynqmp_get_uart_clk(),
ZYNQMP_UART_BAUDRATE);
// Zynq UltraScale+ MPSoC固有の設定
zynqmp_config_setup();
// 引数が0(NULL)であるのをチェック
assert(from_bl2 == NULL);
assert(plat_params_from_bl2 == NULL);
bl31_early_platform_setup
https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/xilinx/zyn
qmp/bl31_zynqmp_setup.c
// BL32イメージ情報の初期化
SET_PARAM_HEAD(&bl32_image_ep_info,
PARAM_EP, VERSION_1, 0);
SET_SECURITY_STATE(bl32_image_ep_info.h.attr,
SECURE);
// BL33イメージ情報の初期化
SET_PARAM_HEAD(&bl33_image_ep_info,
PARAM_EP, VERSION_1, 0);
SET_SECURITY_STATE(bl33_image_ep_info.h.attr,
NON_SECURE);
bl31_early_platform_setupの続き
https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/xilinx/zyn
qmp/bl31_zynqmp_setup.c
if(zynqmp_get_bootmode()==ZYNQMP_BOOTMODE_JTAG(
{
...
} else { // fsbl_atf_handover関数から情報をゲット
fsbl_atf_handover(
&bl32_image_ep_info,
&bl33_image_ep_info);
}
NOTICE("BL31: Secure code at 0x%lxn",
bl32_image_ep_info.pc);
NOTICE("BL31: Non secure code at 0x%lxn",
bl33_image_ep_info.pc);
}
bl31_early_platform_setupの続き
https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/xilinx/zyn
qmp/bl31_zynqmp_setup.c
void fsbl_atf_handover(entry_point_info_t *bl32,
  entry_point_info_t *bl33)
{
…
atf_handoff_addr = mmio_read_32(
PMU_GLOBAL_GEN_STORAGE6);
assert((atf_handoff_addr < BL31_BASE) ||
(atf_handoff_addr > (uint64_t)&__BL31_END__));
if (!atf_handoff_addr) {
ERROR("BL31: No ATF handoff structure passedn");
panic();
}
fsbl_atf_handover
https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/xilinx/zyn
qmp/plat_startup.c
The FSBL populates a data structure with image
information for the ATF.
The ATF uses that data to hand off to the loaded images.
The address of the handoff data structure
is passed in the
PMU_GLOBAL.GLOBAL_GEN_STORAGE6
register.
The register is free to be used by other software once the
ATF is bringing up further firmware images.
FSBLからATFへのパラメータ渡し方
https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/plat/xilinx-zynqmp.md
// パラメータのチェック
ATFHandoffParams =
(struct xfsbl_atf_handoff_params *) atf_handoff_addr;
if((ATFHandoffParams->magic[0] != 'X') ||
(ATFHandoffParams->magic[1] != 'L') ||
(ATFHandoffParams->magic[2] != 'N') ||
(ATFHandoffParams->magic[3] != 'X')) {
ERROR("BL31: invalid ATF handoff structure at %lxn",
atf_handoff_addr);
panic();
}
VERBOSE("BL31: ATF handoff params at:0x%lx, entries:%un",
atf_handoff_addr, ATFHandoffParams->num_entries);
if (ATFHandoffParams->num_entries > FSBL_MAX_PARTITIONS) {
ERROR("BL31: ATF handoff params: too many partitions (%u/%u)n",
ATFHandoffParams->num_entries, FSBL_MAX_PARTITIONS);
panic();
}
fsbl_atf_handoverの続き
https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/xilinx/zyn
qmp/plat_startup.c
#define FSBL_MAX_PARTITIONS 8
struct xfsbl_partition {
uint64_t entry_point;
uint64_t flags;
};
struct xfsbl_atf_handoff_params {
uint8_t magic[4]; // Magic Number [XLNX]
uint32_t num_entries;
struct xfsbl_partition
partition[FSBL_MAX_PARTITIONS];
};
fsbl_atf_handoverの続き
https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/xilinx/zyn
qmp/plat_startup.c
パーティションは、最大8個
/*
we loop over all passed entries
but only populate two image structs (bl32, bl33).
I.e. the last applicable images in the handoff
structure will be used for the hand off
*/
for(size_t i=0; i<ATFHandoffParams->num_entries;
i++) {
// ここで、BL32/BL33に関する情報を獲得する
}
fsbl_atf_handoverの続き
https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/xilinx/zyn
qmp/plat_startup.c
// RESET_TO_BL31=1の場合は、
// bl31_early_platform_setup関数の引数(x0/x1)を
// 0でクリアする
mov x0, 0
mov x1, 0
// Zynq UltraScale+ MPSoC用のセットアップ
  bl bl31_early_platform_setup
bl bl31_plat_arch_setup
// BL31のmain関数を実行
bl bl31_main
bl31_plat_arch_setup
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/aarch64/bl
31_entrypoint.S
void bl31_plat_arch_setup(void)
{
plat_arm_interconnect_init();
plat_arm_interconnect_enter_coherency();
arm_setup_page_tables( // ページテーブルの設定
BL31_BASE, BL31_END - BL31_BASE,
BL_CODE_BASE, BL_CODE_LIMIT,
BL_RO_DATA_BASE, BL_RO_DATA_LIMIT,
BL31_COHERENT_RAM_BASE,
BL31_COHERENT_RAM_LIMIT);
enable_mmu_el3(0);
}
bl31_plat_arch_setup
https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/xilinx/zyn
qmp/bl31_zynqmp_setup.c
// RESET_TO_BL31=1の場合は、
// bl31_early_platform_setup関数の引数(x0/x1)を
// 0でクリアする
mov x0, 0
mov x1, 0
// Zynq UltraScale+ MPSoC用のセットアップ
  bl bl31_early_platform_setup
bl bl31_plat_arch_setup
// BL31のmain関数を実行
bl bl31_main
bl31_main
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/aarch64/bl
31_entrypoint.S
void bl31_main(void)
{
NOTICE("BL31: %sn", version_string);
NOTICE("BL31: %sn", build_message);
bl31_platform_setup(); // BL31の準備
bl31_lib_init(); // BL31用ライブラリの設定
INFO("BL31: Initializing runtime servicesn");
runtime_svc_init(); // ランタイム・サービスの初期化
bl31_main
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/bl31_main.
c
void bl31_platform_setup(void)
{
// GIC関連の初期化
plat_arm_gic_driver_init();
plat_arm_gic_init();
// テスト用の設定 (ZYNQMP_TESTINGが定義されている時)
zynqmp_testing_setup();
}
bl31_platform_setup
https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/xilinx/zyn
qmp/bl31_zynqmp_setup.c
// BL32が設定されている場合
if (bl32_init) {
INFO("BL31: Initializing BL32n");
(*bl32_init)();
}
// 次に実行するイメージエントリの準備
bl31_prepare_next_image_entry();
bl31_plat_runtime_setup();
}
bl31_mainの続き
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/bl31_main.
c
void bl31_prepare_next_image_entry(void)
{
image_type = bl31_get_next_image_type();
next_image_info =
bl31_plat_get_next_image_ep_info(image_type);
INFO("BL31: Preparing for EL3 exit to %s worldn",
(image_type == SECURE) ? "secure" : "normal");
print_entry_point_info(next_image_info);
cm_init_my_context(next_image_info);
cm_prepare_el3_exit(image_type);
}
bl31_prepare_next_image_entry
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/bl31_main.
c
entry_point_info_t*
bl31_plat_get_next_image_ep_info(uint32_t type)
{
assert(sec_state_is_valid(type));
// typeが Non Secure だと、BL33なので
if (type == NON_SECURE)
return &bl33_image_ep_info;
return &bl32_image_ep_info;
}
bl31_plat_get_next_image_ep_info
https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/xilinx/zyn
qmp/bl31_zynqmp_setup.c
void bl31_prepare_next_image_entry(void)
{
image_type = bl31_get_next_image_type();
next_image_info =
bl31_plat_get_next_image_ep_info(image_type);
INFO("BL31: Preparing for EL3 exit to %s worldn",
(image_type == SECURE) ? "secure" : "normal");
print_entry_point_info(next_image_info);
cm_init_my_context(next_image_info);
cm_prepare_el3_exit(image_type);// EL3を抜ける準
備
}
bl31_prepare_next_image_entry
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/bl31_main.
c
/*
If execution is requested to EL2 or hyp mode,
SCTLR_EL2 is initialized
If execution is requested to non-secure EL1
or svc mode, and the CPU supports
EL2 then EL2 is disabled by configuring
all necessary EL2 registers.
For all entries, the EL1 registers
are initialized from the cpu_context
*/
void cm_prepare_el3_exit(uint32_t security_state)
{
cm_prepare_el3_exit
https://github.com/ARM-software/arm-trusted-firmware/blob/master/lib/el3_runtime
/aarch64/context_mgmt.c
// BL32が設定されている場合
if (bl32_init) {
INFO("BL31: Initializing BL32n");
(*bl32_init)();
}
// BL31のイメージエントリの準備
bl31_prepare_next_image_entry();
bl31_plat_runtime_setup();
}
bl31_mainの続き
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/bl31_main.
c
void bl31_plat_runtime_setup(void)
{
// 特に何もやっていない
}
bl31_plat_runtime_setup
https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/xilinx/zyn
qmp/bl31_zynqmp_setup.c
adr x0, __DATA_START__
adr x1, __DATA_END__
sub x1, x1, x0
bl clean_dcache_range // DATA領域Cache Clean
adr x0, __BSS_START__
adr x1, __BSS_END__
sub x1, x1, x0
bl clean_dcache_range // BSS領域Cache Clean
b el3_exit // EL3を抜ける
endfunc bl31_entrypoint
bl31_entrypoint.Sの続き
https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl31/aarch64/bl
31_entrypoint.S
func el3_exit
/* Save the current SP_EL0
i.e. the EL3 runtime stack which will be used
for handling the next SMC. Then switch to
SP_EL3
*/
// 現在のSP_EL0をセーブする
mov x17, sp
msr spsel, #1
str x17, [sp, #CTX_EL3STATE_OFFSET
+ CTX_RUNTIME_SP]
el3_exit
https://github.com/ARM-software/arm-trusted-firmware/blob/master/lib/el3_runtime
/aarch64/context.S
/* Restore SPSR_EL3, ELR_EL3
and SCR_EL3 prior to ERET
*/
// セーブしておいたSCR_EL3/SPSR_EL3/ELR_EL3を
// リストアする
ldr x18, [sp, #CTX_EL3STATE_OFFSET
+ CTX_SCR_EL3]
ldp x16, x17, [sp, #CTX_EL3STATE_OFFSET
+ CTX_SPSR_EL3]
msr scr_el3, x18
msr spsr_el3, x16
msr elr_el3, x17
el3_exitの続き
https://github.com/ARM-software/arm-trusted-firmware/blob/master/lib/el3_runtime
/aarch64/context.S
// restore_gp_registers_eret (context.S)
// セーブしておいた汎用レジスタをリストアして、
// eretを実行しているので、ここには戻ってこない
b restore_gp_registers_eret
endfunc el3_exit
eret命令は、例外からの復帰。
SPSR_ELn に基づいてプロセッサ状態を復元し、ELR_ELn に分岐
ここで、n は現在の例外レベル
el3_exitの続き
https://github.com/ARM-software/arm-trusted-firmware/blob/master/lib/el3_runtime
/aarch64/context.S
リセットからU-bootが立ち上がるまで
BL33
U-Boot
ATF BL31
 ・例外ベクタの設定
eret命令BL31にジャンプ
FSBLが行うこと
・BL31をDRAMにロード
・U-BootイメージをDRAMにロード
・RVBAR_EL3にbl31_entorypointを設定
・BL31へのパラメータの設定 EL1
EL3
Linux
 
ATF BL31 (EL3 Runtime Firmware)
 
Std Service SiP Service
PSCI zynqmp-pm
LinuxとATF BL31の関係
ZynqMPのブートとパワーマネージメント
http://www.slideshare.net/ssuser479fa3/zynq-mp-58490589
おしまい

More Related Content

What's hot

冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
Takuya ASADA
 

What's hot (20)

レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
Yocto bspを作ってみた
Yocto bspを作ってみたYocto bspを作ってみた
Yocto bspを作ってみた
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
Deep Dive into the Linux Kernel - メモリ管理におけるCompaction機能について
Deep Dive into the Linux Kernel - メモリ管理におけるCompaction機能についてDeep Dive into the Linux Kernel - メモリ管理におけるCompaction機能について
Deep Dive into the Linux Kernel - メモリ管理におけるCompaction機能について
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
 
ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料
 

Similar to ARM Trusted FirmwareのBL31を単体で使う!

LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platform
Linaro
 
Virtual platform
Virtual platformVirtual platform
Virtual platform
sean chen
 
Crash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_TizenCrash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_Tizen
Lex Yu
 

Similar to ARM Trusted FirmwareのBL31を単体で使う! (20)

Tegra 186のu-boot & Linux
Tegra 186のu-boot & LinuxTegra 186のu-boot & Linux
Tegra 186のu-boot & Linux
 
BPF Tools 2017
BPF Tools 2017BPF Tools 2017
BPF Tools 2017
 
bcc/BPF tools - Strategy, current tools, future challenges
bcc/BPF tools - Strategy, current tools, future challengesbcc/BPF tools - Strategy, current tools, future challenges
bcc/BPF tools - Strategy, current tools, future challenges
 
Jagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratch
 
Ch7 v70 scl_en
Ch7 v70 scl_enCh7 v70 scl_en
Ch7 v70 scl_en
 
LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platform
 
Virtual platform
Virtual platformVirtual platform
Virtual platform
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal Bootloader
 
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
 
Next Stop, Android
Next Stop, AndroidNext Stop, Android
Next Stop, Android
 
Beagleboard xm-setup
Beagleboard xm-setupBeagleboard xm-setup
Beagleboard xm-setup
 
OSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPFOSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPF
 
Tiny ML for spark Fun Edge
Tiny ML for spark Fun EdgeTiny ML for spark Fun Edge
Tiny ML for spark Fun Edge
 
U-Boot Porting on New Hardware
U-Boot Porting on New HardwareU-Boot Porting on New Hardware
U-Boot Porting on New Hardware
 
SOFA Tutorial
SOFA TutorialSOFA Tutorial
SOFA Tutorial
 
Crash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_TizenCrash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_Tizen
 
Efficient System Monitoring in Cloud Native Environments
Efficient System Monitoring in Cloud Native EnvironmentsEfficient System Monitoring in Cloud Native Environments
Efficient System Monitoring in Cloud Native Environments
 
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
 
Developing a Windows CE OAL.ppt
Developing a Windows CE OAL.pptDeveloping a Windows CE OAL.ppt
Developing a Windows CE OAL.ppt
 
Dx diag
Dx diagDx diag
Dx diag
 

More from Mr. Vengineer

More from Mr. Vengineer (20)

XilinxのxsimでSoftware Driven Verification.pdf
XilinxのxsimでSoftware  Driven Verification.pdfXilinxのxsimでSoftware  Driven Verification.pdf
XilinxのxsimでSoftware Driven Verification.pdf
 
VerilatorとSystemCでSoftware Driven Verification
VerilatorとSystemCでSoftware Driven VerificationVerilatorとSystemCでSoftware Driven Verification
VerilatorとSystemCでSoftware Driven Verification
 
VerilatorとSystemC
VerilatorとSystemCVerilatorとSystemC
VerilatorとSystemC
 
TVM VTA (TSIM)
TVM VTA (TSIM) TVM VTA (TSIM)
TVM VTA (TSIM)
 
Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析
 
Cloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & InferenceCloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & Inference
 
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?
 
Pixel Visual Core device driver source code analysis
Pixel Visual Core device driver source code analysisPixel Visual Core device driver source code analysis
Pixel Visual Core device driver source code analysis
 
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2 「エッジAIモダン計測制御の世界」オ...
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2  「エッジAIモダン計測制御の世界」オ...Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2  「エッジAIモダン計測制御の世界」オ...
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2 「エッジAIモダン計測制御の世界」オ...
 
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
 
Facebook Glow Compiler のソースコードをグダグダ語る会
Facebook Glow Compiler のソースコードをグダグダ語る会Facebook Glow Compiler のソースコードをグダグダ語る会
Facebook Glow Compiler のソースコードをグダグダ語る会
 
Ultra96(UltraZed)実践勉強会
Ultra96(UltraZed)実践勉強会Ultra96(UltraZed)実践勉強会
Ultra96(UltraZed)実践勉強会
 
Bridge TensorFlow to run on Intel nGraph backends (v0.4)
Bridge TensorFlow to run on Intel nGraph backends (v0.4)Bridge TensorFlow to run on Intel nGraph backends (v0.4)
Bridge TensorFlow to run on Intel nGraph backends (v0.4)
 
Bridge TensorFlow to run on Intel nGraph backends (v0.5)
Bridge TensorFlow to run on Intel nGraph backends (v0.5)Bridge TensorFlow to run on Intel nGraph backends (v0.5)
Bridge TensorFlow to run on Intel nGraph backends (v0.5)
 
TensorFlow XLA RPC
TensorFlow XLA RPCTensorFlow XLA RPC
TensorFlow XLA RPC
 
TensorFlow local Python XLA client
TensorFlow local Python XLA clientTensorFlow local Python XLA client
TensorFlow local Python XLA client
 
Tiramisu をちょっと、味見してみました。
Tiramisu をちょっと、味見してみました。Tiramisu をちょっと、味見してみました。
Tiramisu をちょっと、味見してみました。
 
LeFlowを調べてみました
LeFlowを調べてみましたLeFlowを調べてみました
LeFlowを調べてみました
 
Tensorflow dynamically loadable XLA plugin ソースコード解析
Tensorflow  dynamically loadable XLA plugin ソースコード解析Tensorflow  dynamically loadable XLA plugin ソースコード解析
Tensorflow dynamically loadable XLA plugin ソースコード解析
 
Tiramisu概要
Tiramisu概要Tiramisu概要
Tiramisu概要
 

Recently uploaded

Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...
gajnagarg
 
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in DammamAbortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
ahmedjiabur940
 
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证
ehyxf
 
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证
ehyxf
 
Jual Obat Aborsi Samarinda ( No.1 ) 088980685493 Obat Penggugur Kandungan Cy...
Jual Obat Aborsi Samarinda (  No.1 ) 088980685493 Obat Penggugur Kandungan Cy...Jual Obat Aborsi Samarinda (  No.1 ) 088980685493 Obat Penggugur Kandungan Cy...
Jual Obat Aborsi Samarinda ( No.1 ) 088980685493 Obat Penggugur Kandungan Cy...
Obat Aborsi 088980685493 Jual Obat Aborsi
 
Mankhurd Call Girls, 09167354423 Mankhurd Escorts Services,Mankhurd Female Es...
Mankhurd Call Girls, 09167354423 Mankhurd Escorts Services,Mankhurd Female Es...Mankhurd Call Girls, 09167354423 Mankhurd Escorts Services,Mankhurd Female Es...
Mankhurd Call Girls, 09167354423 Mankhurd Escorts Services,Mankhurd Female Es...
Priya Reddy
 
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
tufbav
 
一比一定(购)国立南方理工学院毕业证(Southern毕业证)成绩单学位证
一比一定(购)国立南方理工学院毕业证(Southern毕业证)成绩单学位证一比一定(购)国立南方理工学院毕业证(Southern毕业证)成绩单学位证
一比一定(购)国立南方理工学院毕业证(Southern毕业证)成绩单学位证
wpkuukw
 
Abortion pills in Dammam +966572737505 Buy Cytotec
Abortion pills in Dammam +966572737505 Buy CytotecAbortion pills in Dammam +966572737505 Buy Cytotec
Abortion pills in Dammam +966572737505 Buy Cytotec
Abortion pills in Riyadh +966572737505 get cytotec
 
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理
uodye
 
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...
nirzagarg
 
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证
wpkuukw
 
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证
wpkuukw
 
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一
ougvy
 

Recently uploaded (20)

Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Palghar [ 7014168258 ] Call Me For Genuine Models W...
 
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in DammamAbortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
 
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证
怎样办理阿德莱德大学毕业证(Adelaide毕业证书)成绩单留信认证
 
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证
怎样办理圣芭芭拉分校毕业证(UCSB毕业证书)成绩单留信认证
 
Vashi Affordable Call Girls ,07506202331,Vasai Virar Charming Call Girl
Vashi Affordable Call Girls ,07506202331,Vasai Virar Charming Call GirlVashi Affordable Call Girls ,07506202331,Vasai Virar Charming Call Girl
Vashi Affordable Call Girls ,07506202331,Vasai Virar Charming Call Girl
 
Jual Obat Aborsi Samarinda ( No.1 ) 088980685493 Obat Penggugur Kandungan Cy...
Jual Obat Aborsi Samarinda (  No.1 ) 088980685493 Obat Penggugur Kandungan Cy...Jual Obat Aborsi Samarinda (  No.1 ) 088980685493 Obat Penggugur Kandungan Cy...
Jual Obat Aborsi Samarinda ( No.1 ) 088980685493 Obat Penggugur Kandungan Cy...
 
Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...
Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...
Abortion pills in Jeddah +966572737505 <> buy cytotec <> unwanted kit Saudi A...
 
Mankhurd Call Girls, 09167354423 Mankhurd Escorts Services,Mankhurd Female Es...
Mankhurd Call Girls, 09167354423 Mankhurd Escorts Services,Mankhurd Female Es...Mankhurd Call Girls, 09167354423 Mankhurd Escorts Services,Mankhurd Female Es...
Mankhurd Call Girls, 09167354423 Mankhurd Escorts Services,Mankhurd Female Es...
 
Point of Care Testing in clinical laboratory
Point of Care Testing in clinical laboratoryPoint of Care Testing in clinical laboratory
Point of Care Testing in clinical laboratory
 
LANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHURE
LANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHURELANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHURE
LANDSLIDE MONITORING AND ALERT SYSTEM FINAL YEAR PROJECT BROCHURE
 
Critical Commentary Social Work Ethics.pptx
Critical Commentary Social Work Ethics.pptxCritical Commentary Social Work Ethics.pptx
Critical Commentary Social Work Ethics.pptx
 
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
 
一比一定(购)国立南方理工学院毕业证(Southern毕业证)成绩单学位证
一比一定(购)国立南方理工学院毕业证(Southern毕业证)成绩单学位证一比一定(购)国立南方理工学院毕业证(Southern毕业证)成绩单学位证
一比一定(购)国立南方理工学院毕业证(Southern毕业证)成绩单学位证
 
Abortion pills in Dammam +966572737505 Buy Cytotec
Abortion pills in Dammam +966572737505 Buy CytotecAbortion pills in Dammam +966572737505 Buy Cytotec
Abortion pills in Dammam +966572737505 Buy Cytotec
 
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理
一比一维多利亚大学毕业证(victoria毕业证)成绩单学位证如何办理
 
Hilti's Latest Battery - Hire Depot.pptx
Hilti's Latest Battery - Hire Depot.pptxHilti's Latest Battery - Hire Depot.pptx
Hilti's Latest Battery - Hire Depot.pptx
 
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ratlam [ 7014168258 ] Call Me For Genuine Models We...
 
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证
一比一定(购)新西兰林肯大学毕业证(Lincoln毕业证)成绩单学位证
 
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证
一比一定(购)UNITEC理工学院毕业证(UNITEC毕业证)成绩单学位证
 
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一
在线制作(ANU毕业证书)澳大利亚国立大学毕业证成绩单原版一比一
 

ARM Trusted FirmwareのBL31を単体で使う!