Difference between revisions of "The ARM7 board"
Line 10: | Line 10: | ||
==Board Functionality== | ==Board Functionality== | ||
+ | |||
+ | ===Low Level Functionality=== | ||
+ | The AT91SAM7A2 ARM processor provides 32-bit processing power to the Concept Car. Among the low level functionalities are: | ||
+ | |||
+ | * SPI | ||
+ | * USART | ||
+ | * CAN | ||
+ | * LED | ||
+ | * GPIO | ||
+ | * ADC | ||
+ | * Buttons | ||
+ | * Ethernet | ||
+ | * Buzzer | ||
+ | |||
+ | To enable access to these functionalities C source code is provided. The source code eases the task of accessing board peripherals and makes software development a bit easier. Besides the resources listed above there is also code for dealing with interrupts, timers, SD Cards and so on. | ||
+ | |||
+ | ====Memory Map==== | ||
+ | |||
+ | The board has a 4MB RAM memory accessed by the ARM processor. The access to this memory is configured by the ARM's AMC, which defines the address range for the external memory. Below a description of the current memory map is shown, for further details on the memory map please check the datasheet. | ||
+ | |||
+ | *Before boot: | ||
+ | {| align=center | ||
+ | |<pre> | ||
+ | /---------------\ 0x00000000 | ||
+ | | FLASH | | ||
+ | | | Low level code initially here (Bootloader: basic low level setup) | ||
+ | | 1MB | | ||
+ | |_______________| 0x000fffff | ||
+ | | | 0x00100000 | ||
+ | | Reserved | | ||
+ | | | | ||
+ | |_______________| 0x002fffff | ||
+ | | | 0x00300000 | ||
+ | | Internal RAM | | ||
+ | | 16kB | | ||
+ | |_______________| 0x003fffff | ||
+ | | | 0x00400000 | ||
+ | | Reserved | | ||
+ | | | | ||
+ | |_______________| 0xffdfffff | ||
+ | | | 0xffe00000 | ||
+ | | Peripherals | | ||
+ | | | | ||
+ | \---------------/ 0xffffffff | ||
+ | </pre> | ||
+ | |} | ||
+ | |||
+ | *After boot: | ||
+ | |||
+ | {| align=center | ||
+ | |<pre> | ||
+ | /---------------\ 0x00000000 | ||
+ | | | | ||
+ | | Internal RAM | Reset and other vectors (data abort, fetch abort, irq, firq) | ||
+ | | 16kB | | ||
+ | |_______________| 0x000fffff | ||
+ | | | 0x00100000 | ||
+ | | Reserved | | ||
+ | |_ _ _ _ _ _ _ _| 0x002fffff | ||
+ | | | 0x00300000 | ||
+ | | Reserved | | ||
+ | |_______________| 0x3fffffff | ||
+ | | | 0x40000000 | ||
+ | | Flash 1MB | | ||
+ | | External RAM | | ||
+ | | 4MB | User application code, loaded by bootloader (subdivided into memory regions described below) | ||
+ | | | | ||
+ | |_______________| 0x7fffffff | ||
+ | | | 0x80000000 | ||
+ | | Reserved | | ||
+ | |_______________| 0xffdfffff | ||
+ | | | 0xffe00000 | ||
+ | | Peripherals | | ||
+ | | | | ||
+ | \---------------/ 0xffffffff | ||
+ | </pre> | ||
+ | |} | ||
+ | |||
+ | *External RAM Memory Map: | ||
+ | |||
+ | {| align=center | ||
+ | |<pre> | ||
+ | /---------------\ 0x40600000 | ||
+ | | | || | ||
+ | | Application | \/ | ||
+ | | | User application code gets loaded here | ||
+ | |_ _ _ _ _ _| | ||
+ | | | | ||
+ | | Application | /\ | ||
+ | | Stack | || | ||
+ | |_ _ _ _ _ _ _ _| 0x40808ffc | ||
+ | | | 0x40809000 | ||
+ | | | | ||
+ | | FREE | | ||
+ | |_ _ _ _ _ _| | ||
+ | | | | ||
+ | | ARM SVR MODE | /\ | ||
+ | | STACK | || | ||
+ | |_ _ _ _ _ _| 0x409ff000 (Supervisor mode stack) | ||
+ | | | | ||
+ | | UNDEF STACK | 0x409ffd08 (Undefined exception stack) | ||
+ | | ABORT STACK | 0x409ffe04 | ||
+ | | IRQ STACK | 0x409fff00 | ||
+ | | FIRQ STACK | 0x409ffffc (Last valid address on external memory) | ||
+ | \---------------/ | ||
+ | </pre> | ||
+ | |} | ||
+ | |||
+ | ====Bootloader==== | ||
+ | |||
+ | ===User level functionality=== | ||
+ | |||
+ | ====Related Files==== | ||
+ | |||
+ | ====User Applications==== | ||
+ | |||
+ | ====Simulink Models==== | ||
''TODO'' bootloader, loading an app, memory management, ... | ''TODO'' bootloader, loading an app, memory management, ... | ||
The most common use case for the ARM7 board is to [[Simulink Execution on the ARM7 target|execute a simulink model]]. | The most common use case for the ARM7 board is to [[Simulink Execution on the ARM7 target|execute a simulink model]]. |
Revision as of 13:57, 20 March 2009
Contents
Overview
One Member of the Concept Car's network is an ARM7 board. Due to its 32 bit architecture and higher frequency it provides a much bigger computational power than the AT90CAN128 boards. Thus it is well suited to do all the computation-intensive tasks.
Signal Flow
The AT90CAN128 actorboard offers a selection switch/jumper to choose between two different sources to generate its PWM output. By that you can select whether it uses direct input from the sensorboards or works on the preprocessed data from the ARM7 board.
The ARM7 board itself is not intended to directly access sensors or actors, it should merely process data from the CAN bus and produce control messages for the actor board.
Board Functionality
Low Level Functionality
The AT91SAM7A2 ARM processor provides 32-bit processing power to the Concept Car. Among the low level functionalities are:
- SPI
- USART
- CAN
- LED
- GPIO
- ADC
- Buttons
- Ethernet
- Buzzer
To enable access to these functionalities C source code is provided. The source code eases the task of accessing board peripherals and makes software development a bit easier. Besides the resources listed above there is also code for dealing with interrupts, timers, SD Cards and so on.
Memory Map
The board has a 4MB RAM memory accessed by the ARM processor. The access to this memory is configured by the ARM's AMC, which defines the address range for the external memory. Below a description of the current memory map is shown, for further details on the memory map please check the datasheet.
- Before boot:
/---------------\ 0x00000000 | FLASH | | | Low level code initially here (Bootloader: basic low level setup) | 1MB | |_______________| 0x000fffff | | 0x00100000 | Reserved | | | |_______________| 0x002fffff | | 0x00300000 | Internal RAM | | 16kB | |_______________| 0x003fffff | | 0x00400000 | Reserved | | | |_______________| 0xffdfffff | | 0xffe00000 | Peripherals | | | \---------------/ 0xffffffff |
- After boot:
/---------------\ 0x00000000 | | | Internal RAM | Reset and other vectors (data abort, fetch abort, irq, firq) | 16kB | |_______________| 0x000fffff | | 0x00100000 | Reserved | |_ _ _ _ _ _ _ _| 0x002fffff | | 0x00300000 | Reserved | |_______________| 0x3fffffff | | 0x40000000 | Flash 1MB | | External RAM | | 4MB | User application code, loaded by bootloader (subdivided into memory regions described below) | | |_______________| 0x7fffffff | | 0x80000000 | Reserved | |_______________| 0xffdfffff | | 0xffe00000 | Peripherals | | | \---------------/ 0xffffffff |
- External RAM Memory Map:
/---------------\ 0x40600000 | | || | Application | \/ | | User application code gets loaded here |_ _ _ _ _ _| | | | Application | /\ | Stack | || |_ _ _ _ _ _ _ _| 0x40808ffc | | 0x40809000 | | | FREE | |_ _ _ _ _ _| | | | ARM SVR MODE | /\ | STACK | || |_ _ _ _ _ _| 0x409ff000 (Supervisor mode stack) | | | UNDEF STACK | 0x409ffd08 (Undefined exception stack) | ABORT STACK | 0x409ffe04 | IRQ STACK | 0x409fff00 | FIRQ STACK | 0x409ffffc (Last valid address on external memory) \---------------/ |
Bootloader
User level functionality
Related Files
User Applications
Simulink Models
TODO bootloader, loading an app, memory management, ...
The most common use case for the ARM7 board is to execute a simulink model.