Friday, March 14, 2014
STM32F429I Discovery SMS Emulator on Linux
Friday, February 28, 2014
USB HID Report Descriptor Parser in Python
1 Introduction
- descriptors which are binaries
- descriptors for an USB Sensor HUB
Tuesday, August 6, 2013
Kernel menuconfig to move in VIM ways
Specially for VIM fans. The following is a patch to current (GIT) linux kernel lxdialog that allows you to move with h,j,k,l keys in menuconfig. Please click HERE to download the whole patch file.
Sunday, July 7, 2013
Python Print String Descriptors for the USB HID Devices
1 Inctroduction
In this tutorial, we are going to write two small python programs that prints the String Descriptors for all the USB HID devices in the system. To do this, there are many choices of libraries for assistence. I will introduce two of them - PyUSB and PyWin32. PyUSB supports both Linux and Windows, and PyWin32 supports Windows only.
Friday, September 28, 2012
Writing Your First PyQt4 OpenGL Program
1 Introduction
Python is a programming language that lets you work more quickly and integrate your systems more effectively. PyQt is a Python wrapper for the C++ GUI framework Qt. Qt is a framework that uses the native widgets to draw its user interfaces.
PyOpenGL is a cross-platform open source Python binding to the standard OpenGL API. OpenGL is an application program interface that is used to define 2D and 3D computer graphics.
The article is written under Debian Linux. Packages that are required will be installed using powerful APT tool. If you are not a Linux user, however, don't worry. Since Python is a cross-platform language, Qt is a cross-platform framework, OpenGL is also a cross-platform interface, all the programs in this article also work for you. Just 'translate' the package installations according to your system and have fun.
Thursday, December 29, 2011
GDB Debugging ARM U-Boot on QEMU
1 Introduction
Wednesday, April 6, 2011
MIPS Exceptions Initialization and Handling on Linux
Exceptions and interrupts are un-expected events that disrupt the normal flow of execution. Interrupts are unexpected events from outside the CPU core. Exceptions are from within the CPU, including memory translation exceptions, cache misses, unusual program conditions such as unaligned loads, system calls and traps, and so on.
MIPS architecture adopts precise exception mechanisms, and make it easy for the software to deal with the exceptions. After any exception, CP0 EPC register points to the correct place to restart execution after the exception is dealt with.
Friday, March 4, 2011
Learning the Linux Boot Memory Allocator (MIPS)
Do you ever look at the report of 'cat /proc/meminfo' and wonder why the reported MemTotal is not equal to the amount of memory you have for the system? The followed is an example report from one of my systems. It shows the total memory is 60860kB (59.4MB) from line 2:
1 # cat /proc/meminfo 2 MemTotal: 60860 kB 3 MemFree: 47448 kB 4 Buffers: 0 kB 5 Cached: 7180 kB 6 SwapCached: 0 kB 7 ...
which is different from the amount of memory that bootloader gave to kernel, 64MB.
1 ... 2 ## Transferring control to Linux (at address 800042f0) ... 3 ## Giving linux memsize in MB, 64
Monday, June 21, 2010
Step by step to MIPS assembly
In this article, I am going to introduce how to write MIPS assembly. All the examples introduced will able to be assembled or compiled into actual executable programs. They can be executed on a MIPS machine running Linux. So, let's forget the simulator and come to real world :-P. The first is the most simple program.
