Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Флеш память и еще одна проблемка!
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
sinh
Привет всем! Имеется в налии МК (SAM3S4B), IAR и JTAG.
Столкнулся со следующими проблемами:
1. Как записать программу во флеш память МК?
С помощью JTAG прошиваю его, все работает, после передергивания питания приходится заного прошивать.
2. Не понятный результат при работе с USART.
Создаю буфер размера N, в него записавыю принимаемые символы, если буфер полон, то вывожу его содержимое и затираю, если смотреть через дебагер, то все работает правильно, а если через Terminal и другие подобные программы, то возникает ошибка. Допусти у нас буфер размера N, тогда первые N элементов записываются и выводятся нормально, а далее в него записывается всегда N-3 элемента, недостающие 3 элемента берутся из 1-й записи т.е.
Ввели: Получаем:
12345 54321
qw wq123
rt tr321.

Вот код:
CODE

char Buffer[BUFFER_SIZE] = { 0 };
int index = 0;
while(1)
{
b=USART_Read(USART0);
if (index == BUFFER_SIZE)
{
USART_WriteBuffer(USART0, Buffer, index);
memset(Buffer, 0, sizeof(Buffer));
index = 0;

}
else
{
Buffer[index++]=b;

}
}

Не понимаю где хранятся эти три элемента, логически вроде все правильно.
andrewlekar
Кто-то где-то врёт. Возможно код приведён неполный. Судя по вашему коду недостающие элементы добавляться не должны, но должен пропадать первый символ после N.
Попробуйте ещё FIFO отключить у UART - возможно оттуда валятся уже обработанные данные.
sinh
Код именно такой!! Под JTAG смотрю все работает правильно!!! Запускаю Terminal и правильно выдается только 1-я посылка из N символов! Ага, 1-й символ пропадает, это спецом так сдлал.

Что бы программа сохранялась во флеш, только в настройках IAR нужно же указывать адреса блоков???
Genadi Zawidowski
Цитата
FIFO отключить у UART

"А с этого места поподробнее"
Где у SAM3S4B в UART FIFO спрятался? Мне он не помешал бы!
sinh
Эти значения(посылка из N символов) хранятся в памяти с адресом: 0x00C00000 - 0x1FFFFFFF. Как ее программно можно очистить??
Genadi Zawidowski
Цитата(sinh @ Jan 25 2013, 12:28) *
Эти значения(посылка из N символов) хранятся в памяти с адресом: 0x00C00000 - 0x1FFFFFFF. Как ее программно можно очистить??


Вы же в своём примере примепняли memset... или не заметили?
sinh
Немного другой смысл вкладывал, в моем 1-м посте я написал у меня откуда то берутся 1-е три символы (из первой посылки) и пример привел, хотя я и использую memset!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.