ARM microcontroller links/tips

pascal

Veteran
I am starting to study the ARM7TDMI and ARM9TDMI flash based microcontrollers to conduct some small hobby projects.
Also I will use some FPGA with 2D graphics accelerator (sprits).

Could you give me some links, forums, tips, tricks, kits, advices, etc... on both topics above?
And yes I am searching with google.

Thanks a lot :)
 
you'll do that in C I suppose ?
(use C and not ASM, nowadays C is really the low-level language anyway)


I learnt using a 16bit texas instruments µcontroller, with timers, interrupts, digital and serial inputs/outputs, that was fun, we had to make a dummy wash-machine work (with a motor, buttons, a seven-segments display), things like driving the motor with PWM signal, entering the washing program with the buttons, "emergency door opening" event where everything stops and the display blinks and it restarts right again when you close the door, and other little things. wasn't too complicated, easy and mildly challenging, others had trouble with deciphering the documentation and translating what we had to do in register settings for the timers, interrupts etc. but it's actually easy.

it was a bit like using PEEK and POKE on a commodore 64 (but for other purposes than sound, sprites etc.)
 
Last edited by a moderator:
Three itens in fact:

1 - ARM7TDMI flash based microcontrollers.
I am thinking about buying some Philips based kits. One of them could be: http://www.embeddedartists.com/prod...hp?PHPSESSID=3ec8d661589248e1e3536335455a8013
Is ST better than Philips for ARM?

2 - ARM7TDMI free RTOS and soft tools.
Probably I will use a mix of asm and C.
Should I use some kind free RTOS or develop a multipriority superloop?
What about GCC? Is it good?

3 - Tips/tricks with sprites and 2D acceleration. Yes, it is simple but there is always some tips/tricks.


I already have an old FPGA Xilinx kit from www.xess.com and some soft like ISE, synplify, modelsim.

From time to time I have this need to put my brain to work again and get update.

Thanks
 
Last edited by a moderator:
Try eCos, and get whatever ARM already has support to save you some time.

An interesting option would be to get ahold of an (now end of lifed) Altera Excalubur, which has a ARM 920 along with SRAM and an FPGA in one package.
 
hi (teacher):LOL: pascal, sorry about the off topic but i was trying to send a pm to you but i dunno why o dont have permission to send pm to you :)

its me Gustavo !
 
If you want to make it easy on yourself, start with some mini-OS. Simpler is generally better. Or write one yourself, of course. That's fun to do, but hard to debug.

I just mean things like an RS-232 terminal interface, event handling and some build-in functions to control the hardware, as it can be a real bitch to get the channels, timers and interfaces up and running. And if you attach a display, some simple functions to print chars and draw primitives would be nice.
 
gustkiller said:
hi (teacher):LOL: pascal, sorry about the off topic but i was trying to send a pm to you but i dunno why o dont have permission to send pm to you :)

its me Gustavo !
In fact you cant with your current contributtion (zero technical posts) to the site.
Now go back to your assignment Gustavo ;)
 
Last edited by a moderator:
DiGuru said:
If you want to make it easy on yourself, start with some mini-OS. Simpler is generally better. Or write one yourself, of course. That's fun to do, but hard to debug.

I just mean things like an RS-232 terminal interface, event handling and some build-in functions to control the hardware, as it can be a real bitch to get the channels, timers and interfaces up and running. And if you attach a display, some simple functions to print chars and draw primitives would be nice.
Thanks DiGuru. Will do more search about it.
 
If you have specific questions, I (and I'm sure Russ as well) will be happy to help. I have no experience with ARM processors, but that doesn't matter very much when you're using C. Everything else can be found in the data sheets.
 
I'd strongly suggest learning the instruction architecture and assembly language, at least to passing familiarity. The ARM design is pretty clean and the assembler is one of the few I find quite fun to mess around in. A quick overview can be found here :-

http://www.khantazi.org/Archives/ARMChips.html

Certainly while you will be working in C most of the time, understanding how the underlying chip works generally saves a lot of debug time. Also remember that ARM chips usually are pretty weak on floating point performance. Integer processing is normally very quick especially, thanks to the barrel shifter, power of two multiply or divide operations.

Can't say I have played with Thumb instructions much. Generally I cut my teeth doing ARM2/3 assembly on Acorn RISC OS machines using the BBC BASIC V assembler. You can do some seriously elegant things thanks to the conditional instruction execution.
 
Btw, pascal, what exactly do you want to do with it?

Above all, you want In-Circuit Programming, but just about all current controllers and boards have that.

For learning the basics, I would suggest an Atmel AVR (or PIC, but I don't like those). An AT90S8515 or ATmega8515 is probably your best bet overall.

For specific applications, it depends on the application, of course.

For advanced all-round applications, you generally want something that has at least RS-232, USB and Ethernet, and enough SRAM/FLASH to be able to run things like Linux. You might opt to develop something yourself in either case, but you won't be limited in the end. ARM is great for this kind of applications. And the price isn't much higher.

The amount of IO you might want to attach stuff is generally very limited, unless you have a specific application, like building a robot. In all other cases, lots of standard IO is better. And there is no single board that does it all. ;)


Some great sites:

http://www.olimex.com/dev/index.html

http://microcontrollershop.com/

http://www.omega-research.co.uk/

http://www.freertos.org/

http://www.ethernut.de/en/index.html


Edit: If I would buy one, I would probably go for this one, USD $159.95.
 
Last edited by a moderator:
How about getting a Nintendo DS, a flashcard cartridge for it and some homebrew programming docs and tools? It'd certainly be really cheap, and you'll get both an ARM7 and ARM9 to play around with, plus all the sprites, backgrounds and oldskool gee-whiz 2D features you could ever hope for, in addition to more than rudimentary hardware accelerated 3D graphics too.

...Plus you can play games and fool around with the DS whenever you feel like it as well. :D
 
1. Get the instruction set reference off arm.com. It's really helpful. And while you're at it grab whatever else looks interesting. Those aren't IBM docs. Those are good, correct, concise and clear docs. Get them.

2. Know your naming schemes. Eg an ARM7TDMI actually belongs to what is referred to as the "ARM4 architecture family". Don't be surprised when you find out that it doesn't support the instructions you'd expect from "ARM5 and higer" processors.

Knowing when to use ARM code and when to use Thumb code is a significant optimization and you should not be afraid to experiment.

3. GCC isn't all that clever with C code on ARM platforms. There are lots of optimizations it consistently misses, so do yourself a favor and go crazy with ASM wherever performance matters. The GNU Assembler however is a really nice tool to work with (the somewhat dumb-by-design GNU linker is the single remaining flaw). GCC has an option to "keep intermediate files", i.e. it keeps intermediate ASM code files generated from the high-level code, and that can be very useful for getting a base to optimize from.

But then everything that matters is based on GCC anyway ;)

Google for DevkitPro. Should be on Sourceforge.

4. The GBA is actually very nice if you're just messing around. If of course you want to control your own FPGA-based (or otherwise "custom") hardware, don't. The PC emulators are getting pretty accurate. Due to the open market's obsession with *cough* "backups fo your favourite games", GBA flash carts are readily available.

If you're going for the GBA (16.384MHz ARM7TDMI, 256kB+32kB main memory, up to 32MB client code/data, top-notch 2D graphics hardware, okay sound hardware) I can recommend HAM to get you started quickly.

edit:
The DS is an overall much stronger platform than the GBA obviously. Unfortunately, whereas the GBA is pretty much an open platform by now due to community efforts, proper documentation for the DS is much much harder to come by.
 
Last edited by a moderator:
DiGuru said:
Btw, pascal, what exactly do you want to do with it?

Above all, you want In-Circuit Programming, but just about all current controllers and boards have that.

For learning the basics, I would suggest an Atmel AVR (or PIC, but I don't like those). An AT90S8515 or ATmega8515 is probably your best bet overall.

For specific applications, it depends on the application, of course.

For advanced all-round applications, you generally want something that has at least RS-232, USB and Ethernet, and enough SRAM/FLASH to be able to run things like Linux. You might opt to develop something yourself in either case, but you won't be limited in the end. ARM is great for this kind of applications. And the price isn't much higher.
I am more to the side of advanced all-round applications.
Assembly and C are no problem for me. I learned the 8080 assembly in 1982 and C in 1987. At one point i got more involved with less technical aspects of work. I have some limited experience with microcontrollers (8051, PIC) and want to go to the advanced side now. I was originally thinking about go with something like dsPIC/56800/MSP430 but decided to go ARM because:
- Multivendor availability
- lots of sources of software
- Can start simple like standard flash MCU and some basic multipriority superloop.
- scallability to faster MCUs with MMU and linux, etc...

I have some ideas in mind and have some time to explore those ideas.
The first one will involve audio/video/touchscreen/ethernet/usb/peripherals for entertainment.

DiGuru said:
The amount of IO you might want to attach stuff is generally very limited, unless you have a specific application, like building a robot. In all other cases, lots of standard IO is better. And there is no single board that does it all. ;)
The amount of I/O can be expand using CPLD/FPGA.

DiGuru said:
This kit looks great.
Thanks very much DiGuru :)
 
Guden Oden said:
How about getting a Nintendo DS, a flashcard cartridge for it and some homebrew programming docs and tools? It'd certainly be really cheap, and you'll get both an ARM7 and ARM9 to play around with, plus all the sprites, backgrounds and oldskool gee-whiz 2D features you could ever hope for, in addition to more than rudimentary hardware accelerated 3D graphics too.

...Plus you can play games and fool around with the DS whenever you feel like it as well. :D
This could be a good case study ;)
 
zeckensack said:
4. The GBA is actually very nice if you're just messing around. If of course you want to control your own FPGA-based (or otherwise "custom") hardware, don't. The PC emulators are getting pretty accurate. Due to the open market's obsession with *cough* "backups fo your favourite games", GBA flash carts are readily available.

If you're going for the GBA (16.384MHz ARM7TDMI, 256kB+32kB main memory, up to 32MB client code/data, top-notch 2D graphics hardware, okay sound hardware) I can recommend HAM to get you started quickly.

edit:
The DS is an overall much stronger platform than the GBA obviously. Unfortunately, whereas the GBA is pretty much an open platform by now due to community efforts, proper documentation for the DS is much much harder to come by.
I think I need at least a 60MHz ARM7TDMI, 512kB+64KB, maybe no main memory, some FPGA based 2D graphics and some sound.
Thanks zeckensack :)
 
Back
Top