Preparing your Linux environment for VoCore development

Getting started with VoCore development can have quite a steep learning curve, so I am making this post and video to try and help others figure this out faster.  I tried to set up the dev environment on my MacBook, but due to an issue with MacPorts, I was unable to get it to successfully build OpenWRT.  Because of this, we will be using the Ubuntu VM set up in the previous posts to set up our environment and build OpenWRT.

To start off, you may be asking, “What is this OpenWRT thing you are talking about?  I thought this was about VoCore?”.  Well, VoCore is the chip itself, and it runs on the OpenWRT Operating System.  OpenWRT is an open source router firmware based on the Linux Kernel.  Because it is Linux based, it also makes more sense for us to use a Linux VM to ensure maximum compatibility.


The first step would be to install the necessary command-line tools for the OpenWRT build process.

sudo apt-get install zlib1g-dev libncurses5-dev gawk subversion libssl-dev git g++

This should take a few minutes.  Most of these tools could already be installed if you have done any kind of development work on this VM, but otherwise it will download and build the tools you need.

Next we are going to have to clone the OpenWRT source code so we can compile it and develop applications for the VoCore.  Navigate to your VoCore development directory, and use “git clone” to download the source.

git clone git://git.openwrt.org/openwrt.git

This will create a local git repository containing all OpenWRT source code for you to use.  There is some code that will need to be updated however, that is not part of the main OpenWRT source.  This will be update using the bundled “feeds” script.  From the base OpenWRT directory….

./scripts/feeds update -a

./scripts/feeds install luci

At this point, we are ready to configure and build OpenWRT for the VoCore platform.  To configure the build process,

make menuconfig

and ensure that the configuration matches the following.

Target System: Ralink RT288x/RT3xxx

Subtarget: RT3x5x/RT5350

Target Profile: VoCore

Save the configuration, and build it.

make

This process can take several hours.  When it is completed, you should have a fully built development environment for the VoCore system.  Soon I will have a video link describing this process, and a post up on writing your first program.

Project Euler #3

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

Simply factorize the target number and select the maximum value from the factors.  Should be pretty simple.  It should be noted, however, that simply iterating through every number is not going to suffice, because a number can have two of the same factors.

For example, the number 28 has a prime factorization of 2, 2, and 7.  The fact that there are two 2’s in the factorization should be taken into account when writing your solution.

Project Euler #2

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

We are given our bounds in the problem,  1..4000000 , and we are to find and sum every even fibonacci number inside the given bounds.

To start off, we should define a function to generate a list of fibonacci numbers.  I opted for a recursive function, but this could easily be achieved using simple loops as well.

def fib(nums, maxNum):
    if not (nums[-1] >= maxNum):
        nums.append(nums[-1] + nums[-2])
        fib(nums, maxNum)
    return nums

With that function defined, the rest of the problem is simply iterating through the array of fibonacci numbers, testing if they are even, and adding them to a sum value.

Project Euler # 1

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.

This one is pretty simple from the get-go.  Simply iterate through numbers  1..999  and check if they are a multiple of 3 or 5.  If they are, add them to the total.