dio4 4 6 августа, 2023 Опубликовано 6 августа, 2023 (изменено) · Жалоба Вот кое-что... Из руководства BCM2835 ARM Peripherals видно, что: 1.2.3 ARM physical addresses Physical addresses start at 0x00000000 for RAM. 1.2.4 Bus addresses Software accessing RAM directly must use physical addresses (based at 0x00000000). Вроде попадаем... Physical addresses range from 0x20000000 to 0x20FFFFFF for peripherals. Virtual addresses in kernel mode will range between 0xC0000000 and 0xEFFFFFFF. Virtual addresses in user mode (i.e. seen by processes running in ARM Linux) will range between 0x00000000 and 0xBFFFFFFF. Peripherals (at physical address 0x20000000 on) are mapped into the kernel virtual address space starting at address 0xF2000000. Осталось понять, почему нельзя писать в 100, те в 64(16-ричн.). По архитектуре я совсем мало что...есть идеи парни? Изменено 6 августа, 2023 пользователем dio4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 6 августа, 2023 Опубликовано 6 августа, 2023 · Жалоба 5 минут назад, dio4 сказал: Вот кое-что... Из руководства BCM2835 ARM Peripherals видно, что: 1.2.3 ARM physical addresses Physical addresses start at 0x00000000 for RAM. Это всё не то, т.к. относится к логике работы железа (процессора), а вам нужно читать как ядро ОС (Linux) управляет памятью процесса. Это описано, например, здесь - https://habr.com/ru/companies/smart_soft/articles/185226/ и https://habr.com/ru/companies/smart_soft/articles/226315/. Пока вы не разберётесь с этими базовыми вещами, продолжать разговаривать бесполезно, т.к. мы с вами имеем совершенно разные контексты, в рамках которых обсуждаем озвученный в первом посте вопрос. Если вкратце, то чтобы программа могла обращаться по какому-либо адресу в адресном пространстве процесса (без SIGSEGV) этот адрес должен быть отображён на физическую страницу оперативной памяти. Если этого отображения нет (адресу из виртуального адресного пространства не сопоставлен адрес оперативной памяти системы), как в вашем случае, то происходит исключение и процесс аварийно завершается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dio4 4 6 августа, 2023 Опубликовано 6 августа, 2023 · Жалоба Хотя если верить этому https://gist.github.com/leiradel/67059c4aceea8fa564a5bc33b505f887 , то в user split 1 MB unmapped for illegal access exceptions. Поэтому и не дает туда писать, что используется для других целей. Если нет исправлений и добавлений, тогда считаю тему закрытой и всем спасибо. Если есть - буду рад обсудить конкретику. 4 минуты назад, makc сказал: Если вкратце, то чтобы программа могла обращаться по какому-либо адресу в адресном пространстве процесса (без SIGSEGV) этот адрес должен быть отображён на физическую страницу оперативной памяти. А это как понять тогда? "Software accessing RAM directly must use physical addresses (based at 0x00000000)." Потом, даже если все так, то обращение по адресу 64(с учетом memmap) куда конкретно нас адресует? Как это посмотреть, можете подсказать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 6 августа, 2023 Опубликовано 6 августа, 2023 · Жалоба 4 минуты назад, dio4 сказал: Хотя если верить этому https://gist.github.com/leiradel/67059c4aceea8fa564a5bc33b505f887 , то в user split 1 MB unmapped for illegal access exceptions. Поэтому и не дает туда писать, что используется для других целей. Если нет исправлений и добавлений, тогда считаю тему закрытой и всем спасибо. Если есть - буду рад обсудить конкретику. Здесь написано, что младший мегабайт не имеет отображения на физическую память (unmapped) и используется для обнаружения некорректных обращений (illegal access exceptions), например, по нулевому адресу в программе. Что в принципе логично. Это прекрасно согласуется с написанным мною выше. Причём на картинках в упомянутых мною статьях эта область также обозначена, как неимеющая отображения на физическую память. 9 минут назад, dio4 сказал: А это как понять тогда? "Software accessing RAM directly must use physical addresses (based at 0x00000000)." Вы из-под ОС не можете напрямую обращаться к физическим адресам оперативной памяти (без специальных усилий). Поэтому эта фраза не имеет совершенно никакого отношения к вашему случаю. В общем случае оперативная память (физически выполненная в виде микросхем на плате) располагается с нулевого адреса: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dio4 4 6 августа, 2023 Опубликовано 6 августа, 2023 · Жалоба Спасибо, вполне конкретно. Осталось только (если это возможно) подсказать, "обращение по адресу 64(с учетом memmap) куда конкретно нас адресует? Как это увидеть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 6 августа, 2023 Опубликовано 6 августа, 2023 · Жалоба 11 минут назад, dio4 сказал: Спасибо, вполне конкретно. Осталось только (если это возможно) подсказать, "обращение по адресу 64(с учетом memmap) куда конкретно нас адресует? Как это увидеть? Про это знает только ядро, пользователю про это знать не нужно. Поэтому простого пути нет, но есть интерфейсы ядра, позволяющие получить эту информацию: https://stackoverflow.com/questions/5748492/is-there-any-api-for-determining-the-physical-address-from-virtual-address-in-li Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dio4 4 6 августа, 2023 Опубликовано 6 августа, 2023 (изменено) · Жалоба Ну, что сказать, спасибо за конкретное и подробное разъяснение и за ваше время. Теперь буду знать, к кому обращаться. Еще раз спасибо. Как здесь поставить лайк или поблагодарить? Изменено 6 августа, 2023 пользователем dio4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 6 августа, 2023 Опубликовано 6 августа, 2023 · Жалоба 17 минут назад, dio4 сказал: Как здесь поставить лайк или поблагодарить? Пока никак. Такая возможность откроется после перехода в группу "Участники" после 30 постов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dio4 4 6 августа, 2023 Опубликовано 6 августа, 2023 · Жалоба 3 минуты назад, makc сказал: Пока никак. Такая возможность откроется после перехода в группу "Участники" после 30 постов. Ок, ну - спасибо человеческое еще раз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 6 августа, 2023 Опубликовано 6 августа, 2023 · Жалоба Вот ТСу на почитать: Ibanez_RF_Pervin_WJ_RaspberryPI_Assembler.pdf (а может уже читал)... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dio4 4 7 августа, 2023 Опубликовано 7 августа, 2023 (изменено) · Жалоба 9 часов назад, Obam сказал: Вот ТСу на почитать: Ibanez_RF_Pervin_WJ_RaspberryPI_Assembler.pdf (а может уже читал)... СПС брат, закину в мозк на досуге, если войдет )) а что думаешь по поводу "ARM System Developer’s Guide Designing and Optimizing System Software" Andrew N. Sloss, - я ее грызу вроде как. Изменено 7 августа, 2023 пользователем dio4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 7 августа, 2023 Опубликовано 7 августа, 2023 · Жалоба Трудно что-либо думать про книжицу с отметкой "The content that you requested has been blocked because of legal, abuse, malware or security reasons." на либгене - "...удивительное рядом, но нам оно - запрещено..." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanDrakes 1 8 августа, 2023 Опубликовано 8 августа, 2023 · Жалоба Работать с локальными переменными на ассемблере - та ещё морока. А в среде операционной системы - так вообще. Самое простое объяснение - память, которую видит программа (адресное пространство) никак не связана с реальным адресным пространством, потому что MMU в уже запущеной ОС работает с таблицами адресов (в простейшем случае) и при обращении к памяти по адресу 0xDEADBEEF (допустим), в начале идёт поиск по таблицам адресов, затем выбирается блок памяти, на который диапазон ссылается, после чего идёт попытка обращения к этой памяти (например получилась страница в 4к по адресам 0xFOODC000 ~ 0xFOODCFFF). Вам... действительно нужен ассемблер? Проще же написать программу на Си под малинку. Компилятор сделает большую часть работы за вас. Лично я ассемблером наигрался на AVR'ках. Больше не хочется писать ВЕСЬ код на нём. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dio4 4 8 августа, 2023 Опубликовано 8 августа, 2023 · Жалоба 7 часов назад, Obam сказал: Трудно что-либо думать про книжицу с отметкой "The content that you requested has been blocked because of legal, abuse, malware or security reasons." на либгене - "...удивительное рядом, но нам оно - запрещено..." Скажи куда - я тебе ее скину. Мне кажется, хорошая книжка. Вот ее описание https://www.amazon.com/ARM-System-Developers-Guide-Architecture/dp/1558608745(саму книгу я скину, скажи куда) 2 часа назад, AlanDrakes сказал: Вам... действительно нужен ассемблер? Добрый день. Очень нужен. Наш "отряд " пишет эмулятор RTOS для Qemu. Взяли за основу простые суперциклы и событийно-управляемые программы(если кратко). Я в отстающих, надо догонять отряд, - не все знаю, не все понимаю..раньше я был в проетах, где писали для STM32MP. Я занимался потсроением и поддержкрй 2 часа назад, AlanDrakes сказал: Вам... действительно нужен ассемблер? Добрый день. Очень нужен. Наш "отряд " пишет эмулятор RTOS для Qemu. Взяли за основу простые суперциклы и событийно-управляемые программы(если кратко). Я в отстающих, надо догонять отряд, - не все знаю, не все понимаю..раньше я был в проетах, где писали для STM32MP. Я занимался построением и поддержкой дистрибутива, некоторыми драйверами(gps модем и по мелочи). Очень нужен, именно в разрезе архитектуры и взаимодействия компонентов системы. Как-то так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dio4 4 8 августа, 2023 Опубликовано 8 августа, 2023 (изменено) · Жалоба 2 часа назад, AlanDrakes сказал: Вам... действительно нужен ассемблер? затроилось что-то аж...прошу прощения. Не пойму, как удалить лишнее... Изменено 8 августа, 2023 пользователем dio4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться