Link here

Kernel v4.41 Upgrade

The firmware kernel of the QCard, QScreen, Handheld microcontroller boards has been upgraded to accommodate newer Flash memory


Changes to note

Obsolescence of legacy Atmel and Winbond 256Kbyte and 512Kbyte flash chips has prompted an upgrade of the on-board RTOS kernel of Mosaic's QCard, QScreen, Handheld Controllers. The change should have no consequences for most users' existing application code base.

Your code is affected only if you are using the Wildcard Carrier Board. In that case, your existing code will still work, but you will need an updated install.txt file to load your code onto new controller boards. The best way to get that file is to update your kernel extensions at the Kernel Extension Manager.

All customers are encouraged to update their kernel extensions to the most recent versions by using the Kernel Extension Manager.


Under the hood

Prior supported Atmel and Winbond Flash chips are now obsolete. We have redesigned the Flash-writing routines in the kernel to support newer chips1) which have a variety of write-sector sizes and require varied erase and write procedures. Whereas before writing to Flash required only a small write buffer, located in common RAM, some Flash chips now require a larger buffer, which must be located in paged memory.2)

The upgrade from Kernel v4.40 to v4.41 adds smart multi-flash-chip support to the kernel routine TO.FLASH and incidentally fixes a statistics bug in the mathematical function RANDOM.GAUSSIAN. No calling addresses of any routines in the kernel are changed; they are all the same as v4.40. Consequently, you do not need to recompile your code to run on v4.41; any S-record or other application code image compiled on v4.40 will run correctly on v4.41. The kernel routine TO.FLASH in v4.41 reads the flash type, and supports legacy Atmel and Winbond 256Kbyte and 512Kbyte flash chips, as well as the SST29SF040 and SST39SF040 512Kbyte flash chips.

All v4.41 controller boards are shipped with an SST29SF040-70-4C-NHE Flash device. As that device uses the smallest buffer size in on-board RAM, the change is completely without consequence to end-user's application code.

However, if you currently use a Wildcard Carrier Board you should update your kernel extensions to force an update of the install.txt file used to install your application code on the board. You can then recompile your application code using the updated kernel extensions.

Kernel v4.41 no longer supports 128KB sized devices, but now supports the following device families:
512K: Atmel AT29C040A   Winbond W29C040   SST SST29SF040    SST SST39SF040
256K: Atmel AT29C020    Winbond W29C020C  SST SST39SF020
and in particular, these SST chips:
SST39SF040-70-4C-NHE or SST39SF040-55-4C-NHE   (plcc-32 512Kbyte flash, 4Kbyte sectors)
SST29SF040-70-4C-NHE (plcc-32 512Kbyte flash, with 128 byte sectors)
Even though Atmel flash is obsolete kernel v4.41 still supports AT29C040A for legacy sake:
AT29C040A (plcc-32 512Kbyte flash, with 256 byte auto-erase sectors)
Winbond Flash W29C040 went obsolete several years ago; it behaved identically to AT29C040A. Because the SST29SF040 uses different unlock addresses, and because it is used as our new default 512K flash, Flash write routines default to it if the device ID read is not recognized.
The various chips require the following buffer sizes/location:
Device Flash size Sector size Buffer location
Atmel AT29C020 256K 256 bytes B200 - B2FF
Atmel AT29C040A 512K 256 bytes B200 - B2FF
SST SST39SF020 256K 4092 bytes 0F3000 - 0F3FFF
SST SST29SF040 512K 128 bytes B200 - B2FF
SST SST39SF040 512K 4092 bytes 0F3000 - 0F3FFF
Winbond W29C020C 256K 256 bytes B200 - B2FF
Winbond W29C040 512K 256 bytes B200 - B2FF
This page is about: RTOS Kernel Upgrade for QCard, QScreen, and Handheld Microcontrollers for Flash Memory Compatibility – Legacy Atmel and Winbond 256Kbyte and 512Kbyte Flash chips have been replaced with SST29SF040 and SST39SF040 512Kbyte Flash, necessitating an upgrade of the RTOS firmware on some of Mosaic's microcontroller boards. real time operating system RTOS, kernel version upgrade, Atmel AT29C040A, Winbond W29C040, SST SST29SF040, SST SST39SF040, Atmel AT29C020, Winbond W29C020C, SST SST39SF020