ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Доступ к регистрам из Linux  (Прочитано 5120 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Ziminets

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 64
Доступ к регистрам из Linux
« : 09 Ноября, 2013, 17:39:30 »

Кто-нибудь может подсказать, как из своей программы получить доступ к регистрам, отображенным в памяти процессора?
В интернетах пишут, что для этого надо отобразить память в адресное пространство программы, используя ioremap. Но для ее использования нужно подключить файл <asm/io.h>, а такого файла нет...
Записан

OlegSL

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 9
    • Мой блог
Re: Доступ к регистрам из Linux
« Ответ #1 : 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
Записан

Ziminets

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 64
Re: Доступ к регистрам из Linux
« Ответ #2 : 11 Ноября, 2013, 16:40:03 »

Спасибо, OlegSL! А может быть Вы мне еще и какой-нибудь пример доступа к аппаратным ресурсам процессора подкинете (конкретно интересует модуль FlexCAN)?
И еще вопрос: как узнать с помощью каких команд можно управлять драйвером (опять же FlexCAN) встроенным в ядро (я что-то так и не смог найти исходники этого драйвера)? Где вообще находятся исходники модулей ядра, добавляемые для работы с конкретным железом (в смысле драйверы периферии от Freescale)?
Записан

OlegSL

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 9
    • Мой блог
Re: Доступ к регистрам из Linux
« Ответ #3 : 11 Ноября, 2013, 17:09:35 »

К сожалению Вам не отвечу на эти вопросы. Сам только недавно начал изучать embedded решения. Я пытаюсь пока с самого простого начать (в соседней теме c GPIO мучаюсь :) )
Записан

Ziminets

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 64
Re: Доступ к регистрам из Linux
« Ответ #4 : 19 Ноября, 2013, 18:36:21 »

Кто-нибудь может подсказать, как мне подключить стороннюю библиотеку к моему проекту Qt? Стандартные библиотеки имеют путь /opt/freescale/... и т.д. а я хочу подключить библиотеку которая расположена в ltib (использую виртуальную машину с Ubuntu). Я добавил в проект путь к папке путь_к_ltib/rootfs/usr/include и вот такую строку
LIBS += путь_к_ltib/rootfs/lib/libsocketcanВсе файлы вроде компилируются, а в конце выдается ошибка, что не найден файл с именем моего проекта. Я так понял что все объектники скомпилировались, а скомпоновать исполняемый файл не получается. Что я не так делаю?
Записан

OlegSL

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 9
    • Мой блог
Re: Доступ к регистрам из Linux
« Ответ #5 : 19 Ноября, 2013, 18:48:41 »

А можно чуть подробнее описать ваши шаги?
Записан

Ziminets

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 64
Re: Доступ к регистрам из Linux
« Ответ #6 : 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. В итоге получил ошибку что файл не найден, причем непонятно какой, вроде как мой исполняемый.
Записан

OlegSL

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 9
    • Мой блог
Re: Доступ к регистрам из Linux
« Ответ #7 : 20 Ноября, 2013, 14:54:23 »

Возможно это проблемы при линковке программы. Попробуйте указать LDLIBS=-lsocketcan

P.S. Используете библиотеку: http://www.pengutronix.de/software/libsocketcan/download/ ?
Записан

Ziminets

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 64
Re: Доступ к регистрам из Linux
« Ответ #8 : 20 Ноября, 2013, 15:29:52 »

Разобрался!
В принципе все делал правильно, только не обратил внимание, что библиотека написана на C. Поэтому и получил проблему при линковке. Нужно было при включении h-файла указать, что библиотека сишная:
extern C
{
#include <libsocketcan.h>
}
А в файле проекта нужно указывать путь к h-файлу
INCLUDEPATH += путь_к_ltib/rootfs/includeи включить в проект саму библиотеку
LIBS += -Lпуть_к_ltib/rootfs/lib -lsocketcanПричем имя библиотеки пишется в сокращенном виде.
Записан