Dear all,
I am an engineer who is doing signal processing on xilinx FPGAs. I am familiar with C/VHDL/MATLAB. However I want to learn ARM based micro-processors. I know very little about processors and their architecture. Absolutely no practical experience of working on them.
Kindly suggest me a path (books etc) which leads me through ARM processors.
I have decided to go through this book first ;
Will this be a good book to start with ?
Please give your suggestions.
Hi vp9 and welcome to the Community!
I've moved your question to the Processors group where I think you will get answer you need, but also have a look through Important ARM Technical Learning Resources, as this has proven a valuable resource to many members.
Aside from books, the documents compiled in that blog are truly helpful in getting you started with ARM processors.
Hi vp9,
That is a distinguished book for Computer Organization, it has a twin volume for Computer Architecture
Computer Architecture, Fifth Edition: A Quantitative Approach (The Morgan Kaufmann Series in Computer Architecture and Design) 5th Edition
by John L. Hennessy and David A. Patterson
Publisher: Morgan Kaufmann; 5 edition (September 30, 2011)
ISBN-10: 012383872X
ISBN-13: 978-0123838728
I only have the 2nd and 3rd editions and I find them excellent references for Computer Architecture/Organization. These older editions generally focus on the MIPS architecture and cite the x86, POWER/PowerPC, and others in some sections. The newer editions explore some architectural features of the x86, ARM, and NVIDIA GPUs. If you want to focus on ARM consider the ARM edition of the book
Computer Organization and Design: The Hardware/Software Interface - ARM Edition
by David A. Patterson and John L. Hennessy
Publisher: ELSEVIER; 4th edition (2012)
ISBN-10: 8131222748
ISBN-13: 978-8131222744
There is also a soon-to-be-published (scheduled date of publication is March 29, 2016) edition of this title
Computer Organization and Design: The Hardware Software Interface: ARM Edition (The Morgan Kaufmann Series in Computer Architecture and Design) 1st Edition
Publisher: Morgan Kaufmann; 1 edition (March 29, 2016)
ISBN-10: 0128017333
ISBN-13: 978-0128017333
If you are using XILINX SoCs only, the ARM variant relevant to you is the A (Application) series. Compared with the M series there are fewer printed books for the A series but you may find the information you need in the reference manuals which are available from ARM Infocenter. A list of ARM-related books is here
ARM Related Books
Regards,
Goodwin
My previous reply was "in response to Carl Williamson" but that's directed primarily to vp9. The revised message below is more appropriate
Aside from books, the documents compiled in that blog are truly helpful in getting you (vp9) started with ARM processors.
Carl doesn't need to get started with ARM processors anymore , he is already an expert.
Thank you friends for your suggestions. This will definitely help me to get
started.
Hi vp9 and welcome to the community and welcome to the ARM world.
There are a few different ARM "sub-architectures". If the ARM architecture you're interested in is a Cortex-M, I might be able to help you a little.
I mainly work with Cortex-M, because it's easy, and getting started with it cost less than $10 (yes, that's right; it includes a complete development board and a USB programmer interface. The compiler + debugger toolchain can be downloaded for free; see GNU ARM Eclipse).
As for the development boards, you can sometimes win a full board here on the ARM Community Site, so keep your eyes open.
-Alternatively, you can find a lot of good low-cost boards and programmer adapters on eBay.
(I mention this, because hands-on experience is a great way to get acquainted with the ARM Cortex-M architecture; even if you're a vendor).
As for the instruction set, common to all architectures are the need for reading a value from memory (ROM / RAM), modifying the value and writing it back (RAM).
Here's a quick overview of a few instruction types:
For the ARM architecture, which is RISC based, we use the LDR instruction (or one of its variants like LDRB, LDRH, LDRD or LDM) to read values from RAM / ROM / hardware registers.
We can use one of the data processing instructions (ADD, SUB, MUL, DIV, AND, ORR, EOR, LSL, LSR, ASR, etc.) to modify the data.
The data processing instructions are always operating on all 32-bits of a register.
For writing to RAM or hardware registers, the STR instruction (or one of its variants, for instance STRB, STRH, STRD, STM) can be used.
Here's a good overview of the ARM Cortex-M3 instruction set.
More details about the operation of each instruction can be found in the ARM Cortex-M3 Devices Generic User Guide.