Monthly Archives: December 2018

VoCore2: Port Qt Success

[embedyt] https://www.youtube.com/watch?v=VH8uL3yWnfM[/embedyt]

Smooth Qt UI, at 30fps, WVGA.
I think it should be a good replace for UI devices who requires wifi or ethernet.
10K units for this solution price should be less than 15USD(screen + VoCore2)

Now I am porting a weather app on Qt to it, it should be good.

VoCore2: Port Qt

Now we have screen 🙂 So I’d like to port Qt. Thanks to pawelkn, https://github.com/pawelkn/qt5-openwrt-package, this package works well, just need to add one line. I search google, this is because MIPS do not have 64bit atomic operation, so we need to use the library to simulate it.

@@ -171,6 +171,7 @@
 	$(CP) $(PKG_BUILD_DIR)/qtbase/lib/libQt5Core.so* $(1)/usr/lib/
 	$(CP) $(PKG_BUILD_DIR)/qtbase/lib/libQt5Core.prl $(1)/usr/lib/
 	$(CP) $(PKG_BUILD_DIR)/qtbase/lib/libQt5Core.la $(1)/usr/lib/
+	$(CP) $(TOOLCHAIN_DIR)/lib/libatomic.so* $(1)/usr/lib/
 endef
 
 define Package/qt5-concurrent/install

Put this Makefile and other files to openwrt/package, then make menuconfig, in Library -> Qt5, select qt5-core, make V=s

Compile is smooth and take a long time…After upgrade, also make the example file and copy to VoCore2.

Like usual, it is not work at first time, the screen part only. 🙂

This is necessary: export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
We must use this command setup framebuffer device.

I do not know why it not work, possible reasons:

1. Qt support DRM but not framebuffer anymore, need to check linuxfb plugin for Qt5.
2. My framebuffer driver has bug, that block the demo runs on the screen.
3. VoCore2 do not fast enough for Qt(this is not likely, because I can find it actually works, but just stopped at somewhere, looks like it is wait for some device ready)
4. Other necessary device such as keyboard, mouse block the process.

From my first test, I guess Qt application bootup on VoCore2 is pretty fast. It takes around three seconds to start, just eat a lot of memory, demo consume around 22MB memory, maybe it can not work on vocore2 lite which free memory only around 30MB.

Also I port Qt5.11.3, here is the link: http://vonger.cn/misc/vocore2/qt5.11.3-openwrt.zip

VoCore2: USB Device Develop 4

The driver develop is done.

[embedyt] https://www.youtube.com/watch?v=VueZU-78Jjg[/embedyt]

Try this firmware(http://vonger.cn/misc/vocore2/20181218.screen.bin) and video tutorial(https://www.youtube.com/watch?v=VueZU-78Jjg)

Upgrade your VoCore2 to 20181218.screen.bin, connect the screen then reboot, it will work.

Later I will release a blob for the driver so you can embed it into your project/firmware easily.

VoCore2: USB Device Develop 3

This blog do not have any tech included. Just want to write down something to boost myself, I need to spend more time on it because the screen is still need a lot polishing.

First of all, I need to imply all drivers to kernel level. My demo just show the result, actually I did a lot of prepare before that, it is not plugin and play yet.

And Christmas is near, I do not have much out-source work for now, so I can focus on this screen. I will try my best to finish it before that holiday.

Next step, I am going to port FC games simulator or dos games simulator(except DOOM, not a challenge for me anymore 🙂 after this and with exists sound support, VoCore will like a real small computer.

Maybe before step two, another good choice is to port X-window system to VoCore2(with a SD card for more storage). As I know a lot of desktop linux is able to run in 128MB memory(even 64MB, very old computer). If I can do optimize on it, it should be no problem to run on VoCore2.

This is also a tech prepare for VoCore3.

PS: VoCore3 still have a long way to go. I need its solution price lower enough, power consume lower enough, also tons of interfaces. VoCore2 is the best choice in the market as I know and for further two year it should be. Anyway, VoCore2 will keep production, nearly ten years should no such worry 🙂

PSS: I know USB2.0 screen is kind of out-of-date, if we do screen in USB3.0, it should be pretty easy. I spend almost one year and a lot of money to finish it has three reasons:

1. USB 3.0 power consume is super high. Of course, you can not let 10GHz bus eat only a little power.
2. USB 2.0 is common and compatible with USB3.0, so for small screen, it is good enough in most situation.
3. USB 3.0 supported chip is very expansive for now, everybody like cheap but fantastic production, so any unnecessary cost is a waste.
3.1 VoCore and RaspberryPi do not support USB3.0.
no reason four. 🙂

VoCore2: USB Device Develop 2

Actually the bug is easy to fix. URB can not use buffer alloced in stack, that cause the driver broken…

So fix that driver is super simple, remove that line: u8 buf[6] = {…};, and replace with u8 *buf; buf = kzalloc(8, GPF_KERNEL); everything will work.

After this simple fix, now I have make fbcon works on VoCore2 and its small display.
Here is the picture:

This driver will map /dev/fb0 and we can easily control it as framebuffer, fbcon need to select from kernel, then it will automatically bind to /dev/tty0. We can use command “/bin/ash –login > /dev/tty0 2>&1” to redirect serial port input/output to the display.

After that, we can get output from the little display.

Next blog, I will try to make it easy to use and public every steps of how to use it.
Later I will public most of its source code to help you easy hack 🙂

attach youtube video https://youtu.be/w98_JvtTgqo, smooth like baby skin. 😉

PS: another best thing is CPU usage is 0%