Sunday, July 7, 2013

Multicopter Update

Here's a short update on ideas for the octocopter I'm going to make. I haven't spent too much time thinking of ideas recently as I've been too busy with basic electronics instead.

General update

Well, its been a month or so since my last post. Since my last post, I've had uni exams and now two thirds through my break and thought it was about time to post an update. I've been playing round with a couple of ARM development boards and trying to get some home brew PCBs eteched.

Wednesday, June 19, 2013

My Journey with the Raspberry Pi

So in an effort to clean my blog up and stop having posts that cover multiple topics which is bad for searching and finding useful information, I'm consolidation topics. This is a consolidation of previous posts on information on the Raspberry Pi.

Saturday, June 1, 2013

ARM Startup and Compilation and the Relevant Files on the STM32F4-Discovery


Author: Richard Ballard
Date Created: 30/05/13
Date Modified: 23/06/13
Version: 2.0

I've revised this post to make it easier to understand. The previous version was written during my university exam period so it was a tad rushed.

This tutorial is about understanding how an ARM microcontroller starts its code and what is needed for this to occur. I will very quickly go thorough how the basic process and then get stuck into the key files that are needed. So to make this tutorial too generic, I'm using the STM32F4-Discovery Board as the target, so the file names and code will be geared towards this but should be easily translatable to other microcontrollers.

After I've discussed the startup process in basic form, I'll discuss the compilation process. This includes what the linker does, how the library is connected to our code and then what the make files does. The makefile is equivalent to how IDEs compile everything automatically but are much more flexible.

After I'll then discuss the startup file (startup_stm32f4xx.s) then move onto the linker file (stm32_flash.ld), makefile and some basics of the peripherals library provided by ST. The peripherals library is a set of functions that provide an easy to use interface to manage the registers on the microcontroller. All ARM Cortex-M based microcontrollers should have something similar provided by the manufacturer. If one is not provided, it should be very easy to create a similar library. The files used in this document can all be downloaded as part of Jeremy Herbert's STM32 Template from https://github.com/jeremyherbert/stm32-templates/archive/master.zip. They can also be downloaded from ST (minus the makefile) by downloading the STM32F4-Discovery Firmware Applications Package. The code in Jeremy's templates are from the IO_toggle example program in the application package.

Saturday, May 25, 2013

Core Multicopter Designs

So this post should be a very long post. I've compiled it since the last post but I've had a few days of clear thinking where a lot of ideas have come to me. Its mostly on designing of the copter I want to build but there is also a bit on electronics. From this post onwards, I'm going to try and have an introduction paragraph so that the posts are neater. I'll then add breaks so that the entire post is not on the blog home page, making it look messy.

So with the copter design in this post, I've split it up into sections, these are mechanical, electrical and a combination of both (which is actually first) plus some extras. The mechanical section is then further spit up into rotors (and related), centre console, material (carbon fibre/fibre glass), camera mount/gimbal, bearings and then finally the electrical influences of on the mechanical design of the copter.

Thursday, May 16, 2013

Multicopter Design ideas and some electronics

So I've finally finished my tutorial on how to setup Eclipse with all the tools needed to program an ARM chip. It took me ages as I kept having issues with things not working as expected. I guess, the reason for this is that, people use propitiatory software and don't use these alternatives. The reverse can also be said though, people use propitiatory software as there are quirks with the free alternative. Anyway, I'll start some coding tutorials soon, but I have uni exams in 4 weeks so may take some time. I'll try to make them a series so are easy to follow. Talking of which, I haven't found any community websites for ARM chips (like AVR freaks is for AVR) so that's a shame. I think without this community, there is not an easy pathway to learning ARM coding without doing specialised courses at university's or learning on the job.

Wednesday, May 15, 2013

OpenSource ARM Development using Eclipse and OpenOCD


Author: Richard Ballard
Date Created: 15/05/13
Date Modified: 19/06/13
Version: 1.1

This tutorial is about using open source products to create a development environment that can be used to program various embedded systems. I'll be focusing on ARM based chips and in particular the STM32 flavoured cortex chips.
 
I'm doing this, as all the current recommended tools are expensive (unless crippled) and so are inaccessible for students like me. More importantly, these tools don't operate under alternative operating systems such as Linux and Mac OSX. The open source community has built a large range of tools for the individual components and these support a large range of devices but these tools are all developed separately. Some of these don't have very good documentation while others seem overly complicated. I will be using Eclipse with a couple of plug-ins as the IDE, with the tools behind being arm-gcc-embedded toolchain, which is maintained by ARM itself, and has no restrictions. OpenOCD will be the debugger to talk, via adaptors, to the chips (which for this tutorial will be on a development board). I was going to write this with the aid of an Olimex ARM-USB-TINY-H JTAG adaptor and an Olimex H103 development board but these seem to have a long lead time on delivery. So while I'm waiting, I decided I would buy a STM32F4-Discovery Board which incorporates an STLINK adaptor onboard.

To automate the building process I'm going to use make rather than Eclipses internal build system.

To fully use this tutorial, I'll assume you want to be able program ARM based systems and as such willing to stumble your way through the steps to get to the goal. What I mean by this, is that to install some parts and configure them, I will be using a terminal shell. There may be GUI (graphic user interface, such as textedit) tools for these purposes but I won't be using these as they sometime mis-format, try to predict what you want or don't offer the option you want.

The layout for this tutorial is I'll first go through the tools we'll be using in part 1 and how they fit together. In part 2, we'll download and install these on our system. Part 3, we setup Eclipse with these tools using a sample project. By this stage we'll have the basics all laid out. Part 4 is some option extras we can use to enhance our development.