реклама на сайте
подробности

 
 
> STM32: Отладка в RAM
_Макс
сообщение Apr 19 2010, 12:14
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945



Беру демку или свой проект, как только меняю в настройках линкера STM32F10x_FLASH.icf на STM32F10x_RAM.icf (беру из IAR), программа останавливается на первом брекпоинте, а потом программа переходит к инструкции 0x8000856: 0xe7fe DC16 59390 ; 'þç' и будто останавливается. Сколько не нажимай Go и Break, стоит на одном месте. Почему так? Как это исправить?

Что это за инструкция DC16?

Имеет ли негативные последствия отладка программ во флеше? Казалось бы количество циклов записи измеряется тысячами, но как на практике, стоит отлаживать в RAM?
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 32)
skripach
сообщение Apr 19 2010, 13:54
Сообщение #2


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
стоит отлаживать в RAM?

если только быстрее будет, а так не вижу смысла.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Apr 19 2010, 13:57
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



По-идее надо сдвинуть таблицу векторов на РАМ.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 19 2010, 14:40
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(skripach @ Apr 19 2010, 18:09) *
если только быстрее будет, а так не вижу смысла.

Из-за некоторых особенностей архитектуры - не будет.
Go to the top of the page
 
+Quote Post
_Макс
сообщение Apr 19 2010, 15:13
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945



Цитата(Dron_Gus @ Apr 19 2010, 17:12) *
По-идее надо сдвинуть таблицу векторов на РАМ.

Какие именно мне указать адреса для RAM, ROM и intvec? Пробовал оставлять intvec по умолчанию, а остальную память (64k) делить пополам между RAM и ROM, результат тот же sad.gif
Go to the top of the page
 
+Quote Post
skripach
сообщение Apr 19 2010, 17:15
Сообщение #6


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Сам не пробовал но...
Думаю дело в этом, вот кусок примера идущего с иаром:
Код
  // NVIC init
#ifndef  EMB_FLASH
  /* Set the Vector Table base location at 0x20000000 */
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else  /* VECT_TAB_FLASH  */
  /* Set the Vector Table base location at 0x08000000 */
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
_Макс
сообщение Apr 22 2010, 08:03
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945



Цитата(skripach @ Apr 19 2010, 20:30) *
Сам не пробовал но...
Думаю дело в этом, вот кусок примера идущего с иаром:
Код
  // NVIC init
#ifndef  EMB_FLASH
  /* Set the Vector Table base location at 0x20000000 */
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else  /* VECT_TAB_FLASH  */
  /* Set the Vector Table base location at 0x08000000 */
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

Это правильный код или не правильный? Какой это файл? В чем тут дело?
Go to the top of the page
 
+Quote Post
msalov
сообщение Apr 22 2010, 08:21
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(_Макс @ Apr 22 2010, 11:18) *
Это правильный код или не правильный? В чем тут дело?

это правильный код. Суть в том, что после ресета ядро настроено на таблицу прерываний расположенную во флеш, но так как вы собираетесь отлаживаться в ОЗУ - необходимо указать смещение и область памяти по которому находятся вектора - это делается функцией NVIC_SetVectorTable(). Как несложно догадаться первый параметр - область памяти, второй - смещение. То есть вам надо просто убрать дефайн EMB_FLASH или сделать явный #undef EMB_FLASH
Go to the top of the page
 
+Quote Post
_Макс
сообщение Apr 22 2010, 10:36
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945



Получилось, действительно. Как так получается, что процессор стартует ни с нуля, а с адреса 0x00000150 после описания векторов прерывания?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 22 2010, 10:50
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(_Макс @ Apr 22 2010, 14:51) *
Получилось, действительно. Как так получается, что процессор стартует ни с нуля, а с адреса 0x00000150 после описания векторов прерывания?

Ядро читает адрес старта из таблицы векторов при запуске.
Go to the top of the page
 
+Quote Post
msalov
сообщение Apr 22 2010, 10:50
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(_Макс @ Apr 22 2010, 13:51) *
Получилось, действительно. Как так получается, что процессор стартует ни с нуля, а с адреса 0x00000150 после описания векторов прерывания?

По нулевому адресу лежит адрес конца стека, а по 4-ому - адрес точки входа в вашу программу - вот с него и стартует.
Go to the top of the page
 
