1 /* 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 17 package com.android.pvmfw; 18 19 import com.android.pvmfw.test.host.Pvmfw; 20 21 import java.io.File; 22 import java.io.IOException; 23 24 /** CLI for {@link com.android.microdroid.test.host.Pvmfw}. */ 25 public class PvmfwTool { printUsage()26 public static void printUsage() { 27 System.out.println("pvmfw-tool: Appends pvmfw.bin and config payloads."); 28 System.out.println(" Requires BCC. VM Reference DT, VM DTBO, and Debug policy"); 29 System.out.println(" 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]"); 33 } 34 main(String[] args)35 public static void main(String[] args) { 36 if (args.length < 3 || args.length > 6) { 37 printUsage(); 38 System.exit(1); 39 } 40 41 File out = new File(args[0]); 42 File pvmfwBin = new File(args[1]); 43 File bccData = new File(args[2]); 44 45 File vmReferenceDt = null; 46 File vmDtbo = null; 47 File dp = null; 48 if (args.length > 3) { 49 vmReferenceDt = new File(args[3]); 50 } 51 if (args.length > 4) { 52 vmDtbo = new File(args[4]); 53 } 54 if (args.length > 5) { 55 dp = new File(args[5]); 56 } 57 58 try { 59 Pvmfw.Builder builder = 60 new Pvmfw.Builder(pvmfwBin, bccData) 61 .setVmReferenceDt(vmReferenceDt) 62 .setDebugPolicyOverlay(dp) 63 .setVmDtbo(vmDtbo); 64 if (vmReferenceDt == null) { 65 builder.setVersion(1, 1); 66 } else { 67 builder.setVersion(1, 2); 68 } 69 70 Pvmfw pvmfw = builder.build(); 71 pvmfw.serialize(out); 72 } catch (IOException e) { 73 e.printStackTrace(); 74 printUsage(); 75 System.exit(1); 76 } 77 } 78 } 79