|
|
  |
А возможно ли считать из внутренней Flash LPC21xx?, Други, помогите! |
|
|
|
May 8 2008, 19:04
|
Частый гость
 
Группа: Свой
Сообщений: 86
Регистрация: 5-02-07
Из: Москва
Пользователь №: 25 060

|
Цитата(meister @ May 8 2008, 22:42)  Если CRP не стоит, с помощью JFlash вся флэш запросто считывается по JTAG. Это если снаружи, а изнутри - там вообще проблем нет. Спасибо за ответ! НО... Нет, я имею ввиду изнутри - то есть работает моя прога внутри lpc. Пишет какие-то данные через IAP во внутренний флэш АРМа, а потом сама же хочет считать оттуда данные - как?
|
|
|
|
|
May 8 2008, 19:15
|

Местный
  
Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484

|
Цитата(ASergej_R19 @ May 8 2008, 23:04)  Спасибо за ответ! НО...
Нет, я имею ввиду изнутри - то есть работает моя прога внутри lpc. Пишет какие-то данные через IAP во внутренний флэш АРМа, а потом сама же хочет считать оттуда данные - как? Наверное, для вас это будет откровением, но это можно с помощью memcpy или даже так: Код unsigned char const * const der_base = 0; unsigned char q = der_base[0x12345]; прочитает байт по адресу 0x12345.
|
|
|
|
|
May 8 2008, 21:28
|
Частый гость
 
Группа: Свой
Сообщений: 86
Регистрация: 5-02-07
Из: Москва
Пользователь №: 25 060

|
Цитата(meister @ May 8 2008, 23:15)  Наверное, для вас это будет откровением, но это можно с помощью memcpy или даже так: Вот спасибо! :-) И тогда последний глупый вопрос - а можно ли забить область flash константами, на этапе компиляции проекта?
|
|
|
|
|
May 8 2008, 22:01
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(ASergej_R19 @ May 9 2008, 01:28)  И тогда последний глупый вопрос - а можно ли забить область flash константами, на этапе компиляции проекта? Можно, конечно. Код const char data[] = {...}; Только проверьте, что линкер действительно положил rodata в область flash.
|
|
|
|
|
May 9 2008, 00:15
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Скорее всего в вопросе про константы во флэш имелся ввиду отдельный сегмент флэша с конкретным адресом, который будет потом переписываться независимо от программы. Код #pragma location=0x1000 const char data[4096] = {...};
или другой вариант:
const char data[4096] @ 0x1000 = {...};
если же не нужна начальная инициализация, то так:
const __no_init char data[4096] @ 0x1000; Только приходится выделять под такую константу весь сегмент, например 4096 байт. Это вобщем проще, чем лезть в XCL файл и там выделять независимый от CODE сегмент для констант и обзывать его своим уникальным именем.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
May 9 2008, 07:51
|
Частый гость
 
Группа: Свой
Сообщений: 86
Регистрация: 5-02-07
Из: Москва
Пользователь №: 25 060

|
Цитата(GetSmart @ May 9 2008, 04:15)  Скорее всего в вопросе про константы во флэш имелся ввиду отдельный сегмент флэша с конкретным адресом, который будет потом переписываться независимо от программы. Да! Спасибо! Именно то, что нужно. То есть есть массив, который забивается константами, сам массив находится в отдельном сегменте флэша. Этот массив можно будет править через IAP и читать, если нужно. Всем огромное спасибо!
|
|
|
|
|
May 11 2008, 07:20
|
Частый гость
 
Группа: Свой
Сообщений: 86
Регистрация: 5-02-07
Из: Москва
Пользователь №: 25 060

|
Цитата(GetSmart @ May 9 2008, 04:15)  const char data[4096] @ 0x1000 = {...}; Щас добрался до компа и попробовал данную конструкцию - не работает. Ругается: "error: #7: enrecognized token". :-( и прагму такую не знает... Keil 3.15 для arm Для переменных и констант нашел, что можно __attribute__ ((section ("секция"))) - так указывать, а вот чтобы впрямую адрес - что-то не нашел. Может кто подскажет еще?
|
|
|
|
|
May 11 2008, 07:34
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(ASergej_R19 @ May 11 2008, 09:20)  Щас добрался до компа и попробовал данную конструкцию - не работает. Ругается: "error: #7: enrecognized token". :-( и прагму такую не знает... Правильно делает - то, что приводилось в примере - это непереносимая приблуда для старого IARовского компилятора. В общем случае этим линкер занимается - описываете свой сегмент и указваете линкеру куда его линковать. Цитата(GetSmart @ May 9 2008, 02:15)  Это вобщем проще, чем лезть в XCL файл и там выделять независимый от CODE сегмент для констант и обзывать его своим уникальным именем. Проще один раз понять, что это дело линкера и сделать независимо от IAR-овских приблуд, чем полагаться на непереносимые и уже справедливо похеренные фичи компилятора.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|