+Quote Post
_Макс
сообщение Apr 22 2010, 11:57
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945



У меня по адресу 4 лежит 20000D0D, а код стартует с 0x20000150.
Код
   0x1ffffff4: 0xffffffff     MRC2      p15, #7, pc, c15, c15, #7
   0x1ffffff8: 0xffffffff     MRC2      p15, #7, pc, c15, c15, #7
   0x1ffffffc: 0xffffffff     MRC2      p15, #7, pc, c15, c15, #7
__vector_table:
   0x20000000: 0x20001308     DC32      CSTACK$$Limit
   0x20000004: 0x20000d0d     DC32      Reset_Handler
   0x20000008: 0x20000751     DC32      NMI_Handler
   0x2000000c: 0x20000753     DC32      ??HardFault_Handler_0
   0x20000010: 0x20000755     DC32      ??MemManage_Handler_0
   0x20000014: 0x20000757     DC32      ??BusFault_Handler_0
   0x20000018: 0x20000759     DC32      ??UsageFault_Handler_0
   0x2000001c: 0x00000000     DC32      NVIC_ST_CTRL_ENABLE
   0x20000020: 0x00000000     DC32      NVIC_ST_CTRL_ENABLE
   0x20000024: 0x00000000     DC32      NVIC_ST_CTRL_ENABLE
   0x20000028: 0x00000000     DC32      NVIC_ST_CTRL_ENABLE
   0x2000002c: 0x2000075b     DC32      SVC_Handler
   0x20000030: 0x2000075d     DC32      DebugMon_Handler
   0x20000034: 0x00000000     DC32      NVIC_ST_CTRL_ENABLE
   0x20000038: 0x20000995     DC32      PendSV_Handler
   0x2000003c: 0x200006ef     DC32      SysTick_Handler
   0x20000040: 0x20000e09     DC32      WWDG_IRQHandler
   0x20000044: 0x20000e0d     DC32      PVD_IRQHandler
   0x20000048: 0x20000e11     DC32      TAMPER_IRQHandler
   0x2000004c: 0x20000e15     DC32      RTC_IRQHandler
   0x20000050: 0x20000e19     DC32      FLASH_IRQHandler
   0x20000054: 0x20000e1d     DC32      RCC_IRQHandler

Код
   0x2000013c: 0x20000ee9     DC32      CAN2_TX_IRQHandler
   0x20000140: 0x20000eed     DC32      CAN2_RX0_IRQHandler
   0x20000144: 0x20000ef1     DC32      CAN2_RX1_IRQHandler
   0x20000148: 0x20000ef5     DC32      CAN2_SCE_IRQHandler
   0x2000014c: 0x20000ef9     DC32      OTG_FS_IRQHandler
__sti__routine:
??__sti__routine:
   0x20000150: 0xb510         PUSH      {r4, lr}
TProc1 Proc1;
   0x20000152: 0x4c6e         LDR.N     r4, ??DataTable6 [0x2000030c]; CSTACK$$Limit
   0x20000154: 0x0018f104     ADD.W     r0, r4, #24            ; 0x18
   0x20000158: 0xfe3af000     BL        _ZN2OS7processILNS_9TPriorityE3ELt400EEC1Ev; 0x20000dd0
TProc2 Proc2;
   0x2000015c: 0x10b0f204     ADDW      r0, r4, #432           ; 0x1b0
   0x20000160: 0xfe38f000     BL        _ZN2OS7processILNS_9TPriorityE2ELt400EEC1Ev; 0x20000dd4
TProc3 Proc3;
   0x20000164: 0x3048f204     ADDW      r0, r4, #840           ; 0x348
   0x20000168: 0xfe36f000     BL        _ZN2OS7processILNS_9TPriorityE1ELt400EEC1Ev; 0x20000dd8
TBlinkProc BlinkProc;
   0x2000016c: 0x609cf504     ADD.W     r0, r4, #1248          ; 0x4e0
   0x20000170: 0xfe34f000     BL        _ZN2OS7processILNS_9TPriorityE4ELt300EEC1Ev; 0x20000ddc
