Перейти к содержанию
    

Ну взяла бы уважаемая радистка и сделала в своей программе dump первых 64 байт sram с 0-го адреса. По крайней мере многое прояснится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сложновато-сложновато, всё равно((

 

Например подёргать ногами на 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем-то, там ничего сложного нет, просто в АРМе сложней первоначальная настройка, и в неё лучше вникнуть, а не копипастить откуда-то, не очень понимая точный смысл. Я использую AT91SAM9261, никаких трудностей не возникало, за исключением того, что первый раз, инициализируя DBGU, забыл отдать ему соответствующие ноги портов -- естественно, передача данных при этом не работала.

 

ADD. Ну а если конкретно про дрыганье ногами, то имеется два варианта.

 

1. Для установки неких разрядов какого-либо порта записываются 1 в соответствующие разряды регистра PIO_SODR этого порта (те разряды, в которые записывается 0, не будут менять своё состояние). Для сброса разрядов производится запись единиц в соответствующие позиции регистра PIO_CODR.

 

2. Сброс-установка разрядов путём записи необходимых значений в порт PIO_ODSR. Именно этот режим эквивалентен изменению ног в AVRках, но нередко удобнее бывает способ 1: если в какие-то биты порта записывается 0, то соответствующие ноги просто не меняются, поэтому установить или сбросить конкретные ноги проще (не надо предварительно считывать состояние порта и проводить логические операции, чтобы установить-сбросить определённые биты).

 

спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тут сильно извиняюсь...

По моему скромному мнению изучение АРМ9 нужно начинать не с вопроса "как ножками потрыгать" а с вопроса "какую операционную систему на этот чип поставить". Тогда не будет лишних вопросов как что грузить и как память инициализировать. Нужно придумать очень экзотическую задачу чтобы имело смысл лудить такую железку без ОС. У меня вот фантазии не хватает. Не надо ничего изобретать и приделывать к велосипеду квадратные колеса.

У вас простая задача - берите 8-ми битную архитектуру.

Что-то посложнее - АРМ7 и можно подумать о какой-нибудь риал-тайм ОС.

А если вам захотелось АРМ9 с ММУ залудить - без операционной системы не обойтись. Он для этого и придуман. Идете на сайт производителя с вопросом "какую ОС вы мне можете предложить для этого железа".

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

tturist, тренируйте фантазию :)

 

У нас есть железка с WinCE на ARM9, там загрузчик полностью переписан и обвешан блекджеками и шл... излишествами.

Цель - на производстве (да и у пользователя тоже) убедиться, что всё железо работает нормально.

 

Ногодрыг там используется вовсю.

Хотя основное применение железки, конечно, другое - крутить задачку под WinCE.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тут сильно извиняюсь...

По моему скромному мнению изучение АРМ9 нужно начинать не с вопроса "как ножками потрыгать" а с вопроса "какую операционную систему на этот чип поставить".

 

Вы в этом вопросе идете на поводу у сторонников теории "главное побыстрее чего-нибудь сляпать, а потом...". Вы, к примеру, не смотрели как в Linux'e через стандартную драйверную обвязку сделано "ногодрыгание"? Вы посмотрите, может свое мнение и несколько поменяете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а с вопроса "какую операционную систему на этот чип поставить"

Когда хоть одну железку своими руками (а не руками производителей китов) сделаете, ваше мнение изменится.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тут сильно извиняюсь...

По моему скромному мнению изучение АРМ9 нужно начинать не с вопроса "как ножками потрыгать" а с вопроса "какую операционную систему на этот чип поставить". Тогда не будет лишних вопросов как что грузить и как память инициализировать. Нужно придумать очень экзотическую задачу чтобы имело смысл лудить такую железку без ОС. У меня вот фантазии не хватает. Не надо ничего изобретать и приделывать к велосипеду квадратные колеса.

У вас простая задача - берите 8-ми битную архитектуру.

Что-то посложнее - АРМ7 и можно подумать о какой-нибудь риал-тайм ОС.

А если вам захотелось АРМ9 с ММУ залудить - без операционной системы не обойтись. Он для этого и придуман. Идете на сайт производителя с вопросом "какую ОС вы мне можете предложить для этого железа".

 

Линукс реалтаймовский - не проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если вам захотелось АРМ9 с ММУ залудить - без операционной системы не обойтись.

 

Совсем уж неясное утверждение. Что-то такого фантастического нужно для инициализации D- и I- кешей, к примеру, что не катит без ОС?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток!

Может быть кто-нибудь сталкивался с ECC (Error Corrected Code Controller) в MCU AT91SAM9G45.

Суть проблемы токова: в очищенный блок NAND FLASH пишу одну страницу и содержимое регистров ECC, а вот при чтении получаю мультибитовую ошибку.

Изменено пользователем NIKOLASIUS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значит так, стала запускаться моя программа с помощью написанного загрузчика.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значит так, стала запускаться моя программа с помощью написанного загрузчика.

 

Странное дело. Вы ведь сами написали загрузчик из flash в sdram? Что же вы тогда спрашиваете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спрашиваю, потому что не понимаю, что в него еще нужно приписать. На сегодняшний день загрузчик инициализирует SDRAM, копирует код программы из флеш в SDRAM и переходит на адрес этой программы в SDRAM, но как дело обстоит с функциями основной программы, помещенными в SRAM, не понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спрашиваю, потому что не понимаю, что в него еще нужно приписать. На сегодняшний день загрузчик инициализирует SDRAM, копирует код программы из флеш в SDRAM и переходит на адрес этой программы в SDRAM, но как дело обстоит с функциями основной программы, помещенными в SRAM, не понятно.

 

Во flash у вас лежит, скорее всего, линейный bin-файл. Вы же должны знать, хотя бы, границы bss сегмента (чтобы его обнулить). Таким же образом, вы, по идее, должны знать границы вашего нестандартного (sram) сегмента, и, соответсвенно ручками скопировать этот сегмент по нужным адресам. Детали всего этого сильно зависят от вашего компилятора/линкера.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все функции __ramfunc перекачиваются в SRAM в процессе инициализации main (это делает за вас компилятор).

Но для этого у вас должно быть верное определение SRAM в линкерном файле.

Если там все нормально, то проверьте, на месте ли находится SRAM.

Т.е. хто делает ремап и делает ли вообще. Сам компилятор этого делать не станет.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...