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.
The board I'm using is the phyCORE-167HSE with ST10F269 processor intern: 256kB flash,; 8 + 2kB GP-RAM 2kB IRAM; Extern: 1MB flash on /CS0: 512kB RAM on /CS1 4kB UARTon /CS2 512kB RAM at /CS3 4kB Ethernet on /CS4 Software: uVision3 V3.02 FlashTools 3 Version 0.96 Memory configuration in uVision3 RAM 0x1000-0x1FFF (4kB(min size),UART) ROM 0x100000-0x1FFFFF (1MB, Flash) RAM 0x200000-0x27FFFF (512kB, RAM) I'd like to start executing code from external ROM at 0x100000 (=mirror), so section 0 remains free for PEC-transfers to a n external UART, see memory map (b.t.w. this is possible right??? the ST user manual says on page 36: "For PEC data transfers the external memory in segment 0 can be accessed independent of the contents of the DPP registers via the PEC source and destination pointers.") I changed the invec table to this location in the L166 MISC tab. (like suggested in this post: http://www.keil.com/forum/docs/thread1060.asp) When I ran the simulator, there was no JMPS at address0. I tried inserting it with the inline assembly feature, but opon the first interrupt, the code jumps to the interrupt vector table starting at 0x00 (which I thought was moved by the setting in L166 MISC tab)... After searching I came upon this article: http://www.keil.com/support/docs/1075.htm In it, an invec-redirection table is suggested located at 0x0, which "reroutes" interrupts to the specified address with JMPSs. I inserted this asm file(modified with a JMPS 0x100000 at location 0) and linked the whole bunch.
$segmented ; this example shows how to redirect interrupt vectors to ; address 28000H. Interrupt Vector redirection is typically required ; when you devide an user program into two parts: BOOT part and ; application part. This assembly module needs to be added to the BOOT ; part that is located in segment 0 of the 166 program space. ; ; The application part needs to be linkedwith the L166 VECTAB directive. ; In this example you need to specify VECTAB(0x28000) to generate the interrupt ; vector table at address 0x28000. VEC_SEG EQU 10H VEC_OFF EQU 0H ; The RESET vector is used by the boot application VECT_TAB SECTION CODE AT 0 VEC_PROC PROC JMPS 10H,0000H JMPS VEC_SEG,VEC_OFF+004H JMPS VEC_SEG,VEC_OFF+008H etc... JMPS VEC_SEG,VEC_OFF+1F8H JMPS VEC_SEG,VEC_OFF+1FCH VEC_PROC ENDP VECT_TAB ENDS end