Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
Probably a stupid question but I am in the following situation:
our development machines are currently all 64-bit Intel-based systems, where we produce 32-bit and 64-bit versions of our applications. We also recommend our customers to use Intel-based systems (as opposed to AMD-based systems).
Now our IT-manager wants to buy some new development systems and to cut the costs he is looking into buying (64-bit) AMD-based systems. Visual Studio (2010) probably doesn't care which processor it is running on, and the generated code is probably the same, but just to be sure: does it make any difference for the generated executable on which processor (AMD vs. Intel) it is built?
The .NET and Visual Studio compilers don't really care AFAIK since I have experimented with this before and the assembly that it spits out is the same no matter what. In the case of ICC and GCC there are certain callpaths that must be differentiated for AMD and for Intel (very specific things) which you probably shouldn't worry about to begin with. GCC not as much as ICC (Intel C Compiler) which will attempt to optimize with a lot of SSE and branch prediction hints on Intel but leave some out on AMD which may not support certain features.
There are also libraries out there that rely on specific architecture types such as Intel or AMD but they are very specialized (and I have only seen them used in research purposes) such as very complicated floating point parallel libraries and complex threading libraries.
It depends on how you configure it. I think by default, no it doesn't matter.
If you're using the Intel Compiler and you compile with /QxHost or /fast, then it will matter since it clearly looks at your system to see what it's capable of.
But if you specify /arch:XXX or whatever option, it will be independent of your machine. For GCC, I think by default it doesn't look at the host machine.
EDIT:
As as far as libraries like MKL go, the host machine will still have no effect on which version of the MKL is compiled. In general multiple code-paths of the MKL are put into the binary regardless and the CPU-dispatching is done at run-time.
It doesn't matter. From the software point of view AMD and Intel are the same chips: x86-based CPUs. Yes, they can have different extended instruction sets. But the same you can say about Intel CPUs belonging to the different generations. Visual Studio compiler will run on all of them and produce the same code.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
Is WxWidgets relevant in 2015? Last release was on October 06, 2014, is this project dead? Is there any reason to pick it over Qt?
Yes, wxWidgets is relevant in 2015 for writing portable desktop applications with native look and feel, nothing much has changed there.Reasons for choosing wx over Qt remain the same as always too, see e.g. this answer. What did change is that in many cases you need to target mobile platforms (where wxWidgets is much less relevant as it only has some support for iOS and still not for anything else) or may choose the HTML+JS approach -- but this is a separate decision.
The project is certainly mature (who wouldn't, after 20+ years), but is not dead at all. You can look at the commit activity to check for yourself. If you think that 11 months since the last release is too long to wait for, you are absolutely free to use the latest Git master (which does have quite a number of improvements) or switch to one of JavaScript frameworks.
Gladly to informed about latest release wxWidgets, it's now being version 3.1. Seem the guys behind the stage were worked hard to invent and make this library become more mature and provide better feature. wxQt is now being supported, nice...
wxWidgets is worth as our primary GUI framework to work with. Congratulation for all wx developer community.....
Check it: http://wxwidgets.org/news/2016/02/wxwidgets-3.1.0-released/
I do agree with Dr.Vadim, 11 months (now 12 months) is not too long to wait for another recent release. Since it first release 20+ years ago, wxWidgets now is become really mature library and provide you very complete documentation. wxWidgets also makes GUI component look native in the desktop's OS where it appeared... be it windows, linux or mac...
I'm also heavy user of wxWidgets due to it's ability to yields portable application, maturity, complete documentation, updated and licensing scheme reasons. Binary application yields by this library is very small, even for statically linking compare to qt.
For those reasons, developing an application for ARM architecture with limited cpu speed and memory will be satisfied by wxWidgets library.
CMIIW, I believe, future of portable and embedded application will belong to wxWidgets...
This link is my experience to build wx library and application for Raspberry Pi: http://yasriady.blogspot.co.id/2015/10/how-to-build-wxwidgets-for-raspberry-pi.html, and as the result, my application running smooth and happy in Raspbian...
You might try to make a comparison for those reasons as well.... and see if wx will match your expectation....
UPDATED (12-Jan-2016):
Ready used and easy installation wxWidgets/Eclipse-IDE/Toolchain cross compiler, please do follow this link: http://yasriady.blogspot.co.id/2016/01/raspberry-pi-toolchain.html
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I need to compile C project for Attiny85 but not sure which compiler to use - free if possible. Is Atmel Studio a good choice?
Complier
Free and the best compiler for AVR is AVR-GCC (in Windows it's called WinAVR).
It supports ATTiny85 (here is the list of supported devices).
So you just need to pass this option to compiler:
-mmcu=attiny85
You can look here for Makefile example.
Flashing software
To upload your firmware to ATTiny85 chip, you can use AVRDude program. It's free and most popular application for flashing AVR chips. See this for usage example.
IDE
As for IDE, there are plenty of them out there, but IMHO two best choices would be:
Vim: if you prefer console applications. Especially good for Linux. I would recommend to use next plugins: cscope, CTags, OmniCompletion, NerdTree. Still, if you don't know vim yet, it would take a lot of time to learn it and configure it properly (I'm personally using vim).
Eclipse: if you prefer GUI applications. It's very flexible, free, cross-platform and extremely powerful. It's very easy to configure Eclipse for AVR development (to use AVR-GCC and AVRDude). There is Eclipse plugin for AVR. And you also can find a lot of tutorials in web about how to use Eclipse for AVR development.
If you are novice, I'd say -- go with Eclipse.
Debugger
For debugger I would recommend GDB. GDB is free and very powerful debugger software. It's easy to integrate GDB into Eclipse
Also you will need AVaRICE to connect GDB with JTAG.
Note
All software I mentioned is free, cross-platform and actually being used for professional embedded development, so you can use it without second thoughts. Actually, it's almost single choice you have out there, except for IDE (still, my colleagues at work use mostly Vim and Eclipse, 50/50, so I think there is not much choice here as well).
Another good thing is that it's very easy to migrate to another MCU (from AVR) if you stick to software I listed above. E.g., for MSP430 there is similar GCC toolchain and similar flash software, and GDB of course. So you can just configure Eclipse to use msp430-gcc instead of avr-gcc and develop for MSP430.
I googled a lot, and almost all users compile their codes with Atmel Studio, or they use Attiny along with Arduino. So I think Atmel studio is the best choice. It also includes gcc to compile c/c++
Atmel® Studio 6 includes the GCC C and C++ Compiler, assembler and a simulator, and interfaces seamlessly with in-system debuggers and programmers to make code development easier.
Given the availability of a new workstation (Intell Xeon X5690, Windows 7 Professional, 64-bit) for numerical analysis of fluid dynamics models, I find it a shame not engage in parallel computing. So far, I have had no or little experience in this field.
What's the difference between MS-MPI and the latest release of MPICH suitable for Windows? I installed MPICH 1.4.1, but I cannot get a test program to work on Ifort. How am I supposed to compile the program? Do I have to change Ifort configurations somehow to add the libraries of MPICH? Isn't there any good manual available online that could meet my needs?
There's lots of questions in this one question, but it all boils down to one basic question: How do I install MPI on Windows?
MPICH has long since worked on Windows. The last version that supported it was 1.4.1p1 as you've found, but it doesn't have any support anymore from the MPICH developers so if you have trouble, you probably won't find much help. I haven't seen anyone on here step up to help with those questions so far.
MS-MPI is a good option if you want to use Windows. It's free to use and still has support directly from Microsoft. You'll have to read their documentation about how to set everything up correctly, but it's probably the right place to start if you want to use MPI on Windows.
Intel MPI also works on Windows, but it isn't free so you might not want to look at that right now.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
The community reviewed whether to reopen this question 1 year ago and left it closed:
Original close reason(s) were not resolved
Improve this question
I have been looking into micro-controllers and was wondering if the majority of them are C/C++ based? I am quite proficient in java and want to ask you guys if anyone knows of a good cost efficient, java-based micro-controller I could look into.
All answers are appreciated!
The difference between a language like java (or c#) and a lower level language like c or c++ is the fact that they have a virtual machine.
This has many advantages, like making the application platform-independent. But it also means that each platform has to have the vm for it.
Now, microcontrollers are not uniform and vary in power, memory, and many other features. So adopting the JVM (java's virtual machine) for them is not easy even when possible.
Most of the time its just impossible - most of the uc have very low memory capacity (part of what makes them cheap) - this would make fitting any general-purpose JVM there impossible, not to mention also with the application code.
I am aware of some partial-implementations of java for microcontrollers. For example "java-based" sim cards (which have a very small controller inside) are there, but they have a very limited version of java.
So basically I think your best bet to write "embedded java" (especially if you're a novice) is to work on top of microcontrolers that are basically a small fully functioning computer, that runs a proper OS that already has a JVM. Just look into one of the new "micro computer" open source projects like raspberry pi or beaglebone. Both cost around 2x of an arduino and are much more powerful.
Hope I helped.
Have a look at the Java-ready STM32 microcontrollers or Renesas RX.
As an alternative, you can run a stripped-down JVM on AVR/Arduino using Haiku-VM, NanoVM or uJ.
You can also write Arduino sketches in Java and cross-compile them to C using VBB.
JArduino might be a good starting point for you, as it would allow you to write Java programs that interact with an Arduino board. The Java API provided by JArduino is fully aligned with the Arduino API. Then, once you get used to the Java API, it should be easy to switch to plain Arduino programming (as pointed out, the C/C++ -based Arduino is not that far from Java, anyway). Be aware that with JArduino you do not really program the micro-controller itself (your main logic would run on your PC and the Arduino would simply be "controlled" without any advanced logic running on the board).
There are Java alternatives, but I think they are costly. For example ST Microelectronics has this java IDE based on eclipse:
Java SDK
I have no experience with java on microcontrollers, but Java have many similarities (C based language) to C++ (which is more supported with microcontrollers), but it is still C that is dominating. It should be possible to learn this quite fast if you already know Java.
Arduino uses C++ and are easy to use for people inexperience with C/C++.
I suggest you also try the STM32 Java forum to see if there are users already sharing their experiences:
STM32 Java forum
You can look at Java on a Chip (JoC Module) is the java programmable controller-module
JoC have a reference Board Javaino for easy development
Also Demmel iLCD product have the Java VM on board, it's a smart display with JVM
I want to study and compare executable file structure of elf, SPARC and PA-RISC.
To perform the studies I want to install OpenSolaris on an Intel machine (Core2Duo).
But I got a basic doubt will it work at all ?
I know SPARC has its own assembly - grew in suspicion if it will work or is valid thought at all.
I was aiming to write some programs disassemble them and with some help of tools study the file structures.
I don't have any clue how to perform all this for HP-UX (PA-RISC); dont know any free OS for PA-RISC.
You won't be able to run Sparc or PA-RISC executables on an intel processor. However, if all you want to do is to analyse the structure of these executables, all you need is suitable development tools.
I haven't checked, but I suspect OpenSolaris comes with development tools capable of analysing Solaris/sparc executables out of the box. But even other toolchains can do that. For example, GNU binutils (specifically the BFD library they use) support many architectures, including Sparc and PA-RISC. (If you use GNU binutils, make sure you get a full version, perhaps labeled as “for cross-compilation”, e.g. binutils-multiarch on Debian or Ubuntu)
SPARC:
I have never installed OpenSolaris on anything. You might consider trying NetBSD: it runs SPARC machines at least as well as Solaris did, and it uses ELF format executables. The source code is freely available for study, too.
You will need to understand the ELF file format. I don't recall any particular document standing out back in the days when I wanted to understand ELF, and it looks like Google can offer a large number of web sites that will explain ELF. My advice on ELF is to write a program to read the ELF headers, and then dump them out in a readable text format, even though many such programs already exist.
You will also need a SPARC disassembler that understands ELF. I wrote one a long time ago, it will probably work reasonably well today. http://www.stratigery.com/elf_dis.tar.Z
You can download PDFs about SPARC here: http://www.sparc.com/specificationsDocuments.html I recommend the SPARC V8 and V9 architecture manuals.
PA-RISC:
This is a very odd architecture, with very little in the way of documentation. I believe that PA-RISC was Apollo Computer's (R.I.P) RISC architecture, then HP bought Apollo in 1990 or 1991. The stack grows down and the heap grows up, where just about everything else has it the other way around. It also has a segment register, but one that works differently than x86 segmentation.
HP is really the only place to find anything about PA-RISC.
There are ports for PA-RISC architectures of Linux, NetBSD and OpenBSD.
You cannot run code compiled for Sparc or PA-RISC on an x86 system, unless you use a full-fledge emulator. Qemu can emulate a Sparc-based machine, with enough accuracy for running a Linux operating system on it (but it will not be fast: Qemu must interpret all Sparc opcodes one by one, and this has a heavy overhead, so a fast PC from 2011 may perhaps yield the performance of a Sparc workstation from 1996). There is an ongoing project for adding PA-RISC support to Qemu but it does not seem to have reach any non-trivial level of usability yet.