Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблема с отладочной платой STM32VLDISCOVERY
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
viZIer
Всем добрый день.

Используюсь средой IAR 5.41 для ARM (соответственно) и китом STM32VLDISCOVERY. Проблема заключается в следующем:
Пока отлаживается программа через среду, все работает по алгоритму программы. Но когда отключаю питание с устройства и снова подключаю
программа отсутствует в ядре.

Настройки для прошивки и отладки задавал как указано в руководстве от ST.

Как правильно настроить среду чтобы контроллер работал после перезапуска.

Заранее спасибо.
broom
В левом верхнем углу, под надписью workspace должно быть Flash debug. Если стоит RAM debug то флэш останется чист
viZIer
Используя программу STM32 ST-LINK Utility, по адресам во Flash 0x080000000 вижу что присутствует программа. Но программа не запускается из флеша
controller_m30
Аналогично. Заливаю программой ST-LINK_Utility в Discovery, созданный в IAR-е BIN файл. Утилита говорит ОК.
Читаю по адресу 0х08000000 - есть программа, с тем-же кодом что и IAR создал. Но не работает.
Если с помощью ST-LINK_Utility выполнить те-же действия с регистрами контроллера, что и залитая программа (включение светодиодов) - то
светодиоды загораются.
А операций всего три:
1. регистр разрешения тактирования RCC_APB2ENR [0x40021018] --> число 0x00000010 ;тактовый сигнал GPIOC разрешен
2. регистр контроля GPIOC_CRH [0x40011004] --> число 0х44444422 ;ножки GPIOC 8,9 - работают на вывод
3. регистр выходных данных GPIOC_ODR [0x4001100c] --> число 0x00000300 ;синий и зеленый светодиоды загораются

Есть подозрение, что скомпилированный на Си файл содержит еще какую-то настройку - потому весь Си-шный интернет успешно мигает светодиодами. Просьба сторонника ассемблера- выложите кто может, залитую в STM32VLDISCOVERY заводскую демо-программку, мигающую светодиодами. Или ссылку, где ее взять можно...
vovanse
Цитата(controller_m30 @ Dec 30 2011, 05:05) *
Или ссылку, где ее взять можно...


На сайте stm, странице посвященной данному продукту - http://www.st.com/internet/evalboard/product/250863.jsp Design Support, Firmware
controller_m30
К сожалению, Firmware Package с сайта STM, я так и не смог запустить в IAR 5.40 (хотя в описании пакета сказано, что подходит версия IAR 5.40 or later...)
Но удалось найти в нете HEX файл с миганием светодиодов, а по нему определить - в чем было дело, и почему созданный и проверенный в IAR, ассемблерный файл не хочет работать самостоятельно на STM32VLDiscovery.
Оказалось, что при создании ассемблерного проекта IAR создает таблицу векторов, в которой ячейка вектора RESET содержит команду безусловного перехода "B main" - так принято в AT91SAMxxx например.
А должно быть (чтоб программа для Cortex запустилась) - абсолютный адрес перехода на старт программы "main", да еще и с младшим битом =1 (означает, что это вектор для режима THUMB).
Например, в созданном IAR BIN-файле:
Код
адрес:       данные:
0x08000000 - 0xB800F000      ;начальное значение указателя стека SP
0x08000004 - 0xB800F000      ;вектор Reset содержит команду "B main"
0x08000008 - 0xxxxxxxxx      ;здесь начало программы "main"
----------------------------------------------------------------------------------
а должно быть так:
0x08000000 - 0xB800F000      ;начальное значение указателя стека SP
0x08000004 - 0x08000009      ;вектор Reset содержит адрес начала программы "main", + установленный в 1 младший бит
0x08000008 - 0xxxxxxxxx      ;здесь начало программы "main"
Если в таблице векторов должны быть еще адреса прерываний, то для Cortex M3 в этих векторах тоже должен быть указан абсолютный адрес подпрограммы обработчика прерывания, и установленный в 1 младший бит - чтоб процессор перешел в режим THUMB.
IAR 6.21 из ассемблера создает такой-же, не работающий самостоятельно файл прошивки, хотя успешно отлаживает и прошивает программу в Discovery...

Кстати, начальное значение указателя стека, тоже задается IAR-ом не по человечески - то копируется вектор RESET, то задается равным 0. Но из настроек "Linker/Config/Edit" все равно извлекать данные не хочет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.