Здравствуйте.
Ситуация такая. Есть плата с процессором AT91SAM9G45, на плате имеется DDRAM и nand флешь. Загружаю в nand флешь проект bootstrap, потом свое приложение (загружаю через JTAG, среда IAR 6.30). Задача бутстрапа - скопировать мое приложение из флеши в DDRAM. Сразу первый вопрос который возникает- почему мое приложение не перезатирает бутстрап? Возможно флешь лоадер както определяет что это бутстрап и не затирает его? Смотрел файлы проекта флешь лоадера - функции Main нету, resetHandler не нашел, как и откуда оно стартует и по какому алгоритму работает так и не понял.
Проект бутстрапа тоже странно себя ведет -запускаю его в отладчике -пишет флешь не идентифицирована, проверял на ногах микрухи -сигналы есть (ALE,CLE,CS) но выдает она одни FF. Ежели закрыть отладчик и перестартануть проц, то все нормально работает -флешка определяется и пытается грузить приложение.
Но все бы ничего, да выходит какаято ерунда с моим приложением. Когда я его запускаю из-под отладчика в DDR памяти -то оно работает отлично. А если выхожу из отладки и перезапускаю проц, то приложение (при этом оно загружается бутстрапом) виснет спустя какоето время -т.е несколько трейс-логов от него успевают прийти -проходит инициализация периферии, выполняются некоторые действия с SD-картой и потом -тишина. При этом вижу что прерывания продолжают обрабатываться. Это возможно если проц вылетел в аборт?
Как бы выяснить что произошло с программой? Я обычно отлаживаюсь через JTAG, а тут работает только СОМ-порт, поэтому даже не знаю куда ткнуться. Как вы обычно поступаете в такой ситуации? Можно ли както заставить работать отладчик в этой загруженно бутстрапом программе?
И еще, когда в IARe (на флешь уже записан бутстрап) запускаю отладку в DDRAM c загрузкой приложения во флешь (стоит галка "использовать флешь лоадер") то вижу что DDRAM пустая -т.е ни бутстрап, ни IARовский CSPY ничего не загрузили в DDRAM, однако переход на начало DDRAM происходит, но прога ессно вылетает в аборт почти сразу. Если галку не ставлю, то начинается отладка в DDRAM и все нормально работает.
Мое предположение такое: ИАР заливает в СРАМ флешь лоадер который запускается, грузит во флешь приложение и делает переход на адрес DDRAM, которая оказывается пустая, т.к бутстрап в нее ничего не залил, т.к он не был запущен (ресета не было и ROM-овский загрузчик не был активирован). Тоже самое видимо происходит и при попытке запустить отладку бутстрапного проекта -он грузится во флешь и делает переход на адрес СРАМ, которая опять же оказывается пустая, так как ROM-овский загрузчик не был вызван (опять же, не было ресета). Я правильно мыслю?
Получается установка галки "испльзовать флешь лоадер" в ИАРе отменяет загрузку приложения в ОЗУ ?