Пример #1
0
def DISABLE_test007_program_flash():
    """Program the boot loader into FLASH memory"""
    global debug, psu, dvm, relay
    p = communication.SerialPort(port=CPU_SERIAL)

    relay.on(RELAY_RESET)
    relay.clear(RELAY_PROGRAM_FLASH)
    relay.clear(RELAY_RANDOM_KEY)
    relay.clear(RELAY_HISTORY_KEY)
    relay.clear(RELAY_SEARCH_KEY)
    relay.set(RELAY_RXD)
    relay.set(RELAY_TXD)
    relay.update()
    time.sleep(RESET_TIME)
    relay.off(RELAY_RESET)

    fail_unless(p.waitFor('menu\?'), 'Boot Loader failed to start')
    p.send(' ')

    m_flash = p.waitFor('(.)\.\s+[fF][lL][aA][sS][hH]\s+[mM][bB][rR]')
    fail_unless(m_flash, 'Boot Loader missing FLASH MBR option')

    fail_unless(p.waitFor('[sS]election:'), 'Boot Loader menu prompt failed')
    p.send(m_flash.group(1))

    m_flash = p.waitFor('(PASS|FAIL):\s+FLASH\s+MBR', 90)
    fail_unless(m_flash, 'FLASH MBR did not respond')
    fail_unless('PASS' == m_flash.group(1), 'FLASH MBR')
    info('Flash programming sucessful')
Пример #2
0
def test010_boot_sd_card():
    """Boot the test program from the SD Card"""
    global debug, psu, dvm, relay
    p = communication.SerialPort(port=CPU_SERIAL)

    relay.on(RELAY_RESET)
    relay.clear(RELAY_PROGRAM_FLASH)
    relay.clear(RELAY_RANDOM_KEY)
    relay.clear(RELAY_HISTORY_KEY)
    relay.clear(RELAY_SEARCH_KEY)
    relay.set(RELAY_RXD)
    relay.set(RELAY_TXD)
    relay.update()
    time.sleep(RESET_TIME)
    relay.off(RELAY_RESET)

    fail_unless(p.waitFor('menu\?'), 'boot loader failed to start')
    p.send(' ')

    m_boot = p.waitFor('(.)\.\s+[bB]oot\s+[tT]est\s+[pP]rogram')
    fail_unless(m_boot, 'Boot Loader missing Boot Test Program option')

    fail_unless(p.waitFor('[sS]election:'), 'Boot Loader menu prompt failed')
    p.send(m_boot.group(1))

    info('Starting the test program')
    fail_unless(p.waitFor('\*START-TEST\*'), 'Test failed to load')
    request_action('Touch the CTP')

    while True:
        m_boot = p.waitFor('(\*SUSPEND\*|(PASS|FAIL):\s+(.*)(\r|\n))', 600)
        fail_unless(m_boot, 'Test program failed to respond')
        if m_boot.group(1) == '*SUSPEND*':
            break
        fail_unless('PASS' == m_boot.group(2), m_boot.group(3))
        info(m_boot.group(2) + ': ' + m_boot.group(3))

    samples = 20
    total = 0
    for j in range(samples):
        i = psu.current
        total = total + i
        info('suspend current = %7.3f mA @ %5.1f V' % (1000 * i, psu.voltage))
        time.sleep(0.1)

    info('average suspend current = %7.3f mA @ %5.1f V' %
         (1000 * total / samples, psu.voltage))

    if abs(i) > MAXIMUM_SUSPEND_CURRENT:
        p.send('N')
    else:
        p.send('Y')

    m_boot = p.waitFor('(PASS|FAIL):\s+(.*)\n', 60)
    fail_unless(m_boot, 'Suspend check failed to respond')
    fail_unless('PASS' == m_boot.group(1), m_boot.group(2))
    info(m_boot.group(1) + ': ' + m_boot.group(2))

    fail_unless(p.waitFor('\*END-TEST\*'), 'End Test timed out')
Пример #3
0
def test008_internal():
    """Run internal test program

    Memory Check
    Test three function keys
    Calibrate LCD contrast voltage
    Check software power off"""

    global debug, psu, dvm, relay
    p = communication.SerialPort(port=CPU_SERIAL)

    relay.on(RELAY_RESET)
    relay.clear(RELAY_PROGRAM_FLASH)
    relay.clear(RELAY_RANDOM_KEY)
    relay.clear(RELAY_HISTORY_KEY)
    relay.clear(RELAY_SEARCH_KEY)
    relay.set(RELAY_RXD)
    relay.set(RELAY_TXD)
    relay.update()
    time.sleep(RESET_TIME)
    relay.off(RELAY_RESET)

    fail_unless(p.waitFor('menu\?'), 'boot loader failed to start')
    p.send(' ')

    m_mem = p.waitFor('(.)\.\s+[mM]emory\s+[cC]heck')
    fail_unless(m_mem, 'Boot Loader missing Memory Check option')

    m_key = p.waitFor('(.)\.\s+[kK]ey\s+[tT]est')
    fail_unless(m_key, 'Boot Loader missing Key Test option')

    fail_unless(p.waitFor('[sS]election:'), 'Boot Loader menu prompt failed')
    p.send(m_mem.group(1))

    m_mem = p.waitFor('[mM]emory:[^\]]+\]')
    fail_unless(m_mem, 'Memory Check did not respond')
    info(m_mem.group(0))

    m_mem = p.waitFor('(PASS|FAIL):\s+(.*)\n')
    fail_unless(m_mem, 'Memory Check did not respond')
    fail_unless('PASS' == m_mem.group(1), m_mem.group(2))
    info(m_mem.group(1) + ': ' + m_mem.group(2))

    fail_unless(p.waitFor('[sS]election:'), 'Boot Loader menu prompt failed')
    p.send(m_key.group(1))

    for desc, r, k in KEY_LIST:
        relay.off(r)
        fail_unless(p.waitFor('keys = '), 'Key Test did not respond')
        key = p.read(4)
        info('key (none) = %s' % key)
        fail_unless('0x00' == key,
                    'Invalid keys: wanted %s, got %s' % ('0x00', key))
        relay.on(r)
        fail_unless(p.waitFor('keys = '), 'Key Test did not respond')
        key = p.read(4)
        i = psu.current
        info('Supply current = %7.3f mA' % (1000 * i))
        info('key (%s)[%s] = %s' % (desc, k, key))
        fail_unless(k == key, 'Invalid keys: wanted %s, got %s' % (k, key))
        relay.off(r)

    fail_unless(p.waitFor('keys = '), 'Key Test did not respond')
    key = p.read(4)
    info('key (none) = %s' % key)
    fail_unless('0x00' == key,
                'Invalid keys: wanted %s, got %s' % ('0x00', key))

    # exit key test and wait for prompt
    # contrast control should then be active
    p.send('\n')
    fail_unless(p.waitFor('[sS]election:'), 'Boot Loader menu prompt failed')

    info('Calibrate LCD Voltages to %7.3f V +- %7.3f V' %
         (LCD_V0, LCD_V0_DELTA))
    relay.on(RELAY_LCD_V0)
    relay_decrease = RELAY_RANDOM_KEY
    relay_increase = RELAY_SEARCH_KEY
    relay_set = RELAY_HISTORY_KEY

    v0_max = LCD_V0 + LCD_V0_DELTA
    v0_min = LCD_V0 - LCD_V0_DELTA
    actual = 0
    for i in range(20):
        time.sleep(VOLTAGE_SAMPLE_TIME)
        actual = dvm.voltage
        #info('Contrast voltage = %7.3f V' % actual)
        if actual > v0_max:
            relay.set(relay_decrease)
            relay.off(relay_increase)
        elif actual < v0_min:
            relay.set(relay_increase)
            relay.off(relay_decrease)
        else:
            relay.set(relay_set)
            relay.clear(relay_increase)
            relay.off(relay_decrease)
            break

    relay.clear(relay_increase)
    relay.clear(relay_decrease)
    relay.off(RELAY_LCD_V0)
    time.sleep(VOLTAGE_SAMPLE_TIME)
    relay.off(relay_set)

    fail_if(
        actual > v0_max or actual < v0_min,
        'LCD contrast voltage: %f7.3 out of range: %7.3f .. %7.3f' %
        (actual, v0_min, v0_max))

    info('Calibrate LCD Voltages Completed; New values are:')
    test004_measure_voltages()

    info('sending auto power off sequence')
    p.send('\n0\n')
    del p
    p = None

    for n in range(5):
        time.sleep(SETTLING_TIME)
        i = psu.current
        info('Supply current = %7.3f mA' % (1000 * i))
        if abs(i) < MAXIMUM_LEAKAGE_CURRENT:
            break
    fail_if(
        abs(i) > MAXIMUM_LEAKAGE_CURRENT,
        "Failed auto power off, current %7.3f mA is too high" % (i * 1000))