You may have noticed that the output of drivers has decreased to a crawl recently. Well basically, there have been no new drivers released for a while.
This does not mean that we have not been doing some exciting things behind the scenes.
We have been quietly working on the firmware to add some new features and to squeeze every last available byte of User Memory to achieve some significant performance results.
One of the most exciting new feature is the support of native graphics in the firmware. With this new feature, one can simply use standard NetMF Graphics methods to render to a display that is attached to a MBN main board.
Since the graphics methods are being done natively and not in managed code, we can expect screen draws at a rate magnitudes above of what can be achieved in managed code.
For instance, with a MBN Quail main board hosting a OLED-C click, one can achieve a full screen flush at more than 53 frames per second (it depends on what is drawn on the bitmap, of course). While doing the same with the MBN managed only driver for the OLED-C Click, the frame rate drops to a mere 1 – 2 frames per second. That is a 5, 300 % increase in performance.
Currently we have support for the following diplay offerings:
- ILI9163 – 128 x 128 TFT LCD
- ILI9341 – 240 x 320 TFT LCD
- SEPS114A – 96 x 96 OLEd (a.k.a. OLED-C Click)
- ST7565 – 128 x 64 Graphic Monochrome LCD
- ST7735 – 128 x 160 TFT LCd (a.k.a. GHI N18 or generic)
- ST7735R – 128 x160 TFT LCD (a.k.a. GHI N18 or generic with Blue/Red Color Space swapped)
We have also added support for orientation : 0°, 90°, 180° and 270° when available. There are absolutely no drop in framerate when the displays is rotated.
Another very nice feature is that you can use different kinds of display simultaneously ! You can then have a B&W ST7565 display and a bigger ILI9341 both displaying different information, at your will. Again, there is no loss in speed.
Last nice feature about native graphics is that you can use small bitmaps and draw them on a bigger display without declaring the whole bitmap.
For example, on the ILI9341, a full-screen bitmap would be 240x320x2 bytes long, which gives 153.600 bytes eaten ! And there is still no program code involved…
With our Flush() feature, you can for example declare a 100×100 bitmap and draw it at (100,200). It is only a 20K bitmap that will not interfere much with your code. And of course, such a small bitmap will be faster to display 😉
Another new feature added to the firmware is the ability to retrieve the processor unique ID. This will allow you too identify your board in code. The native method GetProcessorUniqueID(int id) will populate a three (3) integer array with the unique ID of the STM32F427 processor on the MBN main board.
For instance, I got the following values for two separate MBN Quail main boards:
- 2162726, 825512217, 960049969
- 4390951, 808734986, 942814261
With this feature it is now possible to uniquely identify a single board if the need arises.
As far as the memory footprint, the original stock firmware left 172, 368 or 168.3K bytes of available memory for user code. We have been able to squeeze all of these enhancements into the firmware and only loose a few bytes of available memory. The new memory footprint is 171, 528 or 167.5K for user code. All this amazing stuff while keeping the memory footprint relatively the same.
We hope you will enjoy those new features ! There are many demo videos on the forum, so that you can see what it is all about :