Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Старый форум » SK-MAT91SAM9XE512
Чтение-запись физических адресов из под Линукс (демо)
repairman (Guest)
Добавлено 30.11.1999 00:00 Редактировалось 19.02.2009 11:03
0
Сообщение: 1
repairman (Guest)

Topic opened
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 17.02.2009 17:39 Редактировалось 17.02.2009 17:39 Сообщение: 2
repairman (Guest)

Часто встречаются вопросы, типа "Как дрыгать ногой SAM9260", "Как включать-выключать реле", "Как зажечь светодиод" и т.п.

Привожу пример программы, которая мигает светодиодом на ногах 1 и 3 разъема X1 с интервалом 1 секунда. Доступ сделан через memory mapping (/dev/mem), специальный драйвер ядра не нужен.

В прикрепленном архиве файлы gpio.c и Makefile, сборка простым make, никакие файлы больше не требуются, перфикс кросс-компилятора в переменной CC в Makefile - измените на свой, если не armv5l-linux-uclibc...

Таким же образом можно писать-читать ЛЮБЫЕ адреса памяти или устройств (т.к. в SAM все девайсы отображены на память, см. datasheet). Что такое mmap и как оно работает - см. мануал libc.

Еще проще сделать не могу... Проверено - собирается и работает.

Источник идеи:
http://svn.arhuaco.org/svn/src/emqbit/tools/AT91-GPIO/user-space/

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 17.02.2009 г. в 18:00:55
Спуститься к концу Подняться к началу
rw9uao (Guest)
Добавлено 17.02.2009 18:00 Редактировалось 17.02.2009 18:00 Сообщение: 3
rw9uao (Guest)

в FAQ! адназначна!
Спуститься к концу Подняться к началу
michael_s (Guest)
Добавлено 18.02.2009 02:49 Редактировалось 18.02.2009 02:49 Сообщение: 4
michael_s (Guest)

Собрал под вмварей в редхате что с диска. Положил бинарник в /root

Загружаю платку , делаю chmod 777 gpio
пытаюсь запустить /root/gpio или ./gpio на что ругается
"-ash: /root/gpio: not found"
В чем моя ошибка может быть ? Мб дело в бизибоксе ? он не дает запускать ?
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 18.02.2009 09:53 Редактировалось 18.02.2009 09:53 Сообщение: 5
repairman (Guest)

2michael_s:
Чем собирал и под какой системой запускаешь (rootfs с чем собрана ?) libc совпадают ?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 18.02.2009 г. в 09:55:50
Спуститься к концу Подняться к началу
michael_s (Guest)
Добавлено 18.02.2009 10:09 Редактировалось 18.02.2009 10:09 Сообщение: 6
michael_s (Guest)

arm-none-linux-gnueabi-gcc
rootfs ta chto s diska (vmware redhat ent)
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 18.02.2009 11:00 Редактировалось 18.02.2009 11:00 Сообщение: 7
repairman (Guest)

Вывод команды в директории где собирал:
Код

arm-none-linux-gnueabi-objdump -f gpio


покажи...
Спуститься к концу Подняться к началу
michael_s (Guest)
Добавлено 18.02.2009 11:19 Редактировалось 18.02.2009 11:19 Сообщение: 8
michael_s (Guest)

gpio: file format elf32-littlearm
architecture: arm, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x0000840c
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 18.02.2009 11:41 Редактировалось 18.02.2009 11:41 Сообщение: 9
repairman (Guest)

??? все правильно...

На ровном месте... я даже не знаю что сказать и что подумать...

Простейший "Hello world" собери... запусти, как он заработает на плате - сразу заработает и gpio...

Код

#include <stdio.h>

int main(void)
{
printf ("Hello, World ! ");
}


У меня все работает, busybox никому не мешает...:
Код

# ./gpio
/dev/mem opened.
Memory block mapped at address 0x40006000.
Target address mapped 0xfffff800-->0x40006800
1
0
1
0


_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 18.02.2009 г. в 11:52:00
Спуститься к концу Подняться к началу
michael_s (Guest)
Добавлено 18.02.2009 12:50 Редактировалось 18.02.2009 12:50 Сообщение: 10
michael_s (Guest)

Добавил в ccflags опцию -static и все заработало и светодиод замигал и hello world заработал. Но при этом и возрос размеры бинарников почти 500 кб каждый
Насколько понимаю без -static он пытается найти какие то модули на плате , и не находит , тогда какие именно либы он хочет ?

Наконец то у меня получилось собрать этот же пример и в моей ubuntu .... не нравится мне этот rh enterprice.

Мб ктонибудь сделает нормальный дистрибутив какого нибудь дистрибутива линукса со всем необходимым , чтоб народ не мучался ?
Спуститься к концу Подняться к началу
Форум » starterkit.ru » Старый форум » SK-MAT91SAM9XE512