Monday, December 24, 2012

Acer 5253 disk upgrade

 I'll start with the usual warnings: I'm not a PC repair expert; this is what I did, I'm reporting it in case it turns out to be useful for others. It might work for you or it might destroy your PC, wreck your marriage, or give you acne. Proceed at your own risk.

pc with disk drive bay cover removed.
Acer 5353 drive/memory bay. The holes for the locking tabs are clearly visible.

A locking tab looks like this if you pry too hard.

Found a good price on a new hard drive so I decided to upgrade my Acer 5253 notebook PC. The back of the PC has a cover with disk and memory symbols that's held on with 2 screws, so it looks obvious: remove the screws and replace the drive. Nope: take out the screws and pry, and the cover doesn't move. A Google search shows that lots of other folks have had the same problem: there's a series of small molded tabs that have to be pried loose. I used some cheap miniature screwdrivers to pry the tabs back. Only one of the tabs broke, which I think is a decent record.

Next step is to get the old drive out: it's mounted in a metal frame that's held in by one screw at the lower right and one small tab at the upper left. I took out the screw and slid the drive to the right. I found that it took a really hard push to get the drive to move: it seemed to hang up on the silvery tape under the top right frame end. After getting it out the first time, the drive slid in and out quite easily. For reassembly, I just reversed the steps: put the metal frame on the new drive (4 screws), engage the tab on the frame with the slot at the upper left edge of the mounting bay, slide into position, put the mounting screw back in, and finally put the plastic cover back on.
This tab at the upper left helps hold the drive in.
I found this YouTube video showing the whole process; it's a different model but the process looks about the same. Removing the cover and the old drive looks a lot easier for him than it was for me, though.
The tab slides down into this slot and then right.
The new drive is a white label unit from, who I found via the website. Just a one-time purchase from them, but shipping was prompt and the drive has been working fine so far.

Friday, January 27, 2012

STM32 STM32F4DISCOVERY arm eval board and Linux

Picked up this eval board at the last Embedded Systems Conference, and finally starting to work with it. The chip is a 168MHz ARM Cortex M4 with 12-bit A/D and D/A's . The eval board includes an accelerometer, microphone, and separate audio D/A chip, among other things. Pricing is really interesting. Here are Digikey quantity-1 prices:
STM32F407VGT6     $16.00
STM32F103C8T6    $ 5.71
(The F407 is the main ARM chip, and the F103 is a smaller ARM chip used as a programming interface). So the eval board is actually cheaper than the chips on it.

The F407 chip has a built-in program loader using either the serial port or the USB port. Both are supported by Linux tools, so I'm ignoring the F103-based programming port and using the F407's USB port.

Connections: I have USB cables from my Linux box to both the F103's mini-USB connector at the top and the F407's micro-USB connector at the bottom. The mini-usb is just used to supply power to the board, and isn't necessary if an external supply is used.

The programming tool is dfu-util, from . I downloaded and built the latest version from the git repository. To test it, I used the miniblink example program from the libopencm3 package at . libopencm3 uses the summon-arm toolchain, so I downloaded and built that as well so the example would compile easily. (This also means I now have 5 different versions of GNU GCC for ARM on my system: summon-arm (linaro-based), 2 from CodeSourcery, one from openembedded, and a built-from-scratch GCC. One of these days I'll simplify that).

To program, I connect a jumper between the 3V and boot0 pins on connector P2. After hitting the black reset button, lsusb shows USB devices connected as:
Bus 001 Device 011: ID 0483:df11 SGS Thomson Microelectronics STM Device in DFU Mode
Bus 001 Device 012: ID 0483:3748 SGS Thomson Microelectronics ST-LINK/V2
To use it without being root, I also added the line:
SYSFS{idVendor}=="0483", SYSFS{idProduct}=="df11", MODE="666" GROUP="plugdev" SYMLINK+="usb/stm32_dfu"
to plugdev (in Debian, I just created a new file in the /etc/udev/rules.d directory with this single line in it. Locations may be slightly different in other Linux distributions).
With that done, the command:
dfu-util  --device 0483:df11 --alt 0 \
        --dfuse-address 0x08000000 \
        --download /miniblink.bin
works. I removed the jumper and hit reset again, and a single LED blinks, as expected.

So that's "Hello, World" for the STM32F4DISCOVERY. Now I can start doing real work with it.