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

 
 
> at91sam7x256 + Keil. Спецы - ВЫРУЧАЙТЕ, Запись во внутреннюю FLASH -> проблемы
Niger
сообщение Jan 5 2008, 09:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 29-09-06
Из: Зеленорад
Пользователь №: 20 810



Всем доброго времени суток!

Проблема в следующем:

Сделал проектик под Кейлом v3.50, в котором происходит заполнение массива из 256 байт (от 0x00 до 0xFF), а затем запись его в страницу внутренней флэш камня.
Брал пример с этого форума, сделанный в IAR, переделал его под кейл...наступил на грабли...

после записи страницы

for (i = 0; i < EFC_PAGE_SIZE_UINT; i++)
*(pflash + i ) = *(pbuf + i);

идут две волшебные строчки:

Строчка1 AT91C_BASE_MC->MC_FCR = (0x5A << 24) | (page << 8 ) |AT91C_MC_FCMD_START_PROG;

Строчка 2 while (!(AT91C_BASE_MC->MC_FSR & AT91C_MC_FRDY));

Так вот, если в отладке ставлю брекпоинт на строчке 2, то страница пишется, а после запуска Run программа нормально выполняется. Если же убираю этот брекпоинт, то выполнение строчки 2 не происходит, и программа вываливается в DAbt_Handler. Без эмулятора, похоже, программа также зависает в этом же месте.
Эмулятор от Segger, устройство - пока на 7X-EK

Кто нить ловил такой глюк?

Заране благодарен
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Niger
сообщение Jan 10 2008, 13:50
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 29-09-06
Из: Зеленорад
Пользователь №: 20 810



KRS, последовал Вашему примеру

Вот кусок файла sam7.s

; Enter User Mode and set its Stack Pointer
;MSR CPSR_c, #Mode_USR
MSR CPSR_c, #Mode_SVC
MOV SP, R0
;SUB SL, SP, #USR_Stack_Size
SUB SL, SP, #SVC_Stack_Size

В общем, я подменил user mode на supervisor. Биты I и F стали управляемыим. Вопрос. В принципе, в этом режиме можно и остаться?

Сообщение отредактировал Niger - Jan 10 2008, 13:51
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 7 2008, 22:46
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Niger @ Jan 10 2008, 15:50) *
В общем, я подменил user mode на supervisor. Биты I и F стали управляемыим. Вопрос. В принципе, в этом режиме можно и остаться?

Можно замаскировать все прерывания через AIC:

Код
unsigned long iMask = pAIC->AIC_IMR;
pAIC->AIC_IDCR = 0xFFFFFFFF;

..... тут прерывания запрещены

pAIC->AIC_IECR = iMask;
.. тут восстановлены.


Работает не зависимо от режима.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Niger   at91sam7x256 + Keil. Спецы - ВЫРУЧАЙТЕ   Jan 5 2008, 09:16
- - Dimentius   прерывания на момент активации записи во флеш запр...   Jan 5 2008, 09:57
|- - Niger   Цитата(Dimentius @ Jan 5 2008, 12:57) пре...   Jan 5 2008, 11:23
- - Dimentius   в регистре MC_FMR поле FMCN правильно задано? Whe...   Jan 5 2008, 11:45
|- - Kirill Frolov   Цитата(Dimentius @ Jan 5 2008, 14:45) в р...   Feb 8 2008, 00:31
- - Niger   Тут внимательно посмотрел в дизассемблере , оказыв...   Jan 5 2008, 12:52
- - Niger   Разобрался я, как писать/читать флэш. Но теперь в...   Jan 10 2008, 08:53
|- - KRS   Цитата(Niger @ Jan 10 2008, 11:53) Разобр...   Jan 10 2008, 09:23
|- - KRS   Цитата(Niger @ Jan 10 2008, 16:50) В обще...   Jan 10 2008, 15:02
||- - aaarrr   Цитата(KRS @ Jan 10 2008, 18:02) Ну вообщ...   Jan 10 2008, 15:32
||- - KRS   Цитата(aaarrr @ Jan 10 2008, 18:32) Почем...   Jan 10 2008, 16:17
- - Niger   Все, работает!!! Всем спасибо. Если ...   Jan 23 2008, 14:12
- - _dem   свои пять копеек При неправильной установке FMC...   Feb 8 2008, 15:04


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

 


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


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