AT91SAM7S256 Porting issue

Hi                                                                I have done One project in  AT91SAM7X256 using FreeRTOS, Eclipse and GCC tool chain. I want to port AT91SAM7S256 using FreeRTOS, Eclipse and GCC tool chain but I am facing problem in boot.s, Port macro.c, Portisr.c file modifying. I didnot find any demo prject for AT91SAM7S256.      So Pl. Guide me

AT91SAM7S256 Porting issue

I only did this once and it was easy. As far as I can remember you only need to replace the AT91SAM7X256.h and lib_AT91SAM7X256.h header files with the 7S ones. Depending on any demo code, this will cause a lot of compile errors because some peripherals have different names or do not exist. You will need to work through these and make the required changes. Perhaps you should check the memory definitions in the *.ld file and the vector table in boot.s but I think they should be OK as they are.

AT91SAM7S256 Porting issue

Hi incrediball, i have copied AT91SAM7X256.h and lib_AT91SAM7X256.h.but i am getting error as i have attached here which is from boot.s. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Severity and Description    Path    Resource    Location    Creation Time    Id undefined reference to `__bss_beg__’    encoder    boot.s    line 118    1246532418781    9214 undefined reference to `__data_beg__’    encoder    boot.s    line 118    1246532418781    9215 undefined reference to `__data_beg_src__’    encoder    boot.s    line 118    1246532418781    9216 undefined reference to `__data_end__’    encoder    boot.s    line 118    1246532418781    9217 undefined reference to `__stack_end__’    encoder    boot.s    line 118    1246532418781    9218 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; my boot.s is as below ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;     /* */     .extern main     .extern exit     .extern AT91F_LowLevelInit     .extern vPortYieldProcessor     .text     .code 32     .align  0     .extern __stack_end__     .extern __bss_beg__     .extern __bss_end__     .extern __data_beg__     .extern __data_end__     .extern __data+beg_src__     .global start     .global endless_loop     /* Stack Sizes */     .set  UND_STACK_SIZE, 0x00000004     .set  ABT_STACK_SIZE, 0x00000004     .set  FIQ_STACK_SIZE, 0x00000004     .set  IRQ_STACK_SIZE, 0X00000400     .set  SVC_STACK_SIZE, 0x00000400     /* Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs */     .set  MODE_USR, 0x10            /* User Mode */     .set  MODE_FIQ, 0x11            /* FIQ Mode */     .set  MODE_IRQ, 0x12            /* IRQ Mode */     .set  MODE_SVC, 0x13            /* Supervisor Mode */     .set  MODE_ABT, 0x17            /* Abort Mode */     .set  MODE_UND, 0x1B            /* Undefined Mode */     .set  MODE_SYS, 0x1F            /* System Mode */     .equ  I_BIT, 0x80               /* when I bit is set, IRQ is disabled */     .equ  F_BIT, 0x40               /* when F bit is set, FIQ is disabled */ start: _start: _mainCRTStartup:     /* Setup a stack for each mode – note that this only sets up a usable stack     for system/user, SWI and IRQ modes.   Also each mode is setup with     interrupts initially disabled. */     ldr   r0, .LC6     msr   CPSR_c, #MODE_UND|I_BIT|F_BIT /* Undefined Instruction Mode */     mov   sp, r0     sub   r0, r0, #UND_STACK_SIZE     msr   CPSR_c, #MODE_ABT|I_BIT|F_BIT /* Abort Mode */     mov   sp, r0     sub   r0, r0, #ABT_STACK_SIZE     msr   CPSR_c, #MODE_FIQ|I_BIT|F_BIT /* FIQ Mode */     mov   sp, r0     sub   r0, r0, #FIQ_STACK_SIZE     msr   CPSR_c, #MODE_IRQ|I_BIT|F_BIT /* IRQ Mode */     mov   sp, r0     sub   r0, r0, #IRQ_STACK_SIZE     msr   CPSR_c, #MODE_SVC|I_BIT|F_BIT /* Supervisor Mode */     mov   sp, r0     sub   r0, r0, #SVC_STACK_SIZE     msr   CPSR_c, #MODE_SYS|I_BIT|F_BIT /* System Mode */     mov   sp, r0     /* We want to start in supervisor mode.  Operation will switch to system     mode when the first task starts. */     msr   CPSR_c, #MODE_SVC|I_BIT|F_BIT     bl        AT91F_LowLevelInit     /* Clear BSS. */     mov     a2, #0            /* Fill value */     mov        fp, a2            /* Null frame pointer */     mov        r7, a2            /* Null frame pointer for Thumb */     ldr        r1, .LC1        /* Start of memory block */     ldr        r3, .LC2        /* End of memory block */     subs    r3, r3, r1      /* Length of block */     beq        .end_clear_loop     mov        r2, #0 .clear_loop:     strb    r2, [r1], #1     subs    r3, r3, #1     bgt        .clear_loop .end_clear_loop:     /* Initialise data. */     ldr        r1, .LC3        /* Start of memory block */     ldr        r2, .LC4        /* End of memory block */     ldr        r3, .LC5     subs    r3, r3, r1        /* Length of block */     beq        .end_set_loop .set_loop:     ldrb    r4, [r2], #1     strb    r4, [r1], #1     subs    r3, r3, #1     bgt        .set_loop .end_set_loop:     mov        r0, #0          /* no arguments  */     mov        r1, #0          /* no argv either */     ldr lr, =main        bx    lr endless_loop:     b               endless_loop     .align 0     .LC1:     .word   __bss_beg__     .LC2:     .word   __bss_end__     .LC3:     .word   __data_beg__     .LC4:     .word   __data_beg_src__     .LC5:     .word   __data_end__     .LC6:     .word   __stack_end__     /* Setup vector table.  Note that undf, pabt, dabt, fiq just execute     a null loop. */ .section .startup,"ax"          .code 32          .align 0     b     _start                        /* reset – _start            */     ldr   pc, _undf                        /* undefined – _undf        */     ldr   pc, _swi                        /* SWI – _swi                */     ldr   pc, _pabt                        /* program abort – _pabt    */     ldr   pc, _dabt                        /* data abort – _dabt        */     nop                                    /* reserved                    */     ldr   pc, [pc,#-0xF20]                /* IRQ – read the AIC        */     ldr   pc, _fiq                        /* FIQ – _fiq                */ _undf:  .word __undf                    /* undefined                */ _swi:   .word vPortYieldProcessor       /* SWI                        */ _pabt:  .word __pabt                    /* program abort            */ _dabt:  .word __dabt                    /* data abort                */ _fiq:   .word __fiq                     /* FIQ                        */ __undf: b     .                         /* undefined                */ __pabt: b     .                         /* program abort            */ __dabt: b     .                         /* data abort                */ __fiq:  b     .                         /* FIQ                        */

AT91SAM7S256 Porting issue

This is because you have no `__bss_beg__’ , `__data_beg_src__’ , `__data_end__’, `__stack_end__’ symbols defined, but your boot.s tries to export them at the beggining of the file. These symbols should be defined in linker command (usually *.ld) file.

AT91SAM7S256 Porting issue

I’m confused. You say you have "done" a AT91SAM7X256 project, which I assume means that it compiles. The boot.s file in the AT91SAM7X256 demos have those symbols as well, so you must have removed something important. Those symbols are not 7X specific anyway. You also say that you have copied AT91SAM7X256.h and lib_AT91SAM7X256.h. But I thought you want to create a 7S project and not a 7X one. You need to REPLACE the 7X headers with the 7S headers. But it helps if the 7X project compiles to start with.

AT91SAM7S256 Porting issue

hi incrediball, it was by mistake written 7X in plase of 7S.Anyway problem has been solve wew have modefied also its *.ld but finally we have used same .ld file as we have used in 7X project.and project has been sucsesfully build thaks incrediball and aturowski for your supports.

AT91SAM7S256 Porting issue

Hi . i have build my project sucsessfully in AT91SAM7S256.But right now my project is aboarted When i am starting "vTaskscheduler();"i have tried to debuge inside that it is stopping its executon from (inTask.c ) if(xPortStartSchedular()).so is there any body have solution for this

AT91SAM7S256 Porting issue

Make sure the micro is in Supervisor mode before starting the kernel.

AT91SAM7S256 Porting issue

Hi davedoors, how could i check micro is in supervisor mode or not.