Thursday, November 7, 2013

Design Learnings

Back in August, I was invited to share a selection of my personal electronics "design learnings" to a class of Monash University 3rd-year electrical engineering students. The class itself is centered around a design challenge where students would spend the entire semester planning, designing, prototyping and testing a robot to perform a specific task, which would then have to compete against other team's robots at the end of the semester (video from 2012). The presentation focused on a number of simple things which are often overlooked during the design process, but in a competition such as this, could ultimately give your design an edge in terms of reliability and performance. Topics covered were:
  1. Conserving Power
    1. Regulator choice
    2. ADC input circuit
    3. MCU operating conditions
  2. Circuit Protection
    1. Input supply protection
    2. Undefined MCU pin states
    3. MCU input pin protection
  3. Firmware
    1. Watchdog timer
    2. Real-time operating system (RTOS)
  4. PCB Design
    1. Level translation
    2. Filtering
Download Presentation [1.71 MB]
Download Presentation (Updated 2014) [2.32 MB]

Sunday, November 3, 2013

VT6656 WLAN driver on Ubuntu 12.04

For reasons unclear, Ubuntu Precise and Quantal (3.2/3.5) releases do not contain the VT6656 WLAN driver (deliberately). Nevertheless, the driver can still be manually built and installed.

The following procedure has been tested with Linux kernel 3.5.0-42 and 3.5.0-43:

1. Install build tools:
$ sudo apt-get install build-essential linux-headers-`uname -r`

2. Get driver source code (specific commit tested in this procedure):
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git
$ cd wireless-next
$ git checkout master-2013-10-18
NOTE: If the target machine does not have network connectivity, perform the above step on a machine which does and the copy the files to the machine manually.

3. Modify Makefile (wireless-next/drivers/staging/vt6656/Makefile):
A) Comment out (with a #): obj-$(CONFIG_VT6656) += vt6656_stage.o
B) Add: obj-m = vt6656_stage.o

4. Build driver:
$ cd drivers/staging/vt6656
$ make -C /lib/modules/`uname -r`/build M=`pwd` modules

5. Make a new directory for the driver in the kernel modules directory:
$ sudo mkdir -p /lib/modules/`uname -r`/kernel/drivers/staging/vt6656

6. Copy the new driver to the kernel modules directory:
$ sudo cp vt6656_stage.ko /lib/modules/`uname -r`/kernel/drivers/staging/vt6656/

7.  'do' a depmod:
$ sudo depmod -a

8. Reboot.

Reference(s):