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

 
 
 
Reply to this topicStart new topic
> Чтение Flash памяти программ, Как можно считать записанные ранее данные?
Joker_sava
сообщение May 23 2008, 07:24
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 29-01-08
Пользователь №: 34 532



Подскажите пожалуста как можно прочитать содержимое области внутренней Flash памяти программ МК LPC2138 из самой программы. Если можно то примером, буду признателен. Хочу сохранять туда параметры и читать их от туда типа EEPROMа.

Сообщение отредактировал Joker_sava - May 23 2008, 07:51
Go to the top of the page
 
+Quote Post
KRS
сообщение May 23 2008, 07:55
Сообщение #2


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

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



Цитата(Joker_sava @ May 23 2008, 11:24) *

Да точно так же как и RAM
Go to the top of the page
 
+Quote Post
Joker_sava
сообщение May 23 2008, 08:18
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 29-01-08
Пользователь №: 34 532



Цитата(KRS @ May 23 2008, 10:55) *
Да точно так же как и RAM

А можно поподробнее? Может кусок кода например. Я программирую на С++ в IAR Embedded Workbench 4.0 Evaluation.
Go to the top of the page
 
+Quote Post
richie
сообщение May 23 2008, 08:27
Сообщение #4


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

Группа: Свой
Сообщений: 147
Регистрация: 5-07-04
Из: Обнинск
Пользователь №: 261



Цитата(Joker_sava @ May 23 2008, 12:18) *
А можно поподробнее? Может кусок кода например. Я программирую на С++ в IAR Embedded Workbench 4.0 Evaluation.

Карту памяти проца смотри...
Go to the top of the page
 
+Quote Post
Joker_sava
сообщение May 23 2008, 08:44
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 29-01-08
Пользователь №: 34 532



Цитата(richie @ May 23 2008, 11:27) *
Карту памяти проца смотри...

Ты имеешь ввиду напрямую считывать по адресу ячейки памяти типа как на ассеблере? Не хотелось бы аасемблерные вставки делать, прога вся на С.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 23 2008, 09:59
Сообщение #6


Гуру
******

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



А вставки-то зачем?
Код
    unsigned int addr, data;

    data = *(volatile unsigned int *)addr;
Go to the top of the page
 
+Quote Post
SanvaldYV
сообщение May 23 2008, 10:04
Сообщение #7


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

Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371



Цитата(Joker_sava @ May 23 2008, 11:44) *
Ты имеешь ввиду напрямую считывать по адресу ячейки памяти типа как на ассеблере? Не хотелось бы аасемблерные вставки делать, прога вся на С.


Зачем ассемблерные вставки? Создаешь указатель, и разыменовываешь его:
Код
unsigned long ul32  * pUl32 = 0x00000000;
// прочитать байт
unsigned char ucTmp = (unsigned char)pUl32[0];
// или
unsigned char ucTmp = *((unsigned char * )pUl32);


Как сказал richie - смотри карту памяти проца, там единое адресное пространство, т.е. значения из флэш доступны для чтения точно так же как из RAM.
Go to the top of the page
 
+Quote Post
Joker_sava
сообщение Jun 2 2008, 12:48
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 29-01-08
Пользователь №: 34 532



Всё верно. Спасибо! Разобрался с вашей помощью.
Go to the top of the page
 
+Quote Post

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

 


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


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