DS80C400微控制器的ROM包含多种功能,可通过由8051汇编语言、C或Java编写的程序访问。DS80C400的ROM功能提供成熟的MxTNI™网栈、进程调度和存储器管理,是开始构建C和汇编程序的最佳选择。对于简单程序,可以用汇编语言轻松实现。对于更复杂的程序,C语言可以充分利用Dallas Semiconductor提供的ROM组件和软件库。这些软件库帮助您利用Keil µVision2®、SDCC和IAR 8051编译器构建应用程序。

本应用笔记阐述了如何开始使用8051 IAR Embedded Workbench™来创建DS80C400的C语言应用程序。通过一个简单的HTTP服务器演示如何使用DS80C400的ROM功能。所有开发都采用TINIm400验证模块和包含6.11A版本C编译器的8051 IAR Embedded Workbench。

从8051 IAR Embedded Workbench开始

本节阐述如何使用IAR Embedded Workbench套件创建一个C语言编写的Hello World程序,即您的第一个DS80C400 C应用程序。

安装IAR Embedded Workbench

选择File→New→Workspace,在工作空间窗口,输入workspace名称appnote

选择Project→Create New Project。在出现的对话框中,输入项目名称hellowworld,并确定选择了8051作为工具链

当左侧的项目窗口打开时,选择Project→Add Files...。在弹出的对话框中,将files of type改为汇编程序文件。添加文件Cstartup.s51,该文件可在Download的zip文件中找到

双击并打开文件Cstartup.s51。找到程序段声明RSEG CSTART:CODE:ROOT(0)。这是代码段的开始。变量段的起始地址在link51ew_400.xcl中声明。代码的开始在文件中的0x400000h进行声明。另外,应有一个DB 'TINI'行,后跟另一个DB, high(?INIT)',带有注释Target Bank。这样就可以确保应用程序对应于TINIm400 flash的起始地址

建立新文件main.c。在该文件中写入如下代码:

#include

#include

void main ()

{

printf("Test program using IAR compiler");

while (1)

{

}

}

保存文件内容。通过选择Project→Add Files,然后在文件对话框中选择main.c,这样就把刚建立的文件加入到项目hellowworld中。确定加入的文件就是您建立的文件main.c;因为在默认目录中很有可能存在另一个具有相同名字的文件

同样,将文件low_level_init.s51和putchar.c加入到项目中。low_level_init.s51文件包含初级DS80C400初始化程序;putchar.c文件包含将字符输出至默认控制台的初级程序

从ftp://ftp.dalsemi.com/pub/TIni/ds80c400/c_libraries/iar/bin/init.zip复制ROM initialization库文件,并将其解压缩到相同目录下。将rominit.r51库文件添加到项目中

在编译Hello_World应用程序之前,我们需要配置IAR工具链来满足DS80C400的目标要求

选择Project→Options→General

单击Target标签并浏览,在Derivative中选择DS80C400。将Extended stack at:对应的地址值改为0xFFDC00。这是因为IAR起始代码重新定位DS80C400硬件堆栈至0xFFDC00。对应这些设置请参考图1。

单击Data Pointer标签。选择Number of DPTRs = 1。这是因为由Dallas Semiconductor所提供的库文件是在该选项下产生。

图1. 选择新的IAR 8051项目Target选项。

选择Project-Options→Options→ICC8051

单击Code标签。选择Optimizations下的Size和None。

单击List标签。选择Output List File和Output assembler File。

单击Preprocessor标签。在include路径中放入以下程序:

$TOOLKIT_DIR$\INC\

$TOOLKIT_DIR$\INC\CLIB

$TOOLKIT_DIR$\src\lib

$TOOLKIT_DIR$\src\lib\clib

..\include\

上面最后一行是库的头文件(*.h)所处的include路径。确定头文件在上面指定的路径中。$TOOLKIT_DIR$与IAR安装路径有关(例如,c:/program files/iar systems/embedded workbench 3.n/8051)。

选择Project→Options→A8051

单击List标签。选中Output List File。

单击Preprocessor标签,在include路径中放入以下程序:

$TOOLKIT_DIR$\INC\

$TOOLKIT_DIR$\src\lib

..\include\

上面最后一行是库的头文件(*.h; *.inc)所处的include路径。确定头文件在上面指定的路径中。

选择Project-→Options→XLINK

单击Output标签

在Output file中,选择Override default,并将文本文件名改为hello_world.hex。

在Format中,选择Other,并从选项中选择Intel Extended。详情请参考图2。

单击List标签。选择Generate Linker Listing。

单击include标签,参考图3。

选择Ignore CSTARTUP in Library。

单击Override default,将文件名改为$TOOLKIT_DIR$\config\lnk51ew_400.xcl

。 $TOOLKIT_DIR$与IAR安装路径有关(例如,c:/program files/iar systems/embedded workbench 3.n/8051)。确定文件lnk51ew_400.xcl和lnk_base_400.xcl在指定的路径中。可在zip文件Download中找到这些文件。

图2. 选择新的IAR 8051项目的XLINK Output选项。

图3. 选择新的IAR 8051项目的XLINK Include选项。

建立Hello_World应用程序。如果正确完成了每一步,建立过程应不会出现错误或警告信息;之后会在/debug/exe目录中产生hello_world.hex。如果你的项目配置为Release,那么hex文件将在/release/exe目录中产生。

现在已经生成了可执行文件,我们需要将应用程序装载到TINIm400模块中并运行。

iar编译器添加c语言标准库,用IAR编译器开发DS80C400相关推荐

  1. Go 语言标准库中 atomic.Value

    在 Go 语言标准库中,sync/atomic包将底层硬件提供的原子操作封装成了 Go 的函数.但这些操作只支持几种基本数据类型,因此为了扩大原子操作的适用范围,Go 语言在 1.4 版本的时候向sy ...

  2. iar定义arm版本_Keil MDK 和 IAR 两款ARM开发工具区别比较

    首先要说明,没有那款开发工具是万能的,也没有那款工具在所有方面都具有绝对优势.对于Keil MDK-ARM和IAR两款工具择,可以根据自己的习惯来选择,而不应该在使用其中的一款时贬低另外一款,或者总是 ...

  3. 【C语言】标准库(头文件、静态库、动态库),windows与Linux平台下的常用C语言标准库

    一.Introduction 1.1 C语言标准库 1.2 历代C语言标准 1.3 主流C语言编译器 二.C语言标准库 2.1 常用标准头文件 2.2 常用标准静态库 三.windows平台 四.Li ...

  4. C/C++——C语言标准、C语言标准库、 C标准库实现glibc, uClibc, Elibc

    C语言标准 C语言作为一种常用的计算机开发语言,被用于各种领域,尤其是单片机与嵌入式的开发,在现阶段更有着无可替代的作用,我也经常会使用C语言进行各种开发,使用过程中我们经常会听说 GUN C .AN ...

  5. iar定义arm版本_IAR Systems发布 IAR Embedded Workbench for ARM新版本

    IAR Systems发布IAR Embedded Workbench for ARM嵌入式开发平台最新版本V5.41.相比于之前的版本,新版本软件在支持Cortex-M0上,将代码大小和执行速度这两 ...

  6. mysql netcdf_Linux下用Intel编译器编译安装NetCDF-Fortan库(4.2以后版本)

    本来这个问题真的没必要写的,可是真的困扰我太久%>_ 首先,最权威清晰的安装文档还是官方的: 那这个文档最开始就告诉我们,自NetCDF库4.2版本以后,Fortran的库和C的库就要分开bui ...

  7. C语言标准库stdlib.h

    本文将介绍 C语言标准库<stdlib.h> 中的 宏.函数.数据类型 在最后给出一个实例程序,尽可能运用到所有函数 宏 EXIT_SUCCESS 和 EXIT_FAILURE exit函 ...

  8. C语言标准库深度整理

    文章目录 引言 stdio.h 常量和指针 打开文件 FILE结构体 文件读写和定位 文件和路径的其他操作 get和put printf stdlib.h 内存分配 系统交互 system函数 字符串 ...

  9. linux添加include环境变量,Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量

    Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量 15:12) 标签: 编译器 Linux 分类: 转载一些有用的文章 (2012-01-31 对所有用户有效在/etc/prof ...

最新文章

  1. UNIX中的Poll函数
  2. java properties更新_对Java配置文件Properties的读取、写入与更新操作
  3. 新锐商务首选!HP EliteBook 745 G5图评
  4. JS高级 - 面向对象5(继承,引用)
  5. PHP5魔术函数与魔术常量
  6. 偏移shaderuv_Unity Shader 之 uv动画
  7. 为何美洲蝉中意17这个质数?
  8. html hover效果下拉个框,关于下拉菜单(CSS)中,“:hover”样式的设置问题?
  9. 腾讯荣升Linux基金会白金会员助力支持开源社区
  10. hive窗口函数入门
  11. 数据库存储 层次、树形结构 的标准做法
  12. 中国光谷·“华为杯”第十九届中国研究生数学建模竞赛LaTeX模版
  13. OSX更新后JRE6被删除引发了问题
  14. 在线社交网络(Online Social Networks,OSNs)
  15. 提高计算机软件速度的方法,提高电脑速度的10个有效方法
  16. 酒类电商1919获阿里巴巴20亿元战略投资,估值达70亿元
  17. 结合 服务器+后端+前端,完成 vue项目 后台管理系统
  18. CReLU与PReLU的大体简介
  19. 文章《Deep Image Homography Estimation》
  20. 自动滑动背景图片html,html背景图片滚动属性bgproperties

热门文章

  1. 用mobx-react框架wukong撸个电影网站
  2. 前端css解决z-index 上层元素遮挡下层元素的方法
  3. K3实现按虚拟件/组件发料
  4. 功能:清空聊天记录页面
  5. 从山景城看,Android看起来像什么? 关于Google I / O的见解
  6. HiveHive创建数据库与创建数据库表
  7. 单片机软件定时器V1.0,可大批量创建,操作简单
  8. MD数据公式格式总结
  9. 点云分割训练哪家强?监督,弱监督,无监督还是半监督?
  10. C语言可以应用在哪些领域?