blob: e150ec4c26dfda2f84051cc97ee2087343401538 [file] [log] [blame]
Jaewan Kim0ccb99b2023-02-08 16:10:12 +09001/*
2 * Copyright 2023 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Jaewan Kim329c7102023-08-30 16:50:55 +090017package com.android.pvmfw;
Jaewan Kim0ccb99b2023-02-08 16:10:12 +090018
Jaewan Kim329c7102023-08-30 16:50:55 +090019import com.android.pvmfw.test.host.Pvmfw;
Jaewan Kim0ccb99b2023-02-08 16:10:12 +090020
21import java.io.File;
22import java.io.IOException;
23
24/** CLI for {@link com.android.microdroid.test.host.Pvmfw}. */
25public class PvmfwTool {
26 public static void printUsage() {
27 System.out.println("pvmfw-tool: Appends pvmfw.bin and config payloads.");
Jaewan Kim541cb0c2024-03-12 21:09:16 +090028 System.out.println(" Requires BCC and VM reference DT.");
29 System.out.println(" VM DTBO and Debug policy can optionally be specified");
30 System.out.println(
31 "Usage: pvmfw-tool <out> <pvmfw.bin> <bcc.dat> <VM reference DT> [VM DTBO] [debug"
32 + " policy]");
Jaewan Kim0ccb99b2023-02-08 16:10:12 +090033 }
34
35 public static void main(String[] args) {
Jaewan Kim541cb0c2024-03-12 21:09:16 +090036 if (args.length < 3 || args.length > 6) {
Jaewan Kim0ccb99b2023-02-08 16:10:12 +090037 printUsage();
38 System.exit(1);
39 }
40
41 File out = new File(args[0]);
Jaewan Kim541cb0c2024-03-12 21:09:16 +090042 File pvmfwBin = new File(args[1]);
43 File bccData = new File(args[2]);
44 File vmReferenceDt = new File(args[3]);
45
46 File vmDtbo = null;
47 File dp = null;
48 if (args.length > 4) {
49 vmDtbo = new File(args[4]);
50 }
51 if (args.length > 5) {
52 dp = new File(args[5]);
53 }
Jaewan Kim0ccb99b2023-02-08 16:10:12 +090054
55 try {
Jaewan Kim541cb0c2024-03-12 21:09:16 +090056 Pvmfw pvmfw =
57 new Pvmfw.Builder(pvmfwBin, bccData)
58 .setVmReferenceDt(vmReferenceDt)
59 .setDebugPolicyOverlay(dp)
60 .setVmDtbo(vmDtbo)
61 .build();
62 pvmfw.serialize(out);
Jaewan Kim0ccb99b2023-02-08 16:10:12 +090063 } catch (IOException e) {
64 e.printStackTrace();
65 printUsage();
66 System.exit(1);
67 }
68 }
69}