KEA128 UART Bootloader

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

KEA128 UART Bootloader

Jump to solution
2,345 Views
LiangDevJack
Contributor II

你好,我在KEA128单片机开发遇到一个问题,这个问题通过Jlink烧写程序调试是完全没有问题的,但是当我通过bootloader下载该程序,出现主程序死机的情况。

当我使用以下该程序(设置占空比)时,通过bootloader下载之后,程序出现死机现象。当我把该函数的内容注释掉,则一切正常。这种情况Jlink烧写是完全没有问题的,这个问题让我无从下手,希望能得到帮助,告诉我应该往那个方向寻找答案。

void heater_output(uint32 duty)
{
if(heater_switch==on)
{
ftm_pwm_duty(ftm0,ftm_ch0,duty);//设置占空比
}
else
{
heater_pwm_duty=0;
ftm_pwm_duty(ftm0,ftm_ch0,0);
}
}

这是我的跳转程序

void bootup_application(uint32_t appEntry, uint32_t appStack)
{
static void (*jump_to_application)(void);
static uint32_t stack_pointer;

//shutdown_drivers();
jump_to_application = (void (*)(void))appEntry;//跳转APP入口地址
stack_pointer = appStack; //堆栈指针
// SCB->VTOR = appEntry;
__set_MSP(appStack); //设置主程序堆栈指针
__set_PSP(appStack); //设置进程堆栈指针
jump_to_application(); //跳转
}

0 Kudos
Reply
1 Solution
2,222 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

建议您考虑S32K系列, 它是车规级芯片。

https://www.nxp.com/products/processors-and-microcontrollers/s32-automotive-platform/s32k-auto-gener...

 

如果你老师进入hardFault, 请看看stack是否分配小了。

BR

XiangJun Rong

View solution in original post

0 Kudos
Reply
5 Replies
2,314 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

请使用下列代码:

//shutdown_drivers();
jump_to_application = (void (*)(void))appEntry;//跳转APP入口地址

jump_to_application =jump_to_application +1;
stack_pointer = appStack; //堆栈指针
// SCB->VTOR = appEntry;
__set_MSP(appStack); //设置主程序堆栈指针
__set_PSP(appStack); //设置进程堆栈指针
jump_to_application(); //跳转

因为是thumb指令集, 请试一下,看行不行

BR

XiangJunRong

0 Kudos
Reply
2,307 Views
LiangDevJack
Contributor II
你好,当我把这行代码放进去,出现一个错误,(jump_to_application =jump_to_application +1;)使用的是IAR软件编译器,报错信息为,Error[Pe852]: expression must be a pointer to a complete object type 。这个该如何解决呀?

0 Kudos
Reply
2,271 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

那你把appEntry加上1.

BR

XiangJun Rong

0 Kudos
Reply
2,256 Views
LiangDevJack
Contributor II
你好,谢谢您的回复,我通过不下载仿真调试发现总是进入HardFault_Handler函数,我觉得可能是调用层次比较深,然后再主循环里直接调用设置占空比的函数,结果没有出现卡死情况。请问这种情况在这款芯片常见吗,我的APP程序大概33K左右,从0x8000开始,如果我想在项目中选择性能更好的性价比的车规级芯片,能运行更多算法,我应该如何选择。
0 Kudos
Reply
2,223 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

建议您考虑S32K系列, 它是车规级芯片。

https://www.nxp.com/products/processors-and-microcontrollers/s32-automotive-platform/s32k-auto-gener...

 

如果你老师进入hardFault, 请看看stack是否分配小了。

BR

XiangJun Rong

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-1988432%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3EKEA128%20UART%20Bootloader%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1988432%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%20I%20encountered%20a%20problem%20in%20the%20development%20of%20KEA128%20microcontroller.%20There%20is%20no%20problem%20at%20all%20when%20debugging%20the%20program%20through%20Jlink%2C%20but%20when%20I%20download%20the%20program%20through%20bootloader%2C%20the%20main%20program%20freezes.%3C%2FP%3E%3CP%3EWhen%20I%20use%20the%20following%20program%20(to%20set%20the%20duty%20cycle)%2C%20after%20downloading%20through%20the%20bootloader%2C%20the%20program%20freezes.%20When%20I%20comment%20out%20the%20content%20of%20the%20function%2C%20everything%20works%20fine.%20In%20this%20case%2C%20there%20is%20no%20problem%20with%20Jlink%20programming.%20This%20problem%20makes%20me%20have%20no%20idea%20where%20to%20start.%20I%20hope%20to%20get%20help%20and%20tell%20me%20where%20to%20look%20for%20the%20answer.%3C%2FP%3E%3CP%3Evoid%20heater_output(uint32%20duty)%3CBR%20%2F%3E%7B%3CBR%20%2F%3Eif(heater_switch%3D%3Don)%3CBR%20%2F%3E%7B%3CBR%20%2F%3Eftm_pwm_duty(ftm0%2Cftm_ch0%2Cduty)%3B%2F%2F%E8%AE%BE%E7%BD%AE%E5%8D%A0%E7%A9%BA%E6%AF%94%3CBR%20%2F%3E%7D%3CBR%20%2F%3Eelse%3CBR%20%2F%3E%7B%3CBR%20%2F%3Eheater_pwm_duty%3D0%3B%3CBR%20%2F%3Eftm_pwm_duty(ftm0%2Cftm_ch0%2C0)%3B%3CBR%20%2F%3E%7D%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3EThis%20is%20my%20jump%20program%3C%2FP%3E%3CP%3Evoid%20bootup_application(uint32_t%20appEntry%2C%20uint32_t%20appStack)%3CBR%20%2F%3E%7B%3CBR%20%2F%3Estatic%20void%20(*jump_to_application)(void)%3B%3CBR%20%2F%3Estatic%20uint32_t%20stack_pointer%3B%3CBR%20%2F%3E%3CBR%20%2F%3E%2F%2Fshutdown_drivers()%3B%3CBR%20%2F%3Ejump_to_application%20%3D%20(void%20(*)(void))appEntry%3B%2F%2F%E8%B7%B3%E8%BD%ACAPP%E5%85%A5%E5%8F%A3%E5%9C%B0%E5%9D%80%3CBR%20%2F%3Estack_pointer%20%3D%20appStack%3B%20%2F%2F%E5%A0%86%E6%A0%88%E6%8C%87%E9%92%88%3CBR%20%2F%3E%2F%2F%20SCB-%26gt%3BVTOR%20%3D%20appEntry%3B%3CBR%20%2F%3E__set_MSP(appStack)%3B%20%2F%2F%E8%AE%BE%E7%BD%AE%E4%B8%BB%E7%A8%8B%E5%BA%8F%E5%A0%86%E6%A0%88%E6%8C%87%E9%92%88%3CBR%20%2F%3E__set_PSP(appStack)%3B%20%2F%2F%E8%AE%BE%E7%BD%AE%E8%BF%9B%E7%A8%8B%E5%A0%86%E6%A0%88%E6%8C%87%E9%92%88%3CBR%20%2F%3Ejump_to_application()%3B%20%2F%2F%E8%B7%B3%E8%BD%AC%3CBR%20%2F%3E%7D%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1990791%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3ERe%3A%20KEA128%20UART%20Bootloader%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1990791%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%0A%3CP%3EIt%20is%20recommended%20that%20you%20consider%20the%20S32K%20series%2C%20which%20is%20an%20automotive-grade%20chip.%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com%2Fproducts%2Fprocessors-and-microcontrollers%2Fs32-automotive-platform%2Fs32k-auto-general-purpose-mcus%3AS32K-MCUS%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fwww.nxp.com%2Fproducts%2Fprocessors-and-microcontrollers%2Fs32-automotive-platform%2Fs32k-auto-general-purpose-mcus%3AS32K-MCUS%3C%2FA%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3EIf%20your%20teacher%20enters%20hardFault%2C%20please%20check%20whether%20the%20stack%20allocation%20is%20too%20small.%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3EXiangJun%20Rong%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1989845%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3ERe%3A%20KEA128%20UART%20Bootloader%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1989845%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3EHello%2C%20thank%20you%20for%20your%20reply.%20I%20found%20that%20I%20always%20enter%20the%20HardFault_Handler%20function%20through%20simulation%20debugging%20without%20downloading.%20I%20think%20it%20may%20be%20because%20the%20call%20level%20is%20too%20deep%2C%20and%20then%20the%20function%20of%20setting%20the%20duty%20cycle%20is%20directly%20called%20in%20the%20main%20loop%2C%20and%20there%20is%20no%20stuck.%20Is%20this%20situation%20common%20in%20this%20chip%3F%20My%20APP%20program%20is%20about%2033K%20and%20starts%20from%200x8000.%20If%20I%20want%20to%20choose%20a%20car-grade%20chip%20with%20better%20performance%20and%20cost-effectiveness%20in%20the%20project%2C%20which%20can%20run%20more%20algorithms%2C%20how%20should%20I%20choose%3F%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1989682%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3ERe%3A%20KEA128%20UART%20Bootloader%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1989682%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%0A%3CP%3EThen%20you%20add%201%20to%20appEntry.%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3EXiangJun%20Rong%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1988700%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3ERe%3A%20KEA128%20UART%20Bootloader%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1988700%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3EHi%2C%20when%20I%20put%20this%20line%20of%20code%20in%2C%20an%20error%20occurs%2C%20(jump_to_application%20%3D%20jump_to_application%20%2B1%3B)%20I%20am%20using%20the%20IAR%20software%20compiler%2C%20and%20the%20error%20message%20is%2C%20Error%5BPe852%5D%3A%20expression%20must%20be%20a%20pointer%20to%20a%20complete%20object%20type.%20How%20can%20I%20solve%20this%3F%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1988570%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3ERe%3A%20KEA128%20UART%20Bootloader%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1988570%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%0A%3CP%3EPlease%20use%20the%20following%20code%3A%3C%2FP%3E%0A%3CP%3E%2F%2Fshutdown_drivers()%3B%3CBR%20%2F%3Ejump_to_application%20%3D%20(void%20(*)(void))appEntry%3B%2F%2F%E8%B7%B3%E8%BD%ACAPP%E5%85%A5%E5%8F%A3%E5%9C%B0%E5%9D%80%3C%2FP%3E%0A%3CP%3Ejump_to_application%20%3Djump_to_application%20%2B1%EF%BC%9B%3CBR%20%2F%3Estack_pointer%20%3D%20appStack%3B%20%2F%2F%E5%A0%86%E6%A0%88%E6%8C%87%E9%92%88%3CBR%20%2F%3E%2F%2F%20SCB-%26gt%3BVTOR%20%3D%20appEntry%3B%3CBR%20%2F%3E__set_MSP(appStack)%3B%20%2F%2F%E8%AE%BE%E7%BD%AE%E4%B8%BB%E7%A8%8B%E5%BA%8F%E5%A0%86%E6%A0%88%E6%8C%87%E9%92%88%3CBR%20%2F%3E__set_PSP(appStack)%3B%20%2F%2F%E8%AE%BE%E7%BD%AE%E8%BF%9B%E7%A8%8B%E5%A0%86%E6%A0%88%E6%8C%87%E9%92%88%3CBR%20%2F%3Ejump_to_application()%3B%20%2F%2F%E8%B7%B3%E8%BD%AC%3C%2FP%3E%0A%3CP%3EBecause%20it%20is%20a%20thumb%20instruction%20set%2C%20please%20try%20it%20and%20see%20if%20it%20works.%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3EXiangJunRong%3C%2FP%3E%3C%2FLINGO-BODY%3E