Content originally posted in LPCWare by splin on Mon Sep 08 16:58:25 MST 2014
I got quite excited when I came across the LPC4370 with its very attractive features - especially the 80MSPS ADC and the multiple cores. I bought a couple of LPC-Link2 boards to play with, but I'm starting to wonder if I'm doing the right thing having seen in these forums the number of problems people are having getting things working, sometimes without success. I realise that many of these problems are probably common to all the ARM Cortex families and not specifically to NXP's.
What concerns me is the sheer complexity of these devices; with an enormous user guide (1420 pages!!!) its likely to need a great deal of effort to learn how to use it and understand the quirks in the device/documentation and the tools. Worse still it seems likely that there will be a number of bugs in the silicon and documentation which haven't been found yet (or at least admitted to by NXP in errata sheets). I'm not suggesting that NXP are in any way worse than any other manufacturers, but having run across bugs in devices in the past I am aware that if you run into one you can't fix, you might have to abandon the project having done a lot of work. Its hardly unknown for devices to be introduced with a fanfare of publicity, where it turns out that one or more of the flagship features never works properly or only gets fixed in a later product.
The number and severity of bugs depends on how widely the device is used, how complex the device is and how incremental its development has been - adding small features at a time tend to be less prone to problems given that there are plenty of opportunities to fix the bugs in those features added previously. It also depends on how far away from the norm you are in in the way you use the device. The problem here is that as a newcomer to the device family, and with the huge number of different ways to configure and use the device, it's hard to know if you are trying to use the device in a way that its designer didn't expect and thus test thoroughly, and worse no-one else is doing it that way so they can't help.
I realise that all the core IP is from ARM and thoroughly tested in a wide variety of products, but there is a lot of complexity in the circuits unique to the LPC4370, such as the Serial GPIO and the multi-core design. I have played with an STM32F4 discovery board and eventually managed to get their triple interleaved ADC example working - after discovering Emblocks which provided reliable debugging but I'm new to the NXP products. I know there's a lot of ARM Cortex learning to do but there's a wealth of information and help out there on that front.
So the question is, am I worrying unnecessarily and exaggerating the risks? Once I've got to grips with setting up the basic initialization, configurations and clock options etc. is it your experience that its straightforward to just concentrate on a peripheral/feature at a time without worrying about unintended impacts on unrelated areas (or at least you assumed to be unrelated!)?
Is the LPC4370 relatively mature with many of the problems, if there were any, being addressed in its predecessors (the LPC4300?)
When you run into difficult problems is their plenty of help? As a one man band I know I don't have any clout with the manufacturers and can't expect to get any detailed assistance, especially if my problems are considered to be unique to me.
Is the example code provided reliable and have developers found it detailed enough to demonstrate the usage of hardware features in realistic, rather than superficial ways?
Have you tried using a feature but given up because it was too complex or the documentation was incomplete/incorrect or misleading?
Has anyone had much experience with using more than one core and not found the debugging issues too intractable?
Thanks for reading this far (if you did!) - I'd welcome your thoughts on the matter.
Regards,
Tony H