OTA flash types for MySensors
-
@XavTroniC said in OTA flash types for MySensors:
25AA512
Seems these are only 2K in size.
I would like something similar though! -
Hello,
Would AT45DB041E be a good choice as a OTA flash? I see it's in the schematics for the new Sensebender Micro mk2.
https://www.adestotech.com/wp-content/uploads/doc8783.pdf
BR
Martin@mardah said in OTA flash types for MySensors:
Would AT45DB041E be a good choice as a OTA flash? I see it's in the schematics for the new Sensebender Micro mk2.
Did you ever figure out if this works with Optiboot for OTA flashing?
I must admit that i'm very confused at this thread, it was setup to advise of other Flash IC's for us to use but there seems to be no 'solid' alternatives that you guys have suggested. For me, living in the UK, its near impossible to grab any of the AT25DF512C-SSHN-B without paying through the roof for shipping.
I can see that AT45DB041E is JEDEC compliant but that is as far as i can go with knowing if it will work. Flash architecture is way out of my depth right now.
-
@mardah said in OTA flash types for MySensors:
Would AT45DB041E be a good choice as a OTA flash? I see it's in the schematics for the new Sensebender Micro mk2.
Did you ever figure out if this works with Optiboot for OTA flashing?
I must admit that i'm very confused at this thread, it was setup to advise of other Flash IC's for us to use but there seems to be no 'solid' alternatives that you guys have suggested. For me, living in the UK, its near impossible to grab any of the AT25DF512C-SSHN-B without paying through the roof for shipping.
I can see that AT45DB041E is JEDEC compliant but that is as far as i can go with knowing if it will work. Flash architecture is way out of my depth right now.
@Samuel235 said in OTA flash types for MySensors:
AT45DB041E
Hello. This chip (AT45DB041E) has no erase 32kb command (0x52), status read command has a strange opcode too (D7h). So it is no trivial task to use this chip.
I can suggest Micron M25P40 as widespread IC. But it requires one trick and I will try to describe it. This chip has no erase 32kb command (0x52) too. It means OTA code will not erase memory and update will be failed. We (me and Yury) bumped into this problem when we started intensive tests of my nodes before production (we use micron M25P40). Moreover, when I try to investigate inexpensive avaliable chips I find an interesting thing. Chips with 64kb erase option (0xD8 opcode) are more common than chips with 32kb erase option (which support 64kb erase option too). So it can be worth adapting mysensors for use of any flash chip which supports 64kb erase option. To adapt your sketches you should do only two things- Add this code into your sketch after including mysensors.h
#define SPIFLASH_BLOCKERASE_32K 0xD8So OTA library will call erase 64kb command instead of erase 32kb command. It is very easy.
2) You should use Bootloader which calls erase 64kb command instead of 32kb command.
Bad news. It is not an easy task and you should recompile dual optiboot and burn it. :anguished:
Good news. I've recompliled dual optiboot and all my nodes will burn with it by default. :yum:My changes in bootloader are very simple but it sutable for my boards. We update it many many times and the process is absolutely bulletproof (especially after Tekka's update :+1: ).
But how about a more universal solution? I think it is not too hard to modify dual optiboot to check flash first 10 bytes (OTA flag) after 32kb erase command call and try another command? I will try this idea later but may be someone will do it faster :smiley: -
@Samuel235 said in OTA flash types for MySensors:
AT45DB041E
Hello. This chip (AT45DB041E) has no erase 32kb command (0x52), status read command has a strange opcode too (D7h). So it is no trivial task to use this chip.
I can suggest Micron M25P40 as widespread IC. But it requires one trick and I will try to describe it. This chip has no erase 32kb command (0x52) too. It means OTA code will not erase memory and update will be failed. We (me and Yury) bumped into this problem when we started intensive tests of my nodes before production (we use micron M25P40). Moreover, when I try to investigate inexpensive avaliable chips I find an interesting thing. Chips with 64kb erase option (0xD8 opcode) are more common than chips with 32kb erase option (which support 64kb erase option too). So it can be worth adapting mysensors for use of any flash chip which supports 64kb erase option. To adapt your sketches you should do only two things- Add this code into your sketch after including mysensors.h
#define SPIFLASH_BLOCKERASE_32K 0xD8So OTA library will call erase 64kb command instead of erase 32kb command. It is very easy.
2) You should use Bootloader which calls erase 64kb command instead of 32kb command.
Bad news. It is not an easy task and you should recompile dual optiboot and burn it. :anguished:
Good news. I've recompliled dual optiboot and all my nodes will burn with it by default. :yum:My changes in bootloader are very simple but it sutable for my boards. We update it many many times and the process is absolutely bulletproof (especially after Tekka's update :+1: ).
But how about a more universal solution? I think it is not too hard to modify dual optiboot to check flash first 10 bytes (OTA flag) after 32kb erase command call and try another command? I will try this idea later but may be someone will do it faster :smiley:@Koresh - Thank you for explaining this to me. I think i understand this a little more clearly now. Like i said, i've never dealt with flash so its all a grey area for myself.
I'm currently looking at recompiling MYSBootloader for use with an 8Mhz crystal instead of this work around. The whole reasoning behind me asking this question is simply because i wanted OTA updates on a battery powered node. Now, this means i need OTA updates on 3.3v, but my MYSBootloader nodes require 16Mhz crystal to work. So its either use 16Mhz on 3.3v (while it works, its not the correct solution) OR to get a bootloader working with an 8Mhz crystal setup. I chose the later, and therefor its either recompile MYSBootloader to work with 8Mhz OR to get a flash IC on the board to allow for Dual Optiboot.
At the moment i'm toying with the idea of going the software issue route and attempting to recompile MYSBootloader for 8Mhz (just need to workout what to change for the recompiled version). Seems a little easier and cheaper than going the route of flash considering my location and not being able to get my hands on the recommended/mostly used flash IC.
-
@Samuel235 said in OTA flash types for MySensors:
AT45DB041E
Hello. This chip (AT45DB041E) has no erase 32kb command (0x52), status read command has a strange opcode too (D7h). So it is no trivial task to use this chip.
I can suggest Micron M25P40 as widespread IC. But it requires one trick and I will try to describe it. This chip has no erase 32kb command (0x52) too. It means OTA code will not erase memory and update will be failed. We (me and Yury) bumped into this problem when we started intensive tests of my nodes before production (we use micron M25P40). Moreover, when I try to investigate inexpensive avaliable chips I find an interesting thing. Chips with 64kb erase option (0xD8 opcode) are more common than chips with 32kb erase option (which support 64kb erase option too). So it can be worth adapting mysensors for use of any flash chip which supports 64kb erase option. To adapt your sketches you should do only two things- Add this code into your sketch after including mysensors.h
#define SPIFLASH_BLOCKERASE_32K 0xD8So OTA library will call erase 64kb command instead of erase 32kb command. It is very easy.
2) You should use Bootloader which calls erase 64kb command instead of 32kb command.
Bad news. It is not an easy task and you should recompile dual optiboot and burn it. :anguished:
Good news. I've recompliled dual optiboot and all my nodes will burn with it by default. :yum:My changes in bootloader are very simple but it sutable for my boards. We update it many many times and the process is absolutely bulletproof (especially after Tekka's update :+1: ).
But how about a more universal solution? I think it is not too hard to modify dual optiboot to check flash first 10 bytes (OTA flag) after 32kb erase command call and try another command? I will try this idea later but may be someone will do it faster :smiley: -
@Koresh what about Winbond W25X40CLSNIG - the same used by Moteino? It seems to me this could be a good match?
https://www.winbond.com/resource-files/w25x40cl_e01.pdf
@tbowmo Thomas, what do you think?
-
@Koresh I have just tried it and it works nicely.
Start...Init OK! DeviceID: EF30 Flash content: FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF. WriteByte(1) WriteByte(2) WriteByte(3) WriteByte(4) WriteByte(5)Flash content: FF.BB.BB.BB.AA.BB.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF.FF. Erasing Flash chip ... DONEThe only disadvantage to me is voltage given that nrf24l01+ can run down to 1.9V
Features
- 2.3V to 3.6V supply
- 1mA active current,
- <1μA Power-down
Aliexpress: $0.25 a piece + postage ($2.50 to Europe)
-
I found the following one which is now offered in a breakout board.
I read the datasheet and compared the characteristics and instruction set with the ones for W25X40CLSNIG. I also checked against the SPIFlash.h file in github.
Datasheet: http://www.elinux.org/images/f/f5/Winbond-w25q32.pdf
To me everything seems consistent and am planning to order one to check. Does anyone see something what might prevent it from working?
I'll report on what I find - it will be in some weeks since the delivery time is long.
-
I found the following one which is now offered in a breakout board.
I read the datasheet and compared the characteristics and instruction set with the ones for W25X40CLSNIG. I also checked against the SPIFlash.h file in github.
Datasheet: http://www.elinux.org/images/f/f5/Winbond-w25q32.pdf
To me everything seems consistent and am planning to order one to check. Does anyone see something what might prevent it from working?
I'll report on what I find - it will be in some weeks since the delivery time is long.
@manutremo you can save nearly 40% of your money on AliExpress for those:
https://www.aliexpress.com/item/Memory-Module-W25Q32B-High-Capacity-SPI-Interface-Flash-Memory-32M/32767512974.html -
@manutremo you can save nearly 40% of your money on AliExpress for those:
https://www.aliexpress.com/item/Memory-Module-W25Q32B-High-Capacity-SPI-Interface-Flash-Memory-32M/32767512974.html@Nca78 Thanks for the hint. I actually purchased from this seller who is chaper:
While the ebay seller shipped for free, Aliexpress would charge me 1.24€ for shipping to my country so the total price would be 2.63, significantly more expensive.
Many thanks anyways!
-
@gohan said in OTA flash types for MySensors:
What do you think would be the best solution to fit a flash chip on the easypcb board?
The best solution IMHO is to use MYSBootloader so you don't need a flash chip ;)
-
@gohan said in OTA flash types for MySensors:
What do you think would be the best solution to fit a flash chip on the easypcb board?
The best solution IMHO is to use MYSBootloader so you don't need a flash chip ;)
-
@Nca78 I thought about that, but there are quite some limitations like no encryption and signing support
-
@Anticimex does it? How about encryption?
-
also note:
so far MysBootloader is available for nrf24 only.
And for rfm69 FOTA, it's dualoptiboot bootloader based (from Lowpowerlab) which needs a flash ic.
It has been answered by tekka in another thread, but I don't think there is an eta for rfm69 MysBootloader yet..as the todolist isn't short ! -
@Nca78 Thanks for the hint. I actually purchased from this seller who is chaper:
While the ebay seller shipped for free, Aliexpress would charge me 1.24€ for shipping to my country so the total price would be 2.63, significantly more expensive.
Many thanks anyways!
@manutremo said in OTA flash types for MySensors:
@Nca78 Thanks for the hint. I actually purchased from this seller who is chaper:
@manutremo I am getting trouble with W25Q32B. Can you help me to get success? I am struggling to get jedec id for this chip.UPDATE: I included the following lines on the sketch it works,
//Enable OTA feature #define MY_OTA_FIRMWARE_FEATURE #define MY_OTA_FLASH_JDECID 0x00 -
@manutremo said in OTA flash types for MySensors:
@Nca78 Thanks for the hint. I actually purchased from this seller who is chaper:
@manutremo I am getting trouble with W25Q32B. Can you help me to get success? I am struggling to get jedec id for this chip.UPDATE: I included the following lines on the sketch it works,
//Enable OTA feature #define MY_OTA_FIRMWARE_FEATURE #define MY_OTA_FLASH_JDECID 0x00 -
@tbowmo I thought same things...
@ahmedadelhosni : translation roughly done ;) Here http://forum.mysensors.org/topic/3503/sensebender-dualoptiboot-ota-howto-in-mysensorsHi, old thread but I hope a question not too far off the mark. I'm using Easy PCB nodes and looking to use OTA on the reverse side. I'm having some issues finding a source in Australia for the SPI chip mentioned, I am seeing this one very easily available. From the data sheet on the page, it appears to be pretty much the same, just the lower end of the acceptable voltage is up to 2.6V. Any thoughts welcome if you can see if it would/wouldn't work, my tech knowledge is limited on this sort of thing.
https://au.rs-online.com/web/p/flash-memory/8228477
Cheers!