Author Topic: [Solved] Help me choosing an ARM that runs Linux  (Read 7437 times)

0 Members and 1 Guest are viewing this topic.

Offline blueskullTopic starter

  • Supporter
  • ****
  • !
  • Posts: 367
  • Country: cn
  • BA7LKP
[Solved] Help me choosing an ARM that runs Linux
« on: February 11, 2017, 12:05:42 am »
I chose to put this question here because it is just choosing a chip. I will post in project or MCU section later should I encounter any issues.

Over the years I have developed an audio DAC technology consists an ADSP-BF706 as interpolation engine, iCE40HX8K as SDM/DEM engine and a thermostat 4-bit DAC is used for final DAC conversion.
What I want to do is to make this a portable music player, not just a sound card. I plan to use an ARM processor to run Linux, which handles GUI, USB, decoder and DSP algorithm.
The ARM directly talks to FPGA using a parallel bus, thus eliminating the need of a dedicated DSP chip.

Here is a list of what the processor needs in order to make this happen:
1. 500MHz+ with NEON, power <0.5w at half speed, power <0.8w at full speed.
2. Can be routed with 5mil/5mil traces and 10mil/18mil vias.
3. Supports DDR3L-800 x16. Supports eMMC at 40MB/s+ speed.
4. At least one USB2.0 device interface.
5. MIPI or 16-bit RGB controller, 320*480 or higher.
6. A parallel port that supports 8-bit*100MHz with frame sync, slave mode preferred.
7. Supports suspend to RAM and soft power off.
8. Runs Linux with Mono/Winforms or Mono/Gtk#.

So far I've been looking at iMX6UL/ULL and AM3352. The former doesn't have slave mode parallel interface, and the latter consumes too much power.
Do you have any good suggestions on which ARM processor to use? Or can you suggest me another that suits my needs?

Final decision:
i.MX6ULL, with 528MHz Cortex-A7 w/NEON, LCD controller and EIM external bus interface.
Already ordered the official dev kit for this chip, seems promising to me.
« Last Edit: February 13, 2017, 05:51:19 pm by blueskull »
 

Offline RJDog

  • Contributor
  • Posts: 27
  • Country: ca
Re: Help me choosing an ARM that runs Linux
« Reply #1 on: February 12, 2017, 01:35:48 am »
I've been playing around a lot lately with Orange Pi and Orange Pi Zero in particular and I've been really digging it.  It is an Allwinner H3/H2+ SoC, with ARM Cortex A7.  Very speedy.  Runs Armbian Linux well.  It is a small(ish) pitch BGA (FBGA347, 0.65mm pitch) though, so not sure if that suits your needs (I am not nearly brave enough to try soldering this myself).

This doesn't solve your requirement about supporting a USB device interface, but I'm using an Atmel Attiny 441 with VUSB library for that very purpose in a project myself, and linking the two via UART.

My two cents.
 

Offline RJDog

  • Contributor
  • Posts: 27
  • Country: ca
Re: Help me choosing an ARM that runs Linux
« Reply #2 on: February 12, 2017, 04:18:04 am »
The AllWinner one is a very powerful chip, and I think it does have one USB OTG, which can be configured as device.
However, it doesn't have any parallel buses besides memory interface, and I don't think its NAND interface can be easily configured to a general purpose parallel bus.
The power consumption is also an issue. From linux-sunxi, it seems like it's hot enough to need a heat sink.
The GPIO could theoretically be configured as a parallel interface... but the software interface would probably require some serious work... I'll summarize by saying "fair enough".
I have two of the four cores disabled... and gpu disabled, cpu clock speed limited, and a bunch of other stuff to get the power draw under 400mA, so I am getting away without a heat sink, but I know many who use heat sinks.  Probably recommended to use a heatsink if you go full bore on the CPU.

So long story short, maybe not exactly what you're looking for, but I've been working with it a lot lately so I am in a "this is awesome and can obviously be used in every situation" kind of mentality.
 

Offline kc8apf

  • Regular Contributor
  • *
  • Posts: 103
  • Country: us
Re: Help me choosing an ARM that runs Linux
« Reply #3 on: February 12, 2017, 04:52:29 am »
Parallel bus is a bit unusual on ARM parts these days. Maybe a Xilinx Zynx?

Re: Linux and yocto; feel free to ask questions. I work on OpenBMC which is Yocto-based and am setting up a common Yocto distribution for internal projects at work.

Sent from my Nexus 5X using Tapatalk

 

Offline julian1

  • Frequent Contributor
  • **
  • Posts: 721
  • Country: au
Re: Help me choosing an ARM that runs Linux
« Reply #4 on: February 12, 2017, 05:06:11 am »
I don't have any experience in this area, but was recently looking at the Octavo OSD335x, and trying to figure out how difficult it would be target for embedded linux.

http://octavosystems.com/octavo_products/osd335x/. It's an ARM Cortex-A8 which I believe implements ARM v7.

It's a BGA - but large pitch - 1.27mm . And it integrates the complicated DDR3 SDRAM.

Would it be possible to use GPIO to handle the parallel port for the fpga? Would perhaps require writing a kernel level device-driver?

I found it interesting because the Beaglebone is open-source, and is therefore a good source for a reference design. Also it would be possible to prototype with the Beaglebone, before doing a dedicated standalone pcb.

datasheet http://octavosystems.com/octavosystems.com/wp-content/uploads/2015/09/OSD335x-Datasheet.pdf
 

Offline kc8apf

  • Regular Contributor
  • *
  • Posts: 103
  • Country: us
Re: Help me choosing an ARM that runs Linux
« Reply #5 on: February 12, 2017, 05:29:20 am »
Yocto is almost hermetic so Ubuntu version shouldn't matter much. I'll need to see the full build log, what version of Yocto you started with, and what BSP you are using. Boost shouldn't cause a problem like that.

Sent from my Nexus 5X using Tapatalk

 

Offline kc8apf

  • Regular Contributor
  • *
  • Posts: 103
  • Country: us
Re: Help me choosing an ARM that runs Linux
« Reply #6 on: February 12, 2017, 05:45:46 am »
I'll look at the logs in the morning. Having problems with a different Ubuntu version doesn't make any sense. Yocto defaults are to build its own cross compiler used for building target packages. The host compiler is only used to build a handful of packages that are expected to run on the host. Freescale's BSP might be doing odd things though.

Sent from my Nexus 5X using Tapatalk

 

Offline julian1

  • Frequent Contributor
  • **
  • Posts: 721
  • Country: au
Re: Help me choosing an ARM that runs Linux
« Reply #7 on: February 12, 2017, 06:45:53 am »
Quote
Also, another problem I can see is that AM335x is consuming too much power. From TI's documentation, when running with DDR3, the idle power is more than 500mW, let along full load power.

Would down-clocking help power-consumption - or does you DSP need full power (offload to the gpu)? This article suggests its possible to run at 300MHz. http://derekmolloy.ie/changing-the-beaglebone-cpu-frequency/
 

Offline bson

  • Supporter
  • ****
  • Posts: 2265
  • Country: us
Re: Help me choosing an ARM that runs Linux
« Reply #8 on: February 13, 2017, 07:38:25 pm »
Would it be possible to use GPIO to handle the parallel port for the fpga? Would perhaps require writing a kernel level device-driver?
I haven't worked with the higher end A series parts, but for the NXP Cortex M and ARM7T parts I've worked with, it could be set up using a DMA channel writing to a GPIO register, clocked by a timer channel which both goes to an external pin (for data clock) and triggers DMA transfers.

The A parts get more complicated and will absolutely require a driver - this isn't terribly hard, especially if the external peripheral can handle data gaps while 1) interrupts might pend for a while, 2) move on to the next buffer in the chain, 3) you reload and restart the DMA channel.  If not, then you need to utilize auto reloading functionality or use two channels chained with one always ready to start when the previous runs down.  You also need to be careful with data cache management to make sure the DMA controller sees what the CPU sees, which may or may not be an issue depending on what else is in the pipeline prior to spitting the data stream out.
 
The following users thanked this post: julian1

Offline julian1

  • Frequent Contributor
  • **
  • Posts: 721
  • Country: au
Re: Help me choosing an ARM that runs Linux
« Reply #9 on: February 14, 2017, 01:05:32 am »
Would it be possible to use GPIO to handle the parallel port for the fpga? Would perhaps require writing a kernel level device-driver?
I haven't worked with the higher end A series parts, but for the NXP Cortex M and ARM7T parts I've worked with, it could be set up using a DMA channel writing to a GPIO register, clocked by a timer channel which both goes to an external pin (for data clock) and triggers DMA transfers.

The A parts get more complicated and will absolutely require a driver - this isn't terribly hard, especially if the external peripheral can handle data gaps while 1) interrupts might pend for a while, 2) move on to the next buffer in the chain, 3) you reload and restart the DMA channel.  If not, then you need to utilize auto reloading functionality or use two channels chained with one always ready to start when the previous runs down.  You also need to be careful with data cache management to make sure the DMA controller sees what the CPU sees, which may or may not be an issue depending on what else is in the pipeline prior to spitting the data stream out.

I was thinking unrelated interrupts would be a problem after I posted. Also context switching.

Apparently the TI parts have a dedicated processor available for implementing IO, which has full control over ddr memory, and presumably would keep running during interrupts.

Quote
A programmable real-time unit (PRU) is a fast (200-MHz, 32-bit) processor with single-cycle I/O access to a number of the pins and full access to the internal memory and peripherals on the AM3358 processor

http://beagleboard.org/pru

This guy got 25MHz using one of the PRUs with GPIO and says it should be possible to go faster,

http://hackaday.com/2013/12/07/speeding-up-beaglebone-black-gpio-a-thousand-times/#comment-1125631
« Last Edit: February 14, 2017, 01:07:11 am by julian1 »
 

Offline kc8apf

  • Regular Contributor
  • *
  • Posts: 103
  • Country: us
Re: Help me choosing an ARM that runs Linux
« Reply #10 on: February 17, 2017, 04:50:12 pm »
Yocto is almost hermetic so Ubuntu version shouldn't matter much. I'll need to see the full build log, what version of Yocto you started with, and what BSP you are using. Boost shouldn't cause a problem like that.

I tried U16.10, but a package (lzop) is not happy with GCC6.
I managed to find a patch from Debian repo to fix lzop issue, but line offset of both file are different in yocto and Debian, so I can't patch the diff file.
That source file has 12k lines! Which makes manually searching and patching a hard way. So, I chose to use U14.04, which is suggested in BSP.

I didn't manage to find a full build log, but I copied console buffer to a file, and that contains all crap that bitbake/jam spitted out. The text file is in unix line ending.
The BSP I'm using is git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-4.1-krogoth.
Detailed information can be found here: http://www.nxp.com/products/automotive-products/microcontrollers-and-processors/arm-mcus-and-mpus/i.mx-application-processors/i.mx-6-processors/i.mx-6ull-single-core-processor-with-arm-cortex-a7-core:i.MX6ULL?tab=Documentation_Tab
I attached the PDF in that protected link, anyway it's not confidential. It requires a log-in, but it's free access. I followed this PDF exactly.

I only tried yocto Krogoth since brevious version doesn't support my board. The CPU on that particular board is a new chip, just released in late 2016.

I haven't forgotten about this.  I got a VM setup with those instructions.  Freescale has taken a unique approach to releasing tested builds.  What did you do to trigger the Boost compile error?
 

Offline kc8apf

  • Regular Contributor
  • *
  • Posts: 103
  • Country: us
Re: [Solved] Help me choosing an ARM that runs Linux
« Reply #11 on: February 17, 2017, 05:59:21 pm »
OK.  I've setup a build directory with:
Code: [Select]
MACHINE=imx6ull14x14evk source fsl-setup-release.sh -e x11
Now I'm starting a build of fsl-image-gui.  I'll let you know what happens.
 

Offline kc8apf

  • Regular Contributor
  • *
  • Posts: 103
  • Country: us
Re: [Solved] Help me choosing an ARM that runs Linux
« Reply #12 on: February 20, 2017, 04:43:09 pm »
The build finished fine including building Boost.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf