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

 
 
> Запись данных во Flash Sam7s256
Spoofing
сообщение Jun 21 2009, 17:55
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 21-06-09
Пользователь №: 50 508



Доброго времени суток.
Помогите решить такую проблему. Не могу разобраться как записать данные во флеш. Функционал - прием данных с USART запись в постоянную память, выдача по требованию. Все прекрасно работает с RAM - данные получаются и выдаются, но естественно сброс по питанию все обнуляет. С помошью SAM-BA залил прошивку, все работает из флеши и выполняется в RAM но как записывать пользовательские данные?
Судя по даташиту необходимо поместить данные в буфер-защелку, после чего запись команд в регистр EFC для операции со страницей №такой то. Где этот буфер определяется? по регистрам не нашел.

Второй вопрос как определить где закончится программа - с какого момента можно будет записать данные (флеш с 0х00100000 без ремапа начинается)
Не бейте сильно в электронике почти полный нуб) пока освоил инициализацию, прерывания и com
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Spoofing
сообщение Jun 24 2009, 15:20
Сообщение #2





Группа: Участник
Сообщений: 11
Регистрация: 21-06-09
Пользователь №: 50 508



При прогоне на плате возникли такие проблемы:
Если функцию записи проходить по шагам то все прекрасно, обычном запуске вешается на ожидании
Код
while(!((temp=f_pMC->MC_FSR) & AT91C_MC_FRDY));
бит не устанавливается, при остановке вываливаюсь на строку
Код
PAbt_Handler    B       PAbt_Handler
в SAM.s
В регистре отложенный прерываний висит 01 - fiq хотя я их не использую и перед вызовом функции записи все прерывания запрещены. Хз если бы проблемы были в отсутсвии обработчика то выкидывало бы на
Код
FIQ_Handler     B       FIQ_Handler


Код
#include "board.h"
AT91PS_MC     f_pMC     = AT91C_BASE_MC;
int flash_write_page(int addr, char *data, int size_data)
{
    int i = 0,  page, temp;
    int *Flash, *data_temp;
    Flash = (int*)addr;
    data_temp= (int*) data;
    page = (int)((addr - (int)AT91C_IFLASH)>> 8);

    for (i=0;(i<size_data)&&(i<255); Flash++,data_temp++,i += 4)
        {
        *Flash =*data_temp;
        }
    f_pMC->MC_FCR = (0x5a << 24) | (page << 8) | AT91C_MC_FCMD_START_PROG;
    while(!((temp=f_pMC->MC_FSR) & AT91C_MC_FRDY));
    if((temp & AT91C_MC_LOCKE) || (temp & AT91C_MC_PROGE))
    {
       return -1;
    }
    return 0;
}


Сообщение отредактировал Spoofing - Jun 24 2009, 15:21
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Spoofing   Запись данных во Flash Sam7s256   Jun 21 2009, 17:55
- - singlskv   Цитата(Spoofing @ Jun 21 2009, 21:55) Суд...   Jun 22 2009, 21:58
- - Spoofing   Возможности проверить на железке дома нет. Но врод...   Jun 23 2009, 15:44
- - aaarrr   Не забудьте в MC_FMR записать корректные значения....   Jun 23 2009, 15:54
- - Spoofing   Кодp_pMC->MC_FMR = 0x24<<16; во время ...   Jun 23 2009, 17:40
|- - aaarrr   Цитата(Spoofing @ Jun 23 2009, 21:40) Код...   Jun 23 2009, 18:10
- - Spoofing   ЦитатаПонятно, на 24МГц работаете? пока на отладоч...   Jun 23 2009, 19:21
- - aaarrr   Писать флеш можно только выполняя программу из RAM...   Jun 24 2009, 15:23
- - Spoofing   Для выполнения функции из RAM достаточно добавить ...   Jun 24 2009, 15:47
- - aaarrr   А это смотрите в хелпе на конкретный компилятор. У...   Jun 24 2009, 15:57
- - Sanya_kv   Не мучийся вот: CODE//*---------------------------...   Jun 24 2009, 18:04
|- - aaarrr   Цитата(Sanya_kv @ Jun 24 2009, 22:04) Не ...   Jun 24 2009, 18:14
||- - Sanya_kv   Цитата(aaarrr @ Jun 24 2009, 22:14) Да-да...   Jun 25 2009, 08:09
||- - Сергей Борщ   Цитата(Sanya_kv @ Jun 25 2009, 11:09) Вни...   Jun 25 2009, 09:57
|- - Сергей Борщ   Цитата(Sanya_kv @ Jun 24 2009, 21:04) Не ...   Jun 24 2009, 18:46
- - Spoofing   А смысл от этого монумента если большая часть не н...   Jun 24 2009, 20:04
- - Sanya_kv   Вы абсолютно правы, хочу лишь немного Вас поправит...   Jun 25 2009, 10:32
|- - Сергей Борщ   Цитата(Sanya_kv @ Jun 25 2009, 13:32) Но ...   Jun 25 2009, 12:42
|- - Sanya_kv   Цитата(Сергей Борщ @ Jun 25 2009, 16:42) ...   Jun 25 2009, 12:59
- - Spoofing   Спасибо всем за развернутые листинги. Использую Ke...   Jun 25 2009, 15:08
- - aaarrr   ИМХО, лучше функцию записи обрамить: Код#pragma ar...   Jun 25 2009, 15:13


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

 


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


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