from test.helpers.syscmd import SysCommand import unittest from test.helpers.globalVariables import globalVar class Qflasher(unittest.TestCase): def __init__(self, testname, testfunc): super(Qflasher, self).__init__(testfunc) self._testMethodDoc = testname model=globalVar.g_mid if model.find("IGEP0046") == 0: self._flash_method = "mx6" self._binlocation="/boot/" elif model.find("IGEP0000") == 0: self._flash_method = "mx6" self._binlocation="/boot/" elif model.find("IGEP0034") == 0: self._flash_method = "nandti" self._binlocation = "/boot/" elif model.find("SOPA") == 0: self._flash_method = "sopaflash" elif model.find("OMAP3") == 0: self._flash_method = "nandti" self._binlocation = "/boot/" elif model.find("OMAP5") == 0: self._flash_method = "nandti" self._binlocation = "/boot/" def execute(self): # CASE eMMC boards. if(self._flash_method == "mx6"): str_cmd= "dd if={}u-boot.imx of=/dev/mmcblk2 bs=512 seek=2 2>&1 >/dev/null".format(self._binlocation) flash_command = SysCommand("flash_command", str_cmd) if flash_command.execute() == 0: str_cmd = "sync" sync_command = SysCommand("sync_command", str_cmd) if sync_command.execute() != 0: self.fail("failed: could not sync") else: self.fail("failed: could not complete flash eMMC commands") # CASE of nandflash boards elif(self._flash_method == "nandti"): str_cmd = "nandwrite -p -s 0x0 /dev/mtd0 {}u-boot.img 2>&1 >/dev/null; " \ "nandwrite -p -s 0x20000 /dev/mtd0 {}u-boot.img 2>&1 >/dev/null; " \ "nandwrite -p -s 0x40000 /dev/mtd0 {}u-boot.img 2>&1 >/dev/null; " \ "nandwrite -p -s 0x60000 /dev/mtd0 {}u-boot.img 2>&1 >/dev/null; " \ "".format(self._binlocation, self._binlocation, self._binlocation, self._binlocation,) flash_MLO_command = SysCommand("flash_MLO_command", str_cmd) if flash_MLO_command.execute() == 0: str_cmd= "nandwrite -p /dev/mtd1 {}u-boot.img 2>&1 >/dev/null".format(self._binlocation) flash_uBoot_command = SysCommand("flash_command", str_cmd) if flash_uBoot_command.execute() == 0: str_cmd = "sync" sync_command = SysCommand("sync_command", str_cmd) if sync_command.execute() != 0: self.fail("failed: could not sync") else: self.fail("failed: could not complete flash u-boot commnds") else: self.fail("failed: could not complete flash MLO commnd") # CASE of SOPA0000 BOARD. FULL FLASH (u-boot+kernel+rootfs) elif (self._flash_method == "sopaflash"): str_cmd = "nandtest /dev/mtd0 >/dev/null" flash_command = SysCommand("flash_command", str_cmd) if flash_command.execute() == 0: str_cmd = "/usr/bin/igep-flash --skip-nandtest --image /opt/firmware/demo-ti-image-*-*.tar* >/dev/null 2>&1" sync_command = SysCommand("sync_command", str_cmd) if sync_command.execute() != 0: self.fail("failed: could not complete flashing procces") else: self.fail("failed: could not complete nandtest mtd0") else: self.fail("failed: could not find flash method")