|
|
  |
ARM, забегая вперёд... |
|
|
|
Nov 17 2010, 18:18
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414

|
Цитата(Zelepuk @ Nov 15 2010, 20:33)  Сложновато-сложновато, всё равно((
Например подёргать ногами на AVR можно просто (напримере IAR) DDRC = 255; PORTC = 255;
сколько не искал подобные констркукции для ARM... не нашёл((
Как осуществляется доступ к PA0... PA31, PB0... PB31 и т.д. (здаётся мне их настроить их на вывод тоже непрсото - одной строчкой необойтись)
P.S. Наверное нужно и впрям запастись мешком семечек и курить даташит.... В общем-то, там ничего сложного нет, просто в АРМе сложней первоначальная настройка, и в неё лучше вникнуть, а не копипастить откуда-то, не очень понимая точный смысл. Я использую AT91SAM9261, никаких трудностей не возникало, за исключением того, что первый раз, инициализируя DBGU, забыл отдать ему соответствующие ноги портов -- естественно, передача данных при этом не работала. ADD. Ну а если конкретно про дрыганье ногами, то имеется два варианта. 1. Для установки неких разрядов какого-либо порта записываются 1 в соответствующие разряды регистра PIO_SODR этого порта (те разряды, в которые записывается 0, не будут менять своё состояние). Для сброса разрядов производится запись единиц в соответствующие позиции регистра PIO_CODR. 2. Сброс-установка разрядов путём записи необходимых значений в порт PIO_ODSR. Именно этот режим эквивалентен изменению ног в AVRках, но нередко удобнее бывает способ 1: если в какие-то биты порта записывается 0, то соответствующие ноги просто не меняются, поэтому установить или сбросить конкретные ноги проще (не надо предварительно считывать состояние порта и проводить логические операции, чтобы установить-сбросить определённые биты).
Сообщение отредактировал SII - Nov 17 2010, 18:25
|
|
|
|
|
Nov 18 2010, 10:12
|
Знающий
   
Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464

|
Цитата(SII @ Nov 17 2010, 21:18)  В общем-то, там ничего сложного нет, просто в АРМе сложней первоначальная настройка, и в неё лучше вникнуть, а не копипастить откуда-то, не очень понимая точный смысл. Я использую AT91SAM9261, никаких трудностей не возникало, за исключением того, что первый раз, инициализируя DBGU, забыл отдать ему соответствующие ноги портов -- естественно, передача данных при этом не работала.
ADD. Ну а если конкретно про дрыганье ногами, то имеется два варианта.
1. Для установки неких разрядов какого-либо порта записываются 1 в соответствующие разряды регистра PIO_SODR этого порта (те разряды, в которые записывается 0, не будут менять своё состояние). Для сброса разрядов производится запись единиц в соответствующие позиции регистра PIO_CODR.
2. Сброс-установка разрядов путём записи необходимых значений в порт PIO_ODSR. Именно этот режим эквивалентен изменению ног в AVRках, но нередко удобнее бывает способ 1: если в какие-то биты порта записывается 0, то соответствующие ноги просто не меняются, поэтому установить или сбросить конкретные ноги проще (не надо предварительно считывать состояние порта и проводить логические операции, чтобы установить-сбросить определённые биты). спасибо!
|
|
|
|
|
Nov 19 2010, 14:45
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 2-04-07
Пользователь №: 26 703

|
Я тут сильно извиняюсь... По моему скромному мнению изучение АРМ9 нужно начинать не с вопроса "как ножками потрыгать" а с вопроса "какую операционную систему на этот чип поставить". Тогда не будет лишних вопросов как что грузить и как память инициализировать. Нужно придумать очень экзотическую задачу чтобы имело смысл лудить такую железку без ОС. У меня вот фантазии не хватает. Не надо ничего изобретать и приделывать к велосипеду квадратные колеса. У вас простая задача - берите 8-ми битную архитектуру. Что-то посложнее - АРМ7 и можно подумать о какой-нибудь риал-тайм ОС. А если вам захотелось АРМ9 с ММУ залудить - без операционной системы не обойтись. Он для этого и придуман. Идете на сайт производителя с вопросом "какую ОС вы мне можете предложить для этого железа".
|
|
|
|
|
Nov 19 2010, 17:03
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
tturist, тренируйте фантазию  У нас есть железка с WinCE на ARM9, там загрузчик полностью переписан и обвешан блекджеками и шл... излишествами. Цель - на производстве (да и у пользователя тоже) убедиться, что всё железо работает нормально. Ногодрыг там используется вовсю. Хотя основное применение железки, конечно, другое - крутить задачку под WinCE.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Nov 22 2010, 09:07
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 17-06-10
Из: МИНСК
Пользователь №: 57 975

|
Доброго времени суток! Может быть кто-нибудь сталкивался с ECC (Error Corrected Code Controller) в MCU AT91SAM9G45. Суть проблемы токова: в очищенный блок NAND FLASH пишу одну страницу и содержимое регистров ECC, а вот при чтении получаю мультибитовую ошибку.
Сообщение отредактировал NIKOLASIUS - Nov 22 2010, 09:08
--------------------
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
|
|
|
|
|
Nov 24 2010, 06:54
|
Участник

Группа: Участник
Сообщений: 46
Регистрация: 4-03-09
Из: Санкт-Петербург
Пользователь №: 45 656

|
Значит так, стала запускаться моя программа с помощью написанного загрузчика. Беда была вот какая - основная программа была скомпилирована для SDRAM, но чатсь функций была помещена в SRAM, сделано это было помещением конкретной функции в секцию, расположенную в ОЗУ. При прошивке программы непосредственно в SDRAM под IARом все работало корректно, однако при загрузке программы из флэш в SDRAM (с помощью написанного загрузчика) ОЗУшные функции, судя по всему, не помещались в нужные секции. Подскажите, может в IARе где-то чего-то указать дополнительно нужно или еще чего...Или функции в ОЗУ можно поместить только ручками, прописав их в стартапе?
|
|
|
|
|
Nov 24 2010, 09:02
|
Участник

Группа: Участник
Сообщений: 46
Регистрация: 4-03-09
Из: Санкт-Петербург
Пользователь №: 45 656

|
спрашиваю, потому что не понимаю, что в него еще нужно приписать. На сегодняшний день загрузчик инициализирует SDRAM, копирует код программы из флеш в SDRAM и переходит на адрес этой программы в SDRAM, но как дело обстоит с функциями основной программы, помещенными в SRAM, не понятно.
|
|
|
|
|
Nov 24 2010, 16:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(radistka @ Nov 24 2010, 12:02)  спрашиваю, потому что не понимаю, что в него еще нужно приписать. На сегодняшний день загрузчик инициализирует SDRAM, копирует код программы из флеш в SDRAM и переходит на адрес этой программы в SDRAM, но как дело обстоит с функциями основной программы, помещенными в SRAM, не понятно. Во flash у вас лежит, скорее всего, линейный bin-файл. Вы же должны знать, хотя бы, границы bss сегмента (чтобы его обнулить). Таким же образом, вы, по идее, должны знать границы вашего нестандартного (sram) сегмента, и, соответсвенно ручками скопировать этот сегмент по нужным адресам. Детали всего этого сильно зависят от вашего компилятора/линкера.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|