Good presentation and good Q & A by the group and presenter. It seems they first want you to write code, then they want you to debug it - what is task partitioning for then? Also, now they are saying that LOC is not necessarily linked to productivity? :)
Hardware and software developers have to work together to find a Ucontroller to suit the needs of the design. I've developed both ways and its always hard to go back and correct the other.
Liked the pro/con on "roll your own." You have an app to write. Do you *really* want to design and debug your own RTOS while writing that app? Don't reinvent the wheel. Save yourself a huge amount of time and purchase an RTOS with good tech support.
Jack, are there any viable alternatives to the C Standard Library for embedded work? Legacy mistakes like "printf" abound...
The problem is that the library tends to be very compiler-dependent, and so is supplied by the compiler vendor. There are a few minor replacements, like the SMX GoFast floating point library I mentioned yesterday.
Comment about selecting an RTOS. If you let the h/w guys pick the ucontroller, you could get stuck trying to find an RTOS that will fit. That's how I ended up using Salvo because uC just would not fit. Turn the process around. Pick the RTOS/IDE that best suits your application, then tell the h/w guys to find you a ucontroller that meets the firmware requirements.
Absoultey agreed. The h/w and s/w people need to work together to pick a CPU. Seldom happens, though.
> The former requries more CPU horsepower. I think all hypervisors are for 32 bit CPUs.
that's kind of my point: why would I want to use that when I could have it in another way?
Oh, well, a lot of systems are on 32 anyway. And a huge upside for hypervisors is the security they can bring along. Again, Green Hills is the leader in this.
Comment about selecting an RTOS. If you let the h/w guys pick the ucontroller, you could get stuck trying to find an RTOS that will fit. That's how I ended up using Salvo because uC just would not fit. Turn the process around. Pick the RTOS/IDE that best suits your application, then tell the h/w guys to find you a ucontroller that meets the firmware requirements.
if i have a task that takes longer than the basic time tick and must be completed before another task runs do i lengthen the tick or is there a mechanism in the rtos to do that?
You can dynamically raise the priority, and lower it when done.
luizcosta, no issue, so long as C Plus Plus fits in your requirements. However, you should make the point that your students SHOULD get used to C, for embedded requirements that need it.
laxman, the more important question is whether that thread can be preempted or not. A thread can take more than one tick, IF it is safe to preempt it. Otherwise, extend the tick.
if i have a task that takes longer than the basic time tick and must be completed before another task runs do i lengthen the tick or is there a mechanism in the rtos to do that?
kenstan: you say you have a relay. Be sure that you have a reverse diode accross the coils or a zener or other snubber to stop the spikes where they are generated; kill noise as quick as possible at the source and at all I/O line.
Salvo is a cooperative RTOS. $1200 gets you the source, tech support, no per-unit royalties. The FDA will sign off on it as well, unlike many other RTOS's. If you're not doing a med device then maybe you don't care about the FDA...
Jack, the C Standard Library was never really built to be Hard Real-Time. Things like "printf", for instance, are a disaster. Is there an alternative for Hard Real-Time systems?
For an implanted class 2 med device, I used a PIC18F45J10 (32k of flash, 1k of ram). Using Salvo required 4k of flash and 254 bytes of ram, to run 13 tasks. Note that Salvo is not pre-emptive, but it is deterministic. No RMA hand-waving.
The FreeRTOS manual is good for people like me with no experience with RTOS. It starts out discussing Scheduling strategies and explains why some things work and others don't. It also discusses priorities.
Does it make sense to dual boot an embedded system with RTOSes?
I guess if there's a good reason to, though I can't think of any. Today instead of dual boot more people are thinking in terms of virtualization to run multiple OSes.
Just to understand further if an RTOS is managing an AMP, how will it save stack for one core and run it on the other one if the architecture does not match eg register set etc?
Like I said, you'll be running a copy of the RTOS on all of the cores. The implementation will vary between RTOSes. Best resources on this are QNX and Green Hills' Integrity.
Just to understand further if an RTOS is managing an AMP, how will it save stack for one core and run it on the other one if the architecture does not match eg register set etc?
What's the size of the smallest RTOS (firmware, not source code), you've used? How much RAM does one actually need to use an RTOS to handle, say, half a dozen tasks?
For a small OS like FreeRTOS you're talking probably tens of bytes of RAM per task, plus some constant overhead.
krana, the goal of RTOS development is to satisfy every possible combination of threads, periodic or not. The relevant issue is the extent to which a given RTOS achieves that goal.
What's the size of the smallest RTOS (firmware, not source code), you've used? How much RAM does one actually need to use an RTOS to handle, say, half a dozen tasks?
Jack, I have recently purchased an LPC1114 ARM cortex M0 and quite new to this. Before loading a RTOS a bootloader is required from what I understand, whats the best way to select such a bootloader or do I have to write my own?
Often the chip vendor will have code. Otherwise you'll have to write it. Or, get an eval board and use the code from that (if legal).
Jack, can you say ssomething about POSIX, pthread, and successful program design. I had the impression so far, that QNX provides the programmers with the least headaches.
It's hard to speak to that, but I talk to many happy QNX users.
Jack, I have recently purchased an LPC1114 ARM cortex M0 and quite new to this. Before loading a RTOS a bootloader is required from what I understand, whats the best way to select such a bootloader or do I have to write my own?
I am using interupt/ timer hold during temperature conversion as part of specs. So there is lag in my timing and it is represented in terms of flicker on seven segment display. How can I avoid it?
Jack, can you say ssomething about POSIX, pthread, and successful program design. I had the impression so far, that QNX provides the programmers with the least headaches.
priority inversion seems to be a big thing using RTOS and there are also ways to avoid that. Buit don't you think they are just workarounds, what is better way of avoiding it?
Things like priority ceiling protocol will help a lot.
It is always a good idea to be able to get the source code for the RTOS (or as much as possible) when buying one so you can tweak things if needed
I think that is useful, but not all vendors will do that. Also important in case vendor goes out of business, though most will escrow the code for you.
priority inversion seems to be a big thing using RTOS and there are also ways to avoid that. Buit don't you think they are just workarounds, what is better way of avoiding it?
Jack, what RTOSes do you use, and what RTOSes are typically used in different parts of the country? In particular, I'd like to know what RTOSes are typically used in the Northeast!
I don't think there are any regional diffs in the USA. In Europe we see more of Enea, etc.
Jack, what RTOSes do you use, and what RTOSes are typically used in different parts of the country? In particular, I'd like to know what RTOSes are typically used in the Northeast!
FrankBishop, you can usually pick whatever time scale you like as a variable. Some RTOSes will have different limits than others, but the one that typically operates in the time scale you want will likely be better for your application.
You said during the discussion of slide 27 that the RTOS should be chosen based on the Prossor selected and the Compiler used. Doesn't it make more more sense to chose a Compiler that is optimised for the Processor selected and the RTOS?
Kind of a simple quetion: with Round Robin tasking, if the duration is user selectable, does one try to choose a duration long enough for most tasks to complete, or are these durations typically only a small percentage of the average task time?
Thanks Jack. Nice presentation. Is profiling easy in the context of RTOS situation compared to the Raw C code without an Operating System for Microcontroller?
A: Actually, mutex is what creates the possibility of deadlock. Only with a low-priority or ill-behaved task taking a mutex and never releasing it, or with two tasks that take multiple mutexes in opposite orders, can deadlock occur. Of course, without a mutex, the shared resources will get corrupted and likely the system will fail, often spectacularly
As things stand, if you want a piece of hardware designed for Hard Real-Time needs, you have to settle for a consumer chip that was targeted to general purpose devices, which receive little development priority for Hard Real-Time needs, because the chip companies want to target the general market.
My main beef is this... as was noted yesterday, developments like Cache make Hard Real-Time performance incredibly complicated. If desktop computing hardware had to satisfy Hard Real-Time needs from the ground up, Commercial Off-The-Shelf hardware would be better designed for Hard Real-Time needs, because everyone wants their desktop to go faster.
Let's put it this way, Bruce McLaren... I strongly suspect that Real-Time physics simulations would benefit from a Hard Real-Time OS. I'm sure Video Game developers would appreciate some determinism as well, once they get used to the idea.
@TenTech: I admit I'm out of my core expertice, so correct me if I'm talking non-sense. Can desktop OS be made real time without undue effort (undue effort a term I am unable to define)? Is it needed, or just a nice feature to have?
LeoVargas, that can often be the best alternative, because it tells you what is used locally... look for the more popular classes, and you will get an idea on what is most locally relevant. :)
@FrankBishop - wikipedia actually has a pretty good list of RTOSs. Not totally exhaustive, but a good starting point if you're looking for some to look into.
RTOS memory/resources footprint determines MCU size. Usually need at least 1MB memory. 1/2MB RAM, 1/2MB ROM(or Flash). As long as MCU can handle that and have enough timers for RTOS tick, you are good to go.
I would dispute that, Bruce... Desktop Computers are meant to be generalized computing platforms. As they stand, they are insufficiently generalized for my purposes. That being said, it should be noted that, if Hard Real-Time issues aren't going to be tackled by the desktop community, then COTS computing hardware is going to continue to diverge from Hard Real-Time needs.
Anyway, Hard Real-Time versions of LInux tend to break compatibility with typical Linux software, so there is virtually no compatibility benefit to using a Hard Real-Time version of Linux over something else, for Hard Real-Time applications. That being said, I've heard Xenomai is very good for a Hard Real-Time Linux.
jl - yes, most RTOSs have functions which will cause the task to wait for some period of time. However, if you find yourself using it, think carefully about your design. It might make sense to break the operation up into multiple tasks.
franchzilla, an RTOS is not an alternative to Linux or iOS. An RTOS is a requirements driven thing; if you REQUIRE Hard Real-Time performance, then you use an RTOS. If Soft Real-Time performance is "kind of nice" for your application, you use something more common, like Linux, or whatever operating system runs on your device.
"burying their fuel tanks and lines with snowto bring the fuel temp up a little." Now that's funny. I guess the Inuit's knew weather better than the new emigrants.
#1 and kerosene gells at about -60. So the residents of Alakaket and Huslia were going back to using wood stoves and burying their fuel tanks and lines with snow to bring the fuel temp up a little.
The streaming audio player will appear on this web page when the show starts at 2pm eastern today. Note however that some companies block live audio streams. If when the show starts you don't hear any audio, try refreshing your browser.
By experimenting with the photovoltaic reaction in solar cells, researchers at MIT have made a breakthrough in energy efficiency that significantly pushes the boundaries of current commercial cells on the market.
In a world that's going green, industrial operations have a problem: Their processes involve materials that are potentially toxic, flammable, corrosive, or reactive. If improperly managed, this can precipitate dangerous health and environmental consequences.
With LEDs dropping in price virtually every year, automakers have begun employing them, not only on luxury vehicles, but on entry-level models, as well.
From Dell / Intel® New Paradigms in Design Work Scott Hamilton, vertical market strategist for Dell Precision workstations, 5/2/2013 3
Early in my career, I worked as a draftsman and remember the days of drawing on vellum with numbered pencils and Mylar with plastic lead. This was a fun experience in the sense that I ...
I've been using workstations for more than 10 years and love finding ways to get more performance from my system. With demanding professional applications that require more power each ...
A lasting memory from my first job as an engineer in an auto assembly plant is standing on hard concrete at six in the morning, vending-machine coffee clutched in hand, listening to ...
A quick look into the merger of two powerhouse 3D printing OEMs and the new leader in rapid prototyping solutions, Stratasys. The industrial revolution is now led by 3D printing and engineers are given the opportunity to fully maximize their design capabilities, reduce their time-to-market and functionally test prototypes cheaper, faster and easier. Bruce Bradshaw, Director of Marketing in North America, will explore the large product offering and variety of materials that will help CAD designers articulate their product design with actual, physical prototypes. This broadcast will dive deep into technical information including application specific stories from real world customers and their experiences with 3D printing. 3D Printing is
To save this item to your list of favorite Design News content so you can find it later in your Profile page, click the "Save It" button next to the item.
If you found this interesting or useful, please use the links to the services below to share it with other readers. You will need a free account with each service to share an item via that service.