-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
JIRA: CI-72
- Loading branch information
Showing
4 changed files
with
132 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
from typing import Callable, Optional | ||
|
||
from trunner.dut import Dut, SerialDut | ||
from trunner.harness import ( | ||
HarnessBuilder, | ||
PloInterface, | ||
PloImageLoader, | ||
PloImageProperty, | ||
ShellHarness, | ||
Rebooter, | ||
RebooterHarness, | ||
) | ||
|
||
from trunner.harness import TerminalHarness | ||
from trunner.host import Host | ||
from trunner.tools import Phoenixd, Psu | ||
from trunner.types import TestResult, TestOptions | ||
from .base import TargetBase, find_port | ||
|
||
|
||
class ARMv7A7TargetRebooter(Rebooter): | ||
def _set_flash_mode(self, flash): | ||
self.host.set_flash_mode(not flash) | ||
|
||
|
||
class PsuPloLoader(TerminalHarness, PloInterface): | ||
def __init__(self, dut: Dut, psu: Psu): | ||
TerminalHarness.__init__(self) | ||
PloInterface.__init__(self, dut) | ||
self.psu = psu | ||
|
||
def __call__(self): | ||
"""Loads plo image to RAM using psu tool and erases an area intended for rootfs.""" | ||
self.psu.run() | ||
self.wait_prompt() | ||
self.jffs2("2.0", True, ("0x10", "0x1f0", "0x10000", "0x10"), 90) | ||
|
||
|
||
class ARMv7A7Target(TargetBase, PloInterface, Rebooter): | ||
image = PloImageProperty(file="phoenix.disk", source="usb0", memory_bank="nor0") | ||
plo_psu_script = "plo-ram.sdp" | ||
|
||
def __init__( | ||
self, | ||
host: Host, | ||
port: str, | ||
baudrate: int = 115200, | ||
): | ||
dut = SerialDut(port, baudrate, encoding="utf-8", codec_errors="ignore") | ||
PloInterface.__init__(self, dut) | ||
self.rebooter = ARMv7A7TargetRebooter(host, self.dut) | ||
super().__init__() | ||
|
||
@classmethod | ||
def from_context(cls, ctx): | ||
return cls(ctx.host, ctx.port, ctx.baudrate) | ||
|
||
def flash_dut(self): | ||
plo_loader = PsuPloLoader( | ||
dut=self.dut, | ||
psu=Psu(self.plo_psu_script, self.boot_dir()), | ||
) | ||
|
||
loader = PloImageLoader( | ||
dut=self.dut, | ||
rebooter=self.rebooter, | ||
image=self.image, | ||
plo_loader=plo_loader, | ||
phoenixd=Phoenixd(directory=self.boot_dir()), | ||
) | ||
|
||
loader() | ||
|
||
# Setup environment for tests | ||
def build_test(self, test: TestOptions) -> Callable[[], Optional[TestResult]]: | ||
builder = HarnessBuilder() | ||
|
||
if test.should_reboot: | ||
builder.add(RebooterHarness(self.rebooter)) | ||
|
||
if test.shell is not None: | ||
builder.add(ShellHarness(self.dut, self.shell_prompt, test.shell.cmd)) | ||
|
||
builder.add(test.harness) | ||
|
||
return builder.get_harness() | ||
|
||
|
||
class IMX6ULLEvkTarget(ARMv7A7Target): | ||
name = "armv7a7-imx6ull-evk" | ||
|
||
def __init__(self, host: Host, port: Optional[str] = None, baudrate: int = 115200): | ||
port = find_port( | ||
"10c4:ea60" | ||
) # vid:pid Product=CP2102 USB to UART Bridge Controller | ||
|
||
super().__init__(host, port, baudrate) | ||
|
||
# IMX6ULL with system jffs2 use nor0 as space to hold data | ||
image = PloImageProperty(file="phoenix.disk", source="usb0", memory_bank="nor0") | ||
|
||
def build_test(self, test: TestOptions) -> Callable[[], Optional[TestResult]]: | ||
return super().build_test(test) |