Это программируемое на Tibbo BASIC/C устройство, функциональность которого определяет загруженное приложение.
Мы предлагаем различные готовые к использованию приложения, например, Serial-over-IP (SoI), Modbus Gateway и Sensor Hub.
ОбзорNative C APINode.js APIУправление процессами

"Здравствуй, мир!" для LTPS

Перед запуском этого примера убедитесь, что вы правильно настроили переменные среды SDK.

Напишите простую программу

[dv@dvh tmp]$ mkdir test_0
[dv@dvh tmp]$ cd test_0/
[dv@dvh test_0]$ touch ./test_0.c
  • Создайте файл test_0.c со следующим содержимым:
#include <stdio.h>

int main( int argc, char *argv[]) {
 printf( "Hello world from LTPS!\n");
 return( 0);  }
  • Теперь создайте для этой программы файл Makefile. Это старый верный способ создания чего-либо в UNIX:
[dv@dvh test_0]$ touch ./Makefile
[dv@dvh test_0]$ vi ./Makefile
  • Содержимое файла Makefile:

В начале каждой строки проставлены две табуляции (не пробел!).

all:
        $(CC) -o test_0 test_0.c

clean:
        rm -f test_0
        rm -f *.o

Если вы не знакомы с синтаксисом, пожалуйста, ознакомьтесь со статьей синтаксис файла Makefile.

Соберите программу при помощи кросс-компилятора

  • Запустите команду make в том же окне эмулятора терминала, где вы ранее запускали сценарий установки среды SDK для LTPS.
[dv@dvh test_0]$ make
arm-tps-linux-gnueabi-gcc  -march=armv7-a -mfpu=neon  -mfloat-abi=hard -mcpu=cortex-a8 --sysroot=/home/dv/tpsC/sysroots/cortexa8hf-neon-tps-linux-gnueabi -o test_0 test_0.c
[dv@dvh test_0]$ ls -l
total 20
-rw-r--r-- 1 dv dv   64 May 16 22:28 Makefile
-rwxr-xr-x 1 dv dv 9144 May 16 22:28 test_0*
-rw-r--r-- 1 dv dv  110 May 16 22:27 test_0.c

При помощи инструкций из файла Makefile компилятор соберет исполняемый бинарный файл test_0 из исходного текста test_0.c. Если попытаться запустить его сейчас, он выдаст сообщение об ошибке "cannot execute the binary file" (невозможно выполнить бинарный файл).

[dv@dvh test_0]$ ./test_0
bash: ./test_0: cannot execute binary file

Почему так произошло? Причина проста: код скомпилирован для процессора с архитектурой, отличной от x86! Давайте протестируем его при помощи специальной утилиты objdump из инструментария native gcc, а также из LTPS SDK:

[dv@dvh test_0]$ objdump -f ./test_0

./test_0:     file format elf32-little
architecture: UNKNOWN!, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x000102f4

[dv@dvh test_0]$ $OBJDUMP -f ./test_0

./test_0:     file format elf32-littlearm
architecture: arm, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x000102f4

Во время тестирования мы использовали две различные утилиты objdump: традиционную x86 objdump, которую можно найти по умолчанию в $PATH, и cross-objdump из LTPS SDK (см. переменную среды $OBJDUMP).

Первая утилита (Intel) objdump сообщает о том, что не может найти архитектуру. Cross-objdump сообщает, что это 32-битный, исполняемый файл для архитектуры ARM с прямым порядком старшинства байт. Это верно!

  • Скопируйте программу на плату LTPP3 и запустите её:
[dv@dvh test_0]$ scp ./test_0 root@192.168.75.217:~/
root@192.168.75.217's password:
test_0                                        100% 9144     8.9KB/s   00:00
[dv@dvh test_0]$ ssh root@192.168.75.217
root@192.168.75.217's password:
X11 forwarding request failed on channel 0
root@tpp:~# ./test_0
Hello world from LTPS!
root@tpp:~# uname -a
Linux tpp 4.4.3-tpp #1 Sat May 14 14:28:50 MSK 2016 armv7l GNU/Linux
root@tpp:~#

Поздравляем! У вас получилось!

ОбзорNative C APINode.js APIУправление процессами