Slashdot Mirror


ARM Is a Promising Platform But Needs To Learn From the PC

jbrodkin writes "Linux and ARM developers have clashed over what's been described as a 'United Nations-level complexity of the forks in the ARM section of the Linux kernel.' Linus Torvalds addressed the issue at LinuxCon this week on the 20th anniversary of Linux, saying the ARM platform has a lot to learn from the PC. While Torvalds noted that 'a lot of people love to hate the PC,' the fact that Intel, AMD, and hardware makers worked on building a common infrastructure 'made it very efficient and easy to support.' ARM, on the other hand, 'is missing it completely,' Torvalds said. 'ARM is this hodgepodge of five or six major companies and tens of minor companies making random pieces of hardware, and it looks like they're taking hardware and throwing it at a wall and seeing where it sticks, and making a chip out of what's stuck on the wall.'"

29 of 167 comments (clear)

  1. Re:ARM == shit. by AnujMore · · Score: 2

    returns value "false"

  2. Re:Wait, what? by kbolino · · Score: 3, Insightful

    All of which is, more or less, interchangeable. The Intel x86/IBM PC platform, despite its many flaws, has reached a stable point where there are well accepted and commonly implemented standards for the boot process, the storage formats, the hardware interfaces, etc. ARM, despite a "purer" and "simpler" instruction architecture, lacks much of this common surrounding infrastructure.

  3. Re:That's the trouble with a monolithic kernel by denis-The-menace · · Score: 2

    You mean like a HAL in Windows NT.

    Now I know where MS got the idea from.

    --
    Obama's legacy: (N)othing (S)ecure (A)nywhere and (T)error (S)imulation (A)dministration
  4. Re:Wait, what? by Osgeld · · Score: 2

    yea and that PC hardware uses the same cpu platform

    with ARM well shit theres TI's flavor which doesnt play well with ST's version and lets not even get into the "arm based" stuff like PIC32

    it is a mess, much like PC's in the late 70's and early 80's, they all have basic, but are totally incompatible

  5. Re:Wait, what? by thsths · · Score: 5, Insightful

    What is a desktop in the PC world is your SOC in the embedded world. It even comes with RAM and Flash (not on chip, but on package), if you want to.

    The difference is that the PC environment has over a long time filtered down to a few typical devices for each type. Your network hardware is probably Realtek, or maybe Intel or an embedded AMD chip. You graphics card is NVidia, AMD or Intel. Your mouse does not matter, because it always talk USB HID etc.

    In the ARM world, you also have standard components, but every integrator makes tiny (and usually pointless) changes that render them incompatible on the software level. Linus is right - this is neither necessary nor sustainable. It is one of the reasons that you can get software updates for a 5 year old PC, but not for a 6 months old smartphone.

  6. Different for embedded rigs than PCs by Anonymous Coward · · Score: 5, Insightful

    They're not trying to cut corners for the hell of it, but for performance, power usage, and other actual engineering reasons.

    You just cant build smartphones and tablets with that same common architecture, or else you're adding too many chips and circuits you don't need.

    It's no big deal that PC's ship with empty PCI slots and huge chunks of the bios and chipset that are never used but rarely. (Onboard raid, ECC codes, so on and so on), but when you're trying to put together a device as trim and minimalist as possible, you're going to end up with something slightly different for each use case.

    1. Re:Different for embedded rigs than PCs by RobertLTux · · Score: 3, Insightful

      there is a difference between %feature% being present/absent and %feature% having 30 different implementations (of which 12 are actually hostile to others).

      when you have to have a venn diagram with PLAID as one of the circles then you are in trouble.

      --
      Any person using FTFY or editing my postings agrees to a US$50.00 charge
    2. Re:Different for embedded rigs than PCs by UnknowingFool · · Score: 2

      Unfortunately one of advantages of ARM is that the chip maker can heavily customize what is on the SOC. Most of them don't mess with the core. I don't think that the different makers are intending to have hostile features but given time constraints for development, they can't check with other companies (some of them competitors) to see if there optimization hurts others.

      --
      Well, there's spam egg sausage and spam, that's not got much spam in it.
    3. Re:Different for embedded rigs than PCs by Pentium100 · · Score: 3, Insightful

      And yet, you can run, say, DOS on all of those computers. Critical devices will support a "generic" instruction set. Any VGA card will support standard VGA instructions, disk drives can be accessed using standard IDE interface (SATA controllers can emulate it). SCSI drives can be accessed using INT13h, the controller BIOS takes care of it. Keyboard/mouse use one of the few interfaces (and USB can emulate PS/2).

      Now, when you get the basic system running, you can load drivers to access all of the features of the hardware (for example, different resolutions of the VGA card).

      For ARM you have to recompile the kernel for most of the chips and boards for it to even boot. So, how would you create a way to install an operating system from me media not using another PC?

    4. Re:Different for embedded rigs than PCs by hitmark · · Score: 2

      I think perhaps the biggest complaint is that ARM lacks a unified bootstrap and hardware bus. As in, there is no BIOS like on the X86, nor is there a PCI or similar that one can query and get a dump of device ids. So for a lot of the SoCs you basically need to know what is on there before you start sending signals.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    5. Re:Different for embedded rigs than PCs by rufty_tufty · · Score: 2

      Right, because do you want to boot your router from ROM? Or your IP phone from flash attached over what will later be GPIO? or your Mobile phone from SDCARD. Your tablet an embedded SSD, your MP3 player from its flash chip over custom interface*, your set top box from its hard drive? What if you have one processor booting another, what if it needs to do a first stage loader from ROM and then grab the image over ethernet (using your own ethernet implementation of course). What if it's not ethernet but SPI?
      So you come up with this Frankenstein of a common bios and it takes $2 worth of flash to store it in, well if your entire SOC only costs $2 then what do you do? Cut out the bits of the bios you don't need? Then you're back to square 1 of a custom bios.
      PCs don't have this problem because they will always** have a keyboard, a mouse, a screen, RS232, a hard drive, a floppy drive, USB etc
      * And of course you need a custom interface because the standard one the kernel supports bit-bangs the operation for maximum commonality, but that's not quick enough for your customer requirement. So you write a bit of hardware to do that for you. You could put in a compatibility mode but that will cost you 0.1c of silicon per chip an multiplied by the hundreds of thousands you plan to sell of this chip it soon adds up to be worthwhile.
      ** Yes yes I know, "Keyboard not found press F1 to continue", this is not true for servers and historically there was not always a hard drive never mind USB but you get the idea. An embedded device however has no concept of common requirements of hardware. Also while PC's have always been very cost sensitive very few PC historically sold were targeting a device cost of a few dollars so you have to cut something...

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    6. Re:Different for embedded rigs than PCs by AmiMoJo · · Score: 2

      That is the reason we have drivers. Unfortunately the ones supplied by embedded manufacturers tend to be kinda crap in my experience. There is also a lack of solid APIs for many embedded system features, where are desktop ones are quite comprehensive and mature now.

      At the place I work some guys are making a hand held logger using Windows 7 Embedded and the support from the manufacturer is terrible. Took two weeks and sending test code to their office in Israel just to get the vector processing features of the CPU to work. We changed LCD and had to change the screen resolution which meant re-building the OS and then discovered that the old LCD won't display the lower resolution at all so the prototype had to be modified in a hurry. We are still unable to read hardware buttons on the damn thing...

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
  7. Note to self: by sgt+scrub · · Score: 3, Funny

    Goals for Friday.
    1) play all pink floyd albums in a continuous loop.
    2) make bubbly gurgle sounds with my "sandwich".
    3) contemplate "making a chip out of what sticks on the wall".

    --
    Having to work for a living is the root of all evil.
  8. Re:That's the trouble with a monolithic kernel by Anonymous Coward · · Score: 4, Interesting

    The problem is that micro kernels have always been harder to develop and slower(if not done carefully). And not all "board features" can be separated/exposed from/to the kernel easily when done externally.

    For instance, paging and memory management is usually something that would go in the kernel, even a microkernel. Do you know how many different ARM MMU interfaces there are, and also how many ARM processors don't have an MMU, or that implement only a subset of some other MMU. And then there is the dual-core processors now as well. I wonder how many different interfaces there are for controlling both multiple ARM cores or ARM processors.

    Basically, ARM is a cluster fuck for OS development. They need some form of standardization if they ever hope to get widespread OS support. Linux is probably only supported by most boards because the board manufacturers submit patches to the Linux project. By widespread, I mean each board supporting a minimum of 3 different operating systems, for instance Windows, Linux, and something proprietary or a BSD.

  9. Openness? by Baloroth · · Score: 2, Insightful

    Is Linus Torvalds (implicitly, at least) criticizing ARM because it is open and therefore anyone can create their own version of it? As opposed to x86, which has a restricted licensing set (AMD/Intel/Via... Via still exists, right?)? Because that is, AFAICT, exactly why ARM is so varied: anyone can roll their own. With the result that many do.

    Kinda ironic (and I do mean *ironic*) that the creator of Linux would be complaining about this. I guess he is finally discovering why, in some cases, a regulated and restricted environment can be good (note: if x86 was a monopoly, I would not be saying that. But AMD and Intel are fierce competitors, so it isn't at all monopolistic). Open environments often become "hodgepodges" and lend themselves to non-standardization. Closed ones don't (well, they can, but generally they don't. Definitely not as fast as an open one) and can be easily standardized (witness how Intel accepted AMD's x86-64 set for consumers over their own I64 system). The result is, in the case of CPUs, good for consumers.

    Note: I am note proclaiming the virtues of proprietary systems, or claiming they are better than free and open ones. Just pointing out the irony of the situation.

    --
    "None can love freedom heartily, but good men; the rest love not freedom, but license." --John Milton
    1. Re:Openness? by Jonner · · Score: 4, Insightful

      Is Linus Torvalds (implicitly, at least) criticizing ARM because it is open and therefore anyone can create their own version of it? As opposed to x86, which has a restricted licensing set (AMD/Intel/Via... Via still exists, right?)? Because that is, AFAICT, exactly why ARM is so varied: anyone can roll their own. With the result that many do.

      ARM is not any more "open" than x86. To sell chips implementing modern versions of either instruction set, you must obtain a license from at least one company and nothing prevents you from extending that instruction set. Many companies have implemented (and often extened) each set over the years, though there are fewer implementing x86 now than ARM. There are probably fewer implementors of x86 because it is much more complex.

      I think Linus is criticizing the lack of a common platform surrounding ARM rather than the instructions themselves. The instruction set of x86 chips has grown a lot, especially with x86_64, but the way you boot a PC hasn't changed much for example.

    2. Re:Openness? by JackDW · · Score: 2

      Actually it is the other way around. The x86 platform is mostly based on open standards. There are more 486-compatible clones than you may realise. ARM, on the other hand, is strongly proprietary. There are no clones at all. The ARM fragmentation has occurred because of a lack of open standards - while the PC guys were standardising PCI, USB and VGA, every ARM licensee was reinventing the wheel to give their own SoC the features that nobody else had. While the core ISA is always the same, the system architecture is not.

      When ARM CPUs were only used for embedded systems, this was fine, because each vendor could provide a BSP for each supported OS. Now that ARM CPUs are being used in general-purpose computers like Windows Phone 7 and Android handsets, the fragmentation has become an issue preventing users from loading alternative firmware. Clearly, this is a concern for Linus Torvalds (and Linux supporters who understand the issue) as it causes pain for kernel development and makes it essentially impossible to produce a single OS that could be installed (say) on any ARM-based smartphone.

      --
      You're an immobile computer, remember?
  10. Re:Wait by west · · Score: 4, Insightful

    I'm pretty certain he'd prefer a consortium that produces a common set of standards, but he raises an important point.

    Choice costs.

    It's wonderful that you have the a massively wide variety of choices, unconstrained by the a central authority, but don't forget that the cost of having that choice is going to be significant. There's a reason that almost all lines of business tend towards either a few big winners or, if the product is essentially identical, commoditization.

    It's why I often wonder at why Linux users dream about taking over the desktop. If that did occur, it would mean a drive to lower cost that would result, almost inevitably, in the wholesale adoption of s single choice, reducing all the other choices to total irrelevance.

  11. Missing the point by Weaselmancer · · Score: 2

    The reason why x86 is so unified is because they're all in PCs. You only have the one form factor to shoot at. So of course the CPUs will be highly similar.

    ARM fills a different niche. You see ARM chips in tablets, phones, industrial control, routers...all over the place. Of course ARM chips will vary more wildly. They're trying to hit more targets. And those targets have unique and tightly defined parameters. That will put them at odds with other designs.

    I mean hell, if the x86 has it all figured out so well, then why isn't your cellphone using one?

    --
    Weaselmancer
    rediculous.
  12. Re:Wait, what? by petermgreen · · Score: 3, Informative

    The difference is that the PC environment has over a long time filtered down to a few typical devices for each type. Your network hardware is probably Realtek, or maybe Intel or an embedded AMD chip. You graphics card is NVidia, AMD or Intel. Your mouse does not matter, because it always talk USB HID etc.

    And perhaps most importantly your main system bus is either PCI or something that looks like PCI to software and by accessing the configuration space of that bus you can read the device IDs of everything on it whereas with ARM the software is expected to know the complete hardware setup in advance.

    --
    note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  13. Re:That's the trouble with a monolithic kernel by Jonner · · Score: 2

    The embedded world doesn't have much trouble with this. For QNX, there's the kernel, which is the same for all CPUs with the same instructions set, and a "board support package", which has the driver programs for a given board or variant.

    Linux is a monolithic kernel, and so it has to be hacked all over the place to deal with architecture variations. Linux lacks a clean conceptual model of operating system vs. board support.

    Linux supported many architectures before ARM, so Linus's complaints don't come from a purely PC mindset. You also seem to be ignoring the fact that Linux is and has long been a major part the embedded world. How many smart phones run QNX?

  14. Re:That's the trouble with a monolithic kernel by Yvan256 · · Score: 2

    And bad news for Windows NT users named Dave.

  15. Re:Wait, what? by TheRaven64 · · Score: 3, Informative

    You're missing the point. He's not talking about add-ons like network adaptors, he's talking about fundamental core bits of hardware, like interrupt and DMA controllers, which need to be configured by the kernel before it can even bring things like serial ports online for a console.

    Every PC, except some early Intel Macs, is capable of booting PC-DOS 1.0. It has interrupt controllers and device I/O configured in the same way and accessible via the standard BIOS interface. You don't get great performance if you use these, but you can bring up a system with them and then load better drivers if you have them. With ARM, every SoC needs its own set of drivers for core functionality long before you get to things like video or network adaptors. Oh, and on the subject of video, you don't even get something like the PC's text console as standard, let alone a framebuffer (via VESA).

    --
    I am TheRaven on Soylent News
  16. Re:That's the trouble with a monolithic kernel by Entrope · · Score: 5, Informative

    Microkernel versus monolithic kernel has nothing to do with board support packages.

    Linux has the equivalent of "board support packages" -- they can be as small as one file, but are more often just a handful: a C file that describes memory and I/O mappings and other peripherals that cannot be safely detected at runtime, sometimes a default configuration (defconfig) file, and maybe some other pretty small driver-like files that manage some of the mess that Linus was talking about. (For example, the BeagleBoard has three C files: one to define the board, one to manage LCD video configuration, and one for audio setup; it shares a defconfig with every other board using an OMAP2/3/4 CPU.)

    That is in sharp contrast to my experience with commercial RTOSes, where a BSP might consist of a dozen C source and header files, plus another half-dozen configuration files. For the boards I have used, Linux has the smallest set of board-specific files, a microkernel RTOS has the next smallest, and a Unix-based RTOS has the largest. Linux doesn't call its board-specific file sets BSPs because they are (a) too small to really call a "package" and (b) not controlled and shipped separately. (Linux is not about locking down what the end user can do, so there would be no point in having BSPs for officially supported boards.)

  17. Re:Wait, what? by jedidiah · · Score: 3, Insightful

    It is NOTHING like computers in the 70s and 80s.

    In the 80s, you had machines made out of standard 3rd party components. Your CPU was the same as the next guy even if he got his computer from a competing brand. This is why an Atari could emulate a Mac. The actual CPU was a particular part that everyone bought from the same place. This is why you can have versions of Linux targeting those 80s/90s era machines. A 68000 in one machine is the same as the next, or a 6502, or a 68030.

    The old home computer landscape seems positively orderly by comparison.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  18. Re:That's the trouble with a monolithic kernel by FrangoAssado · · Score: 5, Informative

    Exactly.

    The problem is not that adding support to a new board in Linux is too hard, in fact, it's almost the opposite. There are already tens of slightly incompatible boards to support, and every time a company makes a new one, they don't even try to stick to any standard (not that there even *exists* a real standard), since it's very easy to just add new code to Linux. See this LKML thread for Linus's description of the problem from some time ago.

    Using a microkernel doesn't help at all; you still have to code for all of the slight incompatibilities, regardless of whatever differences in logical organization.

  19. Re:That's the trouble with a monolithic kernel by GooberToo · · Score: 2, Informative

    and so it has to be hacked all over the place to deal with architecture variations.

    Bullshit. Linux abstracts such details though various standardized functions and macros. If you've bothered to pull your head from your ass and take even a quick look at the Linux source tree, you can clearly see the architecture variants are cleanly broken out.

    Not only is your post NOT "Interesting", as was modded, it is factually, "Troll".

  20. Re:Wait, what? by JDG1980 · · Score: 3, Insightful

    The CPUs were standard, but little else was. Sure, the C-64 and Atari 800 both had a 6502-based CPU, but they also had different video chips, different sound chips, different and mutually incompatible disk drive formats and serial communications protocols, etc. One nice thing was that even though each company used their proprietary chips, they didn't feel the need to hide implementation details from users. If you wanted to know exactly what each register in the VIC-II chip did, it was right there in the manual.

  21. Re:Wait, what? by LWATCDR · · Score: 2

    And that is called inovation.
    The orignal PC "Standard" sucked.
    You had to asigne memory spaces, interrupts, and IO ports when you added cards. Not every card worked with every PC.
    PC compatibility was hit or miss. The magazines would use Lotus 123 and Microsoft Flight Simulator as the benchmarks. If both of those ran then it was PC compatible. Of course if you bought anything but a real IBM PC or at you could still find software that didn't run.
    Then you had the x86 CPU which also was terrible. Segmented memory was with us until the 386 and even that was register starved. The 68k line of CPUs was much better.
    Then you had the companies that dared to make better computers than IBMs. Both the Zenith Z-100 and the Tandy 2000 where much better computers than the standard PCs of the time. They used the x86 but with better graphics. Thing is that they where not PC compatible.
    And then you had to hope that your software would support your printer and video card if you got a better card then an MDA or CGA card. Hercules was a pretty safe bet.
    We where stuck in PC hell for years even when better solutions where available like the Mac, Atari ST, and Amiga. The reason was simple. You developed software for seats and more people that bought software bought PCs.
    We can use the same solution that finally made PC less of a steaming pile of dung. It is called an OS. You make a board and put an OS on it.
    To make Linux better at embedded I would suggest that standards need to be developed for GPIO, SPI, I2C "sort of have that now", and CAN. That would solve so many issues on the applications side it wouldn't be funny.
    For goodness sakes do not trap us into the Lowest Common Denominator hell that was the PC for way too long! USE THE OS!

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.