scripts: zephyr_flash_debug: flash like nios2.sh

Only tested by comparing commands that would be run.

Signed-off-by: Marti Bolivar <marti.bolivar@linaro.org>
diff --git a/scripts/support/zephyr_flash_debug.py b/scripts/support/zephyr_flash_debug.py
index 76a3250..2f9c2f5 100755
--- a/scripts/support/zephyr_flash_debug.py
+++ b/scripts/support/zephyr_flash_debug.py
@@ -266,6 +266,50 @@
         check_call(cmd_flash, self.debug)
 
 
+class Nios2Flasher(ZephyrBinaryFlasher):
+    '''Flasher front-end for NIOS II.'''
+
+    # From the original shell script:
+    #
+    #     "XXX [flash] only support[s] cases where the .elf is sent
+    #      over the JTAG and the CPU directly boots from __start. CONFIG_XIP
+    #      and CONFIG_INCLUDE_RESET_VECTOR must be disabled."
+
+    def __init__(self, hex_, cpu_sof, zephyr_base, debug=False):
+        super(Nios2Flasher, self).__init__(debug=debug)
+        self.hex_ = hex_
+        self.cpu_sof = cpu_sof
+        self.zephyr_base = zephyr_base
+
+    def replaces_shell_script(shell_script):
+        return shell_script == 'nios2.sh'
+
+    def create_from_env(debug):
+        '''Create flasher from environment.
+
+        Required:
+
+        - O: build output directory
+        - KERNEL_HEX_NAME: name of kernel binary in ELF format
+        - NIOS2_CPU_SOF: location of the CPU .sof data
+        - ZEPHYR_BASE: zephyr Git repository base directory
+        '''
+        hex_ = path.join(get_env_or_bail('O'),
+                         get_env_or_bail('KERNEL_HEX_NAME'))
+        cpu_sof = get_env_or_bail('NIOS2_CPU_SOF')
+        zephyr_base = get_env_or_bail('ZEPHYR_BASE')
+
+        return Nios2Flasher(hex_, cpu_sof, zephyr_base, debug=debug)
+
+    def flash(self, **kwargs):
+        cmd = [path.join(self.zephyr_base, 'scripts', 'support',
+                         'quartus-flash.py'),
+               '--sof', self.cpu_sof,
+               '--kernel', self.hex_]
+
+        check_call(cmd, self.debug)
+
+
 class NrfJprogFlasher(ZephyrBinaryFlasher):
     '''Flasher front-end for nrfjprog.'''