ЗАО «ЗЭО»

Техническая поддержка пользователей => Тион-Про28, Орион28 => Тема начата: Ziminets от 09 Ноября, 2013, 17:39:30

Название: Доступ к регистрам из Linux
Отправлено: Ziminets от 09 Ноября, 2013, 17:39:30
Кто-нибудь может подсказать, как из своей программы получить доступ к регистрам, отображенным в памяти процессора?
В интернетах пишут, что для этого надо отобразить память в адресное пространство программы, используя ioremap. Но для ее использования нужно подключить файл <asm/io.h>, а такого файла нет...
Название: Re: Доступ к регистрам из Linux
Отправлено: OlegSL от 10 Ноября, 2013, 15:07:59
Файл располагается в исходных файлах ядра.
ubuntu@ubuntu:~/Projects/TionPro28/ltib/ltib/rpm/BUILD/linux-2.6.35.3$ ls -all arch/arm/include/asm/io.h
-rw-r--r-- 1 ubuntu ubuntu 11245 2010-08-20 14:55 arch/arm/include/asm/io.h
Название: Re: Доступ к регистрам из Linux
Отправлено: Ziminets от 11 Ноября, 2013, 16:40:03
Спасибо, OlegSL! А может быть Вы мне еще и какой-нибудь пример доступа к аппаратным ресурсам процессора подкинете (конкретно интересует модуль FlexCAN)?
И еще вопрос: как узнать с помощью каких команд можно управлять драйвером (опять же FlexCAN) встроенным в ядро (я что-то так и не смог найти исходники этого драйвера)? Где вообще находятся исходники модулей ядра, добавляемые для работы с конкретным железом (в смысле драйверы периферии от Freescale)?
Название: Re: Доступ к регистрам из Linux
Отправлено: OlegSL от 11 Ноября, 2013, 17:09:35
К сожалению Вам не отвечу на эти вопросы. Сам только недавно начал изучать embedded решения. Я пытаюсь пока с самого простого начать (в соседней теме c GPIO мучаюсь :) )
Название: Re: Доступ к регистрам из Linux
Отправлено: Ziminets от 19 Ноября, 2013, 18:36:21
Кто-нибудь может подсказать, как мне подключить стороннюю библиотеку к моему проекту Qt? Стандартные библиотеки имеют путь /opt/freescale/... и т.д. а я хочу подключить библиотеку которая расположена в ltib (использую виртуальную машину с Ubuntu). Я добавил в проект путь к папке путь_к_ltib/rootfs/usr/include и вот такую строку
LIBS += путь_к_ltib/rootfs/lib/libsocketcanВсе файлы вроде компилируются, а в конце выдается ошибка, что не найден файл с именем моего проекта. Я так понял что все объектники скомпилировались, а скомпоновать исполняемый файл не получается. Что я не так делаю?
Название: Re: Доступ к регистрам из Linux
Отправлено: OlegSL от 19 Ноября, 2013, 18:48:41
А можно чуть подробнее описать ваши шаги?
Название: Re: Доступ к регистрам из Linux
Отправлено: Ziminets от 19 Ноября, 2013, 19:23:50
Я хочу использовать функции из библиотеки libsocketcan. Сначала добавил #include <libsocketcan.h>. Получил сообщение что такой файл не найден. Посмотрел пути к тем библиотекам, которые уже использовал. Все он имели путь типа /opt/freescale/и_что_то_там_еще (сейчас пишу по памяти). Поискал где находится этот h-файл. Он расположен в папке с ltib. Добавил эту папку к путям проекта (INCLUDEPATH += .../ltib/rootfs/include). libsocketcan.h нашелся, но получил ошибку типа недейсвительная ссылка (.h файл есть, а самой библиотеки нет). Добавил библиотеку вот таким образом LIBS += путь_к_ltib/rootfs/lib/libsocketcan. В итоге получил ошибку что файл не найден, причем непонятно какой, вроде как мой исполняемый.
Название: Re: Доступ к регистрам из Linux
Отправлено: OlegSL от 20 Ноября, 2013, 14:54:23
Возможно это проблемы при линковке программы. Попробуйте указать LDLIBS=-lsocketcan

P.S. Используете библиотеку: http://www.pengutronix.de/software/libsocketcan/download/ ?
Название: Re: Доступ к регистрам из Linux
Отправлено: Ziminets от 20 Ноября, 2013, 15:29:52
Разобрался!
В принципе все делал правильно, только не обратил внимание, что библиотека написана на C. Поэтому и получил проблему при линковке. Нужно было при включении h-файла указать, что библиотека сишная:
extern C
{
#include <libsocketcan.h>
}
А в файле проекта нужно указывать путь к h-файлу
INCLUDEPATH += путь_к_ltib/rootfs/includeи включить в проект саму библиотеку
LIBS += -Lпуть_к_ltib/rootfs/lib -lsocketcanПричем имя библиотеки пишется в сокращенном виде.