- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I am starting a bare-metal development on DE0-Nano-SoC_Computer. I use the development tool: DS5 AE. I begin by a timer program found in the document “DE0-Nano-SoC Computer System with ARM Cortex-A9”: equ bit_24_pattern, 0x01000000/* this program provides a simple example of code for the arm a9. it:
* 1. starts the arm a9 private timer
* 2. loops forever, toggling the hps green light ledg when the timer expires
*/
.text
.global _start
_start:
ldr r0, =0xff709000 // gpio1 base address
ldr r1, =0xfffec600 // mpcore private timer base address
ldr r2, =bit_24_pattern // value to turn on the hps green light ledg
str r2, [r0,# 0x4] // write to the data direction register to set
// bit 24 (ledg) of gpio1 to be an output
ldr r3, =200000000 // timeout = 1/(200 mhz) x 200×10∧6 = 1 sec
str r3, [r1] // write to timer load register
mov r3,# 0b011 // set bits: mode = 1 (auto), enable = 1
str r3, [r1,# 0x8] // write to timer control register
loop:
str r2, [r0] // turn on/off ledg
wait: ldr r3, [r1,# 0xc] // read timer status
cmp r3,# 0
beq wait // wait for timer to expire
str r3, [r1,# 0xc] // reset timer flag bit
eor r2, r2,# bit_24_pattern // toggle ledg value
b loop
.end
The timeout is not 1 sec but about 40 sec. the good value is 5 000 000 instead of 200 000 000. Is it necessary to initialize the system clocks before launching the program? Thanks for your help. Jerome
Link Copied
0 Replies

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page