瑞萨汽车电子推出的高性价比的汽车级16位MCU RL78/F1x系列,广泛用于汽车零部件主控开发,受到车厂的好评公认。RL78系列是瑞萨78K系列的升级产品,主频可以达到32MHZ,静态功耗低到0.23uA,集成了片上EEPROM。本文以瑞萨16位RL78系列,32PIN QFN小封装,96KB FLASH,支持CAN/LIN通讯的车规级MCU R5F10BBF为例,介绍在设计模块bootloader功能时,如何实现在编译器中嵌入汇编语言的功能。
我们在设计MCU的bootloader功能时,需要对MCU做一些基本的操作,需要调用到汇编指令。瑞萨RL78系列芯片可以兼容老一代的CA78K0R编译工具,也可以支持新一代CCRL的编译工具。本文分别介绍在两个编译环境下,RL78系列MCU R5F10BBF如何实现嵌入汇编代码“跳转到对应地址”的指令。
在CA78K0R编译工具中,我们可以采用以下方式,在C文件中嵌入汇编指令:
1.直接调用__asm指令,如下所示__asm("BR !04000H");
2.调用宏命令#asm .. #endasm,如下范例所示:#asmBR !04000H#endasm
在CCRL编译工具中,在C语言中嵌入汇编则需要修改成以下命令:
1.通过调用内联函数inline_asm来定义一个汇编指令函数,在C文件中调用该函数即可。#pragma inline_asm __inline_asm_func_00000static void __inline_asm_func_00000(void){BR !0x4000}
根据以上操作即可完成在瑞萨CS+编译器中实现RL78系列的C语言程序中嵌入“跳转到对应地址”的汇编指令。
瑞萨RL78系列MCU的优秀特性:
• 32MHz运行(支持宽电压1.6V至5.5V 105°C)
• 1.27DMIPS/MHz
• 内置硬件乘除法器/MAC /DIV
• 0.57uA @32.768kHz HALT模式,RTC、WDT、LCD工作
• 0.23uA @STOP模式,RTC、WDT、LCD不工作
• 高速片上振荡器(±1.5%在-40至105°C温度范围)
• 片上调试功能
• 内置硬件RTC