Вечер добрый.
Вопрос следующий:
Скачал с сайта Yagarto (
пример для lpc1114).
Сделал в файле main.c нём такое изменение:
Код
#include <stdint.h>
#include "LPC11xx.h"
#include "core_cm0.h"
void DelayTick(uint32_t delay)
{
while (delay) {
while ((SysTick->CTRL&(1<<SysTick_CTRL_COUNTFLAG_Pos))==0);
SysTick->CTRL = 0
| (1 << SysTick_CTRL_ENABLE_Pos) // Enable timer
| (0 << SysTick_CTRL_TICKINT_Pos) // Disable SysTick interrupts
| (0 << SysTick_CTRL_CLKSOURCE_Pos); // System clock/2
delay--;
}
}
int main (void)
{
LPC_GPIO0->DIR=1<<7;
// setup SysTick timer
SysTick->LOAD = 48000000 / 100-1;
SysTick->VAL = 0; // reset counter
SysTick->CTRL = 0
| (1 << SysTick_CTRL_ENABLE_Pos) // Enable timer
| (0 << SysTick_CTRL_TICKINT_Pos) // Disable SysTick interrupts
| (0 << SysTick_CTRL_CLKSOURCE_Pos) // System clock/2
;
while (1) {
LPC_GPIO0->DATA&=~(1<<7);
DelayTick(100);
LPC_GPIO0->DATA|=(1<<7);
DelayTick(5);
}
}
То есть всё выкинул и вставил моргание светодиодом с частотой ~1Гц. Запустил на отладку - увидел то что ожидал.
Дальше заменил в makefile строку
Код
RUN_FROM_FLASH = 1
Код
RUN_FROM_FLASH = 0
Ожидал увидеть, что программа начнёт исполнятся из ОЗУ - нет, не увидел: контроллер перешёл в какое-то неизвестное мне состояние и отлаживаться отказался(выдал сообщение: No source available for "").
Дальше, запрограммировал test_ram.elf - морганий не увидел.
Программатор/отладчик - LPCXpresso.
Как правильно запускать программу в ОЗУ? Можно ли отлаживать программу расположенную в ОЗУ?
Видимо, я хочу получить от этого примера то, для чего он совсем не предназначен. Для чего он тогда?
Спасибо.