EEVblog Electronics Community Forum
Electronics => Microcontrollers => Topic started by: sasa on October 18, 2017, 09:10:23 am
-
Can anyone point ARM series/model MCU which do not require expensive environment (programmer/JTAG) to be flashed or even it is flash-less and use free compiler?
It is for plain hobby purpose and project is a GPS navigator with 4.3/5" color TFT with touch screen, street maps with path finder algorithm, voice synthesis, etc. In short, it should have functionality as any today standard car GPS navigation device.
I would prefer to start with ARM, rather than to use any advanced MCP/ATMEL MCU.
-
I'd look at a Raspberry Pi or something else which runs Linux.
-
STM Nucleo
http://www.st.com/en/evaluation-tools/stm32-mcu-nucleo.html?querycriteria=productId=LN1847 (http://www.st.com/en/evaluation-tools/stm32-mcu-nucleo.html?querycriteria=productId=LN1847)
-
Cypress PSOC -
For me what stands out is -
1) Routability
2) Fast 12 bit SAR A/D and slow 20 bit DelSig
3) DFB (Digital Filter Block) that is dual channel, handle FIR or IIR filters, or DFB
can be used as a GP fast processor block, similar to RISC block
4) MSI logic elements GUI based and/or the UDB Verilog capability. Eg. the FPGA
like capability
5) Onboard Vref
6) IDAC, VDAC, OpAmps (up to 4), comparator, mixer, switch cap, analog mux....
7) LCD, COM, UART, I2C, I2S, One Wire, SPI, Parallel, LIN, CAN, BLE, USB
9) Custom components capability, create with schematic capture or Verilog
10) DMA to offload processes like filters, COM, Display
11) ARM M0 (PSOC 4) or M3 (PSOC 5LP) or 8051 core(PSOC 3) or M0+/M4 dual core PSOC 6
12) Extensive clock generation capabilities
13) All components supported by extensive prewritten APIs
https://www.element14.com/community/thread/23736/l/100-projects-in-100-days?displayFullThread=true (https://www.element14.com/community/thread/23736/l/100-projects-in-100-days?displayFullThread=true)
http://www.cypress.com/documentation/code-examples/psoc-345-code-examples (http://www.cypress.com/documentation/code-examples/psoc-345-code-examples)
Great video library
Attached component list. A component is an on chip HW resource.
Free GUI design tool with schematic capture, "Creator". Components have rich API library attached
to each component. Compilers free as well.
PSOC 4 is low end of family, consider 5LP parts as well. PSOC 4 also has arduino footprint boards (pioneer) as well. PSOC 6 dual core M0+/M4.
https://www.elektormagazine.com/labs/robot-build-with-cypress-psoc (https://www.elektormagazine.com/labs/robot-build-with-cypress-psoc)
http://www.cypress.com/products/32-bit-arm-cortex-m-psoc (http://www.cypress.com/products/32-bit-arm-cortex-m-psoc)
https://brightcove.hs.llnwd.net/e1/uds/pd/1362235890001/1362235890001_5241352463001_2606504288001.mp4?pubId=1362235890001&videoId=2606504288001 (https://brightcove.hs.llnwd.net/e1/uds/pd/1362235890001/1362235890001_5241352463001_2606504288001.mp4?pubId=1362235890001&videoId=2606504288001)
Regards, Dana.
-
any stm32 discovery board, they are ~$10 and have programmer and debugger on the pcb.
i use embitz IDE which uses gcc but there are other good ide's too.
downside with stm32 is the peripheral library is a mess
-
In the Arduino brand there is Arduino Zero and Arduino M0 Pro. Both board comes with built-in Atmel EDBG debugger over SWD. You can use Eclipse CDT and OpenOCD as the software stack.
-
In the Arduino brand there is Arduino Zero and Arduino M0 Pro. Both board comes with built-in Atmel EDBG debugger over SWD. You can use Eclipse CDT and OpenOCD as the software stack.
You are serious in advicing to use an M0 for these requirements, what are you drinking thinking ?
GPS navigator with 4.3/5" color TFT with touch screen, street maps with path finder algorithm, voice synthesis
I would go at least M4 even M7 or better as nico already suggested go for a raspberry pi or beaglebone black kind of processing power to handle the GB's of map data, voice synthesizing and generating a fancy GUI on a touchscreen. It would make the job a lot easier.
-
Thank you all for answer.
BTW, to be clear, I'm not really interested for any dev. boards, but rather for bare ARM chip and homemade whatever is needed for the project.
As well, RPI is an overkill.
-
Develop the core system using a proper development environment (Like PC or RasPi), and abstract the low-level stuff to be as portable as possible. When you have the core functionality developed and tested you can then determine the actual hardware resources needed, and you will be be able to select the microcontroller that is sufficient for your purposes.
-
Thank you all for answer.
BTW, to be clear, I'm not really interested for any dev. boards, but rather for bare ARM chip and homemade whatever is needed for the project.
As well, RPI is an overkill.
No it is not. With your requirements you need an OS to deal with the various processes, reasonably fast graphics, some processing power for audio, storage space, memory, etc. This is way out of reach for a microcontroller so you'll need a SoC. If you are going to write everything from scratch you'll be working fulltime on this project for the next 5 years and even then you'll find you won't be able to do it on a (higher end) microcontroller running at 100MHz tops and something like 512kB of flash.
-
If you are doing the GPS stuff you may want to start somewhere higher. The M0 will not scratch it - unlikely for even a M7 on that matter. You might want to use Linux and maybe Android to make use of the vast library of existing GPS code.
Maybe first check if any existing Android tablet or iPad would suffice your needs? You may want to use the variants with cellular functionalities, as it seem to me like a common feature for cellular basebands to come with a built-in GNSS receiver. If not, it is still a better idea to use Raspberry Pi 3 + GPS module (or Raspberry Pi + cellular module with GNSS functionality + SIM card with data plan, if you want to have online map capabilities)
-
This project will be great extension of something I already done with pure ATmega328p.
It had:
- Nokia 5510 display, displaying standard GPS data and several other screens contain various statistic and analyze for satellites (signal strength, visibility, etc).
- Use menus and IR remote to change windows and makes setting.
- SD card, saving full NMEA data received every second in the file.
- Selecting places from SD card and show speed, distance and ETA. Saving full NMEA data is not deactivated in that mode.
- Draws only 50mA when fix, allowing 42 hours with 3xAA batteries. Draws 90-100mA during initial searching for satellites (30s).
- Show voltage of battery and show warning when low.
And worked perfectly. All libraries was made from scratch in C++ and pure 32K...
Missing "GO HOME" function, maps and its rudimentary display with implementation of short path finder algorithm and primitive voice synthesis could be made with in 2560's 256K, I already started...
However, pure Nokia 5510 display is obviously a toy to display graphic on screen and if already upgrade old project, I would upgrade MCU as well.
I doubt it will last 5 years, more likely few months working 1-2 hours a day in free time to accomplish at least functional and looking decent, with at least 8h battery life. I do not want Wi-Fi and no fancy devices, just homemade one and open sky...
With nowadays mobile phones, Wi-Fi and google maps, this may looks as a pointless project... However, this is just a toy project comparing with this one:
http://www.homebrewcpu.com (http://www.homebrewcpu.com)
But I understand him completely...
-
I would prefer to start with ARM, rather than to use any advanced MCP/ATMEL MCU.
ARM does not make CPUs, they only make cores. And ARM is ad advanced as it gets at the moment.
And yes, you seem to be getting ahead of yourself. You should probably pick a simpler task to get a feel for capabilities of actual devices.
-
Rather than just throwing out random suggestions for generic microcontrollers, maybe we can all notice the project requirements?
It is for plain hobby purpose and project is a GPS navigator with 4.3/5" color TFT with touch screen, street maps with path finder algorithm, voice synthesis, etc. In short, it should have functionality as any today standard car GPS navigation device.
The Arduino DUE and Cypress PSoC are terrible suggestions for this project; I don't know why they were even mentioned. Neither has an LCD controller, runs nearly fast enough to do voice synthesis or graphics, nor has enough RAM.
The STM32F4 might be able to be coaxed into building this (as it has an LCD controller and supports external SRAM), but what you really need is an application ARM processor, not a microcontroller. That's how Garmin and companies like that build this stuff. Once you have an application ARM processor on a board, you can get Linux/QNX/Windows Embedded/whatever OS up and running, which should make building out the system much easier.
Since you want to use bare chips instead of dev boards, I'd recommend looking at the Freescale/NXP i.MX6SL or even the ULL. These come in large, 0.8mm-pitch BGAs that are easy to solder, and can be squeezed into a 4-layer PCB stackup (especially the ULL), which will make prototyping a lot cheaper. You didn't mention battery constraints, but the i.MX6UL/ULL both have enough integrated LDOs that I've been able to get away without a PMIC on non-power-critical designs --- you only need two buck regulators to get a DDR3L-based system up and running.
You're most likely underestimating the complexity of this project by several orders of magnitude. Most embedded Linux projects I work on have a minimum 6-month time frame, with multiple developers working on them.
When you have 800 MHz parallel memory interfaces flying around a board, layout (especially power delivery and length-tuning) becomes critical. You'll need a good understanding of Linux kernel compilation and Device Tree stuff, as you'll have to integrate touchscreen drivers into the kernel, as well as configure the TFT's parallel RGB interface with the proper resolution/timing/front/back-porch settings.
At the application level, you're kind of on your own --- I don't know of any off-the-shelf path-planning libraries that are easy to integrate. I think graphics work is going to be especially challenging. None of that mapping data is open-source --- in fact, the vendors that create it often sell it to other companies, because it is so valuable.
-
With nowadays mobile phones, Wi-Fi and google maps, this may looks as a pointless project...
Well, you said it.
If the goal is just to re-invent the wheel and have fun taking as long as you like building it from the ground up, then it doesn't really matter where you start. Asking for advice also seems rather pointless, as you are so sure of what you want and ignore sensible suggestions. Quite often people just seem to want a "magic answer" instead of doing their own research.
There are dozens of cheap ARM boards around, just buy one and get on with it!
-
When you have 800 MHz parallel memory interfaces flying around a board, layout (especially power delivery and length-tuning) becomes critical. You'll need a good understanding of Linux kernel compilation and Device Tree stuff, as you'll have to integrate touchscreen drivers into the kernel, as well as configure the TFT's parallel RGB interface with the proper resolution/timing/front/back-porch settings.
With that in mind, perhaps the Octavo device (https://octavosystems.com/)? Fully compatible with BeagleBone (based on AM335x) but with a lot of complicated routing already inside its package. A dev kit is also quite cheap: the PocketBeagle at $25.
-
When you have 800 MHz parallel memory interfaces flying around a board, layout (especially power delivery and length-tuning) becomes critical. You'll need a good understanding of Linux kernel compilation and Device Tree stuff, as you'll have to integrate touchscreen drivers into the kernel, as well as configure the TFT's parallel RGB interface with the proper resolution/timing/front/back-porch settings.
With that in mind, perhaps the Octavo device (https://octavosystems.com/)? Fully compatible with BeagleBone (based on AM335x) but with a lot of complicated routing already inside its package. A dev kit is also quite cheap: the PocketBeagle at $25.
This is definitely a good idea.
-
not require expensive environment
It is for plain hobby purpose and project is a GPS navigator with 4.3/5" color TFT with touch screen, street maps with path finder algorithm, voice synthesis, etc.
1. GNU ARM + Segger edu.
2. Limited time project
3. High LOC subjects.
Getting this, including board design, running on a bare metal processor will take some significant time.
I suggest getting a rpi zero and using more off-the-shelf stuff with a gui framework to get this running. Like Qt.
-
I suggest getting a rpi zero and using more off-the-shelf stuff with a gui framework to get this running. Like Qt.
+1
Raspberry Pi is very cheap, plus lots of accessories available. Invariably when people ask about a project like this, it has been done before, and 30 seconds searching on Google will find them. For example, https://smstextblog.blogspot.co.uk/2014/01/raspi-sat-nav.html A couple of days and one could have a working system.
-
This small list of board who can be programmed with a free online compiler
https://os.mbed.com/platforms/
-
Have a look at this:
http://www.st.com/en/evaluation-tools/32f769idiscovery.html (http://www.st.com/en/evaluation-tools/32f769idiscovery.html)
STM32F7 processor (nice and fast)
Comes with external flash and ram if needed.
800*480 touchscreen display.
Already has an audio codec on board for high quality audio output.
Built in debugger.
Not too expensive considering the hardware that you get with it. Especially if this is a hobby project.
However it may be easier to go with a Raspberry Pi on this one. Probably easier to get up and running.
-
The Arduino DUE and Cypress PSoC are terrible suggestions for this project; I don't know why they were even mentioned. Neither has an LCD controller, runs nearly fast enough to do voice synthesis or graphics, nor has enough RAM.
The STM32F4 might be able to be coaxed into building this (as it has an LCD controller and supports external SRAM), but what you really need is an application ARM processor, not a microcontroller. That's how Garmin and companies like that build this stuff. Once you have an application ARM processor on a board, you can get Linux/QNX/Windows Embedded/whatever OS up and running, which should make building out the system much easier.
I concur, that might have been a poor recommendation on my part. Although the ST part also does not have
necessary RAM either. I was thinking along the lines of architecture where LCD has a separate controller (or whole
job done on FPGA/ASIC). PSOC has components internal to interface to external controllers. Note PSOC 6 has
enough internal SRAM to handle small displays, 288KB. Buffer use only, not direct display memory. But family
is still preliminary. Internal DMA would handle that refresh to display RAM.
http://www.cypress.com/file/385916/download (http://www.cypress.com/file/385916/download)
I might take exception to speech capability as PSOC has a dedicated digital filter block that can
be used for other high speed tasks.
I stand corrected :).
Regards, Dana.
-
Since you've mentioned TFT, touch screen and GPS, I would prefer to offload the vast amount of basic framework code to existing Linux OS.
That's to say, your platform better supports Linux.
Yes, you can do that with uC-OSiii or whatever RTOS with GUI, but then porting to another platform is not that easy, and some RTOSes may come with a huge price.
I would say, unless you need it to boot in seconds, or you need some very high reliability, the modern cheapest solution is to run Linux.
Depending on product type, if it's for hobby, consider RPi or Chinese SoCs (AllWinner, Rockchip, etc.). None of those are committed to be available for a long time, so prepare for EOL at any time.
For long term industrial products, consider Microchip SAM, NXP iMX or TI Sitara. These are guaranteed to be in production for at least 10 years.
Both RPi and AM3358 (Sitera, BeagleBone) are easy to use thanks to the huge user base, and if you want to go hard core, iMX and AllWinner are there.
In case you want to touch iMX and AllWinner without using Android, you will need to learn low level Linux programming and Yocto.
For RPi and AM3358, it's likely that knowing Python is all what you need.
The above applies to you if you just want to use ARM SoCs in a product. If you want to learn how a SoC is built (how peripherals are connected to ARM core, how boot works, etc.), you need to consider Zynq or Cyclone V (Xilinx and Intel FPGAs with ARM HPS).
Or maybe just use Android and slap some kind of existing GPS software on it. You do reduce yourself to a system integrator, but it is the fastest way to push a product prototype out.
-
Well, you said it.
If the goal is just to re-invent the wheel and have fun taking as long as you like building it from the ground up, then it doesn't really matter where you start. Asking for advice also seems rather pointless, as you are so sure of what you want and ignore sensible suggestions. Quite often people just seem to want a "magic answer" instead of doing their own research.
There are dozens of cheap ARM boards around, just buy one and get on with it!
You obviously does not understand at all what is the purpose of the post and further explanation is pointless - read it careful and try to understand before decide to answer. Instead you deliberately insinuate and your goal is probably just trolling as obviously you have nothing better to do.
Read other comments carefully as well - no body except you reacted similar. Read my personal info and my level in electronic. If you expect that any question is asked by professional EE, you are missing the point of this forum - register on a closed EE forum or avoid reading such threads. As well, if professional EE ask that kind of questions. it would be better for anyone (companies where applying for job and himself) to burn his diploma out.
Expecting from hobbyist to read 1000s pages of documentation just to chose suitable MCU is rather cynical.
As well, you have no grasp about my country laws, so generally stating "cheap" may be in your country and I deliberately keep that info private. I can buy here RPI for 100 Euro from local store (or if order outside of county with all custom taxes on 25 Euro board > 100 Euro or brick instead a board), however I wont and prefer to use bare ARM chip and easy flashing - as I already clearly noticed, you obviously did not read. Then it is better to restrain yourself from partially reading, misunderstanding, making bad assumptions and conclusions and writing such messages. All that if your goal indeed is not trolling around...
Etc, etc..
Every thread ends-up with misunderstandings, personal attacks, off topic comments, point of doing anything and a at end point of life... And these kind of messages make this forum as any - a bad place for hobbyists and beginners.
I wanted to avoid this, but you asking for it.
-
As well, you have no grasp about my country laws, so generally stating "cheap" may be in your country and I deliberately keep that info private.
Ok, I will assume you live in the USA. I would be too embarrassed to admit that as well ;D Also the USA has the highest taxes of any country, probably, the highest taxes ever. That's what I was told. I think probably they are, many many people say they are. That would explain why you have to pay so much.
Anyway, we can do this backwards. Tell us what ARM chips are available to you at what you consider a reasonable price, and we can tell you whether they are suitable.
-
You obviously does not understand at all what is the purpose of the post and further explanation is pointless
To be fair to donotdespisethesnake, you never really articulated what the purpose was. Was it to build... a product? A personal project? Do you want to use bare chips instead of dev boards because you want to practice designing PCBs? Or do you think it's going to save cost?
Without context, we don't know your intentions.
So the best we can do is state facts, and then let you decide, on your own, how to proceed, given the context you never provided us.
- You cannot build a project like this using a single-chip microcontroller solution — nothing is fast enough or has enough flash or RAM
- While you could use a traditional MMU-less high-end microcontroller (like an STM32F4) wired up to external RAM and flash, this will make your project very very hard to implement. No one in the industry does it this way — not even Garmin. And think of their R&D budgets compared to yours.
- You need an embedded Linux system for any chance of implementing something like this
- Embedded Linux systems are relatively cheap to purchase when they're produced at scale — like the Raspberry Pi — but they are very expensive to design and prototype yourself
- BOM cost — the cost of your parts alone — will be at least $40-60. PCB prototyping costs will start in the $80-100 if you can squeeze things on a 4-layer layout, and go up to $600-800 if you need 6- or 8-layer stack-ups.
- Do you have a reflow oven and a solder pasting set-up? If not, you'll have to have your boards assembled by an assembly house. Practically speaking, that's going to be on the order of $1000
- You will spend several months on the PCB design alone, as you probably don't have much background in high-speed routing. Do you have an Altium license? You'll need a nice EDA tool to speed up length-tuning, and KiCAD isn't quite there yet (though it's getting closer)
- By now, the Raspberry Pi is starting to look like a good deal — even at 100 EUR or more — wouldn't you say?
- But the Pi isn't a magic bullet. If you want to *write* software to do any of this, that's a massive undertaking. There are projects like OpenStreetMap, but they are far inferior to the GPS in your phone.
- So what you'll end up with is a Raspberry Pi, running a bunch of hacked-together software you find on the internet, that barely works. What have you learned? What value have you added to what you can already buy off-the-shelf? Does this project even sound fun anymore?
I think that's why a lot of people on this thread are getting a little tongue-in-cheek with their comments. Please don't take offense to it, but that's just sort of the attitude around here. You might as well have started a thread about wanting to build an Android smartphone from scratch "to learn Microcontrollers"
If you want to learn to program ARM microcontrollers, you should start with a microcontroller project. A GPS navigation system is not a microcontroller project (you're not using a single MCU-specific peripheral — heck, even the GPS connects to the MCU over UART, which normal computers have).
And then, you could refer to everyone else's comments in this thread about mbed, PSoC, whatever.
-
- You will spend several months on the PCB design alone, as you probably don't have much background in high-speed routing. Do you have an Altium license? You'll need a nice EDA tool to speed up length-tuning, and KiCAD isn't quite there yet (though it's getting closer)
That is nonsense. Altium brings nothing extra to the table for these kind of designs. I've seen people creating SoC designs with several BGAs using PCB for Linux with some guidance about DDR routing and which traces to keep equal in length. Also if the board doesn't need to be super dense you can have it ready in 3 weeks full time. A more ergonomic CAD package will make things easier but most will be gained at the logistics side of it (creating a bill of materials).
-
Can anyone point ARM series/model MCU which do not require expensive environment (programmer/JTAG) to be flashed or even it is flash-less and use free compiler?
It is for plain hobby purpose and project is a GPS navigator with 4.3/5" color TFT with touch screen, street maps with path finder algorithm, voice synthesis, etc. In short, it should have functionality as any today standard car GPS navigation device.
I would prefer to start with ARM, rather than to use any advanced MCP/ATMEL MCU.
ARM MCUs/CPUs can be all programmed using the free GCC toolchain and most(all) ARM families are really well supported.
And re expensive JTAG - all you need is a $2 dongle like this:
https://www.aliexpress.com/item/ST-Link-V2-new-stlink-mini-STM8STM32-STLINK-simulator-download-programming-With-Cover/32719963657.html (https://www.aliexpress.com/item/ST-Link-V2-new-stlink-mini-STM8STM32-STLINK-simulator-download-programming-With-Cover/32719963657.html)
or this:
https://www.aliexpress.com/item/Die-Jlink-OB-ARM-emulator-debugger-jlink-programmierer-downloader-link-statt-V8-SWD/32763735160.html (https://www.aliexpress.com/item/Die-Jlink-OB-ARM-emulator-debugger-jlink-programmierer-downloader-link-statt-V8-SWD/32763735160.html)
ARM chips have the advantage that the JTAG/SWD interface is standardized and published by ARM directly, so most vendors follow it and you don't need any proprietary/expensive tools.
Of course, since you will be going the free/low cost route, you will need to spend some time reading online tutorials on how to set up GCC, OpenOCD and configure your IDE of choice to use them but that is hardly an insurmountable issue. There is plenty of documentation out there.
The primary advantage of buying the expensive tooling is that most of this setup work is done for you by the vendor and it is guaranteed to work. On the other hand, if one of those $2 dongles doesn't work, you bin it and buy another one :-// So you don't really get a lot more over the open source/free tools (and many of the expensive tools are only basically repackaged free ones) if you are willing to spend the time and effort as a hobbyist.
(that doesn't mean the expensive tools don't have their place - but that is mostly in the pro market where the time savings, having someone to grab by the neck and shake if something isn't working and some of the more advanced/obscure features that the free tools may not be implementing or implementing well are an advantage).
-
That is nonsense. Altium brings nothing extra to the table for these kind of designs. I've seen people creating SoC designs with several BGAs using PCB for Linux with some guidance about DDR routing and which traces to keep equal in length.
Since when does KiCad easily serpentine traces to enforce length rules? What about T-topology length tuning? Altium's xSignals dramatically reduce the time I spend messing with that crap.
Also if the board doesn't need to be super dense you can have it ready in 3 weeks full time.
Sure, maybe for you or me, as we know what we're doing. The OP is coming from an Arduino background, and I assume has very limited PCB design experience. Combine that with my assumption that this is a side project, instead of a 40-hour/week job. I bet it would take someone several months to learn all this stuff from scratch and route a board.
-
It is for plain hobby purpose and project is a GPS navigator with 4.3/5" color TFT with touch screen, street maps with path finder algorithm, voice synthesis, etc. In short, it should have functionality as any today standard car GPS navigation device.
Designing a GPS navigation system which could be comparable to commercial one is a bigger project than it seem. Route planning is more difficult than tracing a straight line from A to B or the shortest path algorithm. You have to take care of speed limit of each road. To be better, taking care of actual traffic is better. This king of algorithm is not easy to do. Route planning such as the Travelling salesman problem (https://en.wikipedia.org/wiki/Travelling_salesman_problem (https://en.wikipedia.org/wiki/Travelling_salesman_problem)) is a classic problem exposed in computer science engineering course.
If I was to do it myself, I would use open source software software. Such as OpenStreetMap database and something like OptaPlanner: https://www.optaplanner.org/. (https://www.optaplanner.org/.) Same for speech synthesis.
Which would take me to using something like a raspberry pi.
Using a Linux computer (such as the raspberry) would be better because you could test it on your own computer without having to upload it to a device. It give a faster round trip between coding and testing, which would be nice for a big project such as this.
But even if you complete the project, I doubt you'll be satisfied with the result compared to commercial offering (with respect). So if I were you, I'll try to find another project. Or try to get a team of enthusiasts to help you do it.