Прежде всего, прошу прощения за это, я уже прочитал некоторые подобные проблемы, но ни одна из тем не ответила. А также я полный новичок в программировании встроенного linux, и это мой первый опыт использования linux, поэтому будьте вежливы, пожалуйста :)Ошибка сегментации при доступе к GPIO
Итак, моя проблема: я пытаюсь сделать базовое приложение для встроенной системы Linux (AT91SAM9260 mcu) с GPIO - мигающим светодиодом или некоторыми кнопками. Но когда я пытаюсь получить доступ к GPIO через их адрес (например, 0xE002C00C), программа показывает «Ошибка сегментации». То, что я нашел до сих пор, это означает, что Linux не позволит мне использовать память, к которой я пытаюсь получить доступ. Многие люди предполагают, что я должен написать свой собственный драйвер или что-то еще, но, как я уже сказал, я абсолютно новичок в этом, и я понятия не имею, что мне делать. Может кто-то помочь мне с этим? Пошаговые инструкции были бы замечательными.
Заранее спасибо, muliku.
вам необходимо использовать mmap() или написать драйвер для использования физической адресации. –
* «Но когда я пытаюсь получить доступ к GPIO через их адрес (например, xE002C00C)» * - Как давний пользователь SoC AT91SAM9260, этот (физический) адрес даже не выглядит действительным для ** любой ** периферийной системы регистр. – sawdust
@dwelch * «написать драйвер для использования физической адресации» * - драйвер устройства должен был бы ioremap() физический адрес, который по существу эквивалентен mmap(). CPU не может получить доступ к памяти с использованием физических адресов, пока включен MMU. – sawdust