What is the difference between vxworks 653 and vxworks 7 - vxworks

I am new to vxworks. And I hope to start a project with vxworks based on ARM A53 architecture. It seems vxworks 653 and Vxworks 7 both support the CPU. But it is hard to tell which one is better from the name. Is vxworks 653 similar to vxworks 7? What is the major difference?

VxWorks 653 implements the ARINC653 interface, which VxWorks 7 does not. "653" is not a version number, but refers to that specific feature. Unless you specifically need the ARINC 653 interface, VxWorks 7 is probably what you need. Their new "Helix" platform reportedly merges 653 and 7.

VxWorks 653 implements the ARINC653 for things that fly and need to be certified by the FAA. VxWorks 653 comes with only limited functionality needed for certified systems. The assumption is you are going to keep your code base to a minimum because every line needs to be certified.
VxWorks 7 is very feature rich in comparison, with all kinds of optional network protocols, middleware, security features and drivers. More like working with an eLinux that something like FreeRTOS.

Related

Embedded Board Support Package

As I understand, a BSP (Board Support Package) contains bootloader, kernel and device driver which help OS to work on HW. But I'm confused because OS also contains a kernel. So what is the difference between the kernel in OS and the kernel in BSP?
What a BSP comprises of depends on context; generically it is code or libraries to support a specific board design. That may be provided as generic code from the board supplier for use in a bare-metal system or for integrating with an OS, or it may be specific to a particular OS, or it may even include an OS. In any case it provides board specific support for higher-level software.
A kernel is board agnostic (though often processor architecture specific), and makes no direct access to hardware not intrinsic to the processor architecture on which it runs. Typically an OS or application will require a Hardware Abstraction Layer (HAL); the HAL may well be built using the BSP, or the BSP may in fact be the HAL. A vendor may even package a HAL and OS and refer to that as a BSP.
The term means what it means to whoever is using it - context is everything. For example in VxWorks, WindRiver use the term BSP to refer to the layer that supports the execution of a VxWorks based application on a specific hardware design. A board vendor on the other hand may provide a complete Linux distribution ported to the board and refer to that as a BSP.
However and to what extent a particular vendor or developer chooses to support a board is a board support package regardless of how much or how little it may contain.
BSP definition is broad. It is a supporting software package for a specific board. BSP for a tiny microcontroller probably just contains HW drivers for its peripherals. On the other hand, for an embedded CPU it may contain HW drivers, bootloader and OS kernel and what not.
So the kernel in a BSP (board support package) is just a specific version of an OS kernel that has been ported to your board.
Im probably just saying the same things already said.
You have a chip and/or board product you want to sell to other (software) developers. A reference design (board) with the chip(s) in question are used. The BSP is a vague term to mean the software that is provided to you as a software developer to ideally make your life easier in using that product (chip and/or board) and adding your software to it or developing for it. So if it is a linux or rtos or other operating system capable platform and the vendor (providing the bsp) believes that users want an operating system and a specific operating system, then instead of you having to port the os to that target, they do it for you. If something like linux that is open source, then you either are told which linux sources to download then the patches made by the bsp are added and/or the bsp contains the complete sources for the whole thing already patched. Drivers, applications as deemed necessary by the vendor etc. Multiple operating systems may be supported if the vendor feels that is needed in order to attract customers to buy that board/chip product.
The whole package of software that you get from them to make that chip/board into your own product, is the BSP.
vxWorks kernel which you can run on a Board contains vxWorks core kernel and "other components" which may change from one environment.
Core kernel contains essential programs such as Scheduler, Memory manager, Basic File systems, security features etc.
These "other components" which are part of BSP may be optional or may vary from system to system, and helps the core kernel features.
In simple words, the image dislays the defination of BSP. Please correct me if I'm wrong
I would say for a well structured code base, the application layer should be abstracted from lower layers by the HAL layer. This would allow the app layer to be portable if we want to migrate the system to a new board. If you see you have board/CPU specific logic in your app layer, you know you have broken the portability.
The HAL layer functions' bodies should contain board specific code, here is where the BSP layer code comes into play. When we want to port the system to a new board, code changes should happens in the HAL functions' bodies, while the HAL functions' declaration should not change, which leads to the app layer remains the same.

SATA in Samsung Exynos

Please take a look at the picture below.
You can see that Samsung integrates SATA 3 into the Exynos 5 Dual. So does that mean that smartphones which use Exynos 5 will be able to connect to hard drives or optical drives by using SATA interface ? Do I misunderstand anything ?
And also, does DMA in the figure ("32x DMA") refer to "Direct Memory Accessing" ?
Exynos is a general SoC (System on chip solution) that is mainly used in Samsung's high-end smartphones, but it is still not exclusively design for smartphones. Like most SoC platforms, it packs a whole lot of peripherals and features, most of which are not likely used in one application, but are there to be used in another application if needed (like a NAS device - network attached storage). This is the general nature of SoC chips.

Simulating target on PC

I'm doing a project in C language that runs on a target with vxWorks operating system.
I would like to run my code on PC also for two reasons:
The HW of the target is not available yet, and i want to start testing my SW.
Even when the target will be ready it will be easier for me perform testing and simulations on a PC.
Is there some interesting way to do it?
Thanks.
You have three choices:
Use the VxWorks Simulator (vxsim) - it's part of the Workbench and can be accessed like a real target
Pros:
Easy to to use
Integrated into workbench
Debug functionality and good control of the system
Doesn't need any further hardware
Documentation (check Wind River VxWorks Simulator User's Guide)
Cons:
Not the real target system (but this is a con for all points here)
Use a x86 machine and boot eg. through ftp
Pros:
You can test booting via network and network
Cons:
The system may lack of drivers
Possible you have to change kernel
Debug is not as good as vxsim
The difference to your target may be realy big
Use a Virtual Maschine
Pros:
Runs on same pc - no further hardware required
Possible to test several bootloaders
Cons:
Not possible to simulate the target cpu etc.
A VM is not the best way for VxWorks testing
As Archie, I recommend you the VxWorks Simulator too.
A third way is to abstract the HW and OS in a separate layer in your application architecture, and provide both a PC and VxWorks versions of this layer.
This is rather costly, of course, but will have other advantages, i.e. insulation from vendor instability (like when pSos support was stopped years ago...) It might also nudge you in the direction of a nice, layered architecture.

Is it possible to program Microblaze without EDK, on any Xilinx FPGA?

Is it possible to program Microblaze without EDK, on any Xilinx FPGA device ?
I am developping under Linux.
Is there advisable tutos/books about that ? Is there a stable open-source clone ?
For spartan 3, spartan 6, virtex 5, and virtex 6 family FPGAs you can use the simple microblaze design in xapp1141 from Xilinx without needing EDK.
http://www.xilinx.com/support/documentation/application_notes/xapp1141.pdf
https://secure.xilinx.com/webreg/clickthrough.do?cid=132893&license=RefDesLicense
It includes a netlist for a simple microblaze design. If you use this you do not need EDK at all.
You can instantiate the netlist in your FPGA design and build it using the normal ISE flow. Then you use the Xilinx SDK to write and compile software for it. You are very limited in the peripherals that the microblaze will have built in: simple data address bus, debug interface, and UART.
Any other peripherals you want (ie SPI, I2C, etc) you would have to write in HDL and connect to the simple address and data bus implemented by the simple microblaze. Your software also has to fit in and run out of the internal block ram (8KB) allocated by this microblaze netlist.
UPDATE:
In ISE 13.4 there is now a Microblaze MCS coregen core that allows you to instantiate a mircroblaze without EDK.
http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_4/ds865_microblaze_mcs.pdf
By the datasheet it appears to support everything from Spartan 3 to the new 7 series parts.
I you want to instantiate a Microblaze core in your design, then you need ISE EDK.
If you already have a design with Microblaze. Then you can program it (i.e. write software for it) without ISE EDK.

Embedded Cellphone Code

What do most cellphones use to run the hardware? C?
I'm just talking about the "common cellphone", not smart phone/android stuff.
I work for wireless semiconductor chip provider, and we work on variety of phone platforms from ULC (ultra low cost ) segments to Smart phones.
In our Reference phone design, the entire code (including Protocol stack, Kernel, Middleware, Application and MMI) is written purely in C. AFAIK even first tier customers use C language for their framework, atleast for ULC and Mid category phones, as the memory size tends to be a big requirement.
Phones running a variety of the Symbian OS will very likely have all core OS functionality written in C++, as that is the "native" language of Symbian.
When talking about cellphones, there are usually two processor components in it.
The "main" processor that covers the user interface.
The "baseband" processor that powers the cellular modem. It handles the low-level radio interface, switching towers, etc.
The code for #1 tends to be higher-level (C, C++, Java, etc). The language used really depends on the OS that it is running (Windows Mobile, Symbian, Linux, something home-grown, etc). Of course, there is almost always SOME low-level assembly for the boot loader.
The code for #2 is pretty low-level. Baseband Processors tend to be little more than microcontrollers. Mostly assembly language and C. Very unlikely to find anything higher level here. (Although I have seen a few cell modems with a Python interpreter built-in.)
Usually the Baseband Processor is running some kind of minimal RTOS, or in some cases OS-less. They are very often running an RTOS called Nucleus from Mentor Graphics.
On some low-cost cell phones, #1 and #2 are joined together to cut costs (only one processor & OS in the system).
Hardware things, like setting registers and handling interrupts to run the radio, are all done in C.
Two problems with C++ are, in my opinion, that
It is harder to design efficient programs in it. The CPU may only be a few hundred MHz.
The compilers for more exotic CPUs barely work in C, so running them in C++ would be a miracle.
Phones running Android will use mostly C under the java machine, and the Java in the top layers.
But if you look on most phones they are just like the rest of the embedded market,
it is a lot of c and in some project some c++.
And the smaller they are, the more c you will find.
/Johan
Most Cellphones have different layers of Software, Largely we can divide this into three parts.
1.Application Layer : anything like BREW,C++ or Android
2.Middle-layer : Consists of real time OS code : C code[mostly as I have seen]
3.Lower-Layer : Device Drivers : Written in C.
please note :Most Common Cellphones are likely to use C++ as an application layer ,Brew is largely used by CDMA phones for application layer
Nokia bought Trolltech, the makers of Qt - a cross-platform application and UI framework for desktop and mobile applications. Presumably this includes cell phones. Qt is written in C++. http://www.qtsoftware.com/developer/getting-started