реклама на сайте
подробности

 
 
> Компиляция ПО под embedded. Непонятно как поступить., Как компилироваться - если используются функции ядра
Atridies
сообщение Jul 31 2015, 06:20
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 445
Регистрация: 7-02-05
Из: Зеленоград
Пользователь №: 2 468



Под плату SBC8600 (AM3359, Angstrom Linux) делаю программу. Есть Toolchain, и есть tools: для сборки ядра, u-boot и пр. под эту плату.

Пока используются стандартные функции Си - то все нормально: ПО компилится Toolchain-ом, нормально запускается и работает.
Но сейчас понадобился прямой доступ к регистрам микроконтроллера. Хочу сделать это так:
Код
base = ioremap(ADDR, SIZE);
__raw_writel(base+0x08F0, DATA);
x = __raw_readl(base+0x08F0);


Но этот код не хочет компилироваться.

Эти функции - принадлежат ядру и находятся в файлах: /arch/arm/include/asm/io.h. В самой Toolchain - нету такого файла и нету таких функций. Оно наверное и понятно - Toolchain вряд ли поддерживает функции ядра.
Подключил к своему проекту h-файл из tools для сборки ядра - все равно не компилится: у меня ведь проект ядра не компилируется вместе с программой.

Что делать - не знаю. Как вообще компилироваться - если используются функции ядра ?


P.S. Пробовал сделать это через /dev/mem и mmap - все получается, но работает только на чтение. Записать не получается.

Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Atridies
сообщение Jul 31 2015, 19:44
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 445
Регистрация: 7-02-05
Из: Зеленоград
Пользователь №: 2 468



Днем у меня доступа к сорцам не было sm.gif.

Ваш код - только читает из памяти. Это у меня тоже получается. У меня писАть не получается.
Go to the top of the page
 
+Quote Post
Jury093
сообщение Jul 31 2015, 20:43
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(Atridies @ Jul 31 2015, 22:44) *
Днем у меня доступа к сорцам не было sm.gif.
Ваш код - только читает из памяти. Это у меня тоже получается. У меня писАть не получается.

вот так пишу
Код
    data = *(int*)(mapped_base1+0x0c);
    data = data & 0xffffdbff;
    *(int*)(mapped_base1+0x0c) = data;
    printf("MFSEL     =%08X\n",data);

это отладочный код, я его таскаю по всем платформам, всегда работает..

Цитата(Atridies @ Jul 31 2015, 10:44) *
А как писать и компилировать драйверы ? Как писАть сами драйверы - я читал несколько статей, думаю разберусь.
А вот как компилить (Cross Compilatioin)? Надо использовать tools для сборки ядра ?

я с нуля драйверы не писал, но знаю пару вариантов:
- в дереве исходников своего ядра находится близкоподходящий драйвер под свои нужды, клонируется под другим именем и прописывается в конфигурацию, потом меняется функционал под свое железо или алгоритм
- многие компании-производители, в частности сетевых железяк, практикуют выкладывать пакет с исходниками драйверов под свои адаптеры/сетевые чипы - архив разворачивается, внутри правятся пути до исходников текущего ядра, далее сборка кросскомпилятором и получается модуль драйвера *.ko, который можно подгрузить в ядро

для написания с нуля, вместо клонирования, создаете свой сишный файл в подходящем разделе дерева драйверов, прописываете в конфигурацию, потом долго и нудно изобретаете свои код, для обмена данными между железом и юзерспейсом, *.ko - профит..

в общем случае сетапиться линукс система (реальная или в виртуалке), на нее разворачивается дерево исходников ядра и архив с кросскомпилятором (aka тулчейн). в частности, для ам3359 можно раздобыть все в одном флаконе на ti.com или профильных форумах/комьюнити..
если накопитель на таргете (ам3359) большой и шустрый, то ядро можно собрать прямо в системе, не заморачиваясь х86 хостом и КК..

Цитата
А вот как компилить (Cross Compilatioin)?

не вижу смысла пересказывать 100 раз описанное, почитайте на том же ti.com местную twiki для am3359
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 15:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016