|
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
|
|||||||||||
Указатели и mmap() линукс01.12.2014, 14:19. Показов 6306. Ответов 10
Метки нет (Все метки)
Помогите разобраться с "затупом". Короче ситуация следующая:
Есть арм процессор под imbiddid linux, который управляет ПЛИСиной. Как из под линукса добраться до gpio? Очень просто, для этого используют функции mmap(). Примерно так:
И ура на входе начали появляться какие то цифры. Правда не на долго, ибо уже на следующую итерацию нихрена не заработало. Опытным удалось установить что, везде в инициализации должно быть (u_int8_t *)virtual_base. А вот по ходу программы городить преобразование указателей *(u_int32_t *) надо только для 32х разрядных портов, а вот там где вывод 1 надо оставить просто, например *strobe_base . Понимаю что вопрос, возможно, из сферы телепатии, но что не правильно было в первом случае понять не могу. ЗЫ Писал на C++ в Qt 5.2.
0
|
|||||||||||
| 01.12.2014, 14:19 | |
|
Ответы с готовыми решениями:
10
Си/Си++/Линукс, тесты на тему управления памятью и работе с ос линукс, папками и каталогами mmap() failed Mmap в nasm |
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
| 01.12.2014, 14:35 | |
|
Кстати, в линуксе есть и нормальный драйвер GPIO. Не обязательно через указатель на память обращаться.
0
|
|
|
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
|
|
| 01.12.2014, 14:46 | |
|
Да есть, но конкретно в этой сборке его выкинули. А пересобрать ядро... я до этого еще не дорос.
0
|
|
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
| 01.12.2014, 14:48 | |
|
я мог что-то неправильно понять, но делая
(u_int32_t *)virtual_base + nnn мы смещаемся на nnn 32-бит слов вперед. а надо наверняка смещаться на nnn байт. вот это u_int32_t *data_in_base= (u_int8_t *)virtual_base + nnn *data_in_base = xxx не решит проблему?
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 01.12.2014, 15:10 | ||
В ней nnn должно быть кратно четырём.
0
|
||
|
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
|
||||||||
| 01.12.2014, 15:11 | ||||||||
Я просто понимал это код, как присвоить указателю на 32 разрядное число, адрес порта, а сколько там надо взять байт(слов) для сдвига компилятор сам разберется.
То есть как я понимаю сдвиг virtual_base всегда должен быть приведен к байту. Хотя если совсем честно, что делает функция mmap я не очень догоняю.
0
|
||||||||
|
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 454
|
|
| 01.12.2014, 15:23 | |
|
Ваша система с mmu?
В системах с mmu память устройств отделена от пространства пользователя, управляет этим как раз mmap system. Можно начать читать тут: http://www.xml.com/ldd/chaptir/book/ch13.html При no-mmu (ucLinux и др) mmap() тоже бывает, но это отдельная тема.
0
|
|
|
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
|
||||||||||||
| 01.12.2014, 15:27 | ||||||||||||
В ней nnn должно быть кратно четырём. Спасибо кажись не много начинает прояснятся. Видимо, когда первый раз у меня кое как начало работать(когда я везде проставил (u_int8_t *)virtual_base ) , я оставил объявление указателей без изменений:
*( u_int32_t *)strobe_base =1 -> *strobe_base =1; temp =* data_in_base -> temp =*( u_int32_t *) data_in_base; Короче, как тут не вспомнить известную цитату про указатели и выстрел в ногу. Но касательно 8-ми разрядной m_tid_base, реально на плате 10 светодиодов. А потому конструкция * m_tid_base=0хFF зажигает только первые 8. А что бы зажечь остальные надо *( u_int32_t *)m_tid_base=0х4FF.
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
|
||
| 01.12.2014, 15:29 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|||
| 01.12.2014, 16:47 | |||
В ней nnn должно быть кратно четырём. си - вообще опасный язык. надо понимать, что делаешь.
0
|
|||
|
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
|
||||||
| 01.12.2014, 17:06 | ||||||
|
Ну так :
0
|
||||||
| 01.12.2014, 17:06 | |
|
Помогаю со студенческими работами здесь
11
mmap запись в отображения Подскажите пожалуйста как правильно Grub в линукс Федоре настроить, чтобы ещё и второй линукс Мандриву можно было загружать. ImportError: cannot import name 'PROT_READ' from 'mmap' Ошибка при указании offset в mmap Работа процессов с общим файлом (mmap) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|