Help Programming ARM7TDMI-S in Assembly

AI Thread Summary
The discussion centers on programming the ARM7TDMI-S processor in assembly language, with a focus on finding suitable development boards, IDEs, and textbooks. Participants recommend checking ARM's official website and suggest obtaining the ARM7TDMI-S Technical Reference Manual for foundational knowledge. The interest in this processor stems from its use in the Nintendo Game Boy Advance, with a goal of reverse engineering games. While resources for ARM programming are limited, some textbooks like the "ARM System Developers Guide" and "ARM Architecture Reference Manual" are mentioned. Additionally, there is a call for online classes in ARM assembly, with suggestions to explore platforms like Hitex for training and webinars. The conversation emphasizes the need for a solid understanding of assembly language, especially for complex tasks like reverse engineering.
JohnSmith0909
Messages
14
Reaction score
1
Hello friends,

I'm looking to program the ARM7TDMI-S in assembly. Can anyone recommend any good development boards? Can anyone recommend an IDE? Can anyone recommend a textbook that would be good for leaning how to program this processor in Assembly? I know various other programming languages but have never learned ARM assembly.

Thanks and let me know.
 
Last edited:
Computer science news on Phys.org
I'd recommend checking out ARM's website.
 
The ARM7 architecture is nearly 30 years old so I think you are going to struggle finding usable resources for it. Why are you interested in this? Do you have any assembly language experience? Do you have any RISC assembly language experience?
 
Hey thanks. I'm interested in it because it was the cpu used in the Nintendo Gameboy advance. I'd like to learn reverse engineering of games on it and just programming it in general. I've been using Ghidrea to break down the ROMs to raw assembly code and trying to understand them but it's so many functions.
.I don't have any Arm assembly experience. So I was hoping somebody could recommend like a good textbook on this as well as a development board?

I do have knowledge of other programming languages but not assembly.
 
JohnSmith0909 said:
I don't have any Arm assembly experience.
Following up on @pbuk's question, do you have an assembly programming experience? It's quite different from programming in higher-level languages.

There aren't a lot of textbooks on ARM programming out there, but I found a website (http://www.davespace.co.uk/arm/introduction-to-arm/books.html) that lists three resources
  • ARM System Developers Guide
  • ARM System-on-Chip Architecture (2nd ed.)
  • ARM Architecture Reference Manual (2nd ed.)
 
JohnSmith0909 said:
I've been using Ghidrea to break down the ROMs to raw assembly code and trying to understand them but it's so many functions.
Once you get an assembly language listing, are you able to follow what different blocks of the code are doing? Can you work out excactly whate each instruction does?
Have you got a copy of the Instruction Set Reference? It contains all the detail you need.
https://www.ecs.csun.edu/~smirzaei/docs/ece425/arm7tdmi_instruction_set_reference.pdf
 
  • Like
Likes sysprog
Hello friends, I am able to figure out what different pieces of code are doing. Is anyone able to point me towards perhaps a fully online class on ARM assembly from a college or university that I can take?
 
  • #10
YoshiMoshi said:
Hello friends, I am able to figure out what different pieces of code are doing. Is anyone able to point me towards perhaps a fully online class on ARM assembly from a college or university that I can take?

Regarding the developer's kit, it should be something built around a good microcontroller, e.g. the NXP LPC2300 (link is to a Power Point Presentation pdf).

Perhaps also check out hitex.com ##-## you could start here: Hitex Indsider's Guide (pdf) to the LPC2300 microcontroller). Hitex offers free webinars and priced training courses, mostly in German, but some in English.

You can learn a lot about embedded systems ##-## RTOS, interrupts, etc. ##-## while doing all of your coding in C language; however, your ambitious reverse engineering project will require strong assembly language skills . . .
 
Back
Top