Rockchip · AI & Linux Hub

Android и BSP

Руководство разработчика инструмента PCBA Rockchip

Руководство разработчика инструмента PCBA Rockchip

· ArmSoM Editorial · Rockchip source documentation · 10 мин чтения

Полный технический текст двуязычного RK-KF-YF-264 V1.3: обзор, тесты, настройки, расширение параметров/тестов, интерфейсы, поворот, сборка и запуск. Сохранены технические версии: автоопределение Bluetooth после Android 5.0 и поддержка Android 10.0 в V1.3. Это исторический охват источника; проверьте целевой BSP. Аппаратура не тестировалась. Китайский/английский используют соответствующие исходные абзацы; русский/немецкий переведены полностью. Технических изображений и таблиц нет, новые не создавались. Удалены даты обложки, заявления, контакты, аудитория и история изменений.

Проверка: соединены страницы; пояснения интерфейсов вынесены из комментариев и полностью переведены, короткие китайские комментарии локализованы. Сохранены вопросы источника: UST HOST/USB HOST, test_cong.cfg/test_config.cfg, Expample, регистр Boardconfig.mk, утверждение о неиспользуемом program против case1/case2, размещение codec среди автоматических тестов при category=1. Фигурные кавычки module_args, error/n, …… и незаполненные условия — исходные примеры, не готовая компилируемая программа. Китайское «акустическая обратная связь» точнее английского noise; эта точность сохранена. Форматирование стирает данные: проверьте носитель и сделайте копию. При аудиотестах соблюдайте безопасную громкость и конфиденциальность записей. Тесты, форматирование и сборка не выполнялись.

Обзор

Инструмент PCBA помогает быстро выявлять неисправности функций изделий при массовом производстве и повышать эффективность. Тестируются экран (LCD), беспроводная сеть (Wi-Fi), Bluetooth, память DDR/eMMC, SD-карта, USB HOST, кнопки (KEY), динамики и наушники (Codec).

Тесты делятся на автоматические и ручные. Беспроводная сеть, DDR/eMMC и Ethernet проверяются автоматически; кнопки, SD-карта, USB Host и Codec требуют ручного участия.

Тесты настраиваются файлом test_config.cfg; при необходимости можно добавить новые. Подробности приведены в разделе настройки этого документа.

Описание тестов

Тесты делятся на автоматические и ручные.

При автоматических тестах система выполняет проверку и оценивает результат, например для сети и памяти. Ручные тесты требуют участия оператора в выполнении или оценке: запись звука, кнопки, USB-накопитель, SD-карта и другие.

Состояния тестов обозначаются двумя цветами: красным и жёлтым.

Жёлтый: тест ожидает выполнения или выполняется. При успешном завершении отображается [PASS].

Красный: тест не пройден.

Автоматические тесты

Определение ёмкости DDR/EMMC

Автоматический тест показывает ёмкость DDR и EMMC устройства в GB. Типичные DDR: 1GB, 2GB, 4GB; EMMC: 2GB, 4GB, 8GB, 16GB, 32GB, 64GB, 128GB. Пример результата: «системная память: [PASS] { DDR: 2GB, EMMC: 16GB }».

Беспроводная сеть (тест Wi-Fi)

Wi-Fi проверяется автоматически: сканируются окружающие AP и показываются имя и уровень сигнала самого сильного AP. Уровень отображается от 0 до 4 делений. Пример: «сеть: [PASS] { “AP WIFI” уровень сигнала 4 деления }».

Тест Ethernet

Предусмотрены два метода. По умолчанию связь Ethernet проверяется ping: отправлено 5 пакетов, получено 5, потеряно 0. Локальный адрес и адрес назначения ping задаются в external/rk-pcba-test/res/test_cong.cfg.

Другой метод проверяет включение сетевой карты. Включённая карта имеет адрес inet6, например «inet6 addr: fe80::c8eb:eaff:fe6d:730d/64 Scope:Link».

Наличие адреса inet6 считается исправностью Ethernet, но не подтверждает работоспособность сетевого обмена. Для этого режима закомментируйте «use_ping = 1;» в external/rk-pcba-test/lan_test.c.

Тест наушников/динамика (codec)

Codec имеет два режима: одновременная запись и воспроизведение либо воспроизведение перед записью. Второй менее эффективен, но не вызывает акустической обратной связи с динамиком и подходит для динамиков. Одновременный режим быстрее, но с динамиком вызывает обратную связь, поэтому подходит для наушников. Уровень записи зависит от входа и показывается в диапазоне 0–100%, например «уровень записи: [25%]». Настройка режимов описана далее.

Тест Bluetooth

Bluetooth проверяется автоматически. После включения проверки система определяет результат и показывает PASS или FAIL.

Порт Bluetooth по умолчанию — /dev/ttyS0. Если используется другой, измените UartPort в hardware/broadcom/libbt/conf/rockchip/rksdk/bt_vendor.conf на фактический порт.

Ручные тесты

Тест SD-карты

После вставки SD-карта обнаруживается автоматически. На экране показывается результат; при успехе также отображается её ёмкость.

SD-карта должна иметь FAT32; другие форматы не поддерживаются. На всей карте допускается только один раздел. Несоответствующую карту следует отформатировать в требуемый формат.

Тест USB HOST

USB HOST обычно проверяется USB-накопителем. После подключения выполняется автоматическое обнаружение, затем показываются результат и ёмкость накопителя.

Как и SD-карта, USB-накопитель должен иметь FAT32 и только один раздел; другие форматы не поддерживаются. Если требования не выполнены, отформатируйте его в стандартный формат.

Файл конфигурации

Все тесты PCBA настраиваются через test_config.cfg в каталоге «Android SDK»/bootable/recovery/pcba_core/res/test_config.cfg. Пользователь адаптирует файл к аппаратуре проекта, выбирает проверяемые модули и передаёт программе нужные параметры.

Используется формат INI: разделы, ключи и значения. Обычно раздел соответствует модулю. Файл должен быть в UTF-8; другие кодировки могут вызвать неизвестные ошибки.

1.3.1 Пример конфигурационного файла

[example]
display_name= "Example"
activated = 1
program = "example.sh"
category = 0
[example]

[example] / Example

Example — имя модуля конфигурации. Имена встроенных модулей cfg менять нельзя, иначе соответствующий тест не запустится.

display_name

display_name — отображаемое имя тестового модуля. Его можно изменить; максимум 64 байта. При пустом имени программа теста не запускается.

activated

activated определяет необходимость теста: 0 — не проверять модуль, 1 — проверять.

program

Сейчас ключ не используется и не требует настройки.

category

category определяет метод: 0 — автоматический, 1 — ручной.

Пример

[Key] // тест кнопок
display_name= "Key"
activated = 1 // тестировать этот пункт
program = "keytester"
category = 1 // ручной тест

Настройка отдельных тестов

Тест аудио

[Codec]
display_name= "Codec"
activated = 1 // тестировать этот пункт
program = "case1" //case1, case2
category = 1 // ручной тест
run_type = 1
delay = 5
volume = 40
Case1

Воспроизведение перед записью: менее эффективный режим, но с динамиком нет акустической обратной связи. Выбирайте его для динамиков.

Case2

Одновременное воспроизведение и запись: высокая эффективность, но с динамиком возникает обратная связь. Подходит для наушников.

Тест Bluetooth

[bluetooth]
display_name= "bluetooth"
activated = 1
program =
category =
run_type = 1
chip_type = "" ; rk903, mt6622, rda587x, rda5990,rtk8723as

chip_type выбирает модель BT-чипа. По умолчанию пусто, то есть BT не тестируется. После Android 5.0 выбор не требуется: система определяет модель автоматически.

Тест датчиков

[allsensor]
display_name= "allsensor"
activated = 0
program = ""
category = 0
run_type = 1
sensor_type = 39

sensor_type выбирает датчики: 1 — GSENSOR, 2 — GYROSCOPE, 4 — COMPASS, 8 — LSENSOR, 16 — PSENSOR, 32 — GSENSOR_CALIBRATE. Для нескольких датчиков сложите соответствующие значения. По умолчанию 39 = GSENSOR_CALIBRATE(32)+COMPASS(4)+GYROSCOPE(2)+GSENSOR(1).

Тест камеры

[camera]
display_name = "camera"
activated = 1
category = 0
program = ""
number = 2

number задаёт число проверяемых камер; поддерживается максимум 2 камеры.

Для самостоятельного добавления тестового модуля см. документ «RK_PCBA_Camera移植说明v1.0.doc».

Расширение параметров конфигурации

Параметры тестов в test_config.cfg можно расширять. Если модулю нужны дополнительные параметры из конфигурации, добавьте их следующим образом:

[example]
display_name= "Example"
activated = 1
program = "example.sh"
module_args = “xxx”

В тестовой программе значения параметров можно получить через API script_fetch:

int script_fetch(char *main_name, char *sub_name, int value[], int count);

main_name — имя тестового модуля в test_config.cfg; в примере «example».

sub_name — ключ, например activated, display_name, module_args и т. п.

Пример получения значения

if(script_fetch("example", "module_args", (int *)des, 8) == 0)
{
printf("module_args value is: %s\n",des);
}

Добавление тестов

Программа PCBA позволяет добавлять собственные тесты. Если проект использует ещё не поддерживаемый модуль, напишите его тест и интегрируйте в тестовый фреймворк.

Порядок интеграции:

Сначала создайте тестовую программу и заголовочный файл. Интерфейс теста должен иметь формат void * xxxx_test(void *argv, display_callback *hook).

Определите, будет тест ручным или автоматическим, и добавьте нужную конфигурацию в test_config.cfg.

Зарегистрируйте свой тестовый код в rkfactory_test.cpp.

/* new_test.h */
#ifndef _NEW_TEST_H_
#define _NEW_TEST_H_
#include "display_callback.h"
void *new_test(void *argv, display_callback *hook);
#endif
/* new_test.cpp */
void *new_test(void *argv, display_callback *hook) {
struct testcase_info *tc_info = (struct testcase_info *)argv;
char msg[50];
snprintf(msg, sizeof(msg), "%s:[%s..]", "New Test", PCBA_TESTING);
hook->handle_refresh_screen(tc_info->y, msg);
if (/* pass or fail */) {
hook->handle_refresh_screen_hl(tc_info->y, msg, highlight);
}
}
/* rkfactory_test.cpp */
#include "new_test.h"
int start_test_pthread(struct testcase_info *tc_info) {
......
if (!strcmp(tc_info->base_info->name, "new")) {
init_title_lines_for_testcase(tc_info->base_info->name, tc_info);
std::thread *temp = new std::thread(&new_test, tc_info, get_display_hook());
if (!temp) {
printf("create %s test thread error/n", tc_info->base_info->name);
}
}
......
}

Описание интерфейсов

msg_index — индекс отображаемой записи; обычно передаётся её позиция при создании, соответствующая позиции в массиве сообщений. msg — текст для отображения типа std::string, задаваемый разработчиком.

handle_refresh_screen(int msg_index, string msg);

highlight определяет подсветку сообщения. По умолчанию цвет красный; при неудаче теста обычно передаётся true.

handle_refresh_screen_hl(int msg_index, string msg, boolean highlight);

new_test — тестовая функция модуля.

Настройка поворота экрана

PCBA поддерживает поворот на 0°, 90°, 180° и 270° для различного размещения экрана. 0° и 180° соответствуют портретной ориентации, 90° и 270° — альбомной. По умолчанию 0°.

Поворот экрана настраивается в device/rockchip/common/Boardconfig.mk.

#rotate screen to 0, 90, 180, 270
#0: ROTATION_NONE ORIENTATION_0 : 0
#90: ROTATION_RIGHT ORIENTATION_90 : 90
#180: ROTATION_DOWN ORIENTATION_180: 180
#270: ROTATION_LEFT ORIENTATION_270: 270
# For Recovery Rotation
TARGET_RECOVERY_DEFAULT_ROTATION ?= ROTATION_NONE

Сборка, настройка и упаковка образа

Программа PCBA расположена в «Android SDK»/bootable/recovery/pcba_core. При сборке pcba_core статически связывается с recovery. Файлы из pcba_core/res автоматически копируются в каталог pcba системы recovery.

PCBA работает в Recovery. Последовательность: после включения войдите в Recovery, затем запустите программу PCBA для функциональных тестов.

Другие статьи по теме → · Учебные маршруты →