def __init__(self): self.checker = ArgChecker()
class Dm36xLeopardArgsParser(object): def __init__(self): self.checker = ArgChecker() # ========================================================================== # Mode sd args # ========================================================================== def add_args_sd(self, parser): parser.add_argument('--device', help="Device to install", metavar='<dev>', dest='device', required=True) parser.add_argument('--mmap-file', help='Memory map config file', metavar='<file>', dest='mmap_file', required=True) self.add_args_sd_bootloader(parser) self.add_args_sd_kernel(parser) parser.add_argument('--work-dir', help='Directory to perform temporary operations', metavar='<dir>', dest='workdir', required=True) self.add_args_sd_fs(parser) def check_args_sd(self, args): self.checker.is_file(args.mmap_file, '--mmap-file') self.check_args_sd_bootloader(args) self.check_args_sd_kernel(args) self.checker.is_dir(args.workdir, '--work-dir') args.workdir = args.workdir.rstrip('/') self.check_args_sd_fs(args) def add_args_sd_kernel(self, parser): parser.add_argument('--kernel-file', help='Path to the Kernel file to be installed.', metavar='<file>', dest='kernel_file', required=True) def check_args_sd_kernel(self, args): self.checker.is_file(args.kernel_file, '--kernel-file') def add_args_sd_bootloader(self, parser): parser.add_argument('--uflash-bin', help='Path to the uflash tool', metavar='<file>', dest='uflash_bin', required=True) parser.add_argument('--ubl-file', help='Path to the UBL file', metavar='<file>', dest='ubl_file', required=True) parser.add_argument('--uboot-file', help='Path to the U-Boot file', metavar='<file>', dest='uboot_file', required=True) parser.add_argument('--uboot-entry-addr', help='U-Boot entry address (decimal or hex)', metavar='<addr>', dest='uboot_entry_addr', required=True) parser.add_argument('--uboot-load-addr', help='U-Boot load address (decimal or hex)', metavar='<addr>', dest='uboot_load_addr', required=True) parser.add_argument('--uboot-bootargs', help="U-Boot bootargs environment variable", metavar='<bootargs>', dest='uboot_bootargs', required=True) def check_args_sd_bootloader(self, args): self.checker.is_file(args.uflash_bin, '--uflash-bin') self.checker.x_ok(args.uflash_bin, '--uflash-bin') self.checker.is_file(args.ubl_file, '--ubl-file') self.checker.is_file(args.uboot_file, '--uboot-file') self.checker.is_valid_addr(args.uboot_entry_addr, '--uboot-entry-addr') self.checker.is_valid_addr(args.uboot_load_addr, '--uboot-load-addr') def add_args_sd_fs(self, parser): parser.add_argument('--rootfs', help='Path to the rootfs that will be installed.', metavar='<dir>', dest='rootfs', default=None) def check_args_sd_fs(self, args): if args.rootfs: self.checker.is_dir(args.rootfs, '--rootfs') # ========================================================================== # Mode sd-img args # ========================================================================== def add_args_sd_img(self, parser): parser.add_argument('--mmap-file', help='Memory map config file', metavar='<file>', dest='mmap_file', required=True) self.add_args_sd_kernel(parser) self.add_args_sd_bootloader(parser) parser.add_argument('--work-dir', help='Directory to perform temporary operations', metavar='<dir>', dest='workdir', required=True) self.add_args_sd_fs(parser) parser.add_argument('--image', help="Filename of the SD card image to create", metavar='<file>', dest='image', required=True) parser.add_argument( '--image-size-mb', help="Size in MB of the SD card image file to create", metavar='<size>', dest='imagesize_mb', required=True) def check_args_sd_img(self, args): self.checker.is_file(args.mmap_file, '--mmap-file') self.check_args_sd_bootloader(args) self.check_args_sd_kernel(args) self.checker.is_dir(args.workdir, '--work-dir') args.workdir = args.workdir.rstrip('/') self.check_args_sd_fs(args) self.checker.is_int(args.imagesize_mb, '--image-size-mb') args.imagesize_mb = int(args.imagesize_mb) # ========================================================================== # Mode sd-script args # ========================================================================== def add_args_sd_script_files(self, parser): parser.add_argument('--sd-mmap-file', help='SD card memory map config file', metavar='<file>', dest='sd_mmap_file', required=True) parser.add_argument('--flash-mmap-file', help='Flash memory map config file', metavar='<file>', dest='flash_mmap_file', required=True) parser.add_argument('--template-file', help='Template file for flash installer script', metavar='<file>', dest='template_file', required=True) parser.add_argument('--output-file', help='Output file generated from --template-file', metavar='<file>', dest='output_file', required=True) parser.add_argument('--work-dir', help='Directory to perform temporary operations', metavar='<dir>', dest='workdir', required=True) parser.add_argument('--mkimage-bin', help='Path to the mkimage tool', metavar='<file>', dest='mkimage_bin', required=True) def check_args_sd_script_files(self, args): self.checker.is_file(args.flash_mmap_file, '--flash-mmap-file') self.checker.is_file(args.template_file, '--template-file') self.checker.is_file(args.sd_mmap_file, '--sd-mmap-file') self.checker.is_dir(args.workdir, '--work-dir') args.workdir = args.workdir.rstrip('/') self.checker.is_file(args.mkimage_bin, '--mkimage-bin') self.checker.x_ok(args.mkimage_bin, '--mkimage-bin') def add_args_sd_script(self, parser): self.add_args_sd_script_files(parser) parser.add_argument('--device', help="Device to install", metavar='<dev>', dest='device', required=True) self.add_args_sd_bootloader(parser) def check_args_sd_script(self, args): self.check_args_sd_script_files(args) self.check_args_sd_bootloader(args) def add_args_sd_script_img(self, parser): self.add_args_sd_script_files(parser) self.add_args_sd_bootloader(parser) parser.add_argument('--image', help="Filename of the SD card image to create", metavar='<file>', dest='image', required=True) parser.add_argument( '--image-size-mb', help="Size in MB of the SD card image file to create", metavar='<size>', dest='imagesize_mb', required=True) def check_args_sd_script_img(self, args): self.check_args_sd_script_files(args) self.check_args_sd_bootloader(args) self.checker.is_int(args.imagesize_mb, '--image-size-mb') args.imagesize_mb = int(args.imagesize_mb) # ========================================================================== # Mode usb-script args # ========================================================================== def add_args_usb_script_files(self, parser): parser.add_argument('--usb-mmap-file', help='USB drive memory map config file', metavar='<file>', dest='usb_mmap_file', required=True) parser.add_argument('--flash-mmap-file', help='Flash memory map config file', metavar='<file>', dest='flash_mmap_file', required=True) parser.add_argument('--template-file', help='Template file for flash installer script', metavar='<file>', dest='template_file', required=True) parser.add_argument('--output-file', help='Output file generated from --template-file', metavar='<file>', dest='output_file', required=True) parser.add_argument('--work-dir', help='Directory to perform temporary operations', metavar='<dir>', dest='workdir', required=True) parser.add_argument('--mkimage-bin', help='Path to the mkimage tool', metavar='<file>', dest='mkimage_bin', required=True) def check_args_usb_script_files(self, args): self.checker.is_file(args.flash_mmap_file, '--flash-mmap-file') self.checker.is_file(args.template_file, '--template-file') self.checker.is_file(args.usb_mmap_file, '--usb-mmap-file') self.checker.is_dir(args.workdir, '--work-dir') args.workdir = args.workdir.rstrip('/') self.checker.is_file(args.mkimage_bin, '--mkimage-bin') self.checker.x_ok(args.mkimage_bin, '--mkimage-bin') def add_args_usb_bootloader(self, parser): parser.add_argument('--uflash-bin', help='Path to the uflash tool', metavar='<file>', dest='uflash_bin', required=True) parser.add_argument('--uboot-file', help='Path to the U-Boot file', metavar='<file>', dest='uboot_file', required=True) parser.add_argument('--uboot-entry-addr', help='U-Boot entry address (decimal or hex)', metavar='<addr>', dest='uboot_entry_addr', required=True) parser.add_argument('--uboot-load-addr', help='U-Boot load address (decimal or hex)', metavar='<addr>', dest='uboot_load_addr', required=True) parser.add_argument('--uboot-bootargs', help="U-Boot bootargs environment variable", metavar='<bootargs>', dest='uboot_bootargs', required=True) def check_args_usb_bootloader(self, args): self.checker.is_file(args.uflash_bin, '--uflash-bin') self.checker.x_ok(args.uflash_bin, '--uflash-bin') self.checker.is_file(args.uboot_file, '--uboot-file') self.checker.is_valid_addr(args.uboot_entry_addr, '--uboot-entry-addr') self.checker.is_valid_addr(args.uboot_load_addr, '--uboot-load-addr') def add_args_usb_script(self, parser): self.add_args_usb_script_files(parser) parser.add_argument('--device', help="Device to install", metavar='<dev>', dest='device', required=True) self.add_args_usb_bootloader(parser) def check_args_usb_script(self, args): self.check_args_usb_script_files(args) self.check_args_usb_bootloader(args) def add_args_usb_script_img(self, parser): self.add_args_usb_script_files(parser) self.add_args_usb_bootloader(parser) parser.add_argument('--image', help="Filename of the USB drive image to create", metavar='<file>', dest='image', required=True) parser.add_argument( '--image-size-mb', help="Size in MB of the USB drive image file to create", metavar='<size>', dest='imagesize_mb', required=True) def check_args_usb_script_img(self, args): self.check_args_usb_script_files(args) self.check_args_usb_bootloader(args) self.checker.is_int(args.imagesize_mb, '--image-size-mb') args.imagesize_mb = int(args.imagesize_mb) # ========================================================================== # General args # ========================================================================== def add_args_serial(self, parser): parser.add_argument( '--serial-port', help="Device name or port number for serial communica" "tion with U-Boot (i.e. '/dev/ttyS0')", metavar='<port>', dest='serial_port') parser.add_argument('--serial-baud', help="Baud rate (default: 115200)", metavar='<baud>', dest='serial_baud', default=115200) def check_args_serial(self, args): self.checker.is_int(args.serial_baud, '--serial-baud') def add_args_termnet(self, parser): parser.add_argument('--termnet-host', help="Device name for termnet communica" "tion with U-Boot (i.e. '127.0.0.1')", metavar='<addr>', dest='termnet_host') parser.add_argument('--termnet-port', help="Termnet port (default: 3000)", metavar='<port>', dest='termnet_port') def check_args_termnet(self, args): self.checker.is_dir(args.termnet_host, '--termnet-host') self.checker.is_int(args.termnet_port, '--termnet-port') def add_args_uboot_comm(self, parser): uboot_modes = ['serial', 'termnet'] parser.add_argument( '--uboot-comm-mode', help="Uboot Communication Mode: %s (default: serial)" % ''.join('%s|' % mode for mode in uboot_modes).rstrip('|'), metavar='<mode>', choices=uboot_modes, dest='uboot_comm_mode', default='serial') def add_args_tftp(self, parser): net_modes = [TftpRamLoader.MODE_STATIC, TftpRamLoader.MODE_DHCP] parser.add_argument('--board-net-mode', help="Networking mode: %s (default: dhcp)" % ''.join('%s|' % mode for mode in net_modes).rstrip('|'), metavar='<mode>', choices=net_modes, dest='board_net_mode', default=TftpRamLoader.MODE_DHCP) parser.add_argument( '--board-ip-addr', help="Board IPv4 address (only required in --board-net-" "mode=static)", metavar='<addr>', dest='board_ip_addr') parser.add_argument('--host-ip-addr', help="Host IPv4 address", metavar='<addr>', dest='host_ip_addr', required=True) parser.add_argument('--tftp-dir', help="TFTP server root directory", metavar='<dir>', dest='tftp_dir', required=True) parser.add_argument('--tftp-port', help="TFTP server port (default: 69)", metavar='<port>', dest='tftp_port', default=69) def check_args_tftp(self, args): self.checker.is_dir(args.tftp_dir, '--tftp-dir') self.checker.is_int(args.tftp_port, '--tftp-port') args.tftp_port = int(args.tftp_port) self.checker.is_valid_ipv4(args.host_ip_addr, '--host-ip-addr') if args.board_net_mode == TftpRamLoader.MODE_STATIC: self.checker.is_valid_ipv4(args.board_ip_addr, '--board-ip-addr') # ========================================================================== # NAND args # ========================================================================== def add_args_nand_dimensions(self, parser): parser.add_argument('--nand-blk-size', help="NAND block size (bytes)", metavar='<size>', dest='nand_blk_size') parser.add_argument('--nand-page-size', help="NAND page size (bytes)", metavar='<size>', dest='nand_page_size') def check_args_nand_dimensions(self, args): if args.nand_blk_size: self.checker.is_int(args.nand_blk_size, '--nand-blk-size') args.nand_blk_size = int(args.nand_blk_size) if args.nand_page_size: self.checker.is_int(args.nand_page_size, '--nand-page-size') args.nand_page_size = int(args.nand_page_size) def add_args_nand(self, parser): parser.add_argument('--mmap-file', help='Memory map config file', metavar='<file>', dest='mmap_file', required=True) self.add_args_nand_dimensions(parser) self.add_args_uboot_comm(parser) self.add_args_serial(parser) self.add_args_termnet(parser) parser.add_argument( '--ram-load-addr', help='RAM address to load components (decimal or hex)', metavar='<addr>', dest='ram_load_addr', required=True) parser.add_argument( '--uboot-file', help='Path to a U-Boot file that can be loaded to RAM ' 'and drive the installation', metavar='<file>', dest='nand_uboot_file') self.add_args_tftp(parser) def check_args_nand(self, args): self.check_args_nand_dimensions(args) self.checker.is_file(args.mmap_file, '--mmap-file') if args.nand_uboot_file: self.checker.is_file(args.nand_uboot_file, '--uboot-file') self.checker.is_valid_addr(args.ram_load_addr, '--ram-load-addr') self.check_args_serial(args) self.check_args_tftp(args) def add_args_nand_ipl(self, parser): parser.add_argument('--force', help='Force component installation', dest='ipl_force', action='store_true', default=False) def add_args_nand_bootloader(self, parser): pass def add_args_nand_kernel(self, parser): parser.add_argument('--force', help='Force component installation', dest='kernel_force', action='store_true', default=False) def add_args_nand_fs(self, parser): parser.add_argument('--force', help='Force component installation', dest='fs_force', action='store_true', default=False) # ========================================================================== # RAM args # ========================================================================== def add_args_ram(self, parser): parser.add_argument( '--file', help='Path to the file to load in RAM (at --load-addr)', metavar='<file>', dest='ram_file', required=True) parser.add_argument( '--load-addr', help='RAM address to load the file (decimal or hex)', metavar='<addr>', dest='ram_load_addr', required=True) parser.add_argument( '--boot-line', help="Line to expect in the serial port to determine " "that boot is complete", metavar='<line>', dest='ram_boot_line', required=True) parser.add_argument('--boot-timeout', help="Max time in seconds to wait for --boot-line", metavar='<s>', dest='ram_boot_timeout', required=True) self.add_args_serial(parser) self.add_args_tftp(parser) def check_args_ram(self, args): self.checker.is_file(args.ram_file, '--file') self.checker.is_valid_addr(args.ram_load_addr, '--load-addr') self.checker.is_int(args.ram_boot_timeout, '--boot-timeout') args.ram_boot_timeout = int(args.ram_boot_timeout) self.check_args_serial(args) self.check_args_tftp(args) # ========================================================================== # Env args # ========================================================================== def add_args_env(self, parser): parser.add_argument('--variable', help="U-Boot's environment variable", metavar='<var>', dest='env_variable', required=True) parser.add_argument('--value', help="Value to set in --variable", metavar='<value>', dest='env_value', required=True) parser.add_argument('--force', help='Force variable installation', dest='env_force', action='store_true', default=False) self.add_args_serial(parser) self.add_args_uboot_comm(parser) self.add_args_termnet(parser) def check_args_env(self, args): self.check_args_serial(args)
class Am5728ArgsParser(object): def __init__(self): self.checker = ArgChecker() # ========================================================================== # Mode sd args # ========================================================================== def add_args_sd(self, parser): parser.add_argument('--device', help="Device to install", metavar='<dev>', dest='device', required=True) parser.add_argument('--mmap-file', help='Memory map config file', metavar='<file>', dest='mmap_file', required=True) self.add_args_sd_bootloader(parser) self.add_args_sd_kernel(parser) parser.add_argument('--work-dir', help='Directory to perform temporary operations', metavar='<dir>', dest='workdir', required=True) self.add_args_sd_fs(parser) def check_args_sd(self, args): self.checker.is_file(args.mmap_file, '--mmap-file') self.check_args_sd_bootloader(args) self.check_args_sd_kernel(args) self.checker.is_dir(args.workdir, '--work-dir') args.workdir = args.workdir.rstrip('/') self.check_args_sd_fs(args) def add_args_sd_kernel(self, parser): parser.add_argument('--kernel-file', help='Path to the Kernel file to be installed.', metavar='<file>', dest='kernel_file') parser.add_argument('--kernel-file-type', help='The type of kernel image.', metavar='<type>', dest='kernel_file_type', required=True) parser.add_argument('--kernel-devicetree', help='Path to the Kernel devicetree file.', metavar='<file>', dest='kernel_devicetree', required=False) def check_args_sd_kernel(self, args): if args.kernel_file: self.checker.is_file(args.kernel_file, '--kernel-file') def add_args_sd_bootloader(self, parser): parser.add_argument('--uboot-mlo-file', help='Path to the U-Boot MLO file', metavar='<file>', dest='uboot_mlo_file') parser.add_argument('--uboot-file', help='Path to the U-Boot file', metavar='<file>', dest='uboot_file') parser.add_argument('--uboot-bootargs', help="U-Boot bootargs environment variable", metavar='<bootargs>', dest='uboot_bootargs') def check_args_sd_bootloader(self, args): if args.uboot_mlo_file: self.checker.is_file(args.uboot_mlo_file, '--uboot-mlo-file') if args.uboot_file: self.checker.is_file(args.uboot_file, '--uboot-file') def add_args_sd_fs(self, parser): parser.add_argument('--rootfs', help='Path to the rootfs that will be installed.', metavar='<dir>', dest='rootfs', default=None) def check_args_sd_fs(self, args): if args.rootfs: self.checker.is_dir(args.rootfs, '--rootfs') # ========================================================================== # Mode sd-img args # ========================================================================== def add_args_sd_img(self, parser): parser.add_argument('--mmap-file', help='Memory map config file', metavar='<file>', dest='mmap_file', required=True) self.add_args_sd_kernel(parser) self.add_args_sd_bootloader(parser) parser.add_argument('--work-dir', help='Directory to perform temporary operations', metavar='<dir>', dest='workdir', required=True) self.add_args_sd_fs(parser) parser.add_argument('--image', help="Filename of the SD card image to create", metavar='<file>', dest='image', required=True) parser.add_argument('--image-size-mb', help="Size in MB of the SD card image file to create", metavar='<size>', dest='imagesize_mb', required=True) def check_args_sd_img(self, args): self.checker.is_file(args.mmap_file, '--mmap-file') self.check_args_sd_bootloader(args) self.check_args_sd_kernel(args) self.checker.is_dir(args.workdir, '--work-dir') args.workdir = args.workdir.rstrip('/') self.check_args_sd_fs(args) self.checker.is_int(args.imagesize_mb, '--image-size-mb') args.imagesize_mb = int(args.imagesize_mb)
class Dm816xArgsParser(object): def __init__(self): self.checker = ArgChecker() # ========================================================================== # Mode sd args # ========================================================================== def add_args_sd(self, parser): parser.add_argument('--device', help="Device to install", metavar='<dev>', dest='device', required=True) parser.add_argument('--mmap-file', help='Memory map config file', metavar='<file>', dest='mmap_file', required=True) self.add_args_sd_bootloader(parser) self.add_args_sd_kernel(parser) parser.add_argument('--work-dir', help='Directory to perform temporary operations', metavar='<dir>', dest='workdir', required=True) self.add_args_sd_fs(parser) def check_args_sd(self, args): self.checker.is_file(args.mmap_file, '--mmap-file') self.check_args_sd_bootloader(args) self.check_args_sd_kernel(args) self.checker.is_dir(args.workdir, '--work-dir') args.workdir = args.workdir.rstrip('/') self.check_args_sd_fs(args) def add_args_sd_kernel(self, parser): parser.add_argument('--kernel-file', help='Path to the Kernel file to be installed.', metavar='<file>', dest='kernel_file') def check_args_sd_kernel(self, args): if args.kernel_file: self.checker.is_file(args.kernel_file, '--kernel-file') def add_args_sd_bootloader(self, parser): parser.add_argument('--uboot-min-file', help='Path to the U-Boot MIN file', metavar='<file>', dest='uboot_min_file') parser.add_argument('--uboot-file', help='Path to the U-Boot file', metavar='<file>', dest='uboot_file') parser.add_argument('--uboot-bootargs', help="U-Boot bootargs environment variable", metavar='<bootargs>', dest='uboot_bootargs') def check_args_sd_bootloader(self, args): if args.uboot_min_file: self.checker.is_file(args.uboot_min_file, '--uboot-min-file') if args.uboot_file: self.checker.is_file(args.uboot_file, '--uboot-file') def add_args_sd_fs(self, parser): parser.add_argument('--rootfs', help='Path to the rootfs that will be installed.', metavar='<dir>', dest='rootfs', default=None) def check_args_sd_fs(self, args): if args.rootfs: self.checker.is_dir(args.rootfs, '--rootfs') # ========================================================================== # Mode sd-img args # ========================================================================== def add_args_sd_img(self, parser): parser.add_argument('--mmap-file', help='Memory map config file', metavar='<file>', dest='mmap_file', required=True) self.add_args_sd_kernel(parser) self.add_args_sd_bootloader(parser) parser.add_argument('--work-dir', help='Directory to perform temporary operations', metavar='<dir>', dest='workdir', required=True) self.add_args_sd_fs(parser) parser.add_argument('--image', help="Filename of the SD card image to create", metavar='<file>', dest='image', required=True) parser.add_argument('--image-size-mb', help="Size in MB of the SD card image file to create", metavar='<size>', dest='imagesize_mb', required=True) def check_args_sd_img(self, args): self.checker.is_file(args.mmap_file, '--mmap-file') self.check_args_sd_bootloader(args) self.check_args_sd_kernel(args) self.checker.is_dir(args.workdir, '--work-dir') args.workdir = args.workdir.rstrip('/') self.check_args_sd_fs(args) self.checker.is_int(args.imagesize_mb, '--image-size-mb') args.imagesize_mb = int(args.imagesize_mb) # ========================================================================== # Mode sd-script args # ========================================================================== def add_args_sd_script_files(self, parser): parser.add_argument('--sd-mmap-file', help='SD card memory map config file', metavar='<file>', dest='sd_mmap_file', required=True) parser.add_argument('--flash-mmap-file', help='Flash memory map config file', metavar='<file>', dest='flash_mmap_file', required=True) parser.add_argument('--template-file', help='Template file for flash installer script', metavar='<file>', dest='template_file', required=True) parser.add_argument('--output-file', help='Output file generated from --template-file', metavar='<file>', dest='output_file', required=True) parser.add_argument('--work-dir', help='Directory to perform temporary operations', metavar='<dir>', dest='workdir', required=True) parser.add_argument('--mkimage-bin', help='Path to the mkimage tool', metavar='<file>', dest='mkimage_bin', required=True) def check_args_sd_script_files(self, args): self.checker.is_file(args.flash_mmap_file, '--flash-mmap-file') self.checker.is_file(args.template_file, '--template-file') self.checker.is_file(args.sd_mmap_file, '--sd-mmap-file') self.checker.is_dir(args.workdir, '--work-dir') args.workdir = args.workdir.rstrip('/') self.checker.is_file(args.mkimage_bin, '--mkimage-bin') self.checker.x_ok(args.mkimage_bin, '--mkimage-bin') def add_args_sd_script(self, parser): self.add_args_sd_script_files(parser) parser.add_argument('--device', help="Device to install", metavar='<dev>', dest='device', required=True) self.add_args_sd_bootloader(parser) def check_args_sd_script(self, args): self.check_args_sd_script_files(args) self.check_args_sd_bootloader(args) def add_args_sd_script_img(self, parser): self.add_args_sd_script_files(parser) self.add_args_sd_bootloader(parser) parser.add_argument('--image', help="Filename of the SD card image to create", metavar='<file>', dest='image', required=True) parser.add_argument('--image-size-mb', help="Size in MB of the SD card image file to create", metavar='<size>', dest='imagesize_mb', required=True) def check_args_sd_script_img(self, args): self.check_args_sd_script_files(args) self.check_args_sd_bootloader(args) self.checker.is_int(args.imagesize_mb, '--image-size-mb') args.imagesize_mb = int(args.imagesize_mb) # ========================================================================== # General args # ========================================================================== def add_args_comm(self, parser): self.add_args_serial(parser) self.add_args_telnet(parser) def check_args_comm(self, args): if args.serial_port: self.check_args_serial(args) elif args.telnet_host: self.check_args_telnet(args) else: raise ArgCheckerError('No communication method specified, use ' 'either --serial-* or --telnet-* settings') def add_args_serial(self, parser): parser.add_argument('--serial-port', help="Device name or port number for serial communica" "tion with U-Boot (i.e. '/dev/ttyS0')", metavar='<port>', dest='serial_port') parser.add_argument('--serial-baud', help="Baud rate (default: 115200)", metavar='<baud>', dest='serial_baud', default=115200) def check_args_serial(self, args): self.checker.is_int(args.serial_baud, '--serial-baud') def add_args_telnet(self, parser): parser.add_argument('--telnet-host', help="Telnet host IPv4 address where the board is" "connected", metavar='<telnet_host>', dest='telnet_host') parser.add_argument('--telnet-port', help="Telnet port number (default: 23)", metavar='<telnet_port>', dest='telnet_port', default=23) def check_args_telnet(self, args): self.checker.is_valid_ipv4(args.telnet_host, '--telnet-host') self.checker.is_int(args.telnet_port, '--telnet-port') def add_args_tftp(self, parser): net_modes = [TftpRamLoader.MODE_STATIC, TftpRamLoader.MODE_DHCP] parser.add_argument('--board-net-mode', help="Networking mode: %s (default: dhcp)" % ''.join('%s|' % mode for mode in net_modes).rstrip('|'), metavar='<mode>', choices=net_modes, dest='board_net_mode', default=TftpRamLoader.MODE_DHCP) parser.add_argument('--board-ip-addr', help="Board IPv4 address (only required in --board-net-" "mode=static)", metavar='<addr>', dest='board_ip_addr') parser.add_argument('--host-ip-addr', help="Host IPv4 address", metavar='<addr>', dest='host_ip_addr', required=True) parser.add_argument('--tftp-dir', help="TFTP server root directory", metavar='<dir>', dest='tftp_dir', required=True) parser.add_argument('--tftp-port', help="TFTP server port (default: 69)", metavar='<port>', dest='tftp_port', default=69) def check_args_tftp(self, args): self.checker.is_dir(args.tftp_dir, '--tftp-dir') self.checker.is_int(args.tftp_port, '--tftp-port') args.tftp_port = int(args.tftp_port) self.checker.is_valid_ipv4(args.host_ip_addr, '--host-ip-addr') if args.board_net_mode == TftpRamLoader.MODE_STATIC: self.checker.is_valid_ipv4(args.board_ip_addr, '--board-ip-addr') # ========================================================================== # NAND args # ========================================================================== def add_args_nand_dimensions(self, parser): parser.add_argument('--nand-blk-size', help="NAND block size (bytes)", metavar='<size>', dest='nand_blk_size') parser.add_argument('--nand-page-size', help="NAND page size (bytes)", metavar='<size>', dest='nand_page_size') def check_args_nand_dimensions(self, args): if args.nand_blk_size: self.checker.is_int(args.nand_blk_size, '--nand-blk-size') args.nand_blk_size = int(args.nand_blk_size) if args.nand_page_size: self.checker.is_int(args.nand_page_size, '--nand-page-size') args.nand_page_size = int(args.nand_page_size) def add_args_nand(self, parser): parser.add_argument('--mmap-file', help='Memory map config file', metavar='<file>', dest='mmap_file', required=True) self.add_args_nand_dimensions(parser) self.add_args_comm(parser) parser.add_argument('--ram-load-addr', help='RAM address to load components (decimal or hex)', metavar='<addr>', dest='ram_load_addr', required=True) parser.add_argument('--uboot-file', help='Path to a U-Boot file that can be loaded to RAM ' 'and drive the installation', metavar='<file>', dest='nand_uboot_file') self.add_args_tftp(parser) def check_args_nand(self, args): self.check_args_nand_dimensions(args) self.checker.is_file(args.mmap_file, '--mmap-file') if args.nand_uboot_file: self.checker.is_file(args.nand_uboot_file, '--uboot-file') self.checker.is_valid_addr(args.ram_load_addr, '--ram-load-addr') self.check_args_comm(args) self.check_args_tftp(args) def add_args_nand_ipl(self, parser): parser.add_argument('--force', help='Force component installation', dest='ipl_force', action='store_true', default=False) def add_args_nand_bootloader(self, parser): pass def add_args_nand_kernel(self, parser): parser.add_argument('--force', help='Force component installation', dest='kernel_force', action='store_true', default=False) def add_args_nand_fs(self, parser): parser.add_argument('--force', help='Force component installation', dest='fs_force', action='store_true', default=False) # ========================================================================== # RAM args # ========================================================================== def add_args_ram(self, parser): parser.add_argument('--file', help='Path to the file to load in RAM (at --load-addr)', metavar='<file>', dest='ram_file', required=True) parser.add_argument('--load-addr', help='RAM address to load the file (decimal or hex)', metavar='<addr>', dest='ram_load_addr', required=True) parser.add_argument('--boot-line', help="Line to expect in the serial port to determine " "that boot is complete", metavar='<line>', dest='ram_boot_line', required=True) parser.add_argument('--boot-timeout', help="Max time in seconds to wait for --boot-line", metavar='<s>', dest='ram_boot_timeout', required=True) self.add_args_comm(parser) self.add_args_tftp(parser) def check_args_ram(self, args): self.checker.is_file(args.ram_file, '--file') self.checker.is_valid_addr(args.ram_load_addr, '--load-addr') self.checker.is_int(args.ram_boot_timeout, '--boot-timeout') args.ram_boot_timeout = int(args.ram_boot_timeout) self.check_args_comm(args) self.check_args_tftp(args) # ========================================================================== # Env args # ========================================================================== def add_args_env(self, parser): parser.add_argument('--variable', help="U-Boot's environment variable", metavar='<var>', dest='env_variable', required=True) parser.add_argument('--value', help="Value to set in --variable", metavar='<value>', dest='env_value', required=True) parser.add_argument('--force', help='Force variable installation', dest='env_force', action='store_true', default=False) self.add_args_comm(parser) def check_args_env(self, args): self.check_args_comm(args)
class Am5728ArgsParser(object): def __init__(self): self.checker = ArgChecker() # ========================================================================== # Mode sd args # ========================================================================== def add_args_sd(self, parser): parser.add_argument('--device', help="Device to install", metavar='<dev>', dest='device', required=True) parser.add_argument('--mmap-file', help='Memory map config file', metavar='<file>', dest='mmap_file', required=True) self.add_args_sd_bootloader(parser) self.add_args_sd_kernel(parser) parser.add_argument('--work-dir', help='Directory to perform temporary operations', metavar='<dir>', dest='workdir', required=True) self.add_args_sd_fs(parser) def check_args_sd(self, args): self.checker.is_file(args.mmap_file, '--mmap-file') self.check_args_sd_bootloader(args) self.check_args_sd_kernel(args) self.checker.is_dir(args.workdir, '--work-dir') args.workdir = args.workdir.rstrip('/') self.check_args_sd_fs(args) def add_args_sd_kernel(self, parser): parser.add_argument('--kernel-file', help='Path to the Kernel file to be installed.', metavar='<file>', dest='kernel_file') parser.add_argument('--kernel-file-type', help='The type of kernel image.', metavar='<type>', dest='kernel_file_type', required=True) parser.add_argument('--kernel-devicetree', help='Path to the Kernel devicetree file.', metavar='<file>', dest='kernel_devicetree', required=False) def check_args_sd_kernel(self, args): if args.kernel_file: self.checker.is_file(args.kernel_file, '--kernel-file') def add_args_sd_bootloader(self, parser): parser.add_argument('--uboot-mlo-file', help='Path to the U-Boot MLO file', metavar='<file>', dest='uboot_mlo_file') parser.add_argument('--uboot-file', help='Path to the U-Boot file', metavar='<file>', dest='uboot_file') parser.add_argument('--uboot-bootargs', help="U-Boot bootargs environment variable", metavar='<bootargs>', dest='uboot_bootargs') def check_args_sd_bootloader(self, args): if args.uboot_mlo_file: self.checker.is_file(args.uboot_mlo_file, '--uboot-mlo-file') if args.uboot_file: self.checker.is_file(args.uboot_file, '--uboot-file') def add_args_sd_fs(self, parser): parser.add_argument('--rootfs', help='Path to the rootfs that will be installed.', metavar='<dir>', dest='rootfs', default=None) def check_args_sd_fs(self, args): if args.rootfs: self.checker.is_dir(args.rootfs, '--rootfs') # ========================================================================== # Mode sd-img args # ========================================================================== def add_args_sd_img(self, parser): parser.add_argument('--mmap-file', help='Memory map config file', metavar='<file>', dest='mmap_file', required=True) self.add_args_sd_kernel(parser) self.add_args_sd_bootloader(parser) parser.add_argument('--work-dir', help='Directory to perform temporary operations', metavar='<dir>', dest='workdir', required=True) self.add_args_sd_fs(parser) parser.add_argument('--image', help="Filename of the SD card image to create", metavar='<file>', dest='image', required=True) parser.add_argument( '--image-size-mb', help="Size in MB of the SD card image file to create", metavar='<size>', dest='imagesize_mb', required=True) def check_args_sd_img(self, args): self.checker.is_file(args.mmap_file, '--mmap-file') self.check_args_sd_bootloader(args) self.check_args_sd_kernel(args) self.checker.is_dir(args.workdir, '--work-dir') args.workdir = args.workdir.rstrip('/') self.check_args_sd_fs(args) self.checker.is_int(args.imagesize_mb, '--image-size-mb') args.imagesize_mb = int(args.imagesize_mb)