Blog:Ustinov — различия между версиями

Материал из SRNS
Перейти к: навигация, поиск
(Новая страница: «== GPIO AM3517 == Для будущего воплощения [http://srns.ru/wiki/Импала Импалы] научимся "двигать ногой" с пом...»)
 
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
== GPIO AM3517 ==
+
[[Устинов,_Алексей_Юрьевич|Страница Алексея...]]
Для будущего воплощения [http://srns.ru/wiki/Импала Импалы] научимся "двигать ногой" с помощью процессорного модуля AM3517 по средствам шины GPIO. В данный момент на плате установлен Linux и всё грузится аналогично [http://srns.ru/wiki/Blog:Korogodin/04.05.2012,_Первая_загрузка_linux'а_на_AM3517 первой загрузке].
+
  
Тулчейн для AM3517 находится по ссылке [http://wiki.variscite.ru/doku.php?id=howto:gcc-toolchain тык]. Его скачиваем и устанавливаем по [http://www.variwiki.com/index.php?title=VAR-SOM-AM35_-_Building_Linux_Images мануалу].
+
[[Special:Wikilog/User:Ustinov|Поиск по блогу...]]
 
+
Выберем для "шевеления" пин на отладочной плате. Удобнее всего подцепить осциллограф к одному из пинов разъема LVDS. Ознакомившись с [http://variscite.ru/docs/datasheets/VAR-3xCustomBoard_V2_1_DS.pdf CustomBoard Datasheet] выбираем Pin 4, в описании которого написано GPIO#28. Описание интересное, но перед управлением данным пином, стоит проверить действительно ли этот пин подключен к GPIO28. Для этого сверимся с [http://variscite.ru/docs/mechanics/var-am35customboard_v2_3B.pdf CustomBoard Schematics]. Проверяем и видим, что на самом деле выход этого пина подключен к ''GPIO186'', им мы и будем управлять. <br/> Далее изучаем раздел ''General-Purpose Interface'' [http://www.ti.com/lit/ug/sprugr0b/sprugr0b.pdf Technical Reference Manual]. <br/>
+
:Простейшее управление пином осуществляется в два шага:
+
# разрешить(включить) соответствующий пин на вход/выход;
+
# установить на соответствующий пин "1" или "0";
+
 
+
Вся шина GPIO разбита на 6 банок по 32 пина. Нужный нам ''GPIO186'' принадлежит к 6-ому банку GPIO (GPIO6). Начальный адрес GPIO6 - ''0x49058000''. Регистр, разрешающий пины на вход/выход, - '''GPIO_OE'''. Его адрес смещен на ''0x034'', относительно начального адреса GPIO6. По умолчанию все пины установлены на вход,- значение регистра равно ''0xFFFFFFFF''. ''GPIO186'' соответствует 26ой бит. Нужно инвертировать его, установив в него значение 0, таким образом включив пин ''GPIO186'' на выход.
+
 
+
Вторым шагом нужно подать на выход ''GPIO186'' единицу. Для этого существует регистр '''GPIO_SETDATAOUT'''. Чтобы получить единицу на выходе ''GPIO186'', нужно записать "1" в 26-ой бит этого регистра, его адрес смещен на ''0x094'', относительно начального адреса GPIO6. Если нужно подать на выход ''GPIO186'' ноль, для этого существует регистр '''GPIO_CLEARDATAOUT''', его адрес смещен на ''0x090''. Аналогично предыдущему регистру, для установки нуля на выход ''GPIO186'', нужно записать "1" в 26ой бит данного регистра. Всё просто!
+
 
+
== Общение ==
+
На данный момент "общение" с AM3517 выглядит следующим образом:
+
 
+
*c помощью ''скрипта'' подключаемся к устройству:
+
<pre>
+
#!/usr/bin/kermit
+
set line /dev/ttyUSB0
+
set FLOW auto
+
set speed 115200
+
set serial 8n1
+
SET CARRIER-WATCH Off
+
connect
+
</pre>
+
* создаем файл ''example.c'':
+
<pre>
+
#include <stdio.h>
+
 
+
int main(void)
+
{
+
    printf("Hello world! \n");
+
        return 0;
+
}
+
</pre>
+
* компилируем с помощью тулчейна и получаем файл ''example'':
+
<pre>
+
$ gcc example.c -o example
+
</pre>
+
* копируем получившийся файлик на флешку, вытаскиваем флешку из компьютера и вставляем в девайс;
+
* через терминал Linux`а устройства запускаем файл ''example'' на выполнение.
+
 
+
== Программа управления пином GPIO ==
+
Листинг программы управления пином ''GPIO186'':
+
<pre>
+
#include <stdio.h>
+
#include <stdlib.h>
+
#include <unistd.h>
+
#include <fcntl.h>
+
#include <sys/mman.h>
+
 
+
#define GPIO_BASE 0x49058000 //начальный адрес GPIO6
+
 
+
#define GPIO_OE 0x034
+
#define GPIO_DATAOUT 0x03C
+
#define GPIO_SETDATAOUT 0x094
+
#define GPIO_CLEARDATAOUT 0x090
+
#define GPIO_REVISION 0x000
+
 
+
 
+
/* GPIO memory mapped registers */
+
volatile unsigned int *OE;
+
volatile unsigned int *DATAOUT;
+
volatile unsigned int *SETDATAOUT;
+
volatile unsigned int *CLEARDATAOUT;
+
volatile unsigned int *REVISION;
+
 
+
int main (void)
+
{
+
unsigned char *gpio;
+
int fd,rep;
+
 
+
/* открываем /dev/mem */
+
if ((fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0)
+
{
+
      printf("can't open /dev/mem \n");
+
      exit(-1);
+
}
+
 
+
/* mmap GPIO */
+
gpio = mmap(0, getpagesize(), PROT_READ|PROT_WRITE, MAP_SHARED, fd, GPIO_BASE);
+
 
+
close(fd); //закрываем fd после mmap
+
 
+
if ((long)gpio < 0)
+
{
+
      printf("mmap error %d\n", (int)gpio);
+
      exit(-1);
+
}
+
 
+
OE = (unsigned int *)(gpio + GPIO_OE);
+
DATAOUT = (unsigned int *)(gpio + GPIO_DATAOUT);
+
SETDATAOUT = (unsigned int *)(gpio + GPIO_SETDATAOUT);
+
CLEARDATAOUT = (unsigned int *)(gpio + GPIO_CLEARDATAOUT);
+
REVISION = (unsigned int *)(gpio + GPIO_REVISION);
+
 
+
*OE=~(1<<26); //26ой бит устанавливается как output
+
//printf("Set all as output\n");
+
//printf("OUTPUTEN: %X\n",*OE);
+
 
+
for (;;)
+
{
+
//printf("SET\n");
+
*SETDATAOUT=1<<26;
+
//printf("DATAOUTPUT: %X\n",*DATAOUT);
+
//printf("CLEAR\n");
+
*CLEARDATAOUT=1<<26;
+
//printf("DATAOUTPUT: %X\n",*DATAOUT);
+
}
+
 
+
return 0;
+
}//main
+
</pre>
+
 
+
[[File:GPIO186.PNG|слева|мини|600px|Скрин с осциллографа после выполнения программы управления GPIO186.]]
+
 
+
[[Категория:Импала]]
+

Текущая версия на 12:28, 19 июня 2014

Страница Алексея...

Поиск по блогу...

07.06.2018 Усилитель мощности на 20W

Страница посвящена усилителю мощности, рожденному в недрах НИИ КП.

UPD. Всё забрали. Ничего не осталось.

→ продолжить чтение…

23.10.2017 Настройка и ресурсы Ettus Research USRP E312

USRP E312.png

Страница посвящена Ettus Research USRP E312.

→ продолжить чтение…

27.06.2017 Сервер Статистики aka Автоматизация измерений Эпизод II

StatServer.PNG

Встречайте нового работника - Сервер Статистики УИЦ СРТТ!

→ продолжить чтение…

17.12.2014 Минутка экономики на SRNS.ru

IMG 1233.JPG

За последние 2 месяца бензин в РФ подешевел в 2 раза... С 1$ до 0,5$ за литр.

→ продолжить чтение…

24.06.2014 Настройка и ресурсы Xilinx ZYNQ ZC702

ZYNQ ZC702.jpg

Страница, посвященная Xilinx ZYNQ ZC702.

→ продолжить чтение…

17.12.2013 Навигационные сигналы и функции их инициализации

SRNS beginning.png

На данной страничке представлены функции инициализации каналов корреляторов для приема различных сигналов ГЛОНАСС и GPS.

→ продолжить чтение…

06.11.2013 Удаленная кроссплатформенная компиляция исходников

Windows Linux.png

Удаленная компиляция исходников для Импалы работает на Linux и Windows.

→ продолжить чтение…

07.10.2013 Прошивка AM3517

Команды и файлы для прошивки AM3517

→ продолжить чтение…

01.03.2013 GPIO AM3517

Its alive.png

Для будущего воплощения Импалы научимся "двигать ногой" с помощью процессорного модуля AM3517 посредством GPIO.

→ продолжить чтение…

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

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