Self-training on ARM architecture? - Page 1
Forum section: electronics / general

author: bitwelder
author_rank: Super Contributor
timestamp: April 02, 2015, 05:56:44 am
content: I'd like to learn more (by self-training) about ARM architecture.My main interest is in the Linux booting process, so let's how to build a kernel and learn to work with u-boot to flash an ARM embedded system.I ordered 'Linux embedded primer' book as (although old) many still recommend it, but I'd like to find some kind of course that explain all the basics step by step.Any suggestions?Thanks

author: westfw
author_rank: Super Contributor
timestamp: April 02, 2015, 06:55:34 am
content: Do you already have a firm understanding of how linux works on non-ARM processors? Or are you going to be learning ARM architecture and Linux internals at the same time?

author: bitwelder
author_rank: Super Contributor
timestamp: April 02, 2015, 07:25:14 am
content: 10+ years Unix/Linux sysadmin working experience.Generally I know how to configure a system by editing obscure config files

author: miguelvp
author_rank: Super Contributor
timestamp: April 02, 2015, 07:39:47 am
content: Most people here might deal with the Cortex M series and those are not well suited for LinuxMaybe a good resource would be Linux for Tegra, (L4T) I do have a Jetson K1 but haven't found time to play with it.I think Olimex has some affordable Arm dev boards that might run linux.

author: nctnico
author_rank: Super Contributor
timestamp: April 02, 2015, 09:44:06 am
content: I'd get one of the more modern ARM boards (Freescale Sabre lite with the iMX6 for example) and work from there. IIRC that board will boot from anything; modern ARM controllers don't need flash anymore. An SD card or regular Sata hard drive will do.U-boot has become almost an OS of it's own and is powerfull enough to run small to medium (single threaded) applications.

author: bitwelder
author_rank: Super Contributor
timestamp: April 02, 2015, 09:59:45 am
content: Thanks, no need to get one more ARM board, I already have plenty of them: my old NAS with Marvell Kirkwood, a couple of dev boards running Allwinner A20, a new one with Freescale iMX53 probably in the mailbox today, just to name the first ones (which is actually the reason I would like understand better the ARM world and its peculiarities).What I'm looking for is some step-by-step guide that illustrate how those systems works on the low level, as I know already some bit and pieces, but I'd like to build a more complete view.

author: miguelvp
author_rank: Super Contributor
timestamp: April 02, 2015, 10:24:38 am
content: As stated, we usually work in here with the M series, what that means is that it's a very reduced instruction set, for example no hardware division on the M0 no Neon, no DSP sometimes no DMA.Best resource would be the arm webpage to check in detail what the processor you want to use has to offer, they have a lot of detail for all of them, for example here is the instruction set for the M0:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0432c/CHDCICDF.htmlIt doesn't get more spartan than that on a 32 bit processor.

author: dannyf
author_rank: Super Contributor
timestamp: April 02, 2015, 10:57:47 am
content: QuoteARM architecture and linux booting process? doesn't that sound like two different / unrelated pieces?

author: Rasz
author_rank: Super Contributor
timestamp: April 02, 2015, 06:06:33 pm
content: Quote from: dannyf on April 02, 2015, 10:57:47 amExactomundo!first one:http://www.heyrick.co.uk/armwiki/Main_Pageyou can go hardcore oldschool with bookshttp://www.computinghistory.org.uk/cgi/archive.pl?type=Books&platform=Acorn%20Archimedesor campy Spaghetti Western uni course from Indiaor modern with some android books maybesecond one:https://github.com/0xAX/linux-insides/Quote from: bitwelder on April 02, 2015, 07:25:14 amso in other words no clue about stuff deeper under the hood :-) ;PQuote from: bitwelder on April 02, 2015, 09:59:45 amThere are no major arm peculiarities on the higher level. Lower level stuff you will find in Kernel board files/device tree and uboot sources.

author: westfw
author_rank: Super Contributor
timestamp: April 03, 2015, 03:09:37 am
content: I'd expect that the main "complicated" portion of boot linux on an ARM (or any other processor, for that matter), compared to the "obvious" process of booting up a "deeply embedded, bare metal, Cortex M chip", would be the initialization of the memory paging and protection. On a modern OS, memory management is a BIG part of things; when I last took a vendor "systems internals" class (a long time ago, but...) we spent a LOT of time on how "the pager" worked.(At some level, it's probably pretty simple. You do a bit of setup, and thereafter everything works through the scheduler/etc, with each process getting its own address space (and perhaps magic access to other address spaces.))

author: nctnico
author_rank: Super Contributor
timestamp: April 04, 2015, 01:03:50 am
content: Interestingly u-boot (or any other bootloader) is much like a microcontroller application. Usually there is some extra work needed to bring the memory up but the boot loader basically runs single threaded in a flat memory model (without the MMU). A bootloader basically configures the I/O ports, brings up a boot medium to read the kernel from and has command line/scripting capabilities to sort out the boot order. It's the Linux kernel which enables the MMU, interrupts, etc.What makes bootloaders complicated is that they usually support many platforms so the source can be a dependancy mess. U-boot is still quite straightforward in that respect.

author: stevech
author_rank: Contributor
timestamp: April 09, 2015, 04:53:54 am
content: NOTE: This message has been deleted by the forum moderator Simon for being against the forum rules and/or at the discretion of the moderator as being in the best interests of the forum community and the nature of the thread.If you believe this to be in error, please contact the moderator involved.An optional additional explanation is:

author: stevech
author_rank: Contributor
timestamp: April 09, 2015, 04:54:28 am
content: NOTE: This message has been deleted by the forum moderator Simon for being against the forum rules and/or at the discretion of the moderator as being in the best interests of the forum community and the nature of the thread.If you believe this to be in error, please contact the moderator involved.An optional additional explanation is:

author: donotdespisethesnake
author_rank: Super Contributor
timestamp: April 09, 2015, 08:57:12 am
content: LOL, the "stevech" spambot strikes again!The Teensy may be the most wonderful microcontroller system ever, but it will struggle to run Linux. It is also hard to learn how the bootloader works, because it is proprietary.

author: chicken
author_rank: Frequent Contributor
timestamp: April 09, 2015, 09:21:35 pm
content: You might want to check out this project, seems to be pretty well documented:http://www.reddit.com/r/electronics/comments/3184up/inspired_by_henriks_embedded_linux_system_i_made/