TAfricanSlon African;  
   0x20000174: 0x6014f204     ADDW      r0, r4, #1556          ; 0x614
   0x20000178: 0xfe26f000     BL        _ZN12TAfricanSlonC1Ev  ; 0x20000dc8
TIndianSlon  Indian;    
   0x2000017c: 0x60c3f504     ADD.W     r0, r4, #1560          ; 0x618
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 27 2010, 13:35
Сообщение #13


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Пытаюсь запускать программу из RAM STM32F103. Тренируюсь на примере и плате Keil\ARM\Boards\Keil\MCBSTM32\STLIB_Blinky.
Там задаются начало и размер ROM 0x20000000 и 0x4000, RAM 0x20004000 и 0x1000, при отладке загружается файл RAM.ini, в котором выполняется загрузка кода в RAM, и с помощью функции устанавливается указатель стека и сброс на 0x20000000 и 0x20000004, и задается смещение 0x20000000 в регистр таблицы векторов.

Вопрос - почему перемычки BOOT0, BOOT1 не влияют на то место, куда и откуда загружается и запускается код отладчиком?
Почему, когда нажимаю сброс в отладчике или непосредственно на плате, при установленных перемычках 1,1 (RAM), программа не работает. Кто-то портит содержимое RAM. А если перемычки в 0,0 (Flash), то запускается программа, записанная в Flash.
Еще вопрос - есть ли способ не перемещать код в адреса RAM, а с помощью перемычек отразить область 0x00000000 на адреса RAM, и занести код сразу в RAM?
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 27 2010, 20:03
Сообщение #14


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Попробую сформулировать вопрос проще.
Как получается, что флэш начинается с 0x08000000, RAM с 0x20000000, а таблица векторов с 0? Где же она физически находится?
Go to the top of the page
 
+Quote Post
KRS
сообщение May 27 2010, 20:18
Сообщение #15


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(ViKo @ May 28 2010, 00:03) *
Попробую сформулировать вопрос проще.
Как получается, что флэш начинается с 0x08000000, RAM с 0x20000000, а таблица векторов с 0? Где же она физически находится?

Таблица векторов начинается с VTOR, по умолчанию он 0.
А вот на адрес 0 может быть отмаплено или ОЗУ или FLASH, в зависимости от ног которые тип старта определяют ( обычно флеш)
Что бы отлаживаться в озу, я в стартап скрипте отладчика устанавливаю VTOR на ОЗУ.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 27 2010, 20:22
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ViKo @ May 28 2010, 00:03) *
Как получается, что флэш начинается с 0x08000000, RAM с 0x20000000, а таблица векторов с 0? Где же она физически находится?

Ответ, как ни странно, находится в разделе 2.4 мануала:
Цитата
Depending on the selected boot mode main Flash memory, System memory or SRAM is
accessible as follows:
● Boot from main Flash memory: the main Flash memory is aliased in the boot memory
space (0x0000 0000), but still accessible from its original memory space (0x800 0000).
In other words, the Flash memory contents can be accessed starting from address
0x0000 0000 or 0x800 0000.
● Boot from System memory: the System memory is aliased in the boot memory space
(0x0000 0000), but still accessible from its original memory space (0x1FFF F000).
● Boot from the embedded SRAM: SRAM is accessible only at address 0x2000 0000.


Скажите, а какой, собственно, смысл грузиться из SRAM?
Go to the top of the page
 
+Quote Post
KRS
сообщение May 27 2010, 20:30
Сообщение #17


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(aaarrr @ May 28 2010, 00:22) *
Скажите, а какой, собственно, смысл грузиться из SRAM?

Хороший вопрос smile.gif
IMHO ноги растут от предыдущих чипов, где это было с внешней памяти.
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 27 2010, 20:31
Сообщение #18


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(aaarrr @ May 27 2010, 23:22) *
Ответ, как ни странно, находится в разделе 2.4 мануала:


Скажите, а какой, собственно, смысл грузиться из SRAM?

За ссылку в мануал спасибо, это я проглядел...
А грузиться из RAM - в первую очередь хочу разобраться в механизме. А во вторую - жалко флэш насиловать - чуть что-то изменил в программе, заходишь в отладку - опять зашивай!
Go to the top of the page
 
+Quote Post
KRS
сообщение May 28 2010, 07:56
Сообщение #19


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(ViKo @ May 28 2010, 00:31) *
А грузиться из RAM - в первую очередь хочу разобраться в механизме. А во вторую - жалко флэш насиловать - чуть что-то изменил в программе, заходишь в отладку - опять зашивай!

Вы что ноги будете перепаивать? Или там джамперы есть?
Что бы под отладчиком грузиться из ОЗУ - нужен правильный скрипт, который VTOR ставит. И все отлично работает.
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 28 2010, 08:55
Сообщение #20


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(KRS @ May 28 2010, 10:56) *
Вы что ноги будете перепаивать? Или там джамперы есть?
Что бы под отладчиком грузиться из ОЗУ - нужен правильный скрипт, который VTOR ставит. И все отлично работает.

Выдайте свой скрипт, если не жалко.
Джамперы есть, а как же.
Дальнейшие размышления привели к следующим выводам.
Загрузка из флэш или систем понятна - выставил джамперы, сбросился, скакнул в адрес 0x0, прочитал, куда назначить стек, скакнул в 0x4, прочитал и перешел на адрес.
Можно сразу задать, что микроконтроллер имеет память по нулевым адресам.
А при загрузке из ОЗУ на нулевые адреса ничего не отображается. Т.е. по нулевым адресам ничего нет. Как тогда прочитать вектор сброса? В отладчике это можно сделать предварительно, настроив VTOR 0xE000ED08 (кстати, а это где описано? с ходу не нашел).
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 28 2010, 12:12
Сообщение #21


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



И еще один вывод получился. Если я загружаюсь из флэш, установив перемычки в (0,0), то я могу доступиться к флэш по нулевым адресам и по 0x08000000. А также я могу доступиться и в систем память (загрузчик) по адресам 0x1ffff000.
Go to the top of the page
 
+Quote Post
KRS
сообщение May 28 2010, 15:15
Сообщение #22


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(ViKo @ May 28 2010, 12:55) *
Выдайте свой скрипт, если не жалко.

Для IAR
Код
execUserReset( )
{
    __message "RAM START";
    __writeMemory32(0x20000000,0xE000ED08,"Memory");
}
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 31 2010, 08:57
Сообщение #23


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



У Keil есть чуть более "хитрый" файл ini
Код
FUNC void Setup (void) {
  SP = _RDWORD(0x20000000);  // Setup Stack Pointer
  PC = _RDWORD(0x20000004);  // Setup Program Counter
  _WDWORD(0xE000ED08, 0x20000000);   // Setup Vector Table Offset Register
}

LOAD RAM\Blinky.axf INCREMENTAL  // Download
Setup();    // Setup for Running
G ,main     // Выполнить программу до main


Blinky.axf, понятно, должен быть скомпилирован для RAM.
Go to the top of the page
 
+Quote Post
_Макс
сообщение Jun 11 2010, 19:24
Сообщение #24


Знающий
****

Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945



Цитата(aaarrr @ May 27 2010, 23:22) *
Скажите, а какой, собственно, смысл грузиться из SRAM?

Я решил для себя, что смысл есть. Во-первых быстрее грузится и моментально подгружает части кода, если это нужно. Во-вторых Flash имеет конечное количество циклов перезаписи.

Сообщение отредактировал _Макс - Jun 11 2010, 19:24
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 11 2010, 19:45
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(_Макс @ Jun 11 2010, 23:24) *
Во-первых быстрее грузится и моментально подгружает части кода, если это нужно.

Зато объем меньше и скорость исполнения программы ниже.

Цитата(_Макс @ Jun 11 2010, 23:24) *
Во-вторых Flash имеет конечное количество циклов перезаписи.

10K - это уже ограничение не столько на число загрузок программы, сколько на число модификаций флеш со стороны самой программы.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 14 2011, 09:25
Сообщение #26


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Обнаружил непонятное явление - в Keil при отладке программы в RAM невозможно пользоваться симулятором. На первой же команде выскакивает HardFault.

Go to the top of the page
 
+Quote Post
-JonnS-
сообщение Feb 14 2011, 17:41
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 7-05-07
Из: Болгария
Пользователь №: 27 577



Наверно надо добавить в RAM.INI строку:
xPSR = 0x1000000;
Подробнее здесь
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 14 2011, 19:05
Сообщение #28


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(-JonnS- @ Feb 14 2011, 19:41) *
Наверно надо добавить в RAM.INI строку:
xPSR = 0x1000000;
Подробнее здесь

Спасибо, помогло.
Теперь новая напасть вылезла. Не находится main функция в минимально простеньком проекте.
Код
  LOAD Keil_Minimal.axf incremental // Download
  Setup();                              // Setup for Running
  GO ,main
______^
*** error 34, line 26: undefined identifier

Хотя main в проекте есть, и по командам симулятор доходит и до нее.
Go to the top of the page
 
+Quote Post
-JonnS-
сообщение Feb 14 2011, 20:07
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 7-05-07
Из: Болгария
Пользователь №: 27 577



Возможно что надо еще разписать и периферию в ini файле:
Код
MAP 0x40000000, 0x40023400 read write      // Peripferial

Вобщем лучше отключить "go main" запустить симуляцию, смотреть по асм.
Прилагаю свой ram.ini

Ps
Добавить в "Option for Target"->"C/C++"->"Define"

Код
VECT_TAB_SRAM


Сообщение отредактировал -JonnS- - Feb 14 2011, 20:23
Прикрепленные файлы
Прикрепленный файл  RAM.rar ( 583 байт ) Кол-во скачиваний: 70
 
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 14 2011, 20:39
Сообщение #30


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(-JonnS- @ Feb 14 2011, 22:07) *
Прилагаю свой ram.ini
Добавить в "Option for Target"->"C/C++"->"Define"

У меня, практически, такой же файл upd Такой, да не совсем. Посмотрите на мои 2 и 3 строки. По-моему, у вас ошибка.
Код
FUNC void Setup(void) {
  SP = _RDWORD(0x20000000);          // Setup Stack Pointer
  PC = _RDWORD(0x20000004);          // Setup Program Counter
  _WDWORD(0xE000ED08, 0x20000000);   // Setup Vector Table Offset Register
  xPSR = 0x1000000;
}
//  RESET  
//  MAP 0x64000000, 0x6407ffff read write
//  MAP 0x6c000000, 0x6c03ffff read write
//  MAP
  LOAD Keil_Minimal.axf incremental // Download
  Setup();                              // Setup for Running
  G , main

А периферию я не использую, выкинул все. Может, перестарался sm.gif Вот весь файл с майн
Код
#include "stm32f10x.h"
uint32_t Cnt;
int32_t main(void)
{
  while (1) {
    Cnt++;
  }
}

А "Define" что? sm.gif Ага, нашел. Нет, у меня такого нет. Работает и так. У меня: STM32F10X_HD

upd2 И с Go разобрался - нужно писать G, а не GO. Исправил в файле, все работает! (ну и лох же я) sm.gif
Go to the top of the page
 
+Quote Post
Alex_1811
сообщение Jun 6 2011, 12:07
Сообщение #31


Частый гость
**

Группа: Участник
Сообщений: 178
Регистрация: 31-10-06
Из: Яблунець
Пользователь №: 21 821



Поделитесь рабочим проектом где есть отладка в ОЗУ. Очч нужно.
Начинаю разбираться с переферией и жалко после каждого шага шить флеш.
У меня камень STM32F105VC. Програмлю в uVision 4.20.

Сообщение отредактировал Alex_1811 - Jun 6 2011, 12:08
Go to the top of the page
 
+Quote Post
skripach
сообщение Jun 6 2011, 12:21
Сообщение #32


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
и жалко после каждого шага шить флеш

Флешку жалеть не надо! Шейте не стесняйтесь jtag'ом или чем вы там шьете её не убить.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 6 2011, 14:17
Сообщение #33


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Alex_1811 @ Jun 6 2011, 15:07) *
Поделитесь рабочим проектом где есть отладка в ОЗУ.

Так, вроде, всё уже сказано.
В свойствах проекта указываете вместо адресов флэши адреса ОЗУ (половину, например), и адреса ОЗУ подкорректировать на оставшуюся часть. Потом при отладке должен выполниться показанный выше ini файл.
В-принципе, да, никакими отладками всех циклов перезаписи флэши не исчерпать.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 06:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01687 секунд с 7
ELECTRONIX ©2004-2016