14.08.14 Первый запуск SomZ

Материал из SRNS
Перейти к: навигация, поиск

Пора пощупать новую игрушку

Plda somz7045 kit.jpg

Содержание

Вводные

В комплекте идет блок питания на 12 В. Питание возможно как от него, так и от USB OTG.

Стартер-кит поставляется с микро-SD флеш-картой, содержащей два раздела - boot и debian rootfs. Попробуем поработать с этим bsp. На плате bootsel есть переключатель источника загрузки - SD или QSPI. Выбираем SD.

В качестве интерфейса с внешним миром имеем Ethernet, достучаться до которого с ходу не получилось, и RS-USB в виде разъема USB B-type. При подключении USB к PC udev добавляет /dev/ttyUSB0, через который с помощью ckermit мы можем получить терминал. Для этого воспользуемся традиционным скриптом:

#!/usr/bin/kermit
set line /dev/ttyUSB0
set FLOW none
set speed 115200
set serial 8n1
SET CARRIER-WATCH Off
connect

Не забываем chmod +x.

После запуска скрипта имеем приветственное окно Debian с запросом логина и пароля:

WARNING: Last line of command file lacks terminator
Connecting to /dev/ttyUSB0, speed 115200
 Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------

Debian GNU/Linux 7 plda ttyPS0

plda login: root
Password:

Методом перебора найдена нужная комбинация: логин root, пароль plda:

Last login: Thu Jan  1 00:00:12 UTC 1970 on ttyPS0
Linux plda 3.12.0-somz-dirty #7 SMP PREEMPT Tue Mar 11 10:46:29 EET 2014 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@plda:~# ls -la
total 24
drwx------  3 root root 4096 Jan  1 00:01 .
drwxrwxr-x 23 1000 1000 4096 Jan  1 00:03 ..
-rw-------  1 root root  340 Jan  1  1970 .bash_history
-rw-r--r--  1 root root  570 Mar 11  2014 .bashrc
drwx------  3 root root 4096 Jan  1 00:01 .config
-rw-r--r--  1 root root  140 Mar 11  2014 .profile
root@plda:~# ifconfig
eth0      Link encap:Ethernet  HWaddr d0:d1:d2:d3:d4:d5  
          inet addr:172.20.2.162  Bcast:172.20.255.255  Mask:255.255.0.0
          inet6 addr: fe80::d2d1:d2ff:fed3:d4d5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:84 errors:0 dropped:1 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6947 (6.7 KiB)  TX bytes:648 (648.0 B)
          Interrupt:54 Base address:0xb000

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


Прокинуть ssh до 172.20.2.162 не удается, пинг не идет, nmap утверждает, что все порты закрыты.

Установка static IP

Добавляем в /etc/network/interfaces:

auto eth0
iface eth0 inet static
address 192.168.0.156
netmask 255.255.255.0
gateway 192.168.0.1

Даем команду на рестарт сетевых интерфейсов:

/etc/init.d/networking restart

...и теперь у девайса IP из нашей подсети:

root@plda:/etc/network# ifconfig
eth0      Link encap:Ethernet  HWaddr d0:d1:d2:d3:d4:d5  
          inet addr:192.168.0.156  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::d2d1:d2ff:fed3:d4d5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:100 errors:0 dropped:1 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:8951 (8.7 KiB)  TX bytes:1296 (1.2 KiB)
          Interrupt:54 Base address:0xb000

SSH

Девайс пингуется:

ofei@Diod:/dev/serial/by-id$ ping 192.168.0.156
PING 192.168.0.156 (192.168.0.156) 56(84) bytes of data.
64 bytes from 192.168.0.156: icmp_seq=1 ttl=64 time=2.41 ms
64 bytes from 192.168.0.156: icmp_seq=2 ttl=64 time=1.17 ms
64 bytes from 192.168.0.156: icmp_seq=3 ttl=64 time=1.84 ms

...и у него открыт только 22 порт, т.е. SSH:

ofei@Diod:~$ sudo nmap -sS -P0 -sV -O 192.168.0.156
Starting Nmap 6.40 ( http://nmap.org ) at 2014-08-15 10:39 MSK
Nmap scan report for 192.168.0.156
Host is up (0.0012s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.0p1 Debian 4 (protocol 2.0)
MAC Address: D0:D1:D2:D3:D4:D5 (Unknown)

Удается зайти на устройство по SSH, жизнь налаживается:

ofei@Diod:~$ ssh root@192.168.0.156
Linux plda 3.12.0-somz-dirty #7 SMP PREEMPT Tue Mar 11 10:46:29 EET 2014 armv7l

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jan  1 00:29:16 1970
root@plda:~# uname -r
3.12.0-somz-dirty

Пароль - "plda".

Лог загрузки

После перезагрузки девайса настройки остаются в силе. От момента включения до ответа на пинг проходит около 10 секунд.

Из интересного - у нас 256 Мб ОЗУ, rootfs на ext4 и строчка:

zynq_gpio e000a000.ps7-gpio: gpio at 0xe000a000 mapped to 0xd0850000

Hello world

На моей linux-машине предварительно установлен ISE 14.7, причем в Embedded-конфигурации. Традиционно в терминале определяем переменные:

source /opt/Xilinx/14.7/ISE_DS/settings64.sh

Теперь bash знает, где искать кросскомпиляторы arm-xilinx-linux-gnueabi-gcc и arm-xilinx-linux-gnueabi-g++.

С

Начнем с программы на Си, создаем файл hello.c:

#include <stdio.h>
 
int main(void)
{
    printf("Hello, world\n");
    return 0;
}

Компилируем

arm-xilinx-linux-gnueabi-gcc hello.c -o hello

Копируем на девайс

scp ./hello root@192.168.0.156:/root/

Запускаем

root@plda:~# ./hello
Hello, world

С++

Создаем файл hello.cpp:

#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "Hello, world!" << endl;
    return 0;
}

Компилируем

arm-xilinx-linux-gnueabi-g++ hello.cpp -o hello_cpp

Копируем на девайс

scp ./hello_cpp root@192.168.0.156:/root/

Запускаем

root@plda:~# ./hello_cpp
Hello, world!

Вердикт - кросскомпиляторы от Xilinx'а применимы для данного BSP.

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.

Персональные инструменты
Пространства имён

Варианты
Действия
SRNS Wiki
Рабочие журналы
Приватный файлсервер
QNAP Сервер
Инструменты