Hi,
I am using R7F701278 controller for my application.
I have configured TAUD0 as interval timer with interrupt.
It is coming into the ISR.
This is my ISR
#pragma interrupt r_Config_TAUD0_0_interrupt(enable=false, channel=98, fpu=true, callt=false)void r_Config_TAUD0_0_interrupt(void){ PORT.P3.BIT.P3_0 = !(PORT.P3.BIT.P3_0); /* Start user code for r_Config_TAUD0_0_interrupt. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */}
TAUD0_0's interrupt channel is 98. So i have updated in the interrupt vector file.
// (void *)eiint92,// /* INTTAUJ0I3 interrupt; */// (void *)eiint93,// /* INTTAUJ1I0 interrupt; */// (void *)eiint94,// /* INTTAUJ1I1 interrupt; */// (void *)eiint95,// /* INTTAUJ1I2 interrupt; */// (void *)eiint96,// /* INTTAUJ1I3 interrupt; */// (void *)eiint97, /* INTTAUD0I0 interrupt; */ (void *)r_Config_TAUD0_0_interrupt, /* INTTAUD0I1 interrupt; */// (void *)eiint99,// /* INTTAUD0I2 interrupt; */// (void *)eiint100,// /* INTTAUD0I3 interrupt; */// (void *)eiint101,// /* INTTAUD0I4 interrupt; */// (void *)eiint102,// /* INTTAUD0I5 interrupt; */// (void *)eiint103,// /* INTTAUD0I6 interrupt; */// (void *)eiint104,// /* INTTAUD0I7 interrupt; */
Getting undefined reference error so i have commented all the interrupts except my ISR
This is my project.
Am trying to edit boot1.asm to configure the interrupt. But getting undefined reference error.
Please guide us.
Regards
vasu
In my opinion this is a limitation of the code generator. However, commenting the unused interrupts is destroying the table.The given eiintxx() calls are placeholders and are showing how to build the complete table.You should replace all unused eiintxxx() calls by one default call, where you have another defined interrupt routine for unexpected interrupts.
By the way, your snapshot does not show any error. And where's the change you did in boot1.asm?
Hello RolandL,
Yes limitations are there in code generator and R7F701278 device is not available in smart configurator.
yes i have replaced the eiintxx by my function call.
yes i have removed the function call name from boot1.asm file that's it's not showing error.
I have replaced the Dummy_EI by my ISR name in the line next to align 512. After adding this ISR name am getting error like undefined reference ISR name.
One thing i want to say here about project creation, I have created a project by selecting the bootloader option.
Then i have created a sub project by selecting the application, am adding all the files in sub project.
But boot1.asm was added in bootloader project. I think both are different projects right??
How to link this ISR name in the boot1.asm??
Thanks for your reply.
In my opinion the subproject is the root cause of the problem. It seems me (never tried that), that subprojects are completely isolated software parts, even more creating several targets, but you have only one target.
I would add external or generated files of the smart configuration into a folder structure to the main project, but not create a subproject.Then, the linker should be able to resolve the referenced function calls.
Ok let me try and come back if anything
I have tried that which was suggested by you.
I had created a project without sub-project. Now i can give the interrupt vector in the boot1.asm.
In this condition, no error and the program execution should start from RESET_PE1 right? but it is starting from main function. I am not getting expected output.
Can you please give a sample program with timer interrupt?
Thanks
Vasu
The entry point in the program when using the debugger is a setting of it.Unfortunately I don't have a sample program at hand.
If you are a commercial user, you can request support at:
www.renesas.com/.../contact-us
No rolandL.If i am creating a bootloader project with sub-project, it is starting from 0x000 address / RESET_PE1.
But if i am creating a project without subproject, it is going directly to main().
So the CPU register wont configure.
So the project wont give output
This is a question of debug tool setting and linker setting with sections.
For the reset point entry at 0x00000000, you should have a section defined in the linker, and refer to this section in your reset code. The reset code looks like this:
;-----------------------------------------------------------------------------; exception vector table;----------------------------------------------------------------------------- .section "RESET_PE0", text .align 512 jr32 __start ; RESET
...
;-----------------------------------------------------------------------------; startup;----------------------------------------------------------------------------- .section ".text", text .align 2 .public __start__start:$if 1 ; initialize register $nowarning mov r0, r1 $warning mov r0, r2 mov r0, r3 mov r0, r4 mov r0, r5 mov r0, r6 mov r0, r7 mov r0, r8 mov r0, r9 mov r0, r10
jarl _hdwinit_PE0, lp ; initialize hardware$ifdef USE_TABLE_REFERENCE_METHOD mov #__sEIINTTBL_PE0, r6 jarl _set_table_reference_method, lp ; set table reference method$endif jr32 __cstart_pm0
#which then jumps to the C-runtime library, entering main().
In the debugger, the settings should look like this (CS+):
In the linker, there are the sections (verify the section start addresses to be entered):
In my environment, I'm only rarely using subprojects, and even without subproject, the code always starts at the reset vector with these settings.