u-boot mirroring support

Design is at the link below.
https://gerrit.openbmc.org/c/openbmc/docs/+/58025

Tested:
  Tested all "Test Scenarios" specified in the design.

Signed-off-by: Lakshmi Yadlapati <lakshmiy@us.ibm.com>
Change-Id: I064115ee1e966a0a1b3ce7ec246c1f88f0bd87f7
diff --git a/mmc/item_updater_helper.cpp b/mmc/item_updater_helper.cpp
index 70a94bf..db271ab 100644
--- a/mmc/item_updater_helper.cpp
+++ b/mmc/item_updater_helper.cpp
@@ -64,7 +64,11 @@
 
 void Helper::mirrorAlt()
 {
-    // Empty
+    auto method = bus.new_method_call(SYSTEMD_BUSNAME, SYSTEMD_PATH,
+                                      SYSTEMD_INTERFACE, "StartUnit");
+    auto serviceFile = "obmc-flash-mmc-mirroruboot.service";
+    method.append(serviceFile, "replace");
+    bus.call_noreply(method);
 }
 
 } // namespace updater
diff --git a/mmc/obmc-flash-mmc-mirroruboot.service.in b/mmc/obmc-flash-mmc-mirroruboot.service.in
new file mode 100644
index 0000000..97117e3
--- /dev/null
+++ b/mmc/obmc-flash-mmc-mirroruboot.service.in
@@ -0,0 +1,7 @@
+[Unit]
+Description=Copy uboot from the currently booted bmc chip to the alternate chip
+
+[Service]
+Type=oneshot
+RemainAfterExit=no
+ExecStart=/usr/bin/obmc-flash-bmc mmc-mirroruboot