armink / SFUD

An using JEDEC's SFDP standard serial (SPI) flash universal driver library | 一款使用 JEDEC SFDP 标准的串行 (SPI) Flash 通用驱动库
MIT License
1.29k stars 452 forks source link

针对32位以下cpu做的一些修正 #6

Closed slipperstree closed 7 years ago

slipperstree commented 7 years ago

针对32位以下cpu做了一些修正。

  1. SFUD_FLASH_CHIP_TABLE 里面的32位成员使用计算式的方式定义时,为了适配stm8等32位以下编译环境,在使用了计算式的定义后面加上L后缀显式指定长整型。
  2. 同样的,形如 1<<24 这种代码不能用于32位以下cpu,需要在数字1的后面加上后缀L显式指定长整型。
  3. 添加一款Flash芯片“W25Q16BV”。
armink commented 7 years ago

👍 非常感谢~

armink commented 7 years ago

@slipperstree 像下面这样的运算需要在 8 位单片机上运行有问题吗?

    /* get flash memory capacity */
    uint32_t table2_temp = (table[7] << 24) | (table[6] << 16) | (table[5] << 8) | table[4];
slipperstree commented 7 years ago

table的定义是8位的,理论上也有问题,不过我的应用里没发现错误,有空我再针对这里debug看看。

slipperstree commented 7 years ago

@armink 经过测试,下述代码确实也需要修改。

/ get flash memory capacity / uint32_t table2_temp = (table[7] << 24) | (table[6] << 16) | (table[5] << 8) | table[4];

下面是Debug时打印出来的信息。

JEDEC basic flash parameter table info:
MSB-LSB  3    2    1    0
[0001] 0xFF 0xF1 0x20 0xE5
[0002] 0x00 0xFF 0xFF 0xFF

不做强制转换得到的结果:0xFFFFFFFF 做了转换以后正确的结果:0x00FFFFFF

已经发起PR,请确认。