- 主题:请教一个问题的解决方案
现有一块板子,MCU A+片外spi flash,MCU A 的fw存在spi flash中。目前因为需求改变,增加了另一块MCU B,MCU B片内flash较大,因此想将MCU A的fw存在MCU B中,以节省spi flash的成本。为了不改MCU A 的spi 驱动,需要在MCU B的spi 驱动中实现类似spi flash一样的接口(命令和时序),目前的难点是:MCU B怎么知道MCU A 发过来的是命令,地址还是数据?
我看了几款spi flash的data sheet,我猜测它们内部的硬件应该是检测了CS,CS拉低后的第一个数据就是命令,这样判断的,但是在fw中如何能达到这个目的?
--
FROM 183.227.238.*
B控制A的复位。然后就模拟SPI的时序把bin发过去就行了。
A的复位从外部SPI启动的时序手册里面能找到。
【 在 LACARY (狂奔的蜗牛) 的大作中提到: 】
: 现有一块板子,MCU A+片外spi flash,MCU A 的fw存在spi flash中。目前因为需求改变,增加了另一块MCU B,MCU B片内flash较大,因此想将MCU A的fw存在MCU B中,以节省spi flash的成本。为了不改MCU A 的spi 驱动,需要在MCU B的spi 驱动中实现类似spi flash一样的接口(
: 我看了几款spi flash的data sheet,我猜测它们内部的硬件应该是检测了CS,CS拉低后的第一个数据就是命令,这样判断的,但是在fw中如何能达到这个目的?
--
FROM 120.245.132.*
这个方案刚开始我也这样想过,因为这时B就知道A发过来的第一个字节肯定就是opcode,但由于A片内内存非常小,不能一次把fw加载完,因此采用了动态加载的办法,就是A在运行过程中根据需要去B中加载相应的段。
【 在 jiu 的大作中提到: 】
: B控制A的复位。然后就模拟SPI的时序把bin发过去就行了。
: A的复位从外部SPI启动的时序手册里面能找到。
:
--
FROM 223.104.250.*
CS#连MCU B的GPIO呢?检测到下降沿就对SPI的状态机进行复位,开始接收命令?比较担心的是接收到命令和地址之后,来不来得及读取内部flash,把数据及时发出去。
--
FROM 59.109.155.*
我也想到过这个办法,但细节没有多想。读取内部flash到应该不是问题,内部是norflash,直接像内存一样读就行。我还想到另一个办法,不知可行不,在A的spi驱动中,发读命令前加一个魔数,就是这样的格式:4字节魔数+1字节opcode+3字节地址,B检测到这个魔数就知道opcode和地址了
【 在 haveidea 的大作中提到: 】
: CS#连MCU B的GPIO呢?检测到下降沿就对SPI的状态机进行复位,开始接收命令?比较担心的是接收到命令和地址之后,来不来得及读取内部flash,把数据及时发出去。
--
FROM 223.104.250.*
如果没什么量的板子,就不要在意flash的价钱了。
你调试你的成本,比这个高。
【 在 LACARY 的大作中提到: 】
: 现有一块板子,MCU A+片外spi flash,MCU A 的fw存在spi flash中。目前因为需求改变,增加了另一块MCU B,MCU B片内flash较大,因此想将MCU A的fw存在MCU B中,以节省spi flash的成本。为了不改MCU A 的spi 驱动,需要在MCU B的spi 驱动中实现类似spi flash一样的接口(命令和时序),目前的难点是:MCU B怎么知道MCU A 发过来的是命令,地址还是数据?
: 我看了几款spi flash的data sheet,我猜测它们内部的硬件应该是检测了CS,CS拉低后的第一个数据就是命令,这样判断的,但是在fw中如何能达到这个目的?
--
FROM 123.122.8.*
就是量很大,最好要省这个成本
【 在 liu7894 的大作中提到: 】
: 如果没什么量的板子,就不要在意flash的价钱了。
: 你调试你的成本,比这个高。
:
--
FROM 223.104.250.*
动态加载更好办啊。
两边固定的bit信号握手就行,成功之后加载。
【 在 LACARY (狂奔的蜗牛) 的大作中提到: 】
: 这个方案刚开始我也这样想过,因为这时B就知道A发过来的第一个字节肯定就是opcode,但由于A片内内存非常小,不能一次把fw加载完,因此采用了动态加载的办法,就是A在运行过程中根据需要去B中加载相应的段。
--
FROM 120.245.132.*
"固定的bit信号握手"啥意思,能细说一下吗
【 在 jiu 的大作中提到: 】
: 动态加载更好办啊。
: 两边固定的bit信号握手就行,成功之后加载。
:
--
FROM 183.227.238.*
就是随便约定个有规律的信号
或者A准备好了,给B发终端。
【 在 LACARY (狂奔的蜗牛) 的大作中提到: 】
: "固定的bit信号握手"啥意思,能细说一下吗
--
FROM 120.245.132.*