ARM - easy way to start with - Page 1
Forum section: electronics / general

author: sasa
author_rank: Regular Contributor
timestamp: October 18, 2017, 09:10:23 am
content: 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.

author: nctnico
author_rank: Super Contributor
timestamp: October 18, 2017, 09:45:24 am
content: I'd look at a Raspberry Pi or something else which runs Linux.

author: wilhelm
author_rank: Contributor
timestamp: October 18, 2017, 09:50:51 am
content: STM Nucleohttp://www.st.com/en/evaluation-tools/stm32-mcu-nucleo.html?querycriteria=productId=LN1847

author: danadak
author_rank: Super Contributor
timestamp: October 18, 2017, 11:00:52 am
content: Cypress PSOC -For me what stands out is -1) Routability2) Fast 12 bit SAR A/D and slow 20 bit DelSig3) DFB (Digital Filter Block) that is dual channel, handle FIR or IIR filters, or DFBcan be used as a GP fast processor block, similar to RISC block4) MSI logic elements GUI based and/or the UDB Verilog capability. Eg. the FPGAlike capability5) Onboard Vref6) 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, USB9) Custom components capability, create with schematic capture or Verilog10) DMA to offload processes like filters, COM, Display11) ARM M0 (PSOC 4) or M3 (PSOC 5LP) or 8051 core(PSOC 3) or M0+/M4 dual core PSOC 612) Extensive clock generation capabilities13) All components supported by extensive prewritten APIshttps://www.element14.com/community/thread/23736/l/100-projects-in-100-days?displayFullThread=truehttp://www.cypress.com/documentation/code-examples/psoc-345-code-examplesGreat video libraryAttached component list. A component is an on chip HW resource.Free GUI design tool with schematic capture, "Creator". Components have rich API library attachedto 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-psochttp://www.cypress.com/products/32-bit-arm-cortex-m-psochttps://brightcove.hs.llnwd.net/e1/uds/pd/1362235890001/1362235890001_5241352463001_2606504288001.mp4?pubId=1362235890001&videoId=2606504288001Regards, Dana.

author: Psi
author_rank: Super Contributor
timestamp: October 18, 2017, 11:04:51 am
content: 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

author: technix
author_rank: Super Contributor
timestamp: October 18, 2017, 11:10:11 am
content: 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.

author: Kjelt
author_rank: Super Contributor
timestamp: October 18, 2017, 11:31:05 am
content: Quote from: technix on October 18, 2017, 11:10:11 amYou are serious in advicing to use an M0 for these requirements, what are youdrinkingthinking ?Quote from: TS requiirementsI 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.

author: sasa
author_rank: Regular Contributor
timestamp: October 18, 2017, 01:12:58 pm
content: 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.

author: Kalvin
author_rank: Super Contributor
timestamp: October 18, 2017, 01:19:43 pm
content: 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.

author: nctnico
author_rank: Super Contributor
timestamp: October 18, 2017, 01:39:44 pm
content: Quote from: sasa on October 18, 2017, 01:12:58 pmNo 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.

author: technix
author_rank: Super Contributor
timestamp: October 18, 2017, 02:41:57 pm
content: 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)

author: sasa
author_rank: Regular Contributor
timestamp: October 18, 2017, 04:07:27 pm
content: 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.comBut I understand him completely...

author: ataradov
author_rank: Super Contributor
timestamp: October 18, 2017, 04:11:44 pm
content: Quote from: sasa on October 18, 2017, 09:10:23 amARM 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.

author: funkathustra
author_rank: Regular Contributor
timestamp: October 18, 2017, 04:12:28 pm
content: Rather than just throwing out random suggestions for generic microcontrollers, maybe we can all notice the project requirements?Quote from: sasa on October 18, 2017, 09:10:23 amThe 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 STM32F4mightbe 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.

author: donotdespisethesnake
author_rank: Super Contributor
timestamp: October 18, 2017, 04:54:29 pm
content: Quote from: sasa on October 18, 2017, 04:07:27 pmWell, 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!

author: rsjsouza
author_rank: Super Contributor
timestamp: October 18, 2017, 04:59:33 pm
content: Quote from: funkathustra on October 18, 2017, 04:12:28 pmWith that in mind, perhaps theOctavo device? 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.

author: funkathustra
author_rank: Regular Contributor
timestamp: October 18, 2017, 05:18:17 pm
content: Quote from: rsjsouza on October 18, 2017, 04:59:33 pmThis is definitely a good idea.

author: Jeroen3
author_rank: Super Contributor
timestamp: October 18, 2017, 05:36:44 pm
content: Quote from: sasa on October 18, 2017, 09:10:23 am1. GNU ARM + Segger edu.2. Limited time project3. 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.

author: donotdespisethesnake
author_rank: Super Contributor
timestamp: October 18, 2017, 08:27:33 pm
content: Quote from: Jeroen3 on October 18, 2017, 05:36:44 pm+1Raspberry 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.htmlA couple of days and one could have a working system.

author: ebclr
author_rank: Super Contributor
timestamp: October 19, 2017, 12:01:35 am
content: This small list of board who can be programmed with a free online compilerhttps://os.mbed.com/platforms/

author: lucazader
author_rank: Regular Contributor
timestamp: October 19, 2017, 09:39:12 am
content: Have a look at this:http://www.st.com/en/evaluation-tools/32f769idiscovery.htmlSTM32F7 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.

author: danadak
author_rank: Super Contributor
timestamp: October 19, 2017, 11:14:27 pm
content: QuoteI concur, that might have been a poor recommendation on my part. Although the ST part also does not havenecessary RAM either. I was thinking along the lines of architecture where LCD has a separate controller (or wholejob done on FPGA/ASIC). PSOC has components internal to interface to external controllers. Note PSOC 6 hasenough internal SRAM to handle small displays, 288KB. Buffer use only, not direct display memory. But familyis still preliminary. Internal DMA would handle that refresh to display RAM.http://www.cypress.com/file/385916/downloadI might take exception to speech capability as PSOC has a dedicated digital filter block that canbe used for other high speed tasks.I stand corrected.Regards, Dana.

author: technix
author_rank: Super Contributor
timestamp: October 20, 2017, 05:16:26 am
content: Quote from: blueskull on October 20, 2017, 01:11:56 amOr 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.

author: sasa
author_rank: Regular Contributor
timestamp: October 20, 2017, 08:18:43 am
content: Quote from: donotdespisethesnake on October 18, 2017, 04:54:29 pmYou 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.

author: donotdespisethesnake
author_rank: Super Contributor
timestamp: October 20, 2017, 07:49:38 pm
content: Quote from: sasa on October 20, 2017, 08:18:43 amOk, I will assume you live in the USA. I would be too embarrassed to admit that as wellAlso 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.

author: funkathustra
author_rank: Regular Contributor
timestamp: October 21, 2017, 12:12:54 am
content: Quote from: sasa on October 20, 2017, 08:18:43 amTo 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?Withoutcontext, 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 RAMWhile you could use a traditional MMU-less high-end microcontroller (like an STM32F4) wired up to external RAM and flash, this will make your projectvery very hardto 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 thisEmbedded 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 yourselfBOM 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 $1000You 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 arefar inferiorto 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 ARMmicrocontrollers, you should start with amicrocontroller 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.

author: nctnico
author_rank: Super Contributor
timestamp: October 21, 2017, 09:51:30 am
content: Quote from: funkathustra on October 21, 2017, 12:12:54 amThat 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).

author: janoc
author_rank: Super Contributor
timestamp: October 21, 2017, 11:00:29 am
content: Quote from: sasa on October 18, 2017, 09:10:23 amARM 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.htmlor this:https://www.aliexpress.com/item/Die-Jlink-OB-ARM-emulator-debugger-jlink-programmierer-downloader-link-statt-V8-SWD/32763735160.htmlARM 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 oneSo 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).

author: funkathustra
author_rank: Regular Contributor
timestamp: October 21, 2017, 07:20:34 pm
content: Quote from: nctnico on October 21, 2017, 09:51:30 amSince 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.Quote from: nctnico on October 21, 2017, 09:51:30 amSure, 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.

author: savril
author_rank: Regular Contributor
timestamp: October 21, 2017, 11:19:58 pm
content: Quote from: sasa on October 18, 2017, 09:10:23 amDesigning 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) 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/.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.