-
- Проверила MPU (memory protection unit) - у меня он выключен. - Kceния(17.09.2020 09:11)
- Посмотрите в map-файле в какую SRAM линкер разместил этот массив.
Затем по RM в Table 3. Bus-master-to-bus-slave interconnect
проверьте может ли туда DMA добраться. Я бы с этого начал. - VladislavS.(17.09.2020 08:50)
- У меня одна SRAM - по адресу 0x2000. Да у меня и массивов-то кот
наплакал - 16 байт. - Kceния(17.09.2020 08:52)
- А теперь посмотрите Table 7. Memory map and default device memory
area attributes. 0x2000 это DTCM, до которой у DMA руки коротки
дотянуться. - VladislavS.(17.09.2020 09:26)
- Вот кстати да, в H7 перекроили memory map, классически SRAM идет с
адреса 0x2000'0000, а в H7 c 0x3000'0000. Сразу возникает вопрос,
"как оно туда попало?". Нужно в скрипте линкера смотреть, куда
релоцируется секция data. - evgeniy1294(17.09.2020 11:55)
- Ваша идея была хороша, но к сожалению она не проходит. Загрузчик
(читать память он тоже умеет) показывает наличие RAM лишь в области
0x20000000-0x2001FFFF и нигде больше. Даташит с этим согласен, с
той лишь разницей, что области, обведенные красным контуром,
загрузчик не читает. Кроме того, объем этих областей маловат, чтобы
размещать в них сегмент данных, а тем паче стек. Да и для самого
этого MK даже реклама больше, чем 128К RAM, не обещает. Причем, все
они находятся Kceния(116 знак., 18.09.2020 00:10, картинка)
- С моей идеей все хорошо - они выключены при старте: evgeniy1294(1 знак., 18.09.2020 00:15, картинка)
- Вот и пусть остаются выключенными - мне в этих зонах данные не
разместить. - Kceния(18.09.2020 01:12)
- С чего это вдруг? - evgeniy1294(18.09.2020 01:39)
- А отчего бы вдруг DMA должен там заработать? У него разве тяга к
экзотическим местам? На всех контроллерах люди работают через DMA в
обычной памяти, а не через ухо. Если бы так было, то уже давно бы
стон стоял на весь интернет. Kceния(100 знак., 18.09.2020 02:11)
- То есть, RM на чип вам не указ? Посмотрите архитектуру шин - DTCM
подключена напрямую к ядру Cortex-M7 и никто больше к ней доступ не
имеет. Положите туда стек(стеки), она для этого лучше всего
предназначена. Под сегменты данных используйте 0х3000'0000 и выше,
это и есть "обычная" память в этом чипе. Всё с картинками разжевали
же уже. VladislavS.(180 знак., 18.09.2020 06:39)
- Слепой не может видеть, глухой не может слышать, Ксения не может. - evgeniy1294(18.09.2020 11:16)
- То есть, RM на чип вам не указ? Посмотрите архитектуру шин - DTCM
подключена напрямую к ядру Cortex-M7 и никто больше к ней доступ не
имеет. Положите туда стек(стеки), она для этого лучше всего
предназначена. Под сегменты данных используйте 0х3000'0000 и выше,
это и есть "обычная" память в этом чипе. Всё с картинками разжевали
же уже. VladislavS.(180 знак., 18.09.2020 06:39)
- А отчего бы вдруг DMA должен там заработать? У него разве тяга к
экзотическим местам? На всех контроллерах люди работают через DMA в
обычной памяти, а не через ухо. Если бы так было, то уже давно бы
стон стоял на весь интернет. Kceния(100 знак., 18.09.2020 02:11)
- С чего это вдруг? - evgeniy1294(18.09.2020 01:39)
- Вот и пусть остаются выключенными - мне в этих зонах данные не
разместить. - Kceния(18.09.2020 01:12)
- С моей идеей все хорошо - они выключены при старте: evgeniy1294(1 знак., 18.09.2020 00:15, картинка)
- Ваша идея была хороша, но к сожалению она не проходит. Загрузчик
(читать память он тоже умеет) показывает наличие RAM лишь в области
0x20000000-0x2001FFFF и нигде больше. Даташит с этим согласен, с
той лишь разницей, что области, обведенные красным контуром,
загрузчик не читает. Кроме того, объем этих областей маловат, чтобы
размещать в них сегмент данных, а тем паче стек. Да и для самого
этого MK даже реклама больше, чем 128К RAM, не обещает. Причем, все
они находятся Kceния(116 знак., 18.09.2020 00:10, картинка)
- Вот кстати да, в H7 перекроили memory map, классически SRAM идет с
адреса 0x2000'0000, а в H7 c 0x3000'0000. Сразу возникает вопрос,
"как оно туда попало?". Нужно в скрипте линкера смотреть, куда
релоцируется секция data. - evgeniy1294(17.09.2020 11:55)
- А теперь посмотрите Table 7. Memory map and default device memory
area attributes. 0x2000 это DTCM, до которой у DMA руки коротки
дотянуться. - VladislavS.(17.09.2020 09:26)
- У меня одна SRAM - по адресу 0x2000. Да у меня и массивов-то кот
наплакал - 16 байт. - Kceния(17.09.2020 08:52)