1 前言
1.1 说明
本文是应用工程师使用SDCC编译器对N76E003代码进行编译,对其经验进行总结。代码基于Nuvoton的NuTiny-SDK-N76E003 V2.1开发板(带调试器)。
由于时间仓促于及编写人员的经验限制,本文可能存在不当之处,敬请指正。
1.2 SDCC概述
SDCC(Small Device C Compiler)是一个优化的 ANSI - C交叉编译器,目标CPU为基于Intel 8051, Maxim 80DS390,Zilog Z80和Motorola 68HC08的单片机。
SDCC是免费开源的软件,依据GNU General Public License (GPL) 发布。
可通过网址
http://sdcc.sourceforge.net/获取进一步信息。
2 资源准备
2.1 环境准备
对于习惯使用IDE进行MCU开发的用户而言,使用SDCC开发时,建议的IDE为CodeBlock或TKStudio测试情况见表下表。
使用最新版本的CodeBlock+SDCC时,看门狗执行存在异常;使用较早版本的执行正常,关于CodeBlock下使用SDCC建立及编译工程可参考:
https://blog.csdn.net/ouening/article/details/71547108。
若不想进行搭建CodeBlock环境、或者的担心版本问题,可使用内置SDCC的TKStudio(该软件已经停止开发维护,Full版本自带了编译器)。
2.2 源代码修改
若原来使用Keil等软件开发,在使用SDCC编译前需要对MCU的头文件及部分源代码进行修改(SDCC的sfr、sbit、bit、code及中断函数等语法存在差异)。
2.2.1 MCU头文件修改
1) 针对N76E003的头文件需要对特殊功能寄存的定义进行修改,修改语法参考如下:
原为:sfr EIPH1 = 0xFF;
改为:__sfr __at (0xFF) EIPH1;
2) 针对位寻址寄存器修改语法参考:
原为:sbit SM0_1 = SCON_1^7;