• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

ESP8266使用system_param_load读取问题

韩梅梅 2018-09-21 浏览量:1325

请问ESP8266中使用system_param_load来读取保存的数据,必须是4的整数倍吗?

我一个数据结构中有六个字节,读取会死机,扩为8个字节,才能运行

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:11
  • 这个读取要求必须是四字节对齐,对于这些32位处理器来说,32位对齐可以加速它的处理,因此很多处理器要求必须32位对齐

  • 是的,必须4为对齐,如果读取数据不正确

  • 因为ESP8266是32位的,所以为了方便控制管理及运算,需要4字节(32bit)对齐。

  • 是的

    比如

    创建结构体
    struct startup_config{ 
    char baudrate[4]; 
    char ap_ssid[32]; 
    char ip[16]; 
    char sta_ssid[32]; 
    char sta_pwd[64]; 
    }; 
    struct startup_config config;

    注意: 这里的结构体中每个字段必须是4字节的整数倍

  • 这和CPU的取址有关,未对齐的情况下,可能无法获取到相应地址的数据。

  • 是的,必须是4的整数倍,因为FLASH和RAM空间是4字节对齐的,CPU就可以按32位进行地址读取,并且是按块读写。

  • 这个字节是按8位读取的,所以你的数据读取要按照整形的数据读取,要把相应的字节对齐再读取

  • ESP本身就是一个对应的四字节对齐,这样方便你的数据整形读取

  • 这个要对齐你的字节才能正确读取数据的,否则可能运行不正常

  • 是的,这个必须4字节读取读取才可以

相关问题

问题达人换一批

ESP8266使用system_param_load读取问题