您是想把一个数组放到内部FLASH里?方法很多,提供一个供您参考。<br /><br />如何烧写到内部flash?<br />Startup.s里的代码,是如何被告知给连接器需烧写进FLASH的?<br />答:是通过分散加载机制实现的。请看下面:<br />“<br /> ROM_EXEC 0x00000000<br /> {<br /> Startup.o (vectors, +First)<br /> * (+RO)<br /> }<br />”<br />观察这段代码,我们发现,除了vectors段之外,startup.s里其它属性为只读的段也被通知烧写进内部FLASH了。<br /><br />那么,现在就可以得出思路:<br />只要把某数组放到startup.s里的一个段里,这个段的属性为只读就可以把它烧写到内部FLASH了。<br /><br />注意!这里所说的“段”、“段的属性”等概念,您只要阅读一下分散加载文件里的各个段名和属性以及startup.s里的段名和属性就清楚了。<br /><br />最后的实现代码,它们都位于startup.s里。<br /><br /> ……<br /> EXPORT DataPT ;声明数组的指针变量给main函数。<br /><br /> AREA array,CODE,READONLY<br />DataArray SPACE 100 ;留出空间供放置数组<br />DataPT DCD DataBuf1;声明指针变量用以指向数组里的元素 <br />DataBuf1 DCD 30,23,46,34,67;用这些值初始化数组<br /> ……<br /><br />main函数里对该数组的使用方法如下:<br />volatile uint32 temp;<br />extern uint32 *DataPT;<br />int main (void)<br />{<br /> while (1)<br /> {<br /> temp = *(DataPT+4); // 读取下标为4的数组元素<br /> <br /> }<br /> <br /> return 0;<br />}<br /><br />由于涉及到ARM汇编指令,建议用百度搜索一下完成布衣的《ARM常用指令集及汇编》。<br /><br /><br /><br /><br /><br /><br /><br /><br />用百度搜索一下“宛城布衣”,找他的“常用ARM指令集及汇编”文档阅读<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> <br />
|