Сохранение изображения во встроенной памяти оценочной платы MCB1700 - PullRequest
2 голосов
/ 27 ноября 2011

Я работаю с оценочной платой MCB1700. Он имеет (320 х 240) ЖК-дисплей TF. IDE: Keil uvision4 4.03q. Моя задача - загрузить картинку с ПК на MCB1700, вывести ее на ЖК-дисплей
и скачать на USB-флешку (которая подключается к плате). Мне нужно 320 * 240 * 2 = 153600 байт памяти. MCB1700 имеет только 64 КБ SRAM и 512 КБ встроенной флэш-памяти. Очевидно, я должен хранить картинку во флэш-памяти.

Как я понимаю, я должен привязывать указатель непосредственно к адресу памяти.

/* Base addresses                                                             */
#define LPC_FLASH_BASE        (0x00000000UL)         //beginning address of on-chip Flash
#define LPC_IMAGE_ADDR          (LPC_FLASH_BASE + 0x10000)
#define ImagePtr                ((unsigned short        *) LPC_IMAGE_ADDR       )

//read-write operations
ImagePtr[0] = 0x0124;           //First pixel
…
ImagePtr[320*240] = 0xFA37;     //Last pixel
unsigned short A = ImagePtr[0];

Это правильно? У меня есть сомнения из-за вариантов Target. enter image description here

Область флэш-памяти определяется как «Только чтение / запись IROM1». Означает ли это, что мы можем только читать данные из Flash и должны изменить область памяти в полях IROM и IRAM для выполнения операции записи? Например, таким образом: enter image description here

1 Ответ

1 голос
/ 27 ноября 2011

Вы могли бы лучше позволить компилятору / компоновщику решить, куда поместить изображение во Flash:

static const unsigned short Image[320*240] = { <image data> } ;

поместит Image как массив в память ROM1.

Выне может записывать напрямую во флэш-память, обычно она доступна только для чтения, и хотя операции записи ориентированы на слова, слово не может быть записано, если оно не было стерто ранее, а стирание не ориентировано на страницы или секторы - поэтому управлять им несколько сложнеепример кода.

В моём предложении выше я включил инициализатор.Теперь, очевидно, нецелесообразно вручную инициализировать 320 * 240 элементов, но достаточно просто написать инструмент на базе ПК, который будет генерировать необходимый код инициализатора непосредственно из файла изображения.

В качестве альтернативы, если изображение не может бытьСтатический, вы можете зарезервировать часть вашего Flash для изображения, а затем написать код для записи на флэш-память и, при необходимости, стереть страницы из данных, загруженных, например, из последовательного порта или USB.В этом случае флэш-память должна быть выровнена по страницам и содержать целое число, кратное числу страниц Flash.

Для большей гибкости не следует полагаться на настройки целевого диалогового окна и вместо этого создавать собственный файл разброса, в котором можно затем создатьпользовательский раздел и выделите ему память изображений, используя расширение __attribute__ для переменных переменных armcc.

...