系统内存--读代码

STM32L471内部flash如图page0----page255  

一共256页每页2K 一共是512K的内存

选择最后的几个页 放置信息:

syscfg.h

#define     DSYS_ABTAG_ADDR      0x0807E000//page252我自己设计的 放置安装工发过来的地址信息
#define     DSYS_CFG_ADDR           0x0807E800//page253放置
#define     DSYS_INFO_ADDR          0x0807F000//page254放置

+++++++++++++++++++++++

顶层:freertos.c    
    第一步sys_info_init();            //系统基础信息初始化
    看函数:
    void sys_info_init( void )
{
读全局变量info:
    失败:
    if( sys_info_read(&info) == FALSE) //也就是读页!(chip_flash_read( DSYS_INFO_ADDR , (uint8_t *)data , sizeof(SystemInfoType) ));
    {
        log(DEBUG,"FLASE读取失败,重启\n");
        soft_system_resert(__func__);
    }
    
    校验失败:
    calcCrc =  crc16_ccitt((uint8_t *)&info , sizeof(SystemInfoType));  
    if( crc != calcCrc)
    {
        log(WARN,"读取INFO文件错误,复位重新读取,get crc = %d  ,calc crc = %d\n" , crc , calcCrc);
        sysInfo_set_default();
        soft_system_resert(__func__);
    }
}

所以第一次上电应该是:sysInfo_set_default();  以后设备出厂以后自己维护了。

回答:复位做了什么?
1蓝牙密码复位了
2小区地址信息清空了
3载入设备信息
所以没有搞到黑白名单

-DDEFAULT_PAIR_PWD="{0X12,0x34,0x56}"
-DDEFAULT_OPEN_PWD="{0X12,0x34,0x56}
void sysInfo_set_default( void )
{
    memset((uint8_t *)&info , 0x00 , sizeof(SystemInfoType)); 
    memcpy(info.user_pwd , bleDeafultUserPwd , BLE_PASSWORD_LENGTH);
    memcpy(info.pair_pwd , bleDeafultPairPwd , BLE_PASSWORD_LENGTH);  
    
    log(INFO,"清空设备小区,楼栋,单元ID\n");
    memset(&info.commun , 0x00 , sizeof(SystemCommunitiesType));
    memset(&info.fkcommun , 0x00 , sizeof(SystemFKCommunitiesType));
    
    sys_info_read_device_module();    
    sysInfo_save();
}

void sys_info_read_device_module( void )
{
    读板子拿到GPRS WIFI ETH BM77 ST25 等等
    log(DEBUG,"设备运行模式=%d .\n" , info.runModule);
}
    
void sysInfo_save( void )
{
就是把自己维护的保存起来。
    sys_info_clear();
    
    info.crc = 0;

    info.crc =  crc16_ccitt((uint8_t *)&info , sizeof(SystemInfoType));

    sys_info_write(&info);
}

下面就是info
typedef struct
{
    uint8_t                 pair_pwd[BLE_PASSWORD_LENGTH];
    uint8_t                 user_pwd[BLE_PASSWORD_LENGTH];
    SystemCommunitiesType   commun;
    SystemFKCommunitiesType fkcommun; 
    uint32_t                 runModule;
    uint16_t                crc;
}SystemInfoType;

static SystemInfoType     info;

++++++++++++++++++++++++++++

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值