STM32 новичку в ARM что к чему
jcxz, не называйте "общепринятыми" собственные заморочки. Память распределяется или статически компилятором/компоновщиком или динамически во время выполнения программы. Третьего не дано. А уже способ динамического распределения памяти может быть произвольным.
- Реклама
Не-а! На самом деле интерфейс - это междумордие (дословно).ПростоНуб писал(а):Интерфейс - это совокупность программно-аппаратных средств, служащих для взаимодействия программ или иных компонентов ИС друг с другом
То есть "Интерфейс" - это слишком широкое слово и, если из контекста не следует однозначно, о чем идет речь, то надо уточнять.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
afz, а что "Не-а"? Программа не программно-аппаратное средство? Или аппаратура не компонент ИС? )))
Программный интерфейс и аппаратный интерфейс - это разные вещи.
Иван Сусанин - первый полупроводник 
Myp3ik, я бы не сказал. Если у нас есть интерфейс, обеспечивающий взаимодействие двух программ, вне зависимости от того, выполняются они на одном ядре или на разных компьютерах сети, то это программный интерфейс или аппаратный?
- Реклама
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
Вопрос по ld-скрипту. Нужно мне свободную память так распределить: в первых 2кБ хранятся настройки, а во всей остальной — логи.
Пишу:
Получаю в бинарнике: секция myvars лежит на смещении 0x3800, а секция logs — на смещении 0x4400 (а должна бы на 0x4000).
Но если я в описании myvars пишу
то секция как раз 2кБ занимает!
Что это за чудеса в решете? Вообще не понимаю, как работают ld-скрипты!
Пишу:
Код: Выделить всё
.myvars :
{
. = ALIGN(1024);
KEEP(*(.myvars));
. = . + 2K;
} > rom
.logs :
{
. = ALIGN(1024);
KEEP(*(.logs))
} > rom
Но если я в описании myvars пишу
Код: Выделить всё
. = . + 1000;Что это за чудеса в решете? Вообще не понимаю, как работают ld-скрипты!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
ПростоНуб, взаимодействовать они могут хоть через десяток программных и аппаратных интерфейсов.
Иван Сусанин - первый полупроводник 
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
А еще больше непонятного возникло при попытке объявить переменные:
Прошил МК, смотрю: адрес секции = 8003800, а в остальных переменных бред какой-то: __varsstart=0x2CAB, а в __varsend=0xAABBCCDD — вообще какое-то дикое (может, отрицательное?) число!
Так, здесь я просто неправильно вывод делал: я написал
и выводил их содержимое. Но, глянув elf, увидел, что эти переменные лежат по нужным мне адресам, т.е. при выводе нужно было печатать не содержимое, а адрес переменной! (в том числе и длину, которая у меня определена как PROVIDE(_varslen = __varsend - __varsstart); ).
Теперь остается лишь разобраться, какого черта упомянутая конструкция имеет длину 2кБ, а не 1кБ, как следовало бы ожидать логически (ведь смещение +1000 все равно лежит в пределах 1кБ, и следующее выравнивание должно было лишь подвинуть к началу ближайшего килобайта).
UPD: дошло до меня! Я запихивал в эту секцию инициализатор структуры - 44 байта. Потом к этим 44 прибавлялись еще 1000 байт, и все выходило уже во вторую страницу! Вот и занимало суммарно 2кБ. Без инициализации все четко!
Код: Выделить всё
.myvars :
{
. = ALIGN(1024);
__varsstart = ABSOLUTE(.);
KEEP(*(.myvars));
. = . + 1000;
. = ALIGN(1024);
__varsend = ABSOLUTE(.);
} > rom
Так, здесь я просто неправильно вывод делал: я написал
Код: Выделить всё
extern uint32_t _varslen, __varsstart, __varsend;Теперь остается лишь разобраться, какого черта упомянутая конструкция имеет длину 2кБ, а не 1кБ, как следовало бы ожидать логически (ведь смещение +1000 все равно лежит в пределах 1кБ, и следующее выравнивание должно было лишь подвинуть к началу ближайшего килобайта).
UPD: дошло до меня! Я запихивал в эту секцию инициализатор структуры - 44 байта. Потом к этим 44 прибавлялись еще 1000 байт, и все выходило уже во вторую страницу! Вот и занимало суммарно 2кБ. Без инициализации все четко!
Последний раз редактировалось Eddy_Em Чт сен 19, 2019 10:59:46, всего редактировалось 2 раза.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
Myp3ik, что и требовалось доказать )
Разделяем протоколы по стеку, но не интерфейсы по программной или аппаратной реализации
Разделяем протоколы по стеку, но не интерфейсы по программной или аппаратной реализации
ПростоНуб, ничего не требовалось доказывать. Разделяйте как хотите.
Иван Сусанин - первый полупроводник 
Myp3ik, Вы писали?
И сами же потом сказали, что один конкретный интерфейс в моем примере реализуется черезMyp3ik писал(а):Программный интерфейс и аппаратный интерфейс - это разные вещи.
О чем еще спич?Myp3ik писал(а):хоть через десяток программных и аппаратных интерфейсов
Одно другому не мешает. Вот, так сказать, для общего развития https://www.youtube.com/watch?v=0GIcP6xvW5Q
Смотреть всем
Смотреть всем
Иван Сусанин - первый полупроводник 
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
Теперь такой вопрос: может, кто-то успешно работал со светодиодными панелями P10 (вот такими)? Я пока даже не представляю себе, как к этому подойти! Может, SPI использовать для выдачи данных и одновременного тактирования?
А как решить проблему отсутствия мозга у китайца, который это придумал? Ведь вместо того, чтобы сделать нормальный параллельный интерфейс и за каждый такт сдвигать все изображение влево, у них какая-то дикая чересстрочная развертка (да еще и с двухбитным управлением!)... Т.е. для использования здесь DMA нужно будет из буфера экрана распихивать данные в четыре раздельных буфера! А потом уже запускать конечный автомат... Жуть какая!
А как решить проблему отсутствия мозга у китайца, который это придумал? Ведь вместо того, чтобы сделать нормальный параллельный интерфейс и за каждый такт сдвигать все изображение влево, у них какая-то дикая чересстрочная развертка (да еще и с двухбитным управлением!)... Т.е. для использования здесь DMA нужно будет из буфера экрана распихивать данные в четыре раздельных буфера! А потом уже запускать конечный автомат... Жуть какая!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
ну, что из вас разработчик никудышний мы и по недельным мучениям с 1-wire в курсе. но что до такой степени все плохо - это новость. люди на attiny2313 этими модулями управляют, а вам без DMA никак?!Eddy_Em писал(а):Т.е. для использования здесь DMA нужно будет из буфера экрана распихивать данные в четыре раздельных буфера! А потом уже запускать конечный автомат... Жуть какая!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
ARV, хватит уже бесполезные "советы" раздавать!
Абдуринщики пусть ногами дрыгают, а мне работать надо! Передавать по SPI три байта с паузами в 10мс можно и без DMA. Но вот если этих байт штук 30, а скорость передачи всего лишь 100кГц, то все, что МК сможет делать — это передавать данные!
Мужики знакомые пытались на абдурине ногодрыгом сделать. Получилось ужасно.
[offtop], кстати, а вы-то сами сколько убили на 1-wire, с нуля приступая к написанию кода? И как решили: на таймере с DMA или на UART с DMA?[/offtop]
Абдуринщики пусть ногами дрыгают, а мне работать надо! Передавать по SPI три байта с паузами в 10мс можно и без DMA. Но вот если этих байт штук 30, а скорость передачи всего лишь 100кГц, то все, что МК сможет делать — это передавать данные!
Мужики знакомые пытались на абдурине ногодрыгом сделать. Получилось ужасно.
[offtop], кстати, а вы-то сами сколько убили на 1-wire, с нуля приступая к написанию кода? И как решили: на таймере с DMA или на UART с DMA?[/offtop]
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
мне ни DMA не требуется, ни UART...Eddy_Em писал(а):И как решили: на таймере с DMA или на UART с DMA?
[offtop]Eddy_Em, а в ваших проектах лунный календарь есть?[/offtop]
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
ARV, опять флуд? Я все-таки жду чего-нибудь по теме, а не советов в стиле "ножками подрыгай, чо ты не как пацан?".
[offtop]Что такое "лунный календарь"? И при чем здесь астрофизика?[/offtop]
[offtop]Что такое "лунный календарь"? И при чем здесь астрофизика?[/offtop]
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
Eddy_Em, https://www.youtube.com/watch?v=CxNbqvJVOtQ может чем поможет
Иван Сусанин - первый полупроводник 
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
Гуглил. Долго гуглил. Только подобное дерьмо — то на SPL, то на калокубе — и находилось...
Народ реально не хочет думать. А хочет решать проблемы не эффективным способом, а экстенсивным! По ссылке неудобная навигация по коду, поэтому я даже не нашел, где автор запрятал исходники!..
Народ реально не хочет думать. А хочет решать проблемы не эффективным способом, а экстенсивным! По ссылке неудобная навигация по коду, поэтому я даже не нашел, где автор запрятал исходники!..
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ


