• About Jakob Engblom and this blog
Observations from Uppsala Computer Simulation, Virtual Platforms, Embedded Programming, Multicore and More (by Jakob Engblom)

Category Archives: Embedded

Embedded anything, software, hardware, tools.

Compiler Code Size Comparisons (for Possible Embarrassment)

2010 January 26 12:34 / Leave a Comment / Jakob

whycAn embedded researcher friend of mine has posted some data on code sizes from various compilers at http://embed.cs.utah.edu/embarrassing/. The “embarrassing” bit is the idea that compiler writes should be ashamed when other compilers do better than theirs. It is worth looking over the data, even though the methodology and benchmarks are not yet perfect by any means.

Read More →

Tweet
Posted in: embedded software, programming / Tagged: C/C++, code optimization, code size, compilers, gcc, John Regehr

MCC 2009 Presentations Online

2009 December 3 09:29 / 2 Comments / Jakob

UPMARC_700x150The presentations from the 2009 Swedish Workshop on Multicore Computing (MCC 2009) are now online at the program page for the workshop. Let me add some comments on the workshop per se.

Read More →

Tweet
Posted in: appearances, computer architecture, conferences, embedded software, multicore debug, multicore software / Tagged: Andras Vajda, Domain-specific languages, Ericsson, heterogeneous, homogeneous, keynote, LTE, MCC, UpMarc

Freescale Online Fault-Tolerance “Demo”

2009 November 18 13:21 / Leave a Comment / Jakob

freescale-logo-iconI just spotted a fun little application on Freescale’s homepage: an interactive demo of the fault tolerance functions of the MPC564XL dual-core microcontroller.

Read More →

Tweet
Posted in: computer architecture, embedded systeme / Tagged: fault injection, fault tolerance, freescale, MPC564XL

IEEE Computer models@run.time

2009 November 1 21:26 / Leave a Comment / Jakob

computer cover modelsWhen I saw the cover of the October 2009 issue of IEEE Computer magazine, I was quite intrigued. Just what was “models@run.time”? I had never heard of the concept before, but it turned out to both simple and profound.

Read More →

Tweet
Posted in: embedded software, programming / Tagged: IEEE Computer, model-based development, models@run.time

Finally, a Bug!

2009 October 25 21:41 / 2 Comments / Jakob

butterflyPart of my daily work at Virtutech is building demos. One particularly interesting and frustrating aspect of demo-building is getting good raw material. I might have an idea like “let’s show how we unravel a randomly occurring hard-to-reproduce bug using Simics“. This then turns into a hard hunt for a program with a suitable bug in it… not the Simics tooling to resolve the bug. For some reason, when I best need bugs, I have hard time getting them into my code.

I guess it is Murphy’s law — if you really set out to want a bug to show up in your code, your code will stubbornly be perfect and refuse to break. If you set out to build a perfect piece of software, it will never work…

So I was actually quite happy a few weeks ago when I started to get random freezes in a test program I wrote to show multicore scaling. It was the perfect bug! It broke some demos that I wanted to have working, but fixing the code to make the other demos work was a very instructive lesson in multicore debug that would make for a nice demo in its own right. In the end, it managed to nicely illustrate some common wisdom about multicore software. It was not a trivial problem, fortunately.

Read More →

Tweet
Posted in: embedded software, multicore software, programming, virtual platforms / Tagged: Checkpointing, debugging, demo, Linux kernel, Simics

Ericsson Blog Post about DSL

2009 October 25 20:29 / 1 Comment / Jakob

ericsson_logoAndras Vajda of Ericsson wrote an interesting blog post on domain-specific languages (DSLs). Thanks for some success stories and support in what sometimes feels like an uphill battle trying to make people accept that DSLs are a large part of the future of programming. In particular for parallel computing, as they let you hide the complexities of parallel programming.

Read More →

Tweet
Posted in: embedded software, multicore software / Tagged: Andras Vajda, Domain-specific languages

The S4D Debug Conference

2009 September 27 20:38 / 3 Comments / Jakob

S4DAn unplanned and unexpected bonus with my trip to the FDL 2009 conference was the co-located S4D conference. S4D means System, Software, SoC and Silicon Debug, and is a conference that has grown out of some recent workshops on the topic of debugging, as seen from the perspective of hardware designers (mostly). S4D was part of the same package as FDL and DASIP, entrance to one conference got you into the other two too. As I did not know about S4D until quite late in the process, this was a great opportunity for me to look at what they were doing.

Read More →

Tweet
Posted in: appearances, conferences, EDA, embedded, programming, virtual platforms / Tagged: debugging, FDL, gdb, Hardware debug support, p4080, S4D

Freescale P4080, in Physical Form

2009 September 17 11:16 / Leave a Comment / Jakob

freescale-logo-iconPast Tuesday, I attended the Freescale Design With Freescale (DWF) one-day technology event in Kista, Stockholm. This is a small-scale version of the big Freescale Technology Forum, and featured four tracks of talks running from the morning into the afternoon. All very technical, aimed at designing engineers.

Read More →

Tweet
Posted in: appearances, embedded software, embedded systeme, multicore computer architecture, multicore debug, virtual platforms / Tagged: DWF, freescale, heterogeneous, homogeneous, Jonas Svennebring, MPC5606, p4080, Simics

Can we Rely on C?

2009 August 10 08:49 / Leave a Comment / Jakob

whycI have written several times on this blog about the odd propensity of the “EDA” business to consider the C and C++ languages “high level” languages. They are what I use almost daily for most of the demo-order programming I do, but I still don’t consider them very high-level. High-level for me is scripting (Python, Lua, …) or domain-specific languages (DML, Lex, Yacc, MatLab, …) or model-driven development (UML, LabView, Simulink, …) or languages which at least provide sensible and reasonably safe semantics (Erlang, Java, …).

However, in fact, most the embedded industry and the “virtual platform” industry rely on C and C++ to get our daily jobs done. Question is, how much longer can we expect to do that? An interesting post at Embedded.com by Michael Barr brought back my argument that modeling needs to move up in levels of abstraction just like mainstream programming.

Read More →

Tweet
Posted in: computer simulation technology, embedded software, programming / Tagged: C, Michael Barr, rant

Downloadable Book about Embedded Multicore

2009 August 8 20:27 / Leave a Comment / Jakob

freescale-logo-iconFreescale has now released the collected, updated, and restyled book version of the article series on embedded multicore that I wrote last year together with Patrik Strömblad of Enea, and Jonas Svennebring, and John Logan of Freescale. The book covers the basics of multicore software and hardware, as well as operating systems issues and virtual platforms. Obviously, the virtual platform part was my contribution.

Read More →

Tweet
Posted in: books, embedded software, embedded systeme, multicore computer architecture, multicore debug, multicore software, virtual platforms / Tagged: freescale, John Logan, Jonas Svennebring, Patrik Strömblad

LCTES 2010 Call for Papers

2009 August 1 00:26 / Leave a Comment / Jakob

The call for paper for LCTES 2010 is now out, the deadline is October 3. If you have something to publish in the area of “Languages, Compilers, and Tools for Embedded Systems”, please consider it! I am on the program committee, and looking forward to reading some really good papers. I used to publish at the LCTES myself when I was doing my PhD… see my older publications if you are curious.

The conference itself will take place in Stockholm in April of 2010, as part of the Cyber-Physical Systems Week (CPSWeek) 2010.

Tweet
Posted in: conferences, embedded software, embedded systeme / Tagged: CPSweek, LCTES

Conquering Software with Software High-Level Synthesis

2009 July 31 23:12 / 5 Comments / Jakob

46daclogoThis post is a follow-up to the DAC panel discussion we had yesterday on how to conquer hardware-dependent software development. Most of the panel turned into a very useful dialogue on virtual platforms and how they are created, not really discussing how to actually use them for easing low-level software development. We did get to software eventually though, and had another good dialogue with the audience. Thanks to the tough DAC participants who held out to the end of the last panel of the last day!

As is often the case, after the panel has ended, I realized several good and important points that I never got around to making… and of those one struck me as worthy of a blog post in its own right.It is the issue of how high-level synthesis can help software design.

Read More →

Tweet
Posted in: conferences, EDA, embedded software, ESL, programming / Tagged: DAC, device driver, high-level synthesis, Kees Vissers, Xilinx

The Hardware-Software Interface is where the Action Is

2009 June 7 20:52 / 9 Comments / Jakob

pn4_quad-gigaswift-utp-adapterWhen I started out doing computer science “for real” way back, the emphasis and a lot of the fun was in the basics of algorithms, optimizing code, getting complex trees and sorts and hashes right an efficient. It was very much about computing defined as processor and memory (with maybe a bit of disk or printing or user interface accessed at a very high level, and providing the data for the interesting stuff). However, as time has gone on, I have come to feel that this is almost too clean, too easy to abstract… and gone back to where I started in my first home computer, programming close to the metal.

Read More →

Tweet
Posted in: computer architecture, embedded systeme / Tagged: Brian Cantrill, Gary Stringham, hardware design, hardware-software interface, Keith Adams, Steve Gibson

Cadence Industry Insight: “Virtual Platforms Unite HW and SW”

2009 May 22 07:41 / Leave a Comment / Jakob

opinionAnother Cadence guest blog entry, about the overall impact of virtual platforms on the interaction between hardware and software designers. Essentially, virtual platforms are a great tool to make software and hardware people talk to each other more, since it provides a common basis for understanding.

Read More →

Tweet
Posted in: articles, embedded software, embedded systeme, ESL, programming, virtual platforms / Tagged: Cadence, Domain-specific languages, ISX, Richard Goering, scdsource, software testing

Guest Blog at Cadence: “Way Worse than the Real Thing”

2009 May 20 11:45 / Leave a Comment / Jakob

avataraspxVirtutech and Cadence yesterday announced the integration of Virtutech Simics and Cadence ISX (Incisive Software Extensions), which is essentially a directed random test framework for software. With this tool integration, you can systematically test low-level software and the hardware-software (device driver) interface of a system, leveraging a virtual platform.

Read More →

Tweet
Posted in: articles, computer simulation technology, embedded software, ESL, programming, virtual platforms / Tagged: Cadence, ISX, Simics, software testing, Virtutech

Getting the Least of our your C Compiler – The Best Article I have ever written?

2009 April 28 20:01 / 3 Comments / Jakob

Back in 2001, while a PhD student at Uppsala University and IAR Systems, I wrote what has to be the most popular and long-lived article I ever did: “Getting the Least out of Your C Compiler“. It was an Embedded Systems Conference class that I also presented in 2002 (after that, I changed jobs to Virtutech and therefore C programming was no longer my official topic). However, the text has lived on. It was featured as a chapter in  the “Firmware Handbook” edited by Jack Ganssle, translated into German by IAR Germany, and has popped up in various places from time to time.

Last week, it resurfaced at Embedded.com, with an attribution that was initially wrong.

Read More →

Tweet
Posted in: embedded software, programming, teaching / Tagged: C Programming, code optimization, Embedded.com, IAR Systems, Jack Ganssle, Uppsala University, Virtutech

EETimes.com – Multicore CPUs face slow road in comms

2009 March 22 22:16 / Leave a Comment / Jakob

eetimes logoThe  EETimes article Multicore CPUs face slow road in comms piqued my interest. There is an interesting chart in there about just how slow more-than-one-core processors will be in penetrating a vaguely defined “comms” market place. I can believe that, but I think their comments on the PowerQUICC series require some commentary…

Read More →

Tweet
Posted in: embedded systeme, multicore computer architecture, multicore software / Tagged: Cavium, Communications market, EETimes, freescale, heterogeneous, Linley Gwennap, Multicore Expo, Octeon, p4080, PowerQUICC, qoriq, Rick Merritt

Enea and Freescale Article on SMP OS

2009 February 24 10:43 / Leave a Comment / Jakob

Elektronik i Norden just published a technical insight article about the SMP kernels of Enea OSE and Linux, by Patrik Strömblad and Jonas Svennebring.

Read More →

Tweet
Posted in: embedded software, embedded systeme, multicore computer architecture, multicore software / Tagged: AMP, Enea, freescale, Jonas Svennebring, linux, mpc8572e, mpc8641d, OSE, p4080, Patrik Strömblad, SMP

Adding to Schirrmeister’s Virtual Platform Myth Busting

2009 February 18 13:22 / 2 Comments / Jakob

opinionFrank Schirrmeister of Synopsys recently published a blog post called “Busting Virtual Platform Myths – Part 1: “Virtual Platforms are for application software only”. In it, he is refuting a claim by Eve that virtual platforms are for application-level software-development only, basically claiming that they are mostly for driver and OS development and citing some Synopsys-Virtio Innovator examples of such uses. In his view, most appication-software is being developed using host-compiled techniques.  I want to add to this refutal by adding that application-software is surely a very important — and large — use case for virtual platforms.

Read More →

Tweet
Posted in: embedded software, embedded systeme, ESL, multicore software, programming, virtual platforms / Tagged: clock-cycle models, cycle accuracy, Eve, Frank Schirrmeister, freescale, Grant Martin, Lauro Ritazzi, p4080, Simics, software tools, Synopsys

Tying a Thread to a Processor in Linux

2009 February 1 20:24 / Leave a Comment / Jakob

This is a small Linux SMP programming tip, which I had a hard time finding documented clearly anywhere on the web. I guess people won’t find it here either, but with some luck some search engine will pick up on this.

Read More →

Tweet
Posted in: embedded software, embedded systeme, multicore software, programming / Tagged: fre, linux, mpc8641d, processor affinity, sched_setaffinity

Eclipse Linux Kernel Indexing Works

2009 February 1 18:10 / 1 Comment / Jakob

Edited on 2009-Feb-01, to include the link to the illustrated guide that really helps you get there faster. Thanks Simon! Also, promoted to front page, original post was put up on 2008-Nov-09.

Thanks to Simon Kågströms post (and the even better second-generation with screenshots) about using Eclipse for the Linux kernel, I have a much nicer work environment now for my ongoing work in learning Linux device drivers on PowerPC, which has helped me work my way through several hard-to-figure-out system calls. Read More →

Tweet
Posted in: desktop software, embedded software, ESL, programming, uncategorized / Tagged: eclipse, linux, Linux kernel, operating systems, Simon Kågström

“Multicore Debug” Made Top Ten Embedded.com for 2008

2009 January 1 21:10 / Leave a Comment / Jakob

embeddedcom-logoEmbedded.com just listed the ten most visited articles on their website during 2008, and my contribution on debugging multiprocessor code was number ten. If you want some more meat around multiprocessor debug, please peruse the various papers and presentations found on my personal website.

Tweet
Posted in: articles, embedded software, multicore debug, multicore software / Tagged: Embedded.com

“Nulticore Effect”

2008 December 9 21:50 / Leave a Comment / Jakob

Jack Ganssle wrote a column about the failure of multicore to scale, based on an article in IEEE Spectrum. He makes the following claim:

Now a study in IEEE Spectrum shows that even for the classic embarrassingly parallel problems like weather simulations multicore offers little benefit. The curve in that article is priceless. As the number of cores grow from two to 64 performance plummets by a factor of five. Additional processors nullify each other.

Call it the Nulticore Effect.

Read More →

Tweet
Posted in: embedded systeme, multicore computer architecture, multicore software / Tagged: Embarrassingly Parallel, IEEE Spectrum, Jack Ganssle, manycore, memory bandwidth, Sandia Labs

Gary Stringham on Hardware Interface Design vs Virtual Platforms

2008 November 29 22:51 / 14 Comments / Jakob

I just read an interesting paper from the 2004 Embedded System’s Conference (ESC) written by Gary Stringham. It is called “ASIC Design Practices from a Firmware Perspective” and straddles the boundary between hardware design and driver software development. It was good to see someone take the viewpoint of “how you actually program a hardware device is as important as what it does”. Gary seems to understand both the hardware design and implementation view of things, as well as that of the embedded software engineer. To me, that seems to be a fairly rare combination of skills, to the detriment of our entire economy of computer system development.

Read More →

Tweet
Posted in: EDA, embedded software, ESL, virtual platforms / Tagged: DML, embedded, Semifore, simulation, Spectareg, SystemRDL

Off-Topic: The First Snow is Here

2008 November 23 11:43 / Leave a Comment / Jakob

The first real snow reached Uppsala this weekend, lots of nice fluffy slippery cold snow on the ground and on the roads and everywhere else. It really is nice to have snow again, it lessens the effect of our dark winters and kind of puts you in a Christmas-like mood, especially now that the Christmas decorations are going up in town and shopping centers.

I also had to bring out the car for some errands and transports yesterday, and that new snow was probably the slipperiest I have ever driven on. It also provided an unsought opportunity for the electronic systems in our car to show themselves… both the stability and traction control and the anti-lock brakes were activated several times despite my pretty careful driving. For some reason, I never really believe that they would apply to me. I know that ESP and ABS are really good for safety, but for some reason I am a diehard skeptic that never quite believe these things work as they should. I guess this is another example of an embedded system that works as it should. Which really should not be a surprise.

Read More →

Tweet
Posted in: embedded systeme, transportation / Tagged: ABS, cars, driving, ESP, snow

Shaking a Linux Device Driver on a Virtual Platform

2008 November 9 23:23 / 1 Comment / Jakob

To continue from last week’s post about my Linux device driver and hardware teaching setup in Simics, here is a lesson I learnt this week when doing some performance analysis based on various hardware speeds.

Read More →

Tweet
Posted in: embedded software, ESL, programming, teaching, virtual platforms / Tagged: device driver, interrupt, linux, operating systems, power architecture, race condition

Learning Linux Device Drivers on a Virtual PowerPC

2008 November 2 12:02 / 7 Comments / Jakob

There are times when working with virtual hardware and not real hardware feels very liberating and efficient (not to mention safe). Bringing up, modifying, and extending operating systems is one obvious such case. Recently, I have been preparing an open-source-based demonstration and education systems based on embedded PowerPC machines, and teaching myself how to do Linux device drivers in the process. This really brought out the best in virtual platform use.

Read More →

Tweet
Posted in: embedded software, ESL, teaching, virtual platforms / Tagged: DML, endianness, freescale, linux, operating systems, power architecture, Simics

Some surprisingly good embedded systems

2008 October 25 21:37 / 3 Comments / Jakob

I am a skeptic when it comes to technology. Despite working in the tech field — or maybe because I am — I always expect technology to fail or at least disappoint. But sometimes that instinct is actually wrong! Here are two recent examples when I felt “wow, that was pretty good” about some fairly mundane pieces of computerized equipment.

Read More →

Tweet
Posted in: biking, embedded systeme, gadgets / Tagged: bike light, embedded, self-checkout, shopping

ChipDesignMag Article on Software in Hardware Design

2008 October 17 21:47 / Leave a Comment / Jakob

Chip Design Magazine published an article by me in their August/September 2008, about Getting Software into the Hardware Design Loop. The article is about the technical and marketing aspects of how chip designers can get early feedback from software and systems designers, early in the hardware design process. The vehicle for this? Virtual platforms, obviously.

Read More →

Tweet
Posted in: articles, computer simulation technology, embedded systeme, ESL, virtual platforms / Tagged: ChipDesign Magazine, hardware design

Stackoverflow.com — Worth a Visit!

2008 October 1 21:49 / Leave a Comment / Jakob

I have recently discovered stackoverflow.com and I must say it is something I very much recommend. The idea is simple, and the details rich and interesting.

Read More →

Tweet
Posted in: embedded software, programming, websites / Tagged: stackoverflow.com

Post Navigation

« Previous 1 2 3 Next »

Recent Posts

  • Military Science Fiction – The Books Blur Together
  • Wind River Blog: Starting & Configuring Simics
  • Wind River Blog:
  • Nudge Theory and Graphical User Interfaces
  • Wind River Blog: Collaborating with Recording Checkpoints
  • Wind River Blog: Simics 4.8 is Here
  • A Few Electrons too Many
  • Wind River Blog: Visuality NQ CIFS Server on Simics
  • Everything in the Cloud?
  • Wind River Blog: TCF and Simics
  • Off-Topic: Moving Bad Piggies Save Games
  • Two Cores, Four Cores, Eight Cores – Mobile Variety
  • Bliss: Failing to Pivot for Ideology
  • Wind River Blog and Movie: Demo of Simics Debugging
  • Simulation vs Reality in Schlock Mercenary

Categories

  • appearances (30)
  • articles (21)
  • blogging (10)
  • books (7)
  • business issues (31)
  • computer architecture (35)
  • conferences (34)
  • EDA (50)
    • ESL (35)
  • embedded (78)
    • embedded software (57)
    • embedded systeme (50)
  • general research (6)
  • history (32)
    • general history (7)
    • history of computing (26)
  • off-topic (94)
    • biking (5)
    • board games (1)
    • computer games (3)
    • desktop software (35)
    • food and drink (1)
    • funny (12)
    • gadgets (24)
    • Politics (3)
    • popular culture (5)
    • trains (5)
    • transportation (10)
    • travel (10)
    • websites (3)
  • parallel computing (92)
    • multicore computer architecture (51)
    • multicore debug (22)
    • multicore software (65)
  • programming (109)
  • review (8)
  • security (19)
  • teaching (7)
  • testing (9)
  • uncategorized (12)
  • virtual things (131)
    • computer simulation technology (68)
    • virtual machines (18)
    • virtual platforms (99)
    • virtualization (14)
  • Wind River Blog (43)

Tags

ARM blog commentary Cadence Checkpointing clock-cycle models Communications of the ACM computer architecture conference cycle accuracy debugging Domain-specific languages eclipse embedded freescale G900 heterogeneous homogeneous IBM Intel iPod lego linux mobile phones multicore off-topic office 2007 operating systems p4080 podcast commentary power architecture rant research reverse debugging reverse execution S4D SiCS Multicore days Simics simulation software tools Sun SystemC video virtualization Vista Windows

1

  • F-Secure Blog

Blogs and news

  • Andras Vajda's blog (on multicore)
  • Embedded in Academia (John Regehr)
  • Grant Martin
  • Jack Ganssle
  • My Wind River Blog
  • Security Now podcast
  • Secworks (Joachim Strömbergson)
  • Simon Kågström
  • Synopsys View from the Top
  • Worse Than Failure

Archives

  • June 2013 (3)
  • May 2013 (4)
  • April 2013 (1)
  • March 2013 (4)
  • February 2013 (1)
  • January 2013 (3)
  • December 2012 (2)
  • November 2012 (2)
  • October 2012 (1)
  • September 2012 (6)
  • August 2012 (4)
  • July 2012 (4)
  • June 2012 (3)
  • May 2012 (4)
  • April 2012 (2)
  • March 2012 (3)
  • February 2012 (1)
  • January 2012 (6)
  • December 2011 (2)
  • November 2011 (3)
  • October 2011 (4)
  • September 2011 (5)
  • August 2011 (4)
  • July 2011 (3)
  • June 2011 (4)
  • May 2011 (7)
  • April 2011 (1)
  • March 2011 (3)
  • February 2011 (5)
  • January 2011 (1)
  • December 2010 (4)
  • November 2010 (3)
  • October 2010 (5)
  • September 2010 (5)
  • August 2010 (5)
  • July 2010 (6)
  • June 2010 (5)
  • May 2010 (3)
  • April 2010 (4)
  • March 2010 (3)
  • February 2010 (4)
  • January 2010 (7)
  • December 2009 (6)
  • November 2009 (6)
  • October 2009 (7)
  • September 2009 (6)
  • August 2009 (7)
  • July 2009 (11)
  • June 2009 (5)
  • May 2009 (10)
  • April 2009 (7)
  • March 2009 (8)
  • February 2009 (9)
  • January 2009 (12)
  • December 2008 (8)
  • November 2008 (9)
  • October 2008 (9)
  • September 2008 (10)
  • August 2008 (13)
  • July 2008 (12)
  • June 2008 (8)
  • May 2008 (9)
  • April 2008 (10)
  • March 2008 (7)
  • February 2008 (8)
  • January 2008 (5)
  • December 2007 (5)
  • November 2007 (7)
  • October 2007 (7)
  • September 2007 (12)
  • August 2007 (9)
  • July 2007 (2)
© Copyright 2013 - Observations from Uppsala
Infinity Theme by DesignCoral / WordPress