Into the Mobile Embedded World

•August 21, 2011 • Leave a Comment

So this weekend I started hashing out the plans for spinning a ARM Coretex A8 embedded system for a project I will announce at a later time. I have done some work with a ARM 11 S3C6410 by Samsung on a development board made by a small Chinese company. A mixture of lack of documentation by Samsung that is not under NDA, the forking of the Linux kernel by Samsung to support the board their way, and the fact that a flaw in the power supply design resulted in the display voltage regulator to fry during a power cycle (nice hole in it) last Friday has left me setting this board aside for now.

I am looking to be using a TI OMAP processor 35xx or 37xx. These processors are very well documented, including numerous application notes on layout techniques which will be one of the more complex parts of this whole project. I have never taken on BGA design, especially ones with 500+ balls.

In an attempt to reduce headaches later and as I don’t see IC footprints getting bigger any time soon. I am investing in a used IR BGA rework station (bidding on it right now).

I have also been looking at potential PCB prototyping houses, unfortunately most of them are wanting quantities larger then I am interested in. The Advanced Circuits $66 4 layer special is nice, but the maximum drills per sq in may be an issue, when it comes to getting signals out of the middle of the BGA package, I am looking at close to 100 vias, 70 drills over what they allow. Standard Spec order would run around $400 for first prototypes. BatchPCB looks interesting, and would be a cheap solution, but would have a 3 week order to door lead time. http://batchpcb.com/index.php/Products

I have also been looking at JTAG programmers for this chip set. I am not all that interested in the “recommended” xds560 from TI for 3k.
http://focus.ti.com/docs/toolsw/folders/print/xds560.html

I will be using this blog as a dump point for my development.

I am also interested in any Job Opportunities in this area.

Advertisement

AMQP talks to dbus for Koji Part 1

•September 21, 2010 • 1 Comment

Alright, after doing a lot of reading on dbus and hashing out what I needed, I have managed to generate some code that will listen to an AMQP broker and translate that to the dbus.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# amqp-dbus.py
#
# Copyright 2010 bashton
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.

import dbus
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop
from moksha.api.hub import Consumer
from moksha.hub.reactor import reactor

class KojiAMQPDBusObj(dbus.service.Object):
def __init__(self, conn, object_path='/org/fedoraproject/amqp_dbus/koji/core'):
dbus.service.Object.__init__(self, conn, object_path)

@dbus.service.signal('org.fedoraproject.amqp_dbus.koji')
def dbus_notify(self, message):
pass

class KojiConsumer(Consumer):
topic='org.fedoraproject.koji.#'
DBusGMainLoop(set_as_default = True)
ses_bus = dbus.SessionBus()
busname = dbus.service.BusName('org.fedoraproject.amqp_dbus.koji', ses_bus)
kojidbus_obj = KojiAMQPDBusObj(ses_bus)
def consume(self,message):
print 'AMQP Topic : ' + message['topic']
print ' Message: ' + message['body']
self.kojidbus_obj.dbus_notify(message['body'])

def main():

kojiconsumer = KojiConsumer()
reactor.run()
return(0)

if __name__ == '__main__':
main()

A sample code that will excite this is very simple:

from moksha import hub

ahub=hub.MokshaHub()
ahub.send_message('org.fedoraproject.koji.1','a message')
ahub.close()

Now if you monitor the dbus using
dbus-monitor
you will see something like

signal sender=:1.184 -> dest=(null destination) serial=5 path=/org/fedoraproject/amqp_dbus/koji/core; interface=org.fedoraproject.amqp_dbus.koji.newpackage; member=dbus_notify
string "a message"

The next step is to write the simple notification applet that reads off of dbus. This should be fairly straightforward as many applets use dbus for doing this including ABRT.

Once that is done I will be delving into the depths of Koji to send messages out on amqp. I spoke with Luke Macken today and he seems to be ready to also help with taking on the world of AMQP and Fedora. These should be exciting times ahead.

Sorry the code indents are all wrong, I will see what I can do about that later.

Back to Fedora — AMQP to Koji, sir your build is ready.

•September 16, 2010 • Leave a Comment

Well last spring and this summer I ended up taking a break from Fedora to spend time on some other projects that had come up including the PIC MATLAB project that I had blogged about earlier. The PIC MATLAB project has been a success so far and will hopefully be receiving continued funding to continue the development. More about that project will be posted in a later blog entry.

So back to Fedora. AMQP for Fedora has not really moved forward once I stopped working on it, but I am back and ready to take it head on. The first project I will be working on is creating an attachment to Koji that will broadcast notifications about package builds to the message bus, users will then be able to subscribe to this bus. The user end is a two-part system daemon and applet. The daemon will be in charge of the subscriptions (for now just pulling out of a config file) the applet will reside in the gnome notification area and will actually display the notification about the builds to the users.

So when will it be done. I hope by the end of the month, yes, just two weeks away.

Also on another note, you guys working on Free Electronic Library rock! I have been verifying all my school work with various tools packaged under this project and you have saved me more than a point or two. If that’s not profit I don’t know what is.

Spring is Here

•March 18, 2010 • Leave a Comment

Well my break is over and classes started Monday. They are looking great, but a lot of work especially as I chose to take an additional class. Right now I am taking, Contemporary World Issues from Historical Perspective (A class focusing on Palestine and Israel as well as the American invasion of Afghanistan), Applied Statistics II, Intro to Digital Circuits and Computer Engineering, and Advanced Logic Design (A class focusing on FPGA design). I will still be continuing my work on the MATLAB project and the AMQP work.

I was successful in getting a PIC18F14K50 to work as a USB serial emulator, the first step in making to PIC programmer for MATLAB. I am using the USB framework that is provided by Microchip, the framework is powerful, but some of the coding style is very different from what I work with and is taking some time to adapt to. While I continue to work with the programmer my partner in the project is going to continue the development of the code conversion system. More on this and a link to the GIT repository in a later post.

Not a lot to report on the AMQP side of things, I did take a look at some of the Bugzilla feature that one of there developers pointed out to me in the last post that may allow for a tighter integration.

On this note I am hoping to get involved in the Google Summer of Code perhaps working on creating a better interface for packaging that is integrated with Fedora Community.

When I came back from my break I had to turn back to using Windows 7 for a while as some of the FPGA tools that I am using are not fully compatible with Linux, although most of them are and I think with a little programming I could get the rest to work. Unfortunately within a few hours of using Windows I remembered why I quit, it needed to install some critical updates, and I allowed it to. Next boot the entire system was unstable, I could not even roll it back to before the update as the shadow copy service had broken. I ended up having to reinstall the entire system, tracking down software keys and messing with settings, what a headache. I still need to reinstall grub so I can get back to booting Linux again.

In other news the weather the past two days has been amazing, two clear sunny days. I only had one class today in the late afternoon, so I spent all day out sitting in the sun reading, it was beautiful. I look forward to the continuation of this spring weather, although I know it will end up pulling me away from my coding work.

One more thing, I wanted to congratulate my good friend back home for getting a high school sailing team off the ground, they competed in there first regatta this past weekend down in Seattle. Keep up the good work, I look forward to sailing with you again this summer. On that note anyone in the Boston area need someone to race with keel-boat or otherwise? I am missing it.

Thats all for now,
Brennan Ashton
Sun is shining, the weather is sweet. Make you want to move your dancing feet. To the rescue, here I am. Want you to know, y’all, where I stand.

Ah. A Break.

•March 8, 2010 • 4 Comments

So I was going to post every day then, I figured once a week, and I kept pushing it off. My excuses. I was tired. I was busy with school. It is better to get work done on a project then write about it (In reality there is a balance, but this is a list of excuses). Finals week. Oh and looking for summer internships…. Anyone interested in hiring me?

Well I actually have gotten a lot done over the last few weeks. So here it goes:
School:
At WPI we are on a strange 4 quarter like system, except unlike most quarter systems, the regular year is four quarters, and then if you also want summer school there is a 5th quarter. Think of it like a semester based school and cut each one in to two. The result is a very fast paced school where each term is only 7 weeks long. We just had our Finals Week last week, and what a week that was. Started off with a Discrete Math final Tuesday, which is one of the more challenging math classes I have dealt with and I have gone through multi-variable calculus and differential equations. The reality though is that I actually enjoyed the class, and it has give me a new perspective on how I analyse some of the software that I write. Then on Thursday I had my Chemistry final which in reality was not that hard, I just could not remember the name of one of the quantum principles. Then Friday it was my Intro to Electrical and Computer Engineering final and well as the lab test for Chemistry, both went fine, but also kept me busy until the end of the week.

My professor for my ECE class asked me and another student to work with him on a project that is targeted at creating a system for allowing students to program PIC processors using only MATLAB and a very inexpensive programmer with a USB interface. This turns out to be a somewhat complex problem, MATLAB and Microchip have some tools that work with each other but they are focused on the higher end ds chips that are askew of the target of this project. So in someways we are starting from scratch.
There is a product from MATLAB called embedded toolkit and realtime toolkit. These allow for MATLAB code to be converted to C code but is targeted for higher level systems, and adds a fair amount of overhead to deal with the abstractions of MATLAB, including dealing with infinite numbers.
We also wanted to keep this as open as possible and cheap as possible, so we have been working on the SDCC GPL compiler that works with PICs along side the GPUTILS a PIC linker and assembler, so far its looking like a great set of tools to work with. We will be creating a set of abstraction MATLAB libraries to allow people to make simple calls to start a PWM, ADC, DAC, Timer, etc… without worrying about the low level hardware configuration. Idea if you know MATLAB you can program a PIC.
Hopefully this can get ported to the SCILAB opensource tool as an alternative to MATLAB.
I am this week working on creating the actual programmer which is based on a PIC18F14K50, which will look like a RS232 to the computer, but will allow for hex files to be streamed into other PICs, or even stored in flash on the programmer for later hostless programming.

I plan to write more on this as the week goes on and I get a chance to deal more with it.

The other project AMQP. There has been progress on this, and I am moving forward, I got resources for working on this allocated from Fedora, and have built a simple Bugzilla publisher. I am still very unhappy with the API for working with Bugzilla aka (that stack of perl crap), but it’s what I have to work with. All of the work with the AMQP bus is being handled by this awesome framework that Luck Macken has written called Moksha.

To send a message all I have to do is:

from moksha import hub

ahub=hub.MokshaHub()
ahub.send_message('org.fedoraproject','a message')
ahub.close()

and to receive them

from moksha.api.hub import Consumer
from moksha.hub.reactor import reactor

class BugzillaConsumer(Consumer):
topic='org.fedoraproject.bugzilla.#'

def consume(self, message):
print message['topic']
print message['body']

bzconsumer = BugzillaConsumer()
reactor.run()

I am going to be working on writing some basic metrics front ends for fedora community this week. I will post a link to them when I have something up and running.

In other news…
I am in the Kansas City area, flew on United. That was a mistake, my legs do not fit in the seats, and I was not about to pay an additional $100 to rectify the problem. I also got into Chicago about 10 min early, and they did not have a gate open for us so we waited until we were 30 min late and half the people on the plane missed there flights. I just made it to mine, but my bag was not with me when I got to Kansas City. They did manage to deliver it that night which was nice.

It is nice to see all the grandparents, aunts, and cousins. Even to a trip up to Iowa and had “Dinner” in a local restaurant. Things have certainty changed everyone in there knew everyone else. One conversation would start at one end and then others would start gossiping about it. There certainly is something special about it, but I think I will stick to city life.

Road Bike racing season is starting up, I am looking forward to it, but at the same time a little worried that I may not be able to make it to many races as I have decided to take an additional class this coming term. We will see how it all turns out.

Oh and I am committed to blogging once every week at a minimum, I am going to try to be a little more frequent then that.

GSOC just opened up for mentoring organizations. Looking to perhaps snatch something up there.

Life, Love, World

Brennan Ashton

Fedora AMQP

•February 9, 2010 • 1 Comment

At FUDCON 2009 in Toronto, a bunch of us sat down to talk about what the new message system was going to look like for Fedora Infrastructure, and today I finally got around to putting in the RFR for the test space we need to start messing with this technology.

This will be a major step forward for us.

*Create a unified way of communicating between Fedora services.
*Allow for abstraction that would allow for easier migration of services such as SCM.
*Allow for more real-time changes rather then depending on hourly cron jobs.
*Create a more dynamic system.

For me the main goal here is to create an awesome interface with Bugzilla so that the QA and Bugzapper teams can much faster process bugs that have been submitted. This will hopefully also result in a much more streamline approach to doing package reviews.

The extent of this system will be far reaching spanning everything from server monitoring, to creating an abstraction layer between the bodhi, koji, pkgdb, etc… and the SCM system. This may allow for later migration from CVS to something else deemed more effective.

I will continue to blog over the next months about progress that is being made in this area.

More information on this project can be found at:
Fedora Messaging SIG

“Great minds discuss ideas. Average minds discuss events. Small minds discuss people.”
— Eleanor Roosevelt

–Brennan Ashton

Starting Anew

•February 7, 2010 • 4 Comments

A few years ago I took up blogging, then ironically life got in the way, now realize how I miss it.  So what should you expect from this blog?  It’s really a mixed bag; their will be information on projects that I am working on in the opensource world, some school projects, some general analysis, trips and plans, and general thoughts on life.

So what do I do.  Well I run a engineering consulting business, Inspired Engineering, back in my home town of Bellingham, WA, but am now on the east coast going to school at Worcester Polytechnic Institute.  I am a Freshman pursuing the dual-degree MBA program with a BS in Electrical and Computer Engineering.  It is a lot of work here, but everything is amazing.

I have also been active in the opensource world with Fedora Linux,  and this year attended FUDCON, in Toronto.  My current project is a system for doing metrics on a bug tracker, however first an infrastructure based on AMQP has to be implemented.  Expect more information on this in the next few months.

I am also planning a solo cross-country bike ride this summer, which I am getting more excited about every day.  As some of you know I am a chronic  workaholic.

Comments on the design are welcome, I am still doing some tweaking to it.

Remember,

There is a pleasure in the pathless woods;

There is a rapture on the lonely shore;

There is society, where none intrudes,

By the deep sea, and music in its roar:

I love not man the less, but Nature more… -Lord Byron

Live free,
Brennan Ashton