导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[转帖]什么是readFlashDataPage(x)函数的

* 66005: [转帖]什么是readFlashDataPage(x)函数的正确的值?它是页码或地址吗?

   liufengzhong 
liufengzhong发表的帖子 

 [转帖]什么是readFlashDataPage(x)函数的正确的值?它是页码或地址吗?
嗨, 
我要让我的引导加载程序读取地址0x40000闪存数据

并且,由于其值负载对应的版本。所以,我有自定义的加载器的下面的代码:

extern void* readFlashDataPage(unsigned int addr);


unsigned int dpVersion;
unsigned int imgAddr;

void init(void)
{
    unsigned int* page = (unsigned int*)readFlashDataPage(0x40000); 
    
    dpVersion = (page[0] == 0x00000002) ? 1 : 2;     
}
 
int checkCandidateImageVersion( int version )
{
    return dpVersion == version;
}
 
void recordCandidateImage( int version, unsigned int address )
{
    imgAddr = address;
}
 
unsigned int reportSelectedImage(void)
{
  return imgAddr;
}

但似乎并不奏效,版本1总是装载。
我想,我把不正确的地址为readFlashDataPage()函数,
但我试图用0x40000和1024(block number),都是一样的。
有任何想法?

PS>  我把00000002值偏移0x40000到flash,我也试图恢复
位在比较条件:
         dpVersion = (page[0] == 0x40000000) ? 1 : 2;  
第1版装没有任何问题,如果我使用一个表达式:
         dpVe​​rsion = 1; 

回答:

我的从源代码的理解是页号(见下文)。注意在添加dataPartitionBase的!

int fl_readDataPage(unsigned n, unsigned char dst[])
{
    unsigned address;
    if( n >  = fl_getNumDataPages() ) { return( 1 ); }
      address = fl_getDataPartitionBase() + n * fl_getPageSize();
    return fl_readPage(address, dst);
}




发表时间:2014年8月20日10:32:48

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:[转帖]在源代码内有没有一种方法来确定工具版本?为特定版本(或一组版本)的工具写代码有时是很有用的。
[下一篇帖子]:[转帖]什么时候我们在XC使用汇编指令?汇编指令可以使用​​ASM(...)