用户手册
CC78K0R Ver. 1.00
C 编译器
操作篇
目标设备
78K0R 微控制器
文档编号 U17838CA1V0UM00 (第 1 版)
出版日期 2007 年 12 月 CP(K)
© 日本电气电子株式会社 2007
日本印刷
用户手册 U17838CA1V0UM00
[ 备忘录]
2
用户手册 U17838CA1V0UM00
MS-DOS, Windows 和 Windows NT 是微软公司在美国及 /或在其它国家的注册商标或商标。
PC/AT 是 IBM(国际商用机器)公司的注册商标。
i386 是 Intel 公司的注册商标。
z 本文档所刊登的内容有效期截至 2007 年 12 月。将来可能未经预先通知而更改。在实际进行生产
设计时,请参阅各产品最新的数据表或数据手册等相关资料以获取本公司产品的最新规格。
z 并非所有的产品和 /或型号都向每个国家供应。请向本公司销售代表查询产品供应及其他信息。
z 未经本公司事先书面许可,禁止复制或转载本文件中的内容。否则因本文档所登载内容引发的错误,
本公司概不负责。
z 本公司对于因使用本文件中列明的本公司产品而引起的,对第三者的专利、版权以及其它知识产权
的侵权行为概不负责。本文件登载的内容不应视为本公司对本公司或其他人所有的专利、版权以及
其它知识产权作出任何明示或默示的许可及授权。
z 本文件中的电路、软件以及相关信息仅用以说明半导体产品的运作和应用实例。用户如在设备设计
中应用本文件中的电路、软件以及相关信息,应自行负责。对于用户或其他人因使用了上述电路、
软件以及相关信息而引起的任何损失,本公司概不负责。
z 虽然本公司致力于提高半导体产品的质量及可靠性,但用户应同意并知晓,我们仍然无法完全消除
出现产品缺陷的可能。为了最大限度地减少因本公司半导体产品故障而引起的对人身、财产造成损
害(包括死亡)的危险,用户务必在其设计中采用必要的安全措施,如冗余度、防火和防故障等安
全设计。
z 本公司产品质量分为:
“标准等级 ”、 “专业等级 ”以及 “特殊等级 ”三种质量等级。
“特殊等级 ”仅适用于为特定用途而根据用户指定的质量保证程序所开发的日电电子产品。另外,各种日
电电子产品的推荐用途取决于其质量等级,详见如下。用户在选用本公司的产品时,请事先确认产品
的质量等级。
“ 标准等级” : 计算机,办公自动化设备,通信设备,测试和测量设备,音频· 视频设备,家电,
加工机械以及产业用机器人。
“ 专业等级” : 运输设备(汽车、火车、船舶等),交通用信号控制设备,防灾装置,防止犯罪
装置,各种安全装置以及医疗设备(不包括专门为维持生命而设计的设备)。
“ 特殊等级: 航空器械,宇航设备,海底中继设备,原子能控制系统,为了维持生命的医疗设
备、用于维持生命的装置或系统等。
除在本公司半导体产品的数据表或数据手册等资料中另有特别规定以外,本公司半导体产品的质量等
级均为“ 标准等级” 。如果用户希望在本公司设计意图以外使用本公司半导体产品,务必事先与本公司销
售代表联系以确认本公司是否同意为该项应用提供支持。
(注)
(1 ) 本声明中的“ 本公司” 是指日本电气电子株式会社(NEC Electron
(2 ) 本声明中的“ 本公司产品” 是指所有由日本电气电子株式会社所开发或制造,或为日本电气电子株式会
社(定义如上)开发或制造的产品。
ics Corporation )及其控股公司。
用户手册 U17838CA1V0UM00
3
[备忘录 ]
4
用户手册 U17838CA1V0UM00
前言
该手册的目的是帮助您深入理解 CC78K0R 的功能和操作(78K0R 系列 C 编译器)。
该手册没有解释如何编写 CC78K0R 源程序。因此,在阅读手册之前,请先阅读“CC78K0R C
编译器用户手册语言篇(U17837E )”(下文称作”语言手册”)。
[ 目标设备]
借助 CC78K0R 可以开发面向 78K0R 系列微控制器的软件。为了配合使用这个软件,还需要
RA78K0R(78K0R 系列汇编程序包)(另外销售)和目标模块设备文件。
[ 目标读者]
写作这本手册是为了让读者通过阅读手册获得设备相关使用知识,读者最好具有软件开发经验。
但是,关于 C 编译器和 C 语言的知识并不是一定需要的,所以第一次使用 C 编译器的用户可以使用
该手册。
[ 组织结构]
这本手册的结构组织如下描述。
第 1 章 概述
介绍在微控制器开发中 CC78K0R 的作用和位置。
第 2 章 产品概述和安装
介绍如何安装 CC78K0R ,所提供程序的文件名,以及程序的操作环境。
第 3 章 从编译到连接的过程
使用样例程序来描述如何运行 CC78K0R ,并举例说明从编译到连接的详细处理过程。
第 4 章 CC78K0R 函数
介绍在 CC78K0R 中的优化方法和 ROMizati
第 5 章 编译选项
介绍编译选项,具体的规格说明方法和各个选项的优先级别。
第 6 章 C 编译器输出文件
介绍 CC78K0R 输出的各种列表文件。
第 7 章 C 编译器的使用方法
介绍一些技巧,帮助读者更熟练的使用 CC78K0R 。
on 函数。
用户手册 U17838CA1V0UM00
5
第 8 章 启动例程
CC78K0R 提供了启动例程作为样例。介绍了启动例程的使用,并提供了关于如何改善的建
议。
第 9 章 错误信息
介绍 CC78K0R 输出的错误信息。
附录
附录提供了一个样例程序,一份使用时的注意事项列表,一个命令参数列表和一组索引。
[ 如何阅读这本手册]
首先,对于希望知道如何开始使用 CC78K0R 的用户,请先阅读第 3 章从编译到连接的过程。
理解 C 编译器一般知识的用户或者已经阅读语言手册的用户可以跳过第 1 章 概述。
[ 相关资料]
下面的表格显示了这本手册的相关文档(如用户手册)。在出版物中出现的相关资料可能会包括初稿版
本。但是,并未对初稿版本作特殊标注。
开发工具的相关文档(用户手册)
资料名 资料编号
操作篇 本文档 CC78K0R V 1.00 C 编译器
语言篇
RA78K0R V1.00 汇编程序包
操作篇
语言篇
SM+ 系统模拟器 操作篇
PM + V 6.20 版本
ID78K0R-QB 集成调试器 V3.20 版本
U17839E
U17837E
U17836E
U17835E
U18010E
U17990E
注意 上述列出的相关资料如有变动恕不另行通知,请务必使用最新版本的设计文件。
6
用户手册 U17838CA1V0UM00
[ 约定]
下面解释本手册中所使用符号的意思。
RTOS 78K0R 系列的实时操作系统 RX78K0R
…: 重复相同的格式。
[ ]: 在括号中的字符可以被忽略。
⎡ ⎦ : 如括号中的字符所示(字符串 )。
“ ”: 如括号中的字符所示(字符串)。
‘ ’: 如括号中的字符所示(字符串)。
Boldface : 如粗体字符所示(字符串 )。
_ : 在重要的位置或实例中的下划线都属于输入字符序列。
Δ : 至少一个空间间隔。
: 在程序描述中表示省略。
…
( ) : 如圆括号中之间的字符所示(字符串)。
/ : 分界符
\: 反斜杠
[ 文件名称约定]
在命令行中指定输入文件名的约定如下所示。
(1) 指定磁盘文件名
[驱动名 ] [\] [[路径名 ]...] 主文件名 [.[文件类型 ]]
<1> <2> <3> <4> <5>
<1> 指定存储文件的驱动名(A: 到 Z:)。
<2> 指定根目录名。
<3> 指定子目录名。
指定的字符串长度应该在操作系统允许范围内。
可以使用的字符 :
操作系统允许圆括号(()),分号(:),逗号(,)之外的所有字符。
注意,连字符(-)不能被当作路径名的首字符。
<4> 主文件名
指定的字符串长度应该在操作系统允许范围内。
可以使用的字符:
操作系统允许除了圆括号(()),分号(:),逗号(,)以外的所有字符。
注意,连字符(-)不能被当作路径名的首字符。
<5> 文件类型
指定的字符串长度应该在操作系统允许范围内。
可以使用的字符:
操作系统允许除了圆括号(()),分号(:),逗号(,)以外的所有字符。
例: C:\Program Files\NEC Electronics Tools\CC78K0R\V1.00\smp78k0r\cc78k0r
注意 1. 在‘:’, ‘.’和 ‘\’之前或之后不能有空格。
2. 不区分大写和小写 (大小写不敏感)。
用户手册 U17838CA1V0UM00
7
(2) 指定设备文件名
可以使用下列逻辑设备。
CON
PRN
AUX
NUL
逻辑设备 描述
输出到控制台。
输出到打印机。
输出到辅助输出设备。
伪输出(没有输出)
8
用户手册 U17838CA1V0UM00
目录
前言 ...........................................................................................................................................................................5
目录 ...........................................................................................................................................................................9
插图列表 ................................................................................................................................................................. 11
表格列表 .................................................................................................................................................................12
第 1 章 概述 ...........................................................................................................................................................13
1.1 CC78
1.2 使用 CC78K0R的开发过程................................................................................................................15
第 2 章 产品概
2.1 主机和供应媒介 ..................................................................................................................................25
2.2 安装..........................................................................................................................................................26
2.3 设备文件的安装 ..................................................................................................................................27
2.4 目录结构 ............................................................................................................................... ...............28
2.5 文档结构 ..............................................................................................................................................29
2.6 卸载步骤 ............................................................................................................................... ...............33
2.7 环境设置 ............................................................................................................................... ...............34
第 3 章 编译到
3.1 PM + ....................................................................................................................................................35
3.2 从编译到连接的过程(未使用自写入模式时) ..............................................................................63
3.3 从编译到连接(当使用自写入模式时) ..........................................................................................69
3.4 C编译器的输入 /输出文件 ..................................................................................................................79
3.5 执行开始和结束信息 ..........................................................................................................................81
第 4 章 CC7
4.1 优化方法 ............................................................................................................................... ...............82
4.2 ROM化功能 ........................................................................................................................................84
第 5 章 编译选
5.1 编译选项的指定 ..................................................................................................................................85
5.2 编译选项的优先级 ..............................................................................................................................86
5.3 类型 .....................................................................................................................................................88
5.4 编译选项的描述 ..................................................................................................................................90
第 6 章 C编译
6.1 目标模块文件 ....................................................................................................................................135
6.2 汇编源模块文件 ................................................................................................................................136
6.3 错误列表文件 ....................................................................................................................................140
K0R的作用............................................................................................................................... .13
1.2.1 使用编辑器创建源程序模块 .................................................................................................16
1.2.2 C 编译器................................................................................................................................17
1.2.3 汇编器 ....................................................................................................................................18
1.2.4 连接器 ....................................................................................................................................19
1.2.5 目标转换器 ............................................................................................................................20
1.2.6 库管理程序 ............................................................................................................................21
1.2.7 调试器 ....................................................................................................................................22
1.2.8 系统模拟器 ............................................................................................................................23
1.2.9 PM +.......................................................................................................................................24
述和安装 ....................................................................................................................................... 25
2.5.1 库文件 ....................................................................................................................................30
2.7.1 主机 ........................................................................................................................................34
2.7.2 环境变量 ................................................................................................................................34
连接的过程 ................................................................................................................................... 35
3.1.1 CC78
3.1.2 执行的环境 ............................................................................................................................35
3.1.3 CC78
3.1.4 [Compiler Options]对话框的具体描述................................................................................41
3.2.1 从 PM +中MAK
3.2.2 使用命令行来编译连接(命令提示符) .............................................................................66
3.3.1 在 PM +中的编
3.3.2 命令行中的编译到连接(命令提示符).................................................................................76
3.5.1 执行开始信息 .........................................................................................................................81
3.5.2 执行结束信息 .........................................................................................................................81
8K0R函数 ......................................................................................................................................... 82
4.2.1 连接 ........................................................................................................................................84
项 ...................................................................................................................................................85
器输出文件...................................................................................................................................135
6.3.1 关于C语
K0RP.DLL的位置(工具动态连接文件).................................................................35
K0R选项设置菜单.......................................................................................................36
E....................................................................................................................63
译到连接 .......................................................................................................69
言的错误列表文件....................................................................................................140
用户手册 U17838CA1V0UM00
9
6.3.2 只有错误信息的错误列表文件...............................................................................................142
6.4 预处理列表文件 ................................................................................................................................143
6.5 交叉引用列表文件 ............................................................................................................................145
第 7 章 C编译
7.1 高效操作( EX
器的使用方法...............................................................................................................................147
IT状态函数) ...........................................................................................................147
7.2 建立开发环境(环境变量) ............................................................................................................148
7.3 中断编译 ............................................................................................................................... .............149
第 8 章 启动例
程 .................................................................................................................................................150
8.1 文件结构...............................................................................................................................................150
8.1.1 BA
T目录内容 .......................................................................................................................151
8.1.2 SRC目录内容 ......................................................................................................................152
8.1.3 “Lib”目录内容.......................................................................................................................153
8.2 批处理文件说明 ................................................................................................................................154
8.2.1 生成启动
例程的批处理文件...................................................................................................154
8.3 启动例程 ............................................................................................................................................155
8.3.1 启动例程概述 .......................................................................................................................155
8.3.2 样例程序的说明( cst
8.3.3 修改启动
例程 ..........................................................................................................................164
art.asm).........................................................................................157
8.4 flash区域中启动模块的ROM化处理 ..............................................................................................167
第 9 章 错误信
息 .................................................................................................................................................169
9.1 错误信息格式 ....................................................................................................................................169
9.2 错误信息类型 ....................................................................................................................................170
9.3 错误信息列表 ....................................................................................................................................171
9.3.1 命令行错
误信息 ......................................................................................................................172
9.3.2 内部错误和内存错误信息 ......................................................................................................175
9.3.3 字符错误
信息 ..........................................................................................................................177
9.3.4 配置元素错误信息 ..................................................................................................................178
9.3.5 转换错误
信息 ..........................................................................................................................181
9.3.6 表达式错误信息 ...................................................................................................................... 183
9.3.7 语句错误
信息 ..........................................................................................................................187
9.3.8 声明和函数定义的错误信息...................................................................................................189
9.3.9 预处理命
令的错误信息 ...........................................................................................................195
9.3.10 致命的文件 I/O和运行非法操作系统的错误信息 ...............................................................200
9.4 PM+错误信息列表 ...........................................................................................................................202
附录 A 样例程序 ...................................................................................................................................................206
A.1 C 源程序模块文件...........................................................................................................................206
A.2 执行例程 ............................................................................................................................................207
A.3 输出列表 ............................................................................................................................................208
A.3.1 汇编源程序模块文件 ...........................................................................................................208
A.3.2 预处理列表文件 ...................................................................................................................212
A.3.3 交叉引用列表文件 ...............................................................................................................213
A.3.4 错误列表文件 .......................................................................................................................214
附录B 注意事项列表........................................................................................................................................... 215
附录C 编译参数...................................................................................................................................................226
索引 .......................................................................................................................................................................230
10
用户手册 U17838CA1V0UM00
插图列表
插图编号 插图标题........................................................................................................................................页码
图 1-1. 开发过程............................................................................................................................... 13
图 1-2. 软件开发过程...................................................................................................................... 14
图 1-3. 使用C
图 1-4. 创建源程序模块文件 ........................................................................................................... 16
图 1-5. C 编译
图 1-6. 汇编器功能 ......................................................................................................................... 18
图 1-7. 连接器功能 ......................................................................................................................... 19
图 1-8. 目标转
图 1-9. 库管理程序功能 ..................................................................................................................21
图 1-1
0. 调试器的功能....................................................................................................................22
图 1-11. 模拟器功能........................................................................................................................23
图 1-12. PM + 功能 .......................................................................................................................... 24
图 2-1 目录结
图 3-1 <
图 3-2 < Browse for Folder > 对话框................................................................................................37
图 3-3 <
图 3-4 <
图 3-5 <
图 3-6 < Compiler Options > 对话框 ................................................................................................ 41
图 3-7 <
图 3-8 < Compiler Options > 对话框(当选择“Memory Model” 界面时).......................................... 45
图 3-9 < Compiler Options > 对话框(当选择“Data Assign” 界面时) .............................................. 46
图 3-10 < Compiler Options > 对话框(当选择“ 集成推荐优化选项” 界面时) ...................................47
图 3-1
1 < Compiler Options > 对话框(当选择“Char Expression Behavior, Automatic Allocation” 界面
时)................................................................................................................................................48
图 3-12 < Compiler Options > 对话框(当选择“Optimize Object Size b
图 3-13 < Compiler Options > 对话框(当选择“Others” 界面时) ..................................................... 50
图 3-14 < Compiler Options > 对话框(当选择“Deb
图 3-16 <Assembler Options> 对话框 ..............................................................................................53
图 3-1
7< Compiler Options > 对话框(当选择“ Error List File, Cross-reference List File” 界面时) .54
图 3-18 < Compiler Options > 对话框(当选择“Preproc
图 3-19 < Compiler Options > 对话框(当选择“Extend” 界面时) .................................................... 58
图 3-20 < Compiler Options > 对话框(当选择“Others” 界面时) ..................................................... 59
图 3-21 < Compiler Options > 对话框(当选择“S
图 3-2
2. 优化选项的选择................................................................................................................ 64
图 3-2
3. 连接器选项对话框.............................................................................................................65
图 3-3
4 C 编译器的输入/ 输出文件 .................................................................................................... 80
图 5-1. 编译选项对话框 ..................................................................................................................90
C78K0R 的程序开发过程 ........................................................................................... 15
器功能 .......................................................................................................................17
换器功能 ..................................................................................................................20
构..............................................................................................................................28
Compiler Options >对话框 ................................................................................................ 36
ParameterFile >对话框...................................................................................................... 38
Edit Option >对话框 .......................................................................................................... 39
Add Option>对话框 ............................................................................................................39
Compiler Options>对话框(当选择“Preprocessor”标签页时)...........................................43
y Calling Library”界面时).. 49
ug”界面时) ..................................................... 51
ess List File, List Format”界面时) ............ 56
tartup Routine”界面时) ....................................... 61
用户手册 U17838CA1V0UM00
11
表格列表
表格编号 表格标题..........................................................................................................................................页码
表 2-1. C 编译
表 2-2. 文档组
表 2-3 程序库文件 .......................................................................................................................... 30
表 2-4 环境变
表 3-1 C 编译器I/O 文件.................................................................................................................... 79
表 4-1 优化方法.............................................................................................................................. 82
表 5-1 编译选
表 5-2 编译选项列表....................................................................................................................... 88
表 7-1 E
表 7-2 环境变量............................................................................................................................ 148
表 8-1 BA
表 8-2 SR
表 8-3 “L
表 8-4 初始化数据的ROM 区域块.................................................................................................. 167
表 8-5 拷贝目
表 9-1 命令行错误信息 .................................................................................................................172
表 9-2 内部错
表 9-3 字符错误信息..................................................................................................................... 177
表 9-4 配置元
表 9-5 转换错误信息..................................................................................................................... 181
表 9-6 表达式错误信息 .................................................................................................................183
表 9-7 语句错
表 9-8 声明和函数定义的错误信息 ............................................................................................... 189
表 9-9 预处理
表 9-10 致命的文件I/O 和运行非法操作系统的错误信息 ............................................................... 200
表 9-1
1 PM+ 错误信息 ...................................................................................................................202
表B-1 相关注意事项列表.............................................................................................................. 215
表C-1 编译参
器的供应媒介和记录格式........................................................................................... 25
织结构(* = 字母数字符号)........................................................................................29
量..............................................................................................................................34
项的优先级................................................................................................................86
XIT状态............................................................................................................................147
T目录内容 ...................................................................................................................... 151
C目录内容 .....................................................................................................................152
ib”目录内容 .....................................................................................................................153
的地的RAM 区域块 .................................................................................................. 167
误和内存错误信息...................................................................................................175
素错误信息..............................................................................................................178
误信息..................................................................................................................... 187
命令的错误信息 ...................................................................................................... 195
数 ............................................................................................................................226
12
用户手册 U17838CA1V0UM00
第 1 章 概述
CC78K0R C 编译器能够把符合 ANSI-C
微控制器能够识别的机器语言。
CC78K0R 支持 Windows™ 系统,必须在 PM + (项目管理器)中才能使用 CC78K0R , PM + 工具包含
在 CC78K0R 系列的汇编程序安装包中。如果没有使用 PM +,编译程序可以在命令提示符下运行。
注 ANSI-C 是美国国家标准局所制定的 C 语言标准。
1.1 CC78K0R 的作用
CC78K0R 在产品开发中的位置如下图所示。
注
规格或符合 78K0R 系列规格的 C 语言源程序转变成 78K0R
图 1-1. 开发过程
产品计划
系统设计
硬件设计 软件设计
产品 编码
失误
漏洞
错误
汇编/ 编译
CC78K0R
C 编译程序
调试 检查
系统评估
产品生成
用户手册 U17838CA1V0UM00
13
软件开发过程如下图所示。
软件开发
写程序规范
第 1 章 概述
图 1-2. 软件开发过程
是
创建流程图
编译
错误?
连接
否
编写代码
编写源程序模块
文件转换
… 使用 78K0R 系列 C 语言或 ANSI-C。
… 使用编辑器创件建 C 源程序模块文件。
… 连接到引用库和函数库。
… 将文件转换成十六进制格式。
14
调试
… 使用硬件调试器(在线仿真器等)来检验系统的运
行。
否
确定
是
系统评价
用户手册 U17838CA1V0UM00
1.2 使用CC78K0R 的开发过程
使用 CC78K0R 的开发过程如下图所示。
图 1-3. 使用 CC78K0R 的程序开发过程
第 1 章 概述
C 源程序
头文件
C 编译器
汇编源程序
汇编列表
绝对汇编列表
列表转换器
十六进制
目标模块文件
汇编器
连接器
目标转换器
汇编源程序
目标模块文件
库文件管理程序
库文件
装载模块文件
系统模拟器
集成调试器
USB
在线仿真器
PROM 编程器
Flash 编程器
用户手册 U17838CA1V0UM00
15
第 1 章 概述
1.2.1 使用编辑器创建源程序模块
一个程序被划分为若干个功能模块。
其中一个模块是代码单元,也是编译器的输入单元。输入到 C 编译器的模块被称作 C 源程序模块。
当所有的 C 源程序模块编写完成后,使用编辑器将源程序模块存入某个文件中。以这种方式创建的文件
被称作 C 源程序模块文件。
这个 C 源程序模块文件就是 CC78K0R 的输入文件。
图 1-4. 创建源程序模块文件
源程序模块
源程序模块
源程序模块
程序
源程序模块
写入文件 (编辑器)
16
源程序模块文件
用户手册 U17838CA1V0UM00
第 1 章 概述
1.2.2 C 编译器
C 编译器读入 C 源程序模块后,将 C 语言转换成机器语言。如果在 C 源程序模块中发现描述错误,就
会输出编译错误信息。如果没有编译错误,就会生成目标模块文件。
为了在汇编语言中对程序进行校正和检查,需要生成汇编源程序模块文件。如果要输出汇编源程序模块
文件,当编译时在编译选项中选中了-A 或-SA 选项,就可以创建汇编源程序模块源文件。(要查看选项的
相关信息,可参阅“ 第 5 章 编译选项 ” )
图 1-5. C 编译器功能
目标模块文件
注 设备文件要从在线发送服务(ODS)下载获取,ODS 可以从如下网址登录进入。
设备文件注
C 编译器
汇编器源模块文件
http://www.necel.com/micro/ods/eng/index.html
C 源程序
模块文件
用户手册 U17838CA1V0UM00
17
第 1 章 概述
1.2.3 汇编器
汇编工作是通过使用 RA78K0R 汇编程序安装包(单独销售)中的汇编器来执行的。
汇编器可以对汇编源程序模块文件进行处理,是将汇编语言转化成机器语言的一种程序。如果在源程序
模块中发现描述错误,就会输出汇编错误。如果没有汇编错误,则会生成目标模块文件,这个目标文件模
块中包括机器语言信息和位置分配信息,例如各条机器语言代码被放在哪个内存单元地址。除此以外,在
汇编过程中的信息会以汇编列表文件的形式输出。
图 1-6. 汇编器功能
设备文件
目标模块文件
注
汇编器
汇编源程序
模块文件
汇编列表文件
注 设备文件要从在线发送服务(ODS)下载获取,ODS 可以从如下网址登录进入。
http://www.necel.com/micro/ods/eng/index.html
18
用户手册 U17838CA1V0UM00
第 1 章 概述
1.2.4 连接器
连接操作是通过使用 RA78K0R 汇编程序包(单独销售)中的连接器来执行的。
连接器的输入文件有编译器输出的目标模块文件,也有汇编器输出的目标模块文件,同时将它们和库
文件连接起来(即使只有一个目标模块,也必须执行连接操作)。
会输出一个装载模块文件。
在这种情况下,连接器决定输入模块中的重定位段的地址。同时也决定了重定位符号的值和外部引用
符号的值,并将正确的值嵌入到装载模块文件中。连接器将连接信息输出到连接映射文件(link map )。
图 1-7. 连接器功能
设备文件注
多个目标模块文件
库文件
···
连接器
连接映射文件 装载模块文件
注 设备文件要从在线发送服务(ODS)下载获取,ODS 可以从如下网址登录进入。
http://www.necel.com/micro/ods/eng/index.html
用户手册 U17838CA1V0UM00
19
第 1 章 概述
1.2.5 目标转换器
目标转换操作是通过 RA78K0R 汇编程序包(单独销售)中的转换器来执行的。
目标转换器读入连接器产生的装载模块文件,转换文件的格式,产生 Intel 标准格式的十六进制模块文
件。符号信息输出到符号表文件中。
图 1-8. 目标转换器功能
十六进制目标模块文件
设备文件注
目标转换器
装载模块文件
符号表文件
注 设备文件要从在线发送服务(ODS)下载获取,ODS 可以从如下网址登录进入。
http://www.necel.com/micro/ods/eng/index.html
20
用户手册 U17838CA1V0UM00
第 1 章 概述
1.2.6 库管理程序
为了方便起见,拥有通用接口并被清晰定义的模块被做成库。通过创建库,许多目标模块组成一个文
件,更容易处理。
连接器可以从库文件中提取出需要的模块并将它们连接起来。因此,如果一个库文件中包含多个模块,
当每个模块的连接无需单独指定参数时,就需要使用模块文件的名称。
库管理程序用来创建和更新库文件。库管理功能通过 RA78K0R 汇编程序包(单独销售)中的库管理
程序来执行。
图 1-9. 库管理程序功能
设备文件
注
编译器输出的目标模块文件 汇编器输出的目标模块文件
···
库管理程序
库文件
注 设备文件要从在线发送服务(ODS)下载获取,ODS 可以从如下网址登录进入。
http://www.necel.com/micro/ods/eng/index.html
用户手册 U17838CA1V0UM00
21
第 1 章 概述
1.2.7 调试器
将连接器输出的装载模块文件通过 ID78K0R-NS/ID78K0R-QB (78K0R 系列集成调试器)下载到 IE
(在线仿真器)中,就可以使用图形用户接口对源程序进行调试。
调试时,当目标源程序被编译时(-G 是缺省选项),指定了-G 选项就可以输出调试信息。指定这个参数,
调试中所需的符号和行号就会被加入到目标模块中。对于编译选项的信息,请查阅“ 第 5 章 编译选项 ” 。
调试器和仿真器是独立包装并各自销售的不同设备。
图 1-10. 调试器的功能
•
集成调试器
在线仿真器
目标信息
• 调试信息
22
用户手册 U17838CA1V0UM00
第 1 章 概述
1.2.8 系统模拟器
将连接器输出的装载模块文件通过 SM78K0R (78K0R 系列集成模拟器)下载,就可以使用图形用户
接口对源程序进行调试
SM78K0R 是在主机上进行模拟的软件,和 ID78K0R-QB 有着同样的操作界面。
除了在 SM78K0R 中模拟机器指令,同时也可以模拟 MCU 的片上外围设备和中断。因为外围部件和
过程用来构建虚拟的目标系统,所以在开发早期阶段就可以对包含目标系统操作的程序进行调试,并且可
以脱离硬件系统独立进行。
图 1-11. 模拟器功能
装载模块文件
• 目标信息
• 调试信息
模拟器
用户手册 U17838CA1V0UM00
23
第 1 章 概述
1.2.9 PM +
PM + (项目管理器)提供集成化开发环境,可以帮用户高效开发程序。因此,可以使用 PM + 的图形
用户界面来进行编辑至调试的一系列开发工作过程。
图 1-12. PM + 功能
24
用户手册 U17838CA1V0UM00
第 2 章 产品概述和安装
本章介绍了将 CC78K0R 的文件安装到用户开发环境(主机)的过程,以及从用户开发环境中卸载的过程。
2.1 主机和供应媒介
C 编译器支持表 2-1 中列出的开发环境。
表 2-1. C 编译器的供应媒介和记录格式
主机 操作系统 供应媒介
IBM PC/ATTM及兼容机
注 如果要在 Windows 环境中使用 C 编译器,必须使用 PM +。如果不使用 PM +,也可以在命令提示
符下启动 CC78K0R 编译器。
Windows(2000/XP)注
CD-ROM
用户手册 U17838CA1V0UM00
25
第 2 章 产品概述和安装
2.2 安装
将供应媒体中的 CC78K0R 文件安装到主机的过程说明如下。
(1) 启动 Windows
为主机和外部设备供电并启动 Windows 。
(2) 设置供应媒体
将 CC78K0R 的供应媒体放入主机的驱动器(CD-ROM 驱动器)中。安装程序将自动启动。根据显示的提示
信息逐步安装。
警告 如果安装程序没有自动启动,请执行 CC78K0R 文件夹中的 SETUP.EXE 文件。
(3) 文件确认
使用 Windows 资源管理器等,检查 CC78K0R 供应媒体中的文件是否已经安装到主机上。
每个文件夹的详细信息,参考 2.4 Windows 版本目录结构 。
26
用户手册 U17838CA1V0UM00
第 2 章 产品概述和安装
2.3 设备文件的安装
请从在线传送服务(ODS )自行下载对应型号的最新版本设备文件,ODS 的入口网址为:
http://www.necel.com/micro/ods/eng/index.html
使用安装文件来进行设备文件的安装。设备安装文件应该和 CC78K0R 同时安装。
用户手册 U17838CA1V0UM00
27
第 2 章 产品概述和安装
2.4 目录结构
Windows 系统安装过程中的标准目录是“Program Files\NEC Electronics Tools” 。安装目录中的文档结
构如下,注意在安装过程中可以改变驱动器和安装目录。当使用 PM + 执行 MAKE 操作时,相关的工具
(CC78K0R ,RA78K0R )也被安装到这个驱动器和目录。
本手册中假定的标准目录就是“Program Files\NEC Electronics Tools” ,这是默认的程序名称,也是安
装的默认路径。
图 2-1 目录结构
28
用户手册 U17838CA1V0UM00
第 2 章 产品概述和安装
2.5 文档结构
下面的表格列出了每个目录的内容。
目录结构和文档组织是在安装时就已经决定了。
表 2-2. 文档组织结构(* = 字母数字符号)
目录名 文件名 说明
CC78K0R\Vx.xx \bin\
CC78K0R\Vx.xx \hlp\ cc78k0rp.chm
CC78K0R\Vx.xx \inc78k0r\
CC78K0R\Vx.xx \lib78k0r\
(For link)
CC78K0R\Vx.xx \smp78k0r\
CC78K0R\
CC78K0R\Vx.xx \src\cc78k0
r\bat
CC78K0R\Vx.xx\src\cc78k0
r\lib\(修改用 )
CC78K0R\Vx.xx \src\cc78k0
r\src\
注 2,3
注 4
\
注 2
CC78K0r.exe
CC78K0r.msg
*.hlp
*.dll
注 1
标准库的头文件
*.h
cl0r*.lib
s0r*.rel
prime.c
sample.bat
readme.doc
lk78k0r.dr
mkstup.bat
reprom.bat
注 5
*.bat
cl0r*.lib
s0r*.rel
cstart*.asm
更新标准函数的批处理文件(部分的)
注 4
rom.asm
注 5
*.asm
标准函数的源文件(部分的)
编译器
信息文件
帮助文件
DLL 文件
在线帮助文件
库(运行库和标准库)
服务于启动例程的目标文件
用来验证安装的源程序
验证安装所需的批处理文件
验证安装所需文件的说明文件
用于引用的连接命令文件
启动例程的汇编批处理文件
用于更新 rom.asm
库(运行库和标准库)
服务于启动例程的目标文件
启动例程的源文件
ROMization 例程的源文件
备注 *:字母数字符号。
用户手册 U17838CA1V0UM00
29
第 2 章 产品概述和安装
注 1. 参见 CC78K0R C 编译器 语言篇用户手册。
注 2. 为了修改启动例程,修改 CC78K0R\Vx.xx\src\cc78k0r\lib 目录中的源文件。该文件和存储在
CC78K0R\Vx.xx\src\cc78k0r\lib 目录下的某个批处理文件共同编译,所以将该文件拷贝到
CC78K0R\Vx.xx\lib78k0r 目录下,并和用户程序连接。
注 3. 参考“2.5.1 库文件 ”。
注 4. 本目录中的批处理文件不能在 PM +中使用,他们只能通过命令提示符来执行。只有在源文件必
须被修改时才使用这些文件。
注 5. 参考表 8-1 的内容 。
注 6. * = B | E | N(B:指定根区域,E:指定闪存区域,N:未使用标准程序库)。
注 7. 参考表 8-2 的内容 。
2.5.1 库文件
·这些文件由标准库、运行时刻库和启动例程组成。
下表列出了目录内容。
目录名
LIB78K0R\
表 2-3 程序
文件名
普通 Boot 区域 Flash 区域
cl0rm.lib
cl0rl.lib
cl0rmf.lib
cl0rlf.lib
cl0rxm.lib
cl0rxl.lib
s0rm.rel
s0rml.rel
s0rl.rel
s0rll.rel
注 3
注 3
cl0rm.lib
cl0rl.lib
cl0rmf.lib
cl0rlf.lib
cl0rxm.lib
cl0rxl.lib
s0rmb.rel
s0rmlb.rel
s0rlb.rel
s0rllb.rel
注 3
注 3
cl0rme.lib
cl0rle.lib
cl0rmfe.lib
cl0rlfe.lib
cl0rxme.lib
cl0rxle.lib
s0rme.rel
s0rmle.rel
s0rle.rel
s0rlle.rel
库文件
注 3
库(运行时刻库和标准库)
注 3
启动例程的目标文件
文件作用
注
1
2
注
30
用户手册 U17838CA1V0UM00
第 2 章 产品概述和安装
注 1. 命名程序库的规则如下。
lib78K0R\cl0r<mul><model><float><flash>.lib
<mul >
None 未使用乘法器
X 使用乘法器
<model>
m 小型模式或中等模式
l 紧凑模式或大型模式
<float>
None 标准库和运行时刻库 (不支持移动指针程序库没有使用)
f 浮点指针库
<flash>
None 普通/boot 区域
e flash 存储器区域
注 2. 命名启动例程的规则如下。
lib78K0R\s0r<model><lib><flash>.rel
<model>
m 中等模式(同样可以指定为小型模式)
l 大型模式(同样可以指定为紧凑模式)
<lib>
None 未使用标准库函数
l 使用了标准库函数
<flash>
None 普通
b boot 区域
e flash 存储器区域
用户手册 U17838CA1V0UM00
31
第 2 章 产品概述和安装
注 3. CC78K0R 的库和下列乘法器设备兼容。
但是,在计算乘除法时可能会发生中断,某些计算结果是禁止被打断的,以保证得到正确的计
算结果。
关于库函数和中断响应时间的关系,敬请参阅CC78K0R C 编译器语言篇用户手册。
[ 特殊功能寄存器]
功能 保留字 地址 大小
乘法输入数据 A MULA FFFF0H 16 位
乘法输入数据 B MULB FFFF2H 16 位
乘法结果数据 MULOH ,MULOL FFFF4H ,FFF6H 16 位 * 2
<乘法时的寄存器配置 >
<乘数 A> <被乘数 B> <乘积结果>
MULA (第15至0位 ) * MULB (第15至0位 ) = MULOH(高位)(15至0位), MULOL (低位 ) (15至0位)
32
用户手册 U17838CA1V0UM00
第 2 章 产品概述和安装
2.6 卸载步骤
下面介绍从主机中卸载安装的步骤。
(1) Windows 启动
启动主机和外围设备电源,并启动Windows 。
(2) 删除CC78K0R
双击< 控制面板> 窗口中的[ 添加或删除程序] 图标,并选中“NECEL CC78K0R Vx.xx”
(3) 文件确认
使用Windows 资源管理器等,检查主机中安装的文件是否被卸载。关于每个文件夹的详细情况,请参阅
“2.4 目录配置 ”
用户手册 U17838CA1V0UM00
33
第 2 章 产品概述和安装
2.7 环境设置
2.7.1 主机
CC78K0R 处理 32 位系统,并运行于装备了 i386TMCPU 或更高版本的模型上。
• Windows 2000/XP
• Windows 2000/XP 下的命令提示符
2.7.2 环境变量
为名称提示符操作设置以下环境变量。
表 2-4 环境变量
环境变量 描述
PATH
TMP
LANG78K
INC78K0R
LIB78K0R
[规格示例 ]
PATH=%PATH%; C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\bin
set TMP=C:\tmp
set LANG78K=sjis
set INC78K0R=C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\inc78k0r
set LIB78K0R=C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\lib78k0r
指定编译器的存储目录。
指定用于创建临时文件的目录
指定源文件中汉字码(2 字节代码)。
sjis: Shift JIS(默认)
euc: EUC
none: 没有 2 字节代码
指定C编译器标准头文件的存储目录。
指定C编译器库的存储目录。
34
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
本章用 CC78K0R 和 RA78K0R 汇编程序包来描述编译到连接的整个过程。
实际上,对’prime.c' 这个样例程序按照本章节描述的方法执行编译到连接整个过程,你可以熟悉编译、
汇编和连接(见附录 A 样例程序 的相关资料)。
本章介绍了如何在 PM + 中执行,以及如何从命令提示符执行。(安装信息参见 2.2 安装 )。
3.1 PM +
本节描述了在 PM + 中启动 CC78K0R 的用户接口,PM + 包括在 RA78K0R 汇编程序安装包中。
如果在 PM + 中启动 CC78K0R ,会引用 CC78K0R 中的 CC78K0RP.DLL 动态连接文件。
3.1.1 CC78K0RP.DLL 的位
这些工具相关的动态连接文件,比如 CC78K0RP.DLL ,是从 WINDOWS 系统下的 PM + 中运行 78K0R
系列 C 编译器(CC78K0R )所必需的。
3.1.2 执行的
这个环境由 PM + 决定。
环境
置(工具动态连接文件)
用户手册 U17838CA1V0UM00
35
第 3 章 编译到连接的过程
3.1.3 CC78K0R选项设置菜单
(1) 选项菜
单条目
CC78K0R C 编译器安装包中的工具动态连接文件 DLL 文件将在 PM +中的[T
“Compiler Options…”项。
(2) < Compiler Options > 对话
框
在 PM +中,选择[Tools]下的[Compiler Options…]菜单来为 DLL 工具调用选项设置功能。
< Compiler Options >对话框如下所示。
图 3-1 < Compiler Options > 对话框
ools] 菜单中添加
36
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
(a) [Browse for Folder] 对话框
在< Compiler Options > 对话框中,当单击[Browse…]按钮设置路径时,会显示下列对话框。
在本对话框中只能选文件夹。
· 目标模块文件输出路径
· 汇编文件模块文件输出路径
· 错误列表文件输出文件
· 交叉引用列表文件输出路径
· 预处理列表文件输出路径
· 临时文件路径
图 3-2 < Browse for Folder > 对话框
用户手册 U17838CA1V0UM00
37
第 3 章 编译到连接的过程
(b) [Browse for Folder] 对话框
在指定参数文件时单击[Browse…] 按钮,会出现下列对话框。
· 在[Others] 标签页下的参数文件
对话框的情况如下:
当前目录: 项目文件目录
文件类型: 参数文件 (*.pcc)
图 3-3 < ParameterFile > 对话框
38
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
(c) [Edit Option] 对话框
在< Compiler Options > 对话框中,如果点击了[Edit...] 按钮,就会出现下列对话框。
· 在[Preprocessor] 标签页下定义宏
· 在[Preprocessor] 标签页下取消定义宏
· 在[Preprocessor] 标签页下添加搜索目录
在< Edit Option > 对话框中的各项都是列表格式进行编辑的。
图 3-4 < Edit Option > 对话框
< Edit Option >对话框的描述如下。
- [Add] 按钮
添加一个列表项。
如果要添加的是一个文件或者目录,就会打开对应的< Browse for Folder >对话框。
在所有其它情况下,都会打开< Add Option >对话框,在该对话框中指定待添加项的具体细节。
图 3-5 <Add Option> 对话框
- [Delete] 按钮
删除所选的列表项。
- [Up] 按钮
向上移动所选的列表项。
- [Down] 按钮
向下移动所选的列表项。
用户手册 U17838CA1V0UM00
39
第 3 章 编译到连接的过程
- [Add Sub Directory] 按钮
如果在 << Others >>该项被指定为包含搜索路径 [-i](I),则可以为该列表项添加子目录。
40
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
3.1.4 [Compiler Options] 对话框的具体描述
下面介绍<Compiler Options> 对话框的各个部分。
图 3-6 < Compiler Options > 对话框
· 编译器选项的设置
编译器设置选项分为以下的 9 个标签页并单独设置。
单击对话框上相应的标签页可以显示每一个个选项类的设置界面。
[Preprocessor]预处理器标签页(默认)
[Memory Model]存储器模块标签页
[Data Assign]数据的分配标签页
[Optimize]优化标签页
[Debug]调试标签页
[Output]输出标签页
[Extend]扩展标签页
[Others]其他标签页
[Startup Routine]启动例程标签页
用户手册 U17838CA1V0UM00
41
第 3 章 编译到连接的过程
· 命令行选项:
显示当前设置的选项字符串。
在 <Others>对话框中的 <Ot
her Options>中输入的选项字符串可以实时的显示出来。
在显示区域无法进行任何输入。
即使 CC78K0R 的默认选项是 “已指定的 ”状态 (比如,选择框是选中的,等等),在默认的情况下也
不会显示任何东西。
选项在选项属性显示区域无法完全显示时,可以通过拖动 [ScrollBar]滚动条来查看。
· [OK] 按钮
接受本对话框中的设置选项,并且会关闭 <Compiler Options>对话框。
如果在源程序文件列表中选择了一个源文件,那么这些选项就是为这个文件所设置的。如果没有单
独选中其中某些项,那么这些选项对所有的源程序文件都适用。
· [Cancel] 按钮
设定的选项不会生效,并关闭这个对话框。
ESC 键和[Cancel]按钮有着同样的作用,不管目前在哪个对话框中。
· [Apply] 按钮
只有在设置的选项发生改变时这个按钮才有效。
应用对话框中编辑的内容, <Compiler Options>对话框继续显示。
· [Help]按钮
打开关于本对话框的帮助文件。
42
用户手册 U17838CA1V0UM00
(1) 选择“Preprocessor” 标签页
图 3-7 <Compiler Options> 对话框(当选择“Preprocessor” 标签页时)
第 3 章 编译到连接的过程
· 定义宏[-d]
需要用 -D 选项来指定的宏名称和定义名,输入组合框即可。
对于宏名称来说,最多一次可以定义 30 个宏名称,多个宏定义之间用 “, ”来区分。
一个定义的宏名称最多可以指定为 256 字符。
该组合框最多可以接受 7709 个字符。
可以通过 [Edit…]按钮来指定。(打开 [Edit Option] 对话框)
如果有某宏定义被指定了两次,则显示错误信息。
· 未定义宏 [-u]
用 -u 选项指定的宏定义都输入到组合框中。
对于宏名称来说,最多一次可以定义 30 个宏名称,多个宏定义之间用 “, ”来区分。
一个定义的宏名称最多可以指定为 256 字符。
该组合框最多可以接受 7709 个字符。
可以通过 [Edit…]按钮来指定。(打开 [Edit Option] 对话框)
如果有某个宏被反定义了两次,则显示错误信息。
用户手册 U17838CA1V0UM00
43
第 3 章 编译到连接的过程
· 包含查找路径[-i]:
在这个组合框中输入的内容将被 [-i]选项指定为包含文件的目录。
最多一次可以输入 64 个目录,多个目录之间用 “, ”来区分。
指定一个目录时最多接受 259 个字符。
该组合框最多可以接受 16639 个字符。
可以通过 [Edit…]按钮来指定。(打开 [Edit Option]对话框)
如果有某个宏被反定义了两次,则显示错误信息。
也可以通过 [Edit…]按钮来指定目录。
不能指定不存在的路径。
如果有某个目录被指定了两次,则显示错误信息。
44
用户手册 U17838CA1V0UM00
(2) 选择“Me
第 3 章 编译到连接的过程
mory Model” 标签页
图 3-8 < Compiler Options > 对话框(当选择“Memory Model” 界面时)
注意 如果对每个源文件都指定了某些特殊选项,则[Memory Model] 标签页有可能无法设置。
· 存储器模式
通过单选按钮指定编译所用的存储器模式类型。
· 控制目标
Output the Object for Flash Memory[-zf]
选中复选框来使能 -zf 选项。
用户手册 U17838CA1V0UM00
45
(3) 选择“Data Assign” 标签页
图 3-9 < Compiler Options > 对话框(当选择“Data Assign” 界面时)
第 3 章 编译到连接的过程
· 将外部变量分配到 SADDR 区域
通过该下拉框可以选择分配到 saddr 区域的外部变量类型。
注意 如果对每个源文件都指定了某些特殊选项,则该区域无法指定。
·· 将静态变量分配到 SADDR 区域
通过该下拉框可以选择分配到 saddr 区域的静态变量类型。
· 将局部变量分配到 SADDR 区域 [仅静态模式有效 ]
选中该复选框来指定 -RK 选项。
用单选按钮可以选择分配到 saddr 区域的局部变量类型。
· 从 MSB 开始分配位域 [-rb]
选中该复选框来指定-RB 选项。
· 按字节单元间接寻址[-ra]
选中该复选框来指定-RA 选项。
· 结构成员打包[-rc]
选中该复选框来指定-RC 选项。
46
用户手册 U17838CA1V0UM00
(4) 选择“Optimize” 标签页
(1) 在 [G
roup:]下拉菜单中选择 “Integrated Recommendable Optimizing Option”时的界面如下:
图 3-10 < Compiler Options > 对话框(当选择“ 集成推荐优化选项” 界面时)
第 3 章 编译到连接的过程
· 综合推荐优化选项
“Integrated Recommendable Optimizing Option”综合优化选项是根据目的来进行优化,而无需单独
去指定,这样使得优化参数更方便设置。
共有两个设置项:“执行时间(Exec Time)[-qx1]”,“默认(Default)[-qx2]”。各自的含义如下:
Exec Time[-qx1]: -QX1 选项。看重执行速度效率时,请选择该项。
Default[-qx2]: -QX2 选项。当执行效率和目标代码大小都很重要时,请选择这个选项。
用户手册 U17838CA1V0UM00
47
第 3 章 编译到连接的过程
(2) 在 [Group:]下拉菜单中选择 “Char Expression Behavior, Automatic Allocation”时的界面如下:
图 3-11 < Compiler Options > 对话框(当选择“Char Expression Behavior, Automatic Allocation” 界
面时)
· 字符表达式动作
指定字符为无符号扩展[-qc]
选中该复选框来指定-QC 选项。(不执行整型提升时)。
将无格式字符型变换为无符号字符型[-qu]
选中该复选框来指定-QU 选项。
· 自动分配
norec 函数+ 寄存器变量可以使用 SADDR 区域[-qr]
选中该复选框来指定-QR 选项,通过选择单选按钮来指定变量类型。
自动变量使用寄存器来传递[-qv]
选中该复选框来指定-QV 选项。
· 跳转优化[-qj]
选中该复选框来指定-QJ 选项。
48
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
(3) 在[Group:] 下拉菜单中选择“Optimize Object Size by Calling Library” 时的界面如下:
图 3-12 < Compiler Options > 对话框(当选择“Optimize Object Size by Calling Library” 界面时)
· 通过调用库来对目标程序大小进行优化
选中该复选框来指定-QL 选项,并点击单选按钮来指定目标优化的优先级别。当-QLn 中的数字 n
越大,目标程序代码就越小,同时执行速度也会越慢。
用户手册 U17838CA1V0UM00
49
第 3 章 编译到连接的过程
(4) 在 [Group]下拉菜单中选择 “Others” 时的界面如下:
图 3-13 < Compiler Options > 对话框(当选择“Others” 界面时)
· 积极的优化
选中该复选框来指定-QW 选项。
50
用户手册 U17838CA1V0UM00
(5) 选择“Debug” 标签页
图 3-14 < Compiler Options > 对话框(当选择“Debug” 界面时)
第 3 章 编译到连接的过程
· 输出调试信息
选中该复选框来指定-G 选项,并且通过点击单选按钮选择一个存放调试输出信息的文件。
用户手册 U17838CA1V0UM00
51
第 3 章 编译到连接的过程
(6) 选择 “Output” 标签页
(1) 在[Group:] 下拉菜单中选择"Object Module File, Assembler Source Module File" 时的界面如下:
图 3-15< Compiler Options > 对话框(当选择"Object Module File, Assembler Source Module File"
界面时)
· 目标模块文件
在这个组合框中输入的内容将被指定为目标模块文件的输出路径。
该组合框最多可以接受 259 个字符。
可以通过 [Browse…]按钮来指定。(打开 [Browse for Folder] 对话框)
在 PM +里指定了通用选项时,总是默认假定路径名已经指定。
指定了源文件后,如果这个路径确实存在,则按照这个路径名来进行处理;如果路径不存在,则被
当做文件名来进行处理。
· 创建汇编源模块文件
选择这个复选框来使能-A/-SA/-LI 选项。可以选择在汇编程序源文件模块文件中包含/ 不包含 C 源程
序,也可以通过对应的单选按钮来选择 C 源程序是否包含/ 不包含头文件。
在组合框里输入汇编程序源模块文件的输出路径,对于指定的源文件名称,统一使用扩展后缀
“asm ”。
该组合框最多可以接受 259 个字符。
52
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
可以通过 [Browse…]按钮来指定。(打开 [Browse for Folder] 对话框)
在 PM +里指定了通用选项时,总是默认假定路径名已经指定。
指定了源文件后,如果这个路径确实存在,则按照这个路径名来进行处理;如果路径不存在,则被
当做文件名来进行处理。
· [Assembler Options[H]] 按钮
为汇编源模块文件指定汇编选项。
如果没有指定任何选项,则进行处理时认为指定了所有的汇编器选项。
在 <Compiler Options>对话框中的 <Output>标签中单击 [Assembler Options[H]]按钮时,会出现以下
对话框。
图 3-16 <Assembler Options> 对话框
· 使用汇编器共用选项
选择这个复选框,来使能<Assembler Options>对话框中设置的所有选项。
· 汇编器源文件选项
使能编译器的输出汇编源文件选项,在组合框里输入的字符串必须包括选项名称。
该组合框最多可以接受 259 个字符。
警告 不要描述芯片类型说明(-C )、设备文件说明(-Y )和参数文件说明(-F ),因为它们和工具动
态连接库是独立的。
· 命令行选项
此编辑对话框是只读对话框。
此编辑对话框中的字符串显示当前的选项。
所有的汇编共用选项和输出汇编选项都是目标选项。
所有通过点击按钮或在组合框里输入的字符串都会立即显示在此编辑对话框中。
用户手册 U17838CA1V0UM00
53
第 3 章 编译到连接的过程
(2) 在 [Group:]下拉菜单中选择 “ Error List File, Cross-reference List File”时的界面如下:
图 3-17< Compiler Options > 对话框(当选择“ Error List File, Cross-reference List File” 界面时)
· 创建错误列表文件
选中该复选框来指定-E/-SE 选项。可以通过选择对应的的单选按钮来决定是否将 C 源程序加入错误
列表。
在组合框里输入具体路径作为错误列表文件的输出路径。
该组合框最多可以接受 259 个字符。
可以通过 [Browse…]按钮来指定。(打开 [Browse for Folder] 对话框)
在 PM +里指定了通用选项时,总是默认假定路径名已经指定。
指定了源文件后,如果这个路径确实存在,则按照这个路径名来进行处理;如果路径不存在,则被
当做文件名来进行处理。
54
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
· 创建交叉引用列表文件 [-x]
选中该复选框来指定 -X 选项。在组合框里输入具体路径来指定交叉引用列表文件的输出路径。
该组合框最多可以接受 259 个字符。
可以通过 [Browse…]按钮来指定。(打开 [Browse for Folder] 对话框)
在 PM +里指定了通用选项时,总是默认假定路径名已经指定。
指定了源文件后,如果这个路径确实存在,则按照这个路径名来进行处理;如果路径不存在,则被
当做文件名来进行处理。
用户手册 U17838CA1V0UM00
55
第 3 章 编译到连接的过程
(3) 在 [Group:]下拉菜单中选择 “Preprocess List File, List Format”时的界面如下:
图 3-18 < Compiler Options > 对话框(当选择“Preprocess List File, List Format” 界面时)
· 创建预处理列表文件
选中该复选框来指定 -P 选项,并根据实际需要来决定预处理列表文件中的下列内容。
删除注释 [-kc]
选中该复选框来指定 -KC 选项。
执行 #define[-kd]
选中该复选框来指定 -KD 选项。
执行 #if, #ifdef, #ifndef[-kf]
选中该复选框来指定 -KF 选项。
执行 #include[-ki]
选中该复选框来指定 -KI 选项。
执行 #line[-kl]
选中该复选框来指定 -KL 选项。
添加行号并分页 [-kn]
选中该复选框来指定 -KN 选项。
56
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
在组合框里输入具体路径作为预处理列表文件输出路径。
该组合框最多可以接受 259 个字符。
可以通过 [Browse…]按钮来指定。(打开 [Browse for Folder] 对话框)
在 PM +里指定了通用选项时,总是默认假定路径名已经指定。
指定了源文件后,如果这个路径确实存在,则按照这个路径名来进行处理;如果路径不存在,则被
当做文件名来进行处理。
· 在列表文件的最后添加换页符[-lf]
选中该复选框来指定-LF 选项。
· 每行的列数 [-lw]
使用 -LW 选项指定每一行字符的数量。
可以指定的字符数量是 0 和 72 至 132。
· 每页的行数 [-ll]
使用 -LL 选项来指定一页中的行数。
可以指定的行数是 0 和 20 至 32767。
· 扩展 TAB 字符 [-lt]
使用 -LT 选项指定 tab 字符的跨度。
可以指定的 TAB 字符跨度是 0 至 8。
用户手册 U17838CA1V0UM00
57
(7) 选择 “Extend” 标签页
图 3-19 < Compiler Options > 对话框(当选择“Extend” 界面时)
第 3 章 编译到连接的过程
· 改变源文件的规则
禁止扩展(仅符合 ANSI 标准)[-za]
选中该复选框来指定-ZA 选项。
允许 C++ 注释格式,忽略// 到行末尾的内容[-zp]
选中该复选框来指定-ZP 选项。
注释可以嵌套[-zc]
选中该复选框来指定-ZC 选项。
没有扩展参数和返回值[-zb]
选中该复选框来指定-ZB 选项。
源文件中的日文汉字
选择对应的按钮来指定在源文件的注释中使用的日文汉字编码(2 字节编码)类型,可以为
SJIS/EUC/None 类型。
58
用户手册 U17838CA1V0UM00
(8) 选择“Others” 标签页
图 3-20 < Compiler Options > 对话框(当选择“Others” 界面时)
第 3 章 编译到连接的过程
· 冗余编译信息[-v]
选中该复选框来指定-V 选项。
· 警告级别[-w]
使用 -V 选项来指定警告级别。
可以指定的级别范围是 0-2。
级别 描述
0
1
2
不输出警告信息
输出普通的警告信息
输出详细的警告信息
· 使用指令文件
选中这个复选框,选项字符串就会输出到命令文件中,所以无需关心选项字符串的长度。
注意 如果对每个源文件都指定了某些特殊选项,则该复选框无法指定。
用户手册 U17838CA1V0UM00
59
第 3 章 编译到连接的过程
· 临时文件存放目录[-t]:
在组合框里输入文件夹名称会被 -t 选项指定为存放临时文件的目录。
在该组合框内只能指定一个文件夹目录。
该组合框最多可以接受 259 个字符。
可以通过 [Browse…]按钮来指定。(打开 [Browse for Folder] 对话框)
· 参数文件
用 -F 选项将组合框中输入的名称指定为参数文件名称。
在该组合框内只能指定一个文件夹目录。
该组合框最多可以接受 259 个字符。
可以通过 [Browse…]按钮来指定。(打开 [Browse for Folder] 对话框)
· 其他选项:
如果需要指定某些规格条目之外的编译器选项,请将选项输入组合框中。
该组合框最多可以接受 259 个字符。
· [Reset] 按钮
单击这个按钮恢复默认选项的设置。
· [Option file read…] 按钮
单击这个按钮读入包含选项设置的选项信息文件。
· [Option file save…] 按钮
选项设置被存入一个选项信息文件中。
只有点击 [OK]或 [Apply]按钮之后这个按钮才有效,选项的设置被存入选项信息文件中。
60
用户手册 U17838CA1V0UM00
(9) 选择 “Startup Routine” 标签页
图 3-21 < Compiler Options > 对话框(当选择“Startup Routine” 界面时)
第 3 章 编译到连接的过程
注意 针对每个源文件指定了特殊编译参数时,<Startup Routine>标签页无法设置。
· 使用启动例程
选择这个复选框来启用 C 编译器提供的标准启动例程。
使用标准库的固定区域
选定复选框来确定标准库征用的固定区域。
ROMization 对 far 区域的处理
选定复选框来进行 ROMization 对 far 区域的处理。
选择目标
选定对应的单选按钮来指定启动例程的目标:normal,boot 区域或 flash 区域。
如果<Memory Model>标签页中的[Output the Object for Flash Memory[-zf]] 复选框未被选中,
启动例程的目标可以选择普通或 boot 区域,如果这个复选框已经被选中,则启动例程的目标
只能选择为 flash 区域。
启动例程:
显示将要使用的启动例程文件名称。
用户手册 U17838CA1V0UM00
61
第 3 章 编译到连接的过程
· 使用库
选中复选框来启用 C 编译器提供的标准库。
在 sprintf, sscanf, printf, scanf, vprintf, vsprintf 中使用浮点
选择这个复选框使 sprintf, sscanf, printf, scanf, vprintf 和 vsprintf 函数支持浮点。
使用乘法器
选择复选框来使用产品中内嵌的乘法器。
注意 产品类型如果没有内嵌的乘法器,则无法选择该项。
库:
显示使用的库文件名。
62
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
3.2 从编译到连接的过程(未使用自写入模式时)
3.2.1 从 PM +中 MAKE
在 PM +中进行 MAKE 的方法描述如下。
PM +是一个软件程序,作为开发环境的核心来进行工具的集成管理。使用 PM +能够把应用程序和环境
设置当作工程来处理。可以使用编辑器、源文件管理、编译和调试一系列步骤来创建源程序。
(1 ) 启动 PM +
开发的工具包正确安装之后,在[ 开始] 按钮的“ 所有程序” 中会创建[NEC Electronics Tools] 菜单,并且
PM + 和其他程序会注册到该菜单下。
在菜单中单击[PM +] 就会启动 PM + 。
(2) 创建工程
注册一个工程首先要用 PM +进行一系列的开发操作。
注册一个工程,首先创建工程管理的工作区。关于创建工作区的过程,敬请参考 PM + 用户手册。
(3) 编译器和连接器的选项设定
为了能够成功建立[Build] ,在工程创建之时就已经自动在 MAKE 文件中指定了最基本的必需选项。工程
特定的选项在在[Tools]工具菜单中指定。
如果[Tools] 菜单下的[Compiler Options…]被选中,会出现<Compiler Options>对话框。
下面是一个将优化选项从默认的[-QCJLW] 改为“执行时间[-qx1]”的例子。
用户手册 U17838CA1V0UM00
63
第 3 章 编译到连接的过程
图 3-22. 优化选项的选择
如果在<Compiler Options> 对话框的<<Startup Routine>> 标签页中选择了“U
sing Startup Routine” 复
选框,编译器的标准启动例程在所有源文件之前进行连接。(在<Linker Options> 对话框中无对应显示)。
“使用库”被选中的情况下,编译器标准库的连接操作在所有库之后进行。
如果源文件中有 C 语言源程序设置,连接器会自动指定-S 堆栈符号自动生成选项。
启动例程文件的名称不会影响装载模块文件的名称。
64
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
图 3-23. 连接器选项对话框
(4) 建立[BUILD]工程
工程的建立要在设定好选项条件下进行。
选择[Build] 菜单下的[Build] 项就可以完成整个工程的建立,或者点击工具栏上的[Build] 按钮。PM + 的
MAKE 过程会由自动生成的 MAKE 文件启动。
建立完成后,会出现一个信息对话框。查看此对话框就可以知道建立过程是否正常完成。
警告 建立时显示在<Output> 窗口中的内容被保存到工程目录下,存储形式为 “工程文件名称
+ .plg” 。
用户手册 U17838CA1V0UM00
65
第 3 章 编译到连接的过程
3.2.2 使用命令行来编译连接(命令提示符)
(1) 没有使用参数文件时
下列指令用来在命令行中启动 CC78K0R,汇编器和连接器。
如果 C 源文件中没有汇编语句,则无需进行汇编。在这种情况下,连接 C 编译器产生的目标模块文件。
(Δ : 空格 )。
>[path name]CC78K0R[ Δ option] Δ C 源文件名称 [Δoption]
>[path name]RA78K0R[ Δ option] Δ汇编源文件名称 [Δ option]
>[path name]LK78K0R[ Δ option] Δ目标模块名称 [ Δ option]
注意 为了连接用户创建的库,一定要指定该库连接到 CC78K0R ,并在库列表的最后加入编译器的附
属库和浮点库。
要让 sprintf, sscanf, printf, scanf, vprintf 和 vsprintf 支持浮点功能,按顺序指定浮点库加入
CC78K0R 和编译器附属库。
要让 sprintf, sscanf, printf, scanf, vprintf 和 vsprintf 不支持浮点功能。按顺序指定附属库加入
CC78K0R 和编译器附带的浮点库。
在用户程序之前,指定 C 编译器附带的启动例程。在连接过程中的库文件和目标模块文件指定
顺序如下所示。
(库文件的说明次序)
当 sprintf, sscanf, printf, scanf, vprintf 和 vsprintf 不支持浮点功能时
1. 用户程序库文件(用 -B 选项指定)
2. C 编译器附属的库文件(用-B 选项指定)
3. C 编译器附带的浮点库文件(用-B 选项指定)
当 sprintf, sscanf, printf, scanf, vprintf, 和 vsprin 支持浮点功能时
1. 用户程序库文件(用 -B 选项指定)
2. C 编译器附带的浮点库文件(用-B 选项指定)
3. C 编译器附属的库文件(用-B 选项指定)
(其他文件的说明次序 )
1. CC78K0R 附带的启动例程的目标文件
2. 用户程序的目标模块文件
66
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
下面是一个连接 C 源程序 s1.c 和汇编程序源文件 s2.asm 的例子。
C>CC78K0R -cf1166a0 s1.c -e -a
-i"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\inc78k0r"
–y"C:\Program Files\NEC Electronics Tools\dev"
C>ra78K0R -cf1166a0 s2.asm -e
-y"C:\Program Files\NEC Electronics Tools\dev"C>lk78K0R s01.rel s1.rel s2.rel
-b"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\lib78k0r\cl0rxm.lib"
-b"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\lib78k0r\cl0rm.lib" -s
-osample.lmf -y"C:\Program Files\NEC Electronics Tools\dev"
备注 指定多个编译选项时,用空格来分隔。描述时使用大写小写均可(大小写不敏感)。具体细节
请参见说明书第五章编译选项 。
-i 选项,-b 选项指定的路径和 -y 选项可以根据条件进行省略。具体细节请参见第 5 章编译器选
项和 RA78K0R 汇编程序包用户手册 操作篇。
用户手册 U17838CA1V0UM00
67
第 3 章 编译到连接的过程
(2) 使用参数文件时
在启动编译器、汇编器或连接器时输入了多个选项,如果在命令行中没有为启动提供充分的信息,相
同的规格说明可能会重复多次。这种情况下,应该使用参数文件。
当使用参数文件,在命令行指定参数文件规格选项 [-f]。
下面是通过参数文件来启动编译、汇编程和连接的方法。
>[路径名称 ]CC78K0R Δ -F 参数文件名称
>[路径名称 ]RA78K0R Δ -F 参数文件名称
>[路径名称 ]LK78K0R Δ -F 参数文件名称
下面是一个使用例程。
例 C>cc78K0R -Fpara.pcc
C>ra78K0R -Fpara.pra
C>lk78K0R -Fpara.plk
从编辑器创建参数文件。所有应该在命令行中指定的选项和输出文件名称都可以写入参数文件。
下面是程序员在编辑器中创建参数文件的一个实例。
< para.pcc 的内容>
-cf1166a0 s1.c -e -a
-i"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\inc78k0r"
-y"C:\Program Files\NEC Electronics Tools\dev"
< para.pra 的内容 >
-cf1166a0 s2.asm -e -y"C:\Program Files\NEC Electronics Tools\dev"
< para.plk 的内容>
s0rll.rel s1.rel s2.rel
-b"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\lib78k0r\cl0rxm.lib"
-b"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\lib78k0r\cl0rm.lib" -s
-osample.lmf -y"C:\Program Files\NEC Electronics Tools\dev"
-i选项说明, -b选项路径说明和 –y选项说明可以根据条件进行省略。具体细节请参见第5 章 编译器选项
和 RA78K0R 汇编程序包用户手册 操作篇 。
68
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
3.3 从编译到连接(当使用自写入模式时)
本功能只对那些支持 flash 存储器自编程功能的设备有效。
3.3.1 在PM + 中的编
在 PM +上展示 MAKE 的技巧。
请确保按照下列顺序执行编译到连接的过程。
(1) boot 区域的编译到连接
( a) 创建一个工程
创建一个用于 boot 区域的工程,并将源文件加入到工程中。
(b) 编译器、连接器和目标转换选项的设置
在工程创建结束时就已经自动在 MAKE 文件中指定了最基本的必需选项。工程特定的选项在在
[Tools]工具菜单中指定。
如果[Tools] 菜单下的[Compiler Options…]被选中,会出现<Compiler Options>对话框。
<i> 设置编译选项
不要指定<Memory Model>标签页下的[Output the Object for Flash Memory[-zf]]复选框。
译到连接
用户手册 U17838CA1V0UM00
69
第 3 章 编译到连接的过程
选择<<Startup Routine>> 标签页下[Select Object] 中的“Boot” 单选按钮。
70
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
<ii> 设置连接选项
指定“内嵌 Flash ROM 的产品中 flash 启动地址 [-ZB]”选项,然后点击 [OK]按钮。
由于 <<Startup Routine>>标签页下的 “Using Startup Routine”和 “Using Library”复选框已经选中,所以
无需在 <Linker Options>对话框中指定启动例程和库。
同样,由于在源文件中包括有 C 源文件( boot.c),所以“创建堆栈符号 [-S]”会默认被设置。
备注 关于连接选项的信息,请参阅 RA78K0R 汇编程序包用户手册 操作篇。
用户手册 U17838CA1V0UM00
71
第 3 章 编译到连接的过程
<iii> 设置目标转换选项
不要指定[Divide HEX File for Product with Flash ROM[-zf]] 复选框。
注 在 boot 区域的程序进行编译后并目标转换之后,用 flash 编程器写入 hex 文件(比如 boot.hex)。
在写入后,请确保对上述过程中产生的装载模块文件(比如 boot.lmf )和 Hex 文件进行保存。不要
再次建立(Build )boot 区域的程序,即不要再次生成相关文件。
(c )建立(build )工程
工程的建立是在设定的选项条件下进行的。
完成工程的完整建立之需要选中[Build]菜单下的[Build]项即可,或者点击工具栏上的[Build]按钮。PM +
的 MAKE 过程是自动创建 MAKE 文件时完成的。
在 build 完成后,会弹出一个信息框,查看信息框的信息可以知道 build 过程是否正常结束。
注意 建立时显示在<Output>窗口中的内容被保存到工程目录下,存储形式为 “工程文件名称+ .plg”。
72
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
(2) flash 区域的编译到连接
(a)创建一个工程
创建一个用于 flash 区域的工程,并将源文件加入到工程中。
(b )编译器,连接器,和目标转换选项的设置
在工程创建完成之时就已经自动在 MAKE 文件中指定了最基本的必需选项。工程特定的选项在
在[Tools]工具菜单中指定。
如果[Tools] 菜单下的[Compiler Options…]被选中,会出现<Compiler Options>对话框。
<i> 设置编译选项
请指定 <Memory Model>标签页下的 [Output the Object for Flash Memory[-zf]]复选框。
[Startup Routine]标签页下 [Select Object]中的“Flash”单选按钮被自动选中。
用户手册 U17838CA1V0UM00
73
第 3 章 编译到连接的过程
<ii> 设置连接选项
指定 boot 区域的装载模块文件,该文件由“ Other options”组合框创建。
由于 [Startup Routine]标签页下的 “Using Startup Routine”和 “Using Library”复选框已经选中,所以无
需在 <Linker Options>对话框中指定启动例程和库。
同样,由于在源文件中包括有 C 源文件( flash.c),所以“创建堆栈符号 [-S]”会默认被设置。
备注 关于连接选项的信息,请参阅 RA78K0R 汇编程序包用户手册 操作篇。
74
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
<iii> 设置目标转换选项(flash 区域)
请确保指定[内嵌 Flash ROM 的产品拆分 HEX 文件[-zf]]复选框。
因为指定了目标转换选项 –ZF,会输出 boot 区域的 HEX 文件(比如 flash.hxb)和 flash 区域的 HEX
文件(比如 flash.hxf)。
在 boot 区域的程序编译和目标转换过程中产生的 boot.hex 和 flash.hxb 具有相同的内容。但是当 boot
区域专有的 HEX 文件被写入后,并且 flash 区域专用的程序被再次建立时,推荐用户自行确认已经保
存的 boot.hex 和刚生成的 flash.hxb 内容完全一致。
(c )建立(build )工程
工程的建立是在设定的选项条件下进行的。
完成工程的完整建立之需要选中 [Build]菜单下的 [Build]项即可,或者点击工具栏上的 [Build]按钮。 PM
+的 MAKE 过程是自动创建 MAKE 文件时完成的。
在 build 完成后,会弹出一个信息框,查看信息框的信息可以知道 build 过程是否正常结束。
注意 建立时显示在<Output>窗口中的内容被保存到工程目录下,存储形式为 “工程文件名称+ .plg” 。
用户手册 U17838CA1V0UM00
75
第 3 章 编译到连接的过程
3.3.2 命令行中的编译到连接(命令提示符)
(1) 没有使用参数文件时
下列指令用来启动 CC78K0R,汇编和连接都在命令行中完成。
如果 C 源文件中没有汇编语句,则无需进行汇编。在这种情况下,连接 C 编译器产生的目标模块文件。
(Δ : 空格 )。
>[path name]CC78K0R[ Δ option] Δ C 源文件名称 [Δoption]
>[path name]RA78K0R[ Δ option] Δ 汇编源文件名称 [Δoption]
>[path name]LK78K0R [ Δ option] Δ 目标模块名称,等 [ Δ option]
下面是 boot 区域的 C 源程序和 flash 区域的 C 源程序编译到连接的例子。
(a ) boot 区域的程序编译到连接,以及目标转换过程
例<1> boot 区域程序的编译过程
C>cc78k0r -cf1166a0 boot.c
-i"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\inc78k0r"
-y"C:\Program Files\NEC Electronics Tools\dev"
例 <2> boot 区域程序的连接过程
C>lk78k0r s0rllb.rel boot.rel
-b"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\lib78k0r\cl0rxm.lib"
-b"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\lib78k0r\cl0rm.lib"
-s -oboot.lmf -zb2000h -y"C:\Program Files\NEC Electronics Tools\dev"
例 <3> boot 区域程序的目标转换过程
C>oc78k0r boot.lmf -oboot.lmf
-y"C:\Program Files\NEC Electronics Tools\dev"
注 在 boot 区域的程序编译并进行目标转换后,用 flash 编程器写入 hex 文件(比如 boot.hex )。在写
入后,请确保对上述过程中产生的装载模块文件(比如 boot.lmf )和 Hex 文件进行保存。不要再次
建立(Build )boot 区域的程序,即不要再次生成相关文件。
(b ) flash 区域的程序从编译到连接过程
例<1> flash 区域程序的编译
C>cc78k0r -cf1166a0 flash.c -zf
-i"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\inc78k0r"
-y"C:\Program Files\NEC Electronics Tools\dev"
例 <2>flash 区域程序的连接
C>lk78k0r boot.lmf s0lle.rel flash.rel
-b"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\lib78k0r\cl0rxm.lib"
-b"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\lib78k0r\cl0rm.lib"
-s -oflash.lmf -y"C:\Program Files\NEC Electronics Tools\dev"
76
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
例<3>flash 区域程序的目标转换
C>oc78k0r flash.lmf -oflash.lmf -y"C:\Program Files\NEC Electronics Tools\dev"
注意 在目标转换过程中指定-ZF 选项,会输出 boot 区域的 HEX 文件(比如 flash.hxb )和 flash 区域
的 HEX 文件(比如 flash.hxf )。在 boot 区域的程序编译和目标转换过程中产生的 boot.hex 和
flash.hxb 具有相同的内容。但是当 boot 区域专有的 HEX 文件被写入后,并且用于 flash 区域的
程序被再次建立的话,用户务必要确认保存的 boot.hex 和生成的 flash.hxb 内容完全一致。
备注 指定多个编译选项时,用空格来分隔。描述时使用大写小写均可(大小写不敏感)。具体细节
请参见说明书第五章编译选项 。
-i 选项, -b 选项指定的路径和 -y 选项可以根据条件进行省略。具体细节请参见第 5 章编译器选项 和
RA78K0R 汇编程序包用户手册 操作篇。
注意 为了连接用户创建的库或浮点库,一定要在库列表的最后加入 CC78K0R 编译器的附属库。当
flash 区域的程序和 boot 区域的程序相互连接时,一定要首先指定 boot 区域的装载模块文件,
并在用户程序执行之前指定 flash 区域的启动例程。
下面列出连接时,库和目标模块文件的指定顺序。
· (库文件的说明次序)
当 sprintf, sscanf, printf, scanf, vprintf 和 vsprintf 不支持浮点功能时
(i) 用户程序库文件(用 -B 选项指定)
(ii) C 编译器附属的库文件(用-B 选项指定)
(iii)
C 编译器附带的浮点库文件(用-B 选项指定)
· 当 sprintf, sscanf, printf, scanf, vprintf, 和 vsprin 支持浮点功能
(i) 用户程序库文件(用 -B 选项指定)
(ii) C 编译器附属的浮点库文件(用-B 选项指定)
(iii) C 编译器附带的库文件(用-B 选项指定)
注意 当连接 boot 区域的程序时,指定 boot 区域的库;当连接 flash 区域的程序时,需要
指定 flash 区域的库
(其他文件的说明次序)
(i) 用户程序 boot 区域的装载模块文件。
(ii) CC78K0R 附带的 flash 区域启动例程目标文件。
(iii) 用户程序 flash 区域的目标模块文件。
用户手册 U17838CA1V0UM00
77
第 3 章 编译到连接的过程
(2) 使用参数文件时
在启动编译器、汇编器或连接器时输入了多个选项,如果在命令行中没有为启动提供充分的信息,相
同的规格说明可能会重复多次。这种情况下,应该使用参数文件。
当使用参数文件,在命令行指定参数文件规格选项[-f]。
下面是通过参数文件来启动编译、汇编程和连接的方法。
>[path name]CC78K0R Δ-F 参数文件名称
>[path name]RA78K0R Δ-F 参数文件名称
>[path name]LK78K0R Δ-F 参数文件名称
下面是一个使用例程。
C>CC78K0R -Fpara.pcc
C>lk78K0R -Fpara.plk
从编辑器创建参数文件。所有应该在命令行中指定的选项和输出文件名称都可以写入参数文件。
下面是程序员在编辑器中创建参数文件的一个实例。
< para.pcc 的内容>
-cf1166a0 boot.c
-i"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\inc78k0r"
-y"C:\Program Files\NEC Electronics Tools\dev"
< para.pra 的内容>
s0rllb.rel boot.rel
-b"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\lib78k0r\cl0rxm.lib"
-b"C:\Program Files\NEC Electronics Tools\CC78K0R\Vx.xx\lib78k0r\cl0rm.lib"
-s -oboot.lmf -zb2000h
-y"C:\Program Files\NEC Electronics Tools\dev"
备注 -i 选项说明, -b 选项路径说明和 –y选项说明可以根据条件进行省略。具体细节请参见第5 章 编
译器选项和RA78K0R 汇编程序包用户手册 操作篇。
78
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
3.4 C 编译器的输入/ 输出文件
CC78K0R 的输入文件是 C 语言编写的模块文件,这些文件被转换为机器语言,再输出为目标模块文
件。
编译后会输出汇编源模块文件,用户可以对汇编语言内容进行检查和修改。根据所选的编译选项,会
输出对应的列表文件比如预处理文件,交叉引用文件和错误列表文件。
如果有编译错误,这个错误信息会显示在控制台,并输出到错误列表文件中。如果发生错误,那么除
错误列表文件之外不会输出别的文件。
CC78K0R 输入/ 输出文件显示如下。
表 3-1 C 编译器 I/O 文件
类型 文件名 描述 默认文
件类型
C 源程序模块文件
输入
包含文件 • 由 C 源模块文件引用的文件(用 C 语言编写的文件)
文件
参数文件 • 当用户需要指定的多条命令在 C 编译器运行时无法从命令
目标模块文件 • 二进制映像文件包含机器语言信息、机器语言分配地址的
输出
文件
汇编源模块文件 • 由编译器输出的目标代码 ASCII 映像文件
预处理列表文件 • 像#include 文件一样的预处理指令产生的列表文件
交叉引用列表文件 • 包括 C 源模块文件中使用的函数名称和变量名称信息的列
错误列表文件 • 包括源文件和编译错误信息的列表文件
临时文件 • 编译产生的中间文件
I/O
文件
• 用 C 语言编写的源文件(由用户创建的文件 )
• 由用户创建的文件
行输入,自行创建的文件
重定位信息,以及符号信息
• ASCII 映像文件
表文件
• 当编译正常结束时,此文件改名为适当的名称。编译有错
误,则删除此文件
C
H
PCC
REL
ASM
PPL
XRF
ECC
CER
HER
注
ER
$nn
( 固定文件
名)
用户手册 U17838CA1V0UM00
79
第 3 章 编译到连接的过程
注 错误列表文件有以下四种文件类型。
文件类型 描述
CER
HER
ER
ECC
参数文件 C 源程序模块文件 包含文件
对应于*.C 文件,并带有 C 源程序的错误列表文件
(指定-SE 选项输出)
对应于*.H 文件,并带有 C 源程序的错误列表文件
(指定-SE 选项输出)
对应于上述两类文件之外的文件,并带有 C 源程序的错误列
表文件(指定-SE 选项输出)
对应于所有源文件的错误列表文件,但不含有 C 源程序
(指定-SE 选项输出)
图 3-34 C 编译器的输入/ 输出文件
临时文件
预处理列表文件
CC78K0R
汇编源模块文件
备注 如果有编译错误,那么只能输出错误列表文件和交叉引用文件。
当编译正常结束没有发生错误时,临时文件就会重新改名为适当的名字。如果编译出错,那么这
错误列表文件 目标模块文件
个临时文件就会被删除。
交叉引用列表文件
80
用户手册 U17838CA1V0UM00
第 3 章 编译到连接的过程
3.5 执行开始和结束信息
3.5.1 执行开始信息
当 CC78K0R 启动时,开始信息会显示在控制台上。
78K/0R Series C Compiler Vx.xx [xx xxx xxxx]
Copyright (C) NEC Electronics Corporation xxxx,xxxx
3.5.2 执行结束信息
如果在编译过程中未发现错误,那么编译器就在控制台输出以下的信息,并将控制权交回操作系统。
Target chip : uPD78F1166_A0
Device file : Vx.xx
Compilation complete, 0 error(s) and 0 warning(s) found.
如果在编译过程中发现了错误,那么编译器就在控制台输出以下的错误信息和错误数量,并将控制权
交回操作系统。
PRIME.C(18) : CC78K0R 警告 W0745 Expected function prototype
PRIME.C(20) : CC78K0R 警告 W0745 Expected function prototype
PRIME.C(26) : CC78K0R 警告 W0622 No return value
PRIME.C(37) : CC78K0R 警告 W0622 No return value
PRIME.C(44) : CC78K0R 警告 W0622 No return value
Target chip : uPD78F1166_A0
Device file : Vx.xx
Compilation complete, 0 error(s) and 5 warning(s) found.
如果在编译过程中发现一个严重的错误,无法继续编译,那么编译器就输出一个信息到控制台,停止编
译并将控制权交回操作系统。
下面是一个输出错误信息的例子:
78K/0R Series C Compiler Vx.xx [xx xxx xxxx]
Copyright (C) NEC Electronics Corporation xxxx,xxxx
CC78K0R error F0018 : Option is not recognized '-s'
Please enter ‘ CC78K0R -- ‘ , if you want help messages.
Program aborted.
在这个例子中,因为输入了一个不存在的编译选项(-s),所以导致错误并停止编译。
如果编译器输出了错误信息并停止了编译,那么在第 9 章错误信息 中可以找到这些错误提示并进行改
正。
用户手册 U17838CA1V0UM00
81
第 4 章 CC78K0R函数
4.1 优化方法
在 CC78K0R 中优化就是为了创建高效的目标模块文件。下表列出了可以支持的优化方法。
表 4-1 优化方法
编
内容 举例
号
语法分析器
常量计算在编译过程中执行
<1>
基于逻辑表达式的部分内容就可以评估
<2>
真假
指针,数组等的偏移量计算 在编译过程中计算偏移量。
<3>
代码生成器
寄存器管理 有效使用寄存器。
<4>
使用目标 CPU 中的特殊指令 a=a+1; →使用 inc 指令。
<5>
使用短指令 如果在程序中有指令可以完成同样的操作,则就使用更短的
<6>
将长跳转指令换为短跳转指令 重新处理输出的中间代码。
<7>
优化器
删除表达式的公共部分
<8>
将无关语句转移到循环体外
<9>
删除未使用的指令 a=a; → 删除
<10>
a=3*5; → a=15;
0 && (a || b) → 0
1 || (a && b) → 1
使用 move 指令来替换数组元素的访问。
指令。
mov a, #0 → clrb a
a=b+c; → a=b+c;
d=b+c+e; d=a+e;
for (i=0; i<10; i++)
{
...
a=b+c;
...
}
↓
a=b+c;
for (i=0; i<10; i++)
{
...
}
在 a=b;语句之后, a 没有被引用过 → 删除
(a 是一个自动变量 )
82
用户手册 U17838CA1V0UM00
第 4 章 CC78K0R 函数
表 4-1 优化方法
编
内容 举例
号
删除拷贝
<11>
改变表达式中的计算顺序 在其他计算执行之前,保留在寄存器中的计算结果仍有效。
<12>
存储器设备的分配 (临时变量 ) 局部变量分配给寄存器。
<13>
窥孔优化( peephole optimizer) 代替特殊模式
<14>
降低计算强度 例如 a*2 → a+a, a<< 1
<15>
存储器设备的分配 (寄存器变量 ) 数据分配到高速存取的存储器。
<16>
跳转优化 (-QJ 选项 ) 将连续跳转指令组合成一条指令。
<17>
寄存器的分配 (-QV, -QR,-RD,-RS 选
<18>
项)
注意 无论优化选项如何设置,<1> 到 <7>和<14><15>项都会执行。
<8> 到<13>以及<17> 和<18>项只有在指定了对应的优化选项时才会执行。
只有在 C 源程序中有寄存器声明的情况下才会执行 <16>项。但是,只有在指定了-QR 选项时才
能使用 saddr 区域。
关于优化选项的信息,参见第 5 章 编译程序选项 。
a=b;
c=a+d; → c=b+d;
a 不再被引用( a 是一个自动变量 )。
例如 a*1 → a, a+0 → a
例如:寄存器,saddr 区域 (仅当指定了-QR 选项时)
变量自动分配给寄存器。
用户手册 U17838CA1V0UM00
83
第 4 章 CC78K0R 函数
4.2 ROM化功能
ROM 化意味着初始值存放在 ROM 中,比如说带初始值的外部变量。在系统运行时这些初始值被拷贝
到 RAM 中。
CC78K0R 提供了启动例程的范例,可以处理存储在 ROM 中的程序。对于 ROM 化来说,在 ROM 中
使用启动例程可以忽略自行描述启动过程中的 ROM 化处理难题。
关于启动例程的信息,敬请参阅 8.3 启动例程 。
下面描述如何将程序存储在 ROM 中。
4.2.1 连接
在连
接过程中,启动例程、目标模块文件和各种库都要进行连接。启动例程会对目标程序进行初始化
处理。
· s0*.rel 启动例程(当存储在 ROM 中)
包括数据初始化的拷贝过程,并指示初始数据的起始地址。
标签 _@cstart (符号 )被当作是开始地址。
· cl0*.lib CC78K0R 附属库。
CC78K0R 库文件包括以下两种。
<1> 运行时刻(Runtime)库
在运行时刻库名称的符号最前面加上 @@。对于特别的库比如 cstart,符号最前面会加上 _@来标
记。
<2> 标准库
_(下划线)添加到标准库名称的符号最前面。
· *.lib 用户创建的库。
在标准库名称前添加 ” _”(下划线)标记。
注意 CC78K0R 提供了各种启动例程和库。关于启动例程的细节,请参阅第 8 章 启动例程 。关于
库的细节,请参阅 2.5.1 库文件 。
84
用户手册 U17838CA1V0UM00
第 5 章 编译选项
当启动 C 编译器时,可以指定编译选项。指定的编译选项为编译器操作提供指令,并在程序执行前指
示必需的信息。
编译选项不但可以单独指定,也可以同时指定多个选项。用户可以根据实际需要选择匹配的编译选项,
并且适当的编译选项可以更有效的执行任务。
5.1 编译选项的指定
编译选项可以通过以下几种方法进行指定。
· 当 CC78K0R 编译器启动时在命令行中指定。
· 在 PM +的< Compiler Options>对话框中指定。
· 在参数文件中指定。
关于以上所描述的编译选项的指定方法,请参阅第 3 章 编译到连接的过程 。
在编译选项之后可以紧跟着指定次级选项或文件名,之间必须没有间隔,比如说空格等。多个编译选
项之间必须用空格来分隔。
对于编译选项来说,大写字母和小写字母没有区别。
<例 >
CC78K0RΔ -cf1166a0Δ prime.cΔ -aprime.asmΔ -qx2
备注 Δ : 空白,例如空格
用户手册 U17838CA1V0UM00
85
第 5 章 编译选项
5.2 编译选项的优先级
在下表所列的编译选项中,优先性体现在同时指定了垂直方向和水平方向的两个以上选项。
表 5-1 编译选项的优先级
-NO -G -P -NP -D -U -A -E -X -SA
-R
N G
-Q
N G
-G
N G
-K
-D
-U
-SA
-LW
-LL
-LT
-LF
-LI
[ 标记 NG 的位置]
如果水平方向的选项被指定,那么垂直方向的选项无效。
<例 >
C>cc78k0r -cf1166a0 -e sample.c -no -rd -g
Δ N G
O K
O K
N G
Δ Δ Δ Δ
Δ Δ Δ Δ
Δ Δ Δ Δ
Δ Δ Δ Δ
Δ
选项 -rd 和 -g 无效。
[ 标记Δ的位置 ]
如果水平方向的选项没被指定,那么垂直方向的选项无效。
<例 >
C>cc78k0r -cf1166a0 -e sample.c -p -k
由于指定了 -p 选项, -k 选项无效。
86
用户手册 U17838CA1V0UM00
第 5 章 编译选项
[ 标记 OK 的位置]
对于水平方向的选项和垂直方向的选项,最后指定的那个选项优先。
<例 >
C>cc78k0r -cf1166a0 -e sample.c -utest -dtest=1
由于-d 选项是最后指定的,-u 选项无效,-d 选项优先。
比如-O 和-NO 选项,即使 N 字母可以加在选项名称前,最后指定的选项仍然具有优先级。
<例 >
C>cc78k0r -cf1166a0 -e sample.c -o -no
因为-NO 选项是最后指定,所以-O 选项无效,-NO 选项优先。
在表 5-1 编译选项的优先级 中没有描述的选项,并不受其他选项的影响。但是,如果指定了帮助选项
(--/-?-H ),则所有的指定项无效。
帮助选项(--/-?-H )在 PM + 中无法指定。为了在 PM + 中使用帮助,请点击每个对话框中的[ 帮助] 按
钮。
用户手册 U17838CA1V0UM00
87
5.3 类型
该编译器中的选项可以分类如下。
表 5-2 编译选项列表
类型 参数 描述
第 5 章 编译选项
设备类型说明
目标模块文件创建说明
存储器分配说明
优化说明
调试信息输出说明
预处理列表文件创建说明
预处理说明
汇编源模块文件创建说明
错误列表文件创建说明
交叉引用列表文件创建说明 -X 指定交叉引用列表文件的输出
-C
-O
-NO
-R
-NR
-RD
-NR
-RS
-NR
-Q
-NQ
-G
-NG
-P 指定预处理列表文件的输出
-K 指定预处理列表的处理过程
-D 进行宏定义
-U 取消宏定义
-I 从指定目录读出包含文件
-A
-SA
-E
-SE
指定目标设备的类型
指定目标模件文件的输出
指定存储器中分配的方法
指定外部变量/ 外部静态变量在 saddr 区域中自动分配(除
常量类型外)
指定静态自动变量在 saddr 区域中自动分配
指定优化类型
指定输出 C 语言级别的调试信息
指定汇编源模块文件的输出
指定了错误列表文件的输出
88
用户手册 U17838CA1V0UM00
第 5 章 编译选项
表 5-2 编译选项列表
类型 参数 描述
-LW 指定所有列表文件中每一行的字符数量
-LL 指定了所有列表文件中每一页的行数
列表格式说明
警告输出说明
执行状态显示说明
参数文件说明 -F 从指定文件中读入设定选项或文件名
临时文件创建目录说明 -T 指定创建临时文件的驱动器和目录
帮助说明
函数扩展说明
设备文件搜索路径 -Y 指定为设备文件搜寻路径的目录
存储器模式说明
-LT 改变在源模块文件中制表符 (tab)的基本跨度
-LF 在每个列表文件的末尾添加新的分页符
-LI
-W
-V
-NV
--
-?
-H
-Z
-NZ
-M
将包含文件中的 C 源程序以注释形式添加到汇编源模块
文件中
指定输出到控制台的警告信息等级
将当前编译的执行状态输出到控制台
将帮助信息输出到控制台
使能函数扩展的处理
指定编译时所使用的存储器模式
用户手册 U17838CA1V0UM00
89
第 5 章 编译选项
5.4 编译选项的描述
这一部分详细介绍编译选项。
这个例子展示了如何从命令行中启动 CC78K0R 。为了在 PM + 中启动 CC78K0R ,需要指定命令,指定
设备类型,并在<Compiler Options> 对话框中指定 C 源程序遗漏的选项。
[ 示例 :(在命令行状态时)]
C>CC78K0R -cf1166a0 prime.c -g
[ 示例:(在使用 PM + 时) ]
图 5-1. 编译选项对话框
90
用户手册 U17838CA1V0UM00
第 5 章 编译选项
设备类型说明
(1) -C
[描述格式 ]
-C 设备类型
· 当省略时的解释
本选项说明不能被省略。
[ 功能]
· -C 选项为编译过程指定了目标设备。
[ 应用]
· 请务必确保要指定这个选项。CC78K0R 编译器针对指定的目标设备进行编译,并为其产生目标代
码。
[ 描述]
· 用-C 选项加相应的设备类型来说明目标设备文件的补充产品信息,请参阅所使用设备的用户手册,
或“设备文件操作注意事项”。
· 当使用 CC78K0R 时,必须先安装设备文件。
[ 注意]
· -C 选项不能被省略,但是,如果在 C 源文件中有如下描述,那么命令行中的说明可以被忽略。
#pragma pc ( 设备类型)
· 如果在 C 源文件和命令行中选定了不同的设备,则命令行中选定的设备具有更高优先级。
· 当使用 PM +时,并不一定要用编译选项来设置这个选项。因为这个选项早在创建工程时就已经被
默认设置。
[ 使用范例]
· 在命令行中指定。目标设备是μPD78f1166_a0 ,描述如下。
C>CC78K0R -cf1166a0 prime.c
用户手册 U17838CA1V0UM00
91
第 5 章 编译选项
在 C 源程序中进行说明,并启动编译器。
#pragma pc(f1166a0)
#define TRUE 1
#define FALSE 0
#define SIZE 200
char mark[SIZE+1];
main() {
int i, prime, k, count;
M
因此,在命令行中也可以省略目标设备说明。
C>CC78K0R prime.c
· 在 C 源文件和命令行中指定了不同的设备,并启动编译器。
<C 源程序 >
#pragma pc(f1166a0)
#define TRUE 1
#define FALSE 0
#define SIZE 200
char mark[SIZE+1];
main() {
int i, prime, k, count;
<命令行 >
C>CC78K0R -cf1176 prime.c
在命令行执行后,编译器的执行过程如下。
78K/0R Series C Compiler Vx.xx [xx xxx xxxx]
Copyright (C) NEC Electronics Corporation xxxx,xxxx
sample\prime.c(1) : CC78K0R 警告信息 W0832 Duplicated chip specifier
sample\prime.c(18): CC78K0R 警告信息 W0745 Expected function prototype
sample\prime.c(20): CC78K0R 警告信息 W0745 Expected function prototype
sample\prime.c(26): CC78K0R 警告信息 W0622 No return value
sample\prime.c(37): CC78K0R 警告信息 W0622 No return value
sample\prime.c(44): CC78K0R 警告信息 W0622 No return value
Target chip : uPD78F1176
Device file : Vx.xx
Compilation complete, 0 error(s) and 6 warning(s) found.
92
用户手册 U17838CA1V0UM00
第 5 章 编译选项
目标模块文件创建说明
(1) -O/-NO
[描述格式 ]
-O [输出文件名]
-NO
· 当省略时的解释
-o 输入文件名成 .rel
[ 功能]
· -O 选项指定输出目标模件文件。此外,还能指定输出文件的目录或者输出文件名。
· -NO 选项指定不输出目标模件文件。
[ 应用]
· 如果要改变目标模件文件的输出文件的目录或者输出文件名,可以指定-O 选项。
· 如果编译的目标只是输出汇编源模块文件,可以指定-NO 选项,从而减少编译时间。
[ 描述]
· 如果指定了-O 选项却省略了输出文件名称,目标模块文件名称为“输入文件名称.rel”。
· 当-O 选项被选定时,如果没有指定输出文件扩展名,输出的目标模块文件为“输出文件名称.rel”。
· 如果出现编译错误,即使-O 选项已经被选定,目标模件文件也仍然无法输出。
· 当-O 选项被选定时,如果没有指定驱动器名称,目标模件文件会输出到当前驱动器。
· 如果-O 选项与-NO 选项二者同时被选中,那么最后选择的选项有效。
[ 注意]
· 当使用 PM + 时,要想改变输出文件目录,需要在< Compiler Options > 对话框的< Output > 标签页中
的< Object Module File > 区域的< Output Path > 组合框里选择新的输出文件目录。
· 当指定了单独选项,输出文件名也可以改变。
· 在< Output >标签下的< Output File >组合框中选定文件名或输出文件目录。
用户手册 U17838CA1V0UM00
93
第 5 章 编译选项
[ 使用范例]
· 本实例里,-NO 和-O 选项都被选中,后指定的-O 选项有效,所以会输出目标模块文件(prime.o)。
C>CC78K0R -cf1166a0 prime.c -no -o
94
用户手册 U17838CA1V0UM00
第 5 章 编译选项
存储器分配说明
(1) (-R/-NR)
[描述格式 ]
-R [处理类型] (可以指定多种说明)
-NR
· 当省略时的解释
-nr
[ 功能]
· -R 选项指定了如何将一个程序分配到存储器中。
· -NR 选项表示-R 选项无效。
[ 应用]
· 如果想要指定一个程序在存储器中如何分配,选择-R 选项即可。
[ 描述]
· 下面列出能够用-R 选项指定的处理类型。
· 处理类型说明不能被忽略。否则,会出现异常中断错误(F0012)。
处理类型 功能
A
B
D[n][m]
(n = 1, 2, 4)
S[n][m]
(n = 1, 2, 4)
C
备注 可以指定多种处理类型。
以字节为单位间接引用。
分配一个位域从最高有效位开始存放 (MSB)。
将一个外部变量/外部静态变量 (除了常数类型变量) 自动分配到
saddr 寄存器区域,无论是否有 sreg 声明。
关于细节,请参阅“(2) –rd/-nr ”
将静态自动变量自动分配到 saddr 区域中,无论是否有 sreg 声明。
关于细节,请参阅“(3) –rs/-nr ”
以字节为单位间接引用。
对结构体成员进行打包压缩,按字节对齐。
用户手册 U17838CA1V0UM00
95
第 5 章 编译选项
· 当指定-NR 选项时,处理类型的含义如下。
处理类型 功能
A
B
D
S
C
[ 使用范例]
· 不论是否有 sreg 声明,将外部变量或外部静态变量和静态自动变量都自动分配到 saddr 区域。
C>CC78K0R -cf1166a0 -rds
不执行以字节为单位的间接引用。
分配一个位域从最低有效位开始存放 (LSB)。
不会将任何变量自动分配到 saddr 区域。
不会将任何变量自动分配到 saddr 区域。
不执行以字节为单位的间接引用。
不要对任何结构体成员打包压缩。
96
用户手册 U17838CA1V0UM00
第 5 章 编译选项
(2) (-RD/-NR)
[ 内存分配说明]
格式说明 -RD[n][m] (n = 1, 2, 4)
-NR
· 当省略时的解释
-nr
[ 功能]
· -RD 选项能够将外部变量/外部静态变量(除常数类型变量外)自动分配到 saddr 区域。
· -NR 选项使-RD 选项无效。
[ 应用]
· 如果想要将外部变量/外部静态变量(除常数类型变量外)自动分配到 saddr 区域,选定-RD 选项即可,
这与是否有 sreg 声明无关。
[ 描述]
· 待分配的变量类型会根据 n 的值而改变,是否指定了 m 也会有很大影响。
n,m 的值 待分配的变量类型
n=1
n=2
n=4
M
忽略 所有变量
字符型,无符号字符型
字符型,无符号字符型,短型,无符号短型,整型,无符号整型,指针型
字符型,无符号字符型短型,无符号短型,整型,无符号整型,枚举型,指
针型,长型,无符号长型
结构体,共用体和数组
· 用 sreg 进行声明的变量总是能够自动被分配到 saddr 区域,而不管是否指定了-RD 选项。
· 通过外部声明来引用的变量将被分配到 saddr 区域。
· 通过指定该选项被分配到 saddr 区域的变量和 sreg 变量的处理方法类似。
[ 使用范例]
· 不论是否有 sreg 声明,将 char 或 unsigned char 类型的外部变量或外部静态变量都自动分配到 saddr
区域。
C>CC78K0R -cf1166a0 –rd1
用户手册 U17838CA1V0UM00
97
第 5 章 编译选项
(3) (-RS/-NR)
[ 内存分配说明]
格式说明 -RS[n][m] (n = 1, 2, 4)
-NR
· 当省略时的解释
-nr
[ 功能]
· -RS 选项能够自动将静态自动变量分配到 saddr 区域。
· -NR 选项使-RS 选项无效。
[ 应用]
· 如果想要将静态自动变量自动分配到 saddr 区域,只需选定-RS 选项即可,这与是否有 sreg 声明无
关。
[ 描述]
· 待分配的变量类型会根据 n 的值而改变,是否指定了 M 也会有很大影响。
n, m 的值 待分配的变量类型
n=1
n=2
n=4
M
忽略 所有变量
字符型,无符号字符型
字符型,无符号字符型,短型,无符号短型,整型,无符
号整型,指针型
字符型,无符号字符型短型,无符号短型,整型,无符号
整型,列举型,指针型,长型,无符号长型
结构体,共用体和数组
· 用 sreg 进行声明的变量总是能够自动被分配到 saddr 区域,而不管是否指定了-RS 选项。
· 通过指定这个选项而分配到 saddr 区域的静态自动变量,与 sreg 声明的静态自动变量按照同样的方
法来处理。
[ 使用范例]
· 不论是否有 sreg 声明,将 char 或 unsigned char 类型的静态自动变量都自动分配到 saddr 区域。
C>CC78K0R -cf1166a0 –rs1
98
用户手册 U17838CA1V0UM00
第 5 章 编译选项
优化说明
(1) (-Q/-NQ)
[描述格式 ]
-Q[优化类型] (如果需要指定多种选项,连续指定即可)
-NQ
· 当省略时的解释
-QCJLVW
[ 功能]
· 指定-Q 选项会调用最优化方法来生成高效的目标代码。
· -NQ 选项使 -Q 选项无效。
[ 应用]
· 如果想要改善目标的执行速度并减少代码大小,请指定-Q 选项。
· 如果已经指定了 -Q 选项,又想要同时执行多种优化,就可以连续地指定多种优化类型。具体细节请
参阅[描述]。
[ 描述]
· 下表列出-Q 选项能够设定的优化类型。
优化类型 过程描述
无说明 默认为 -QCJLVW。
U 将没有用修饰符定义的字符型当作无符号字符型来处理,以改善代码效率。
C 直接进行字符型计算而无需提升为整型。
计算目标 计算结果
无符号字符类型变量和无符号字符
类型变量
无符号字符类型变量和有符号字符
类型变量
有符号字符类型变量和有符号字符
类型变量
介于-128 和 255 之间的常量和无符
号字符类型变量
介于-128 和 127 之间的常量和有符
号字符类型变量
带有后缀 U 介于 0 和 255 之间的常
量和有符号字符类型变量
无符号字符类型
无符号字符类型
有符号字符类型
无符号字符类型
有符号字符类型
无符号字符类型
用户手册 U17838CA1V0UM00
99
第 5 章 编译选项
优化类型 过程描述
R[n]( n = 1, 2 )
J
X[n]
(n = 1 到 2)
W
V 将参数和自动变量自动分配到寄存器或 saddr 区域。
L[n] (n = 1,2)
向寄存器中添加一个寄存器变量,并将它分配到 saddr 区域。
用于分配寄存器变量的范围会根据 n 的值有所变化,如果 n 值被忽略,将默认
为 n = 2 。
1: 将 norec 参数和自动变量分配到 saddr 区域
2: 将 norec 参数和自动变量和寄存器变量分配到 saddr 区域
优化转移指令。
根据执行速度/代码量的优先级来自动设置优化选项。
根据 n 值的不同选择不同的选项,具体如下。如果 n 被忽略,将默认 n = 2。
1: 速度优先。 认为指定了 -QCJVW 选项。
2: 默认值。 认为指定了 -QCJLVW 选项。
执行积极的优化策略。
改变表达式的执行次序来生成高效代码并提高寄存器的使用效率。
基于代码量优先的优化,用库来代替标准编码模式。如果未指定该选项,代码
的优化就基于速度优先策略。
根据 n 值的不同来选择不同的作用域,具体如下。如果 n 被忽略,则默认 n = 1。
1: 无替代。
2: 只在处理函数之前/之后才会执行。
· 可以指定多种优化类型。
· 如果-Q 选项或优化类型被忽略,优化效果完全等同于指定-QCJLVW 选项的情况。
· 根据实际情况删除部分不需要的缺省选项来准确指定自己的选项,而无需重新指定。(例如需要指定
-QR 选项→ 请删除 -QCJLVW) 。
· 如果目标模块文件和汇编源模块文件都没有输出,那么-QU 之外的选项都会无效。
· 如果-Q 和-NQ 选项同时被指定,最后指定的选项有效。
· 如果有多个-Q 选项同时被指定,最后指定的-Q 选项有效。
100
用户手册 U17838CA1V0UM00