Embedded MCB1700评估板片上存储器中图像的存储

Embedded MCB1700评估板片上存储器中图像的存储,embedded,flash-memory,Embedded,Flash Memory,我与MCB1700评估委员会合作。 它有(320 x 240)TF液晶显示屏。 IDE:Keil uvision4 4.03q。 我的任务是将图片从PC下载到MCB1700,并在LCD上显示 并下载到U盘(连接到主板)。 我需要320*240*2=153600字节的内存。 MCB1700只有64kB的SRAM和512kB的片上闪存。 显然,我必须将图片存储在闪存中 据我所知,我应该将指针直接绑定到内存地址 /* Base addresses

我与MCB1700评估委员会合作。 它有(320 x 240)TF液晶显示屏。 IDE:Keil uvision4 4.03q。 我的任务是将图片从PC下载到MCB1700,并在LCD上显示
并下载到U盘(连接到主板)。 我需要320*240*2=153600字节的内存。 MCB1700只有64kB的SRAM和512kB的片上闪存。 显然,我必须将图片存储在闪存中

据我所知,我应该将指针直接绑定到内存地址

/* 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];
对吗? 我有一个疑问,因为目标公司的选择。

闪存的区域定义为只读/只读IROM1。 这是否意味着我们只能从闪存中读取数据,并且必须更改IROM和IRAM字段中的内存区域以执行写入操作?例如:

您最好让编译器/链接器决定在闪存中放置图像的位置:

static const unsigned short Image[320*240] = { <image data> } ;
静态常量无符号短图像[320*240]={};
图像
作为数组放置在ROM 1内存中

您无法直接写入闪存,它通常是只读的,虽然写入操作是面向字的,但除非先前已擦除字,并且擦除是面向页面或扇区的,否则无法写入字-因此,管理示例代码要稍微复杂一些

在我上面的建议中,我加入了一个初始化器。现在,手动初始化320*240元素显然是不切实际的,但是编写一个基于PC的工具,直接从图像文件生成必要的初始化器代码就足够简单了

或者,如果图像不能是静态的,您可以为图像保留部分闪存,然后编写代码写入闪存,并在必要时从串行端口或USB下载的数据中擦除页面(例如)。在这种情况下,闪存必须是页面对齐的,并且由闪存页面的整数倍组成


为了灵活性,您不应依赖目标对话框设置,而应创建自定义散布文件,然后,您可以创建一个自定义分区,并使用armcc扩展名
\uuuuu属性\uuuuu
变量限定符为其分配映像内存。

请澄清:您需要将映像独立下载到闪存中,还是它是常规固件的一部分?是的,它是常规固件的一部分。