We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello Where can I find some example programs only in asm to be compiled inder Keil MDK? I can't compile simple programs as:
STACK_TOP EQU 0x20002000 ; constant for SP starting value AREA |Header Code|, CODE DCD STACK_TOP ; Stack top DCD Start ; Reset vector ENTRY ; Indicate program execution start here Start ; Start of main program ; initialize registers MOV r0, #10 ; Starting loop counter value MOV r1, #0 ; starting result ; Calculated 10+9+8+...+1 loop ADD r1, r0 ; R1R1 + R0 SUBS r0, #1 ; Decrement R0, update fl ag (“S†sufï¬ x) BNE loop ; If result not zero jump to loop ; Result is now in R1 deadloop B deadloop ; Inï¬ nite loop END ; End of ï¬ le
Keil gives an error: Error: L6320W: Ignoring --entry command. Cannot find argument 'Reset_Handler'.
How to change this program? How to change linker control string?
I tried also to add startup code fo nxp1766 but then i still have an error that label __main is missing.
Could You help me and give me some simple programs just to compile it properly?
Gp F wrote: > R3 contains an unaligned address
Really? The value in r3 is 0x2009C040. Looks aligned to me.
MOVW assigns the lower half-word and clears the upper. MOVT assigns the upper half-word. Easier to use here would be the pseudo instruction
MOV32 r3, #0x2009C040
Tamir wrote: > in fact, STR is documented to have the ability to handle unaligned > accesses on ARM7 and Cortex M3 !
Depends on what is meant by "handle". ARM7 has a rather creative way of dealing with unaligned accesses -- the results would be unexpected to most people who are unfamiliar with architecture details.
Cortex-M3 does handle unaligned accesses but not in all situations. Check out the documentation.
-- Marcus http://www.doulos.com/arm/
I found the sollution. Probabely the program code was in reserver region. I copied all startup code (all vector table) and now it is working properly. I found it in dissasembled code. In all built in projects the first instruction was in higher address than 0x18 in my code. Now I use build in startup file but I have to comment one line:
User Initial Stack & Heap IF :DEF:__MICROLIB EXPORT __initial_sp EXPORT __heap_base EXPORT __heap_limit ELSE ; IMPORT __use_two_region_memory EXPORT __user_initial_stackheap __user_initial_stackheap LDR R0, = Heap_Mem LDR R1, =(Stack_Mem + Stack_Size) LDR R2, = (Heap_Mem + Heap_Size) LDR R3, = Stack_Mem BX LR ALIGN ENDIF
because i get following messages: blinky.axf: Warning: L6665W: Neither Lib$$Request$$armlib Lib$$Request$$cpplib defined, not searching ARM libraries. blinky.axf: Error: L6218E: Undefined symbol __use_two_region_memory (referred from startup_lpc17xx.o).