Building Kernel Modules for AllWinner A10 Android Devices (e.g. Joystick Support)

Reader JP has enabled Joystick support in Android 4.0.4 on its Mele A1000, this now works with a Playstation2 joystick via USB adapter, a Huskee PC joystick, and 2 other unbranded joysticks. In order to enable Joystick support he had to build a kernel module, and encountered a few issues, so he wrote an how-to which shows what challenges he went through and what solutions he found to those issues.I’m sharing today a slightly edited version of this how-to. This How-to assumes that you have a valid Linux environment where you can build allwinner A10 kernel. The toolchain used was “Sourcery CodeBench for ARM GNU/Linux Lite“ which can be downloaded here: http://www.codesourcery.com/sgpp/lite/arm/portal/package7853/public/arm-none-linux-gnueabi/arm-2010.09-50-arm-none-linux-gnueabi.bin To install it, simply run:

You’ll also need the latest Allwinner A10 kernel source:

Then follow the usual procedure:

I then selected the modules needed for different kind of joysticks namely:

I saved the […]

Linux 3.5 Release

Linus Torvalds has announced the release of Linux Kernel 3.5: Subject: Linux 3.5 released Ok, not a lot happened since -rc7. There’s a number of MIPS commits (for some reason MIPS has had a horrible track record with the -rc time schedule, I suspect I should just stop pulling late in the game), but most of the rest is pretty small. A couple of dm/md fixes, some gma500 work, make kgdb ‘dmesg’ command work again, some networking fixes, some xfs and cifs noise, yadda yadda. About 50% of the patch is actually the SPEAr clock name renaming that is just some search-and-replace. … Linux 3.4 brought updates to Btrfs file system, some new Intel, AMD and NVidia GPU drivers, X32 ABI, perf tool improvements and support for Yama security module and QNX6 file system. Linux 3.5 brings the following key changes: ext4 metadata checksums:  Ext4 has added the ability to […]

Linux 3.4 Release

Linus Torvalds has just announced the release of Linux Kernel 3.4 on the 20th of May: I just pushed out the 3.4 release. Nothing really exciting happened since -rc7, although the workaround for a linker bug on x86 is larger than I’d have liked at this stage, and sticks out like a sore thumb in the diffstat. That said, it’s not like even that patch was really all that scary. In fact, I think the 3.4 release cycle as a whole has been fairly calm. Sure, I always wish for the -rc’s to calm down more quickly than they ever seem to do, but I think on the whole we didn’t have any big disruptive events, which is just how I like it. Let’s hope the 3.5 merge window is a calm one too. Linus Linux 3.3 merged Android drivers to mainline, added further improvements to btrfs and ext-4 file […]

Linux 3.3 Release

Linux Torvalds announced the release of Linux Kernel 3.3 on the 18th of March: So after the extra -rc release last weekend, now the final 3.3 is out there in the usual locations. Things did indeed calm down during the last week, and the shortlog looks pretty boring. The diffstat from -rc7 is dominated by the arch/tile defconfig changes, the rest is pretty small, although there are changes spread out in various subsystems (drivers, filesystem, networking, perf tools). … And obviously, the 3.3 release means that the merge window for 3.4 is now open, although I may keep of pulling stuff for a day or so to encourage people to test the actual release. Linux 3.2 brought ext-4 and btrfs file system improvements, support for Qualcomm Hexagon processor, an improved profiling tool (perf top), and better CPU and network bandwidth management. Linux 3.3 brings the following key changes: Android merge: […]

Binary Blobs Attack – ELC 2012

Zach Pfeffer, Android Platform Lead at Linaro, talks about (GPU) Binary Blobs and the problems they cause at Embedded Linux Conference 2012. Abstract: Binary Blobs Attack!!! Most SoC vendors distribute binary blobs with Linux kernel shims. These binary blobs enable graphics engines, DSPs and other cores on ARM and other architecture SoCs. These binary blobs tend to be tied to specific kernel versions which limits unreadability and hackability and complicates device manufactures, which slows down innovation and the introduction of new and unique computing devices. Here’s what I noted from this presentation: Most of the issues at Linaro come from (GPU) Binary blobs, they delay projects and cause projects to cost more as FAE and more engineers must be involved in solving problems. Blobs are here to stay mostly due to legal reasons (patents). Binary Blob are usually OS independent, e.g. the same binary is used in Windows and Linux, […]

Raspberry Pi Releases BCM2835 Datasheet for ARM Peripherals

If you have been following Raspberry Pi project, you may have noticed the dearth of documentation related to Broadcom processors. For BCM2835 (The processor used in Raspberry Pi board), Broadcom only has one laconic webpage. But the Raspberry Pi’s “super-team” has managed to get a (partial) datasheet for the SoC showing the details of BCM2835 ARM peripherals which is all that we may need. This would only be useful for people playing around with the Linux (and u-boot) drivers. The document includes details about the processor’s memory map as shown below. It also contains details (registers, implementation details, etc..) about the following ARM peripherals: Timers Interrupt controller GPIO USB PCM / I2S DMA controller I2C master I2C / SPI slave SPI0, SPI1, SPI2 PWM UART0, UART1 You can download BCM2835 datasheet to get the complete documentation. The Raspberry Pi foundation also announced that the boards will be ready on February […]

Android Drivers Will Be Included in Linux Kernel 3.3

The Android drivers were no longer accepted in the mainline Linux kernel, starting with Linux kernel 2.6.33, as announced by Greg Kroah-Hartman back in spring 2010. But this is about to change, as it appears that Greg Kroah-Hartman will include the Android drivers into his development branch for the upcoming Linux kernel 3.3, making it boot on Android devices without being patched. The Linux Foundation’s Consumer Electronics workgroup, along with a group at Linaro and various individual developers, is working with Kroah-Hartmann on this project. Tim Bird, chair of the Architecture Group, announced the Android Mainlining Project on the 20th of December with the goal of coordinating work on integrating the Android features. Further information on this project is available on the wiki and developers can also sign up for the project’s mailing list to join the 15 other persons involved in the project. Jean-Luc Aufranc (CNXSoft)Jean-Luc started CNX Software […]

Embedded Software Books

I’m often asked what useful books software engineers should read when they start to work on embedded systems. So here’s a list of books I would recommend as starters. First, nowadays many embedded systems are written in C (although lower end systems using 8-bit MCU are still likely to be written in Assembler), so software engineers had better make themselves very familiar with C/C++ and GNU tools (gcc, libtool. automake…) with a focus on embedded systems (e.g. interrupts handling, real-time capabilities, volatile variables, processes and threads’ stack handling, , cross compilers…).  Programming Embedded Systems: With C and GNU Development Tools, 2nd Edition is just the right book for that purpose. It deals with embedded Linux and eCos and provides useful examples. You may also read part of it online Once you start developing embedded systems you are likely to write device drivers at some points. Linux Device Drivers, 3rd Edition […]

Exit mobile version
Memfault IoT and embedded debugging platform