大部分单片机都具备选项字节(Option Byte)功能,它是保障芯片安全、配置关键硬件工作模式(如看门狗、低电压检测、复位引脚等)的重要环节。在RL78单片机项目开发中,正确设置Option Byte(选项字节)和Security ID(安全ID)是不可或缺的一步。
不同开发环境下的设置方法各异。本文将详细讲解如何在主流的IAR Embedded Workbench、CS+ for CC和e²studio中,完成这两项核心配置。
基础概念:它们是什么?
Option Byte(选项字节)
选项字节用于配置MCU的硬件工作模式,其设定必须在程序运行前生效,对系统稳定与安全至关重要。主要配置项包括:
- 看门狗定时器的启动模式和周期
- 低电压检测的模式和阈值
- 内部高速振荡器的频率
- 复位引脚功能(作为复位引脚或通用I/O)
- 片上调试操作的控制
- 读取Security ID的权限控制
Security ID(安全ID)
安全ID是存储在Flash特定区域的16字节密码,包含“片上调试Security ID”和“Flash串行编程Security ID”两组。

其主要功能是防止未经授权的调试和编程操作,从而保护知识产权。一旦启用安全功能,任何通过调试接口(片上调试或串行编程)访问芯片的操作,都必须先验证此ID密码,否则无法连接,这构成了嵌入式系统安全的底层基础。
实战配置:三大IDE设置详解
以下操作均以瑞萨RL78F2x系列为例,具体选项名称可能因型号略有差异,请务必参考对应型号的硬件手册。
方法一:在CS+ for CC中设置
CS+提供了直观的图形化工具来管理这些配置,其流程类似于在CI/CD管道中定义构建参数,清晰且直接。
步骤1:打开项目
在“Project Tree”中,找到并双击“CC-RL(Build Tool)”。
步骤2:配置Option Byte
在打开的设置窗口中,导航至 Link Options -> Device,进行如下配置:
- User option byte value:用于配置用户选项字节(地址:000C0H/040C0H ~ 000C2H/040C2H),数值按低位在前格式存储。具体值请参考硬件手册“31.2 Format of User Option Byte”章节。
- Option byte values for OCD:用于配置片上调试选项字节(000C3H/040C3H)。请参考硬件手册“31.3 Format of On-chip Debug Option Byte”章节。
- Set debug monitor area:用于配置安全选项字节(000C4H/040C4H)。请参考硬件手册“31.4 Format of Security Option Byte”章节。

步骤3:设置Security ID
在同一个设置窗口中,切换至 Common Options -> Device:
- Security ID:用于配置片上调试Security ID。具体内容请参考硬件手册“33.3 On-chip Debug Security ID”章节。
- Serial Programming Security ID:用于配置Flash串行编程Security ID。详情请参考硬件手册“32.4 Flash Serial Programming Security ID”章节。
请注意:务必妥善保管设置的Security ID。
步骤4:编译和下载
完成配置后编译项目,CS+会自动将这些设置与程序代码链接,并在编程时一并烧录到芯片中。
方法二:在e²studio中设置
e²studio基于Eclipse,其配置方式同样直观。
步骤1:打开项目属性
在“Project Explorer”中右键点击项目名,选择“Properties”,然后依次导航至:C/C++ Build -> Settings -> Tool Settings -> Linker -> Device。
步骤2:配置Option Byte
在Device设置页面中:
- 勾选 “Set user option byte (-user_opt_byte)”,并在“User option byte value”中填入对应值。该值对应地址000C0H/040C0H~000C2H/040C2H,请参考硬件手册“31.2 Format of User Option Byte”章节。
- 勾选 “Set enable /disable on-chip debug by link option (-ocdbg)”,并在“On-chip debug control value”中填入对应值。该值对应地址000C3H/040C3H,请参考硬件手册“31.3 Format of On-chip Debug Option Byte”章节。
- 勾选 “Set security option byte (-security_opt_byte)”,并在“Security option byte value”中填入对应值。该值对应地址000C4H/040C4H,请参考硬件手册“31.4 Format of Security Option Byte”章节。

步骤3:设置Security ID
在同一个“Properties”窗口的Device设置页面下方:
- “Security ID value (-security_id)”:用于配置片上调试Security ID。请参考硬件手册“33.3 On-chip Debug Security ID”章节。
- “Serial Programming Security ID”:用于配置Flash串行编程Security ID。请参考硬件手册“32.4 Flash Serial Programming Security ID”章节。
输入Security ID后,请务必妥善保管。
步骤4:生成代码
配置完成后,点击工具栏的 “Generate Code” 按钮。e²studio会自动生成包含这些设置的代码文件,后续编译和编程时配置即生效。
方法三:在IAR Embedded Workbench中设置
IAR通常通过在链接器配置文件和C源文件中使用特定指令(如 #pragma 和 __root const)来定义这些设置。
步骤1:配置Option Byte
推荐在项目的链接器配置文件中定义。通常,在类似 Renesas_SC\smc_gen\r_bsp\mcu\rl78_f24\vecttbl.c 的文件中,通过 __root const 关键字在固定地址定义选项字节数组。
在下述示例代码中,“optbyte0” ~ “optbyte4” 分别对应 User Option Byte、On-chip Debug Option Byte 和 Security Option Byte。

步骤2:设置Security ID
设置方法与Option Byte类似,Security ID也有固定的存储地址。
- 片上调试Security ID通常已在
vecttbl.c 文件中预设。

- 如需配置Flash串行编程Security ID,可在
vecttbl.c 文件结尾空白处添加如下代码:
/* Security ID Codes for Flash Serial Programming setting(When using IAR) */
#pragma location = "SP_SECUID"
__root const uint8_t sp_secuid[16] =
{0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
编译后,这些数据会被正确分配到Flash的指定位置。
重要提醒与避坑指南
- 地址必须绝对准确:在IAR中手动定义时,Security ID和Option Byte的存储地址务必与硬件手册(如R01UH0944E,R01UH1061E)完全一致,任何偏差都可能导致配置失效或芯片异常。
- 备份安全ID:一旦设置并启用了Security ID,如果遗忘密码,芯片将被永久“锁死”,无法再次编程或调试。请务必在安全处记录密码。
- 先仿真后烧录:建议先在仿真环境下测试Option Byte的设置效果,确认看门狗、复位等行为符合预期后,再烧录至实际芯片,避免错误配置导致硬件无法正常工作。
掌握Security ID和Option Byte的配置是RL78开发者的必备技能。希望本文能帮助你在不同的开发环境中高效、准确地完成这些关键设置,保障项目顺利推进。