Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR Cstartup
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
An@BoLiK
Помогите начинающему!
Столкнулся с такой проблемой: есть исходник мигалки светодиодов, поставлялся с диском платы 91SAM7S64 (плата простенькая), так вот этот пример работает только через отладчик через jtag (RAM-debug),после прошивки через SAB-BA или H-JTAG ничего не работает, а пример с сайта атмел BASIC (тоже работа с портом i\o) работает как через отладчик так и при прошивке через SAM-BA или H-JTAG. различия в этих проектах только то ч то у атмеловского явно переопределен Cstartup файл. Все ли и всегда ли создают свой cstartup файл для реальных проектов? или это не изза него?




(2 примера для сравнения)Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
Calculator
Цитата(An@BoLiK @ Apr 28 2007, 11:48) *
Все ли и всегда ли создают свой cstartup файл для реальных проектов? или это не изза него?

Вполне может быть именно из-за cstartup и еще из-за .xcl-файла, в котором прописаны адреса RAM и ROM. Свой cstartup создают не все и не всегда, но ИМХО в большинстве случаев. Для начала можно взять этот файл из того примера, который заработал. Но рекомендую с этим файлом разобраться, просмотреть что и как он делает. В этом файле проводится установка стеков всех режимов (в примерах может и не всех), инициализация переменных, вызов подпрограммы начальной инициализации (в ней нужно выполнить то, что необходимо сразу после сброса - выключение watchdog, инициализация портов, переключение на высокую скорость исполнения программы и т.п.)
Сергей Борщ
Цитата(An@BoLiK @ Apr 28 2007, 07:48) *
Все ли и всегда ли создают свой cstartup файл для реальных проектов?
Ни в одном из своих проектов не создавал своего cstartup. Потому что если его не подключать специально, то будет подлинкован библиотечный, которого хватает в 99.99% случаев. Поэтому считаю подключение своего cstartup без крайней необходимости вредным - библиотечный на 100% работает а самопальный - потенциальный источник ошибок. Про настройку проекта для работы из RAM/ROM почитайте тут
zltigo
Цитата(Сергей Борщ @ Apr 29 2007, 12:35) *
Ни в одном из своих проектов не создавал своего cstartup.

Ни в одном из своих проектов не использовал стандартный startup smile.gif, но тем не менее Сергей абсолютно прав никаких причин не использовать стандарный для мигалки, нет. Когда почувствуете, что Вам чего-то не хватает - тогда и берете стандартный в качестве отправной точки и вперед.
AlexandrY
Так у вас же в проекте вообще startup-а нет, типа IAR сам че хочет подставляет.
Ну ладно можно не изменять, но подключить явно и знать что в нем находится всетаки стоило бы.
А проблема скорее всего, что у вас при старе отладки через wiggler выполняется стартовый макрос, который, естественно, не выпоняется при старте прошитой программы.

Цитата(An@BoLiK @ Apr 28 2007, 09:18) *
Помогите начинающему!
Столкнулся с такой проблемой: есть исходник мигалки светодиодов, поставлялся с диском платы 91SAM7S64 (плата простенькая), так вот этот пример работает только через отладчик через jtag (RAM-debug),после прошивки через SAB-BA или H-JTAG ничего не работает, а пример с сайта атмел BASIC (тоже работа с портом i\o) работает как через отладчик так и при прошивке через SAM-BA или H-JTAG. различия в этих проектах только то ч то у атмеловского явно переопределен Cstartup файл. Все ли и всегда ли создают свой cstartup файл для реальных проектов? или это не изза него?
(2 примера для сравнения)Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
An@BoLiK
так и не разобрался, может кто нибудь скинуть простенький работающий проект который работает после прошивки (без startup'a).
Сергей Борщ
Цитата(An@BoLiK @ Apr 29 2007, 20:03) *
так и не разобрался, может кто нибудь скинуть простенький работающий проект который работает после прошивки (без startup'a).
http://sourceforge.net/project/showfiles.php?group_id=181958 возьмите там файл scmRTOS.3-00.arm7.AT91SAM7.IAR_4-30.zip В нем проекты, которые работают как из RAM так и из флеш. Проекты проверены, работают. Возможно придется изменить тип отладчика (там стоит j-link).
An@BoLiK
Цитата(Сергей Борщ @ Apr 29 2007, 21:53) *
http://sourceforge.net/project/showfiles.php?group_id=181958 возьмите там файл scmRTOS.3-00.arm7.AT91SAM7.IAR_4-30.zip В нем проекты, которые работают как из RAM так и из флеш. Проекты проверены, работают. Возможно придется изменить тип отладчика (там стоит j-link).


smile.gif да но это несовсем простенький проект, (до ОС мне еще как до Киева.....)
Сергей Борщ
Цитата(An@BoLiK @ Apr 29 2007, 21:21) *
smile.gif да но это несовсем простенький проект, (до ОС мне еще как до Киева.....)
Выкиньте все файлы исходников кроме main.cpp, в нем оставьте main() и __low_level_init() - получите заготовку для любого проекта.
IgorKossak
Цитата(An@BoLiK @ Apr 30 2007, 00:21) *
...до ОС мне еще как до Киева...

А это не так далеко как Вам кажется.
В обоих случаях.
Было бы терпение прочесть описание.
XsanyaX
Цитата(An@BoLiK @ Apr 28 2007, 11:48) *
Помогите начинающему!
Столкнулся с такой проблемой: есть исходник мигалки светодиодов, поставлялся с диском платы 91SAM7S64 (плата простенькая), так вот этот пример работает только через отладчик через jtag (RAM-debug),после прошивки через SAB-BA или H-JTAG ничего не работает, а пример с сайта атмел BASIC (тоже работа с портом i\o) работает как через отладчик так и при прошивке через SAM-BA или H-JTAG. различия в этих проектах только то ч то у атмеловского явно переопределен Cstartup файл. Все ли и всегда ли создают свой cstartup файл для реальных проектов? или это не изза него?
(2 примера для сравнения)Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла


Похоже, это пример для платы SAM-P64 от Olimex.... С этим примером у меня тоже были проблемы....
Также работал из RAM, но нивкакую из флешь....
Помогло добавление функцию InitFrec() 1 такта задержки для флешь

AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_1FWS ;

и заменой в этой же функции строк:

pPMC->PMC_MCKR = AT91C_PMC_CSS_PLL_CLK | AT91C_PMC_PRES_CLK_2 ;
while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));

на строки

pPMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2 ;
while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));

pPMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK ;
while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.