飞思卡尔提供的9S12系列单片机开发工具包 CodeWarrior Development Studio中包含一个非常有用的工具 libmaker, 可以将编译后的 obj 文件打包为库文件。还可以对现有的库文件进行一些基本的修改。这东东有什么用呢,首先,将一系列的 obj 文件打包为库文件后会提高最后的 Link 阶段的速度。还可以将自己一些不愿公开的代码打包为库文件,有助于知识产权的保护。
不说废话了,还是以一系列的例子来说明问题。首先假设我们的项目中有三个源文件。分别如下:
- /*add1.c*/
- char add1(char a){ return a + 1;}
-
- /*add2.c*/
- char add2(char a){ return a + 2;}
-
- /*add3.c*/
- char add1(char a){ return a + 3;}
这3个文件真是没个性,不过对于说明问题已经够用了。
编译后会形成三个 Object 文件:add1.c.o add2.c.o add3.c.o
然后可以利用 libmaker 将这三个 object 文件打包为库文件了。这里需要些命令行操作,不熟悉的可以找些 win 批处理文件的教程看看。
首先,在 .o 文件所在目录建个 a.bat 的批处理文件。里面加入两行代码:
set PATH="D:\Program Files\Freescale\CWS12v5.1\Prog";%PATH%cmd /k
如果你的CWS12安装在不同的目录,请做相应的修改。然后双击 a.bat 文件,会打开一个命令行窗口,并且设置好环境变量。
执行下面的命令:
Libmaker -Cmd( add1.c.o + add2.c.o + add3.c.o = add.lib)
上面命令的 + 号可以省略,写为:
Libmaker -Cmd( add1.c.o add2.c.o add3.c.o = add.lib)
执行的结果是相同的,都是产生 add.lib 文件。好了,库文件已经生成了。可以测试了。在 main.c 中加几行:
- add1(char a);
- char add2(char a);
- char add3(char a);
- void main(void)
- {
- unsigned int data;
- SCIInit();
- SCISetBaudRate (SCI0, 9600, 8192000L);
- EnableInterrupts;
- data = 1;
- data = add1(data); SCIPutChar(SCI0, data);
- data = add2(data); SCIPutChar(SCI0, data);
- data = add3(data); SCIPutChar(SCI0, data);
- for(;;)
- {
- _FEED_COP(); /* feeds the dog */
- } /* loop forever */
- }
上面代码中加了些串口操作是为了防止编译器自作聪明的把我的代码优化掉。然后将 add.lib 加入到项目中,编译。一切OK!
Libmaker 还有些其他的功能,下面给一些简单的例子。
将一个obj 文件添加到现有库文件中,语法如下:
Libmaker -Cmd(add.lib + add4.c.o = add.lib)
将一个 obj 文件移出 库文件:
Libmaker -Cmd(add.lib - add1.c.o = add.lib)
知道这些就够一般的应用了。如果还需要了解更多,请参看 Build Tools Utilities Manual。
关键字:Freescale 9S12 系列 单片机 libmaker
引用地址:
Freescale 9S12 系列单片机应用笔记(libmaker)
推荐阅读最新更新时间:2024-03-16 14:53
飞思卡尔半导体考虑为手机芯片部寻买家
美国知名芯片厂商飞思卡尔半导体(Freescale Semiconductor)日前宣布,正考虑将其手机芯片业务出售,或为其寻找合作伙伴,与其他企业组建合资公司。2006年12月,飞思卡尔被黑石和凯利私募股权基金公司以176亿美元收购,实现了私有化。 据国外媒体报道,飞思卡尔表示,之所以作出该决定,是因为飞思卡尔手机芯片的大客户摩托罗拉自身难保。如果进展顺利,飞思卡尔将在未来数月内确定具体方案,为手机芯片部门找好下家。 2004年期间,飞思卡尔从摩托罗拉分拆出来成为独立公司;2006年12月,飞思卡尔又被黑石和凯利私募股权公司以176亿美元收购,并被私有化。 这家位于德州奥斯汀的公司日前在声明中表示,今后将大
[手机便携]
C&K 推出紧凑型 LCW 系列超小型密封微动开关
新型高性价比微动开关, 安装在 PCB 上可有效节省空间 高品质机电开关领先制造商C&K 宣布推出紧凑型 LCW 系列超小型密封微动开关。第一款新产品接触额定电流最高 0.1 amp, 具有高度可重复作动的特点, 非常适合极高精度检测应用, 例如电动设备中的温度和压力切换、污水泵恒温控制和空调。 这款微动开关提供多种起动器配置(销柱塞、短杆、横杆和模拟杆), 适应能力强。PCB 上安装使用时, 其紧凑设计和丰富的终端配置可更有效地利用可用的 PCB 空间。 微动开关的一个主要优点是能够检测任何故意破坏。例如, 如果某人强行损坏电能表, 则按扣机制将自动发送信号以检测此攻击 ─ 这是在远程或难以到达的位置更多地用于
[工业控制]
基于单片机的固定电话短信息终端的开发
现在,短信息服务日益普及。各个电话机厂家竞相设计和开发短信息终端电话。为配合我所开发的短信息终端专用集成芯片,我们设计开发出了可发送和接受短信息的固定电话。此电话除具有来电显示功能外,还能够接收信息中心下传的FSK格式短信,可以利用DTMF和FSK两种格式上传信息。有比较好的人机界面,能够采用拼音输入方法编辑短信内容。能够存储200个电话,200个下载的短信,实现电话号码的查找,下载短信的阅读,时钟显示等功能。下面先从硬件方面介绍系统的设计。 硬件部分 图1 系统硬件原理框图 图2
[单片机]
51单片机基础之DS18B20温度传感器
外型: 代码: main.c 文件 #include smg.h #include ds18b20.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { u8 i=0; int t
[单片机]
单片机C语言教程:附录2 AT89C51特殊功能寄存器列表
附录二 AT89C51特殊功能寄存器列表(适用于同一架构的芯片) 带*号的特殊功能寄存器都是可以位寻址的寄存器
[单片机]
基于GSM和MCU的远程家电控制系统
短消息业务(SMS)作为GSM的一种增值服务,在远程智能控制系统中得到了广泛的应用,基于GSM短消息的远程家电控制系统,克服了电话远程家电控制系统电话费用高,控制时间长等的缺点,具有良好可扩展性和实用价值。 近年来,短消息业务(SMS)作为GSM的一种增值服务,随着GSM网络覆盖范围的不断扩大,得到了迅速发展,它具有传输速度快,费用低,不占用语音通信通道等优点,因而在远程智能控制系统中得到了广泛的应用,如:基于GSM和GPS的车辆跟踪监视系统,基于GSM的远程LED信息发布系统等,笔者结合具体项目,设计了一套基于GSM短消息的远程家电控制系统,克服了电话远程家电控制系统电话费用高,控制时间长等缺点,取得了较好的效果。
[单片机]
MCS-51系列单片机在SDH系统中的应用
同步数字序列SDH(Synchronous Digital Hierarchy)是一种全新的传输网体制,自从90年代初出现以来,SDH以其各方面的优越性迅速成为通信网络的骨干网络。目前世界各国大多以SDH作为通信的骨干网络。在我国,干线网络也基本采用了SDH网络。 SDH系统与原有PDH(Plesinchronous Digital Hiearchy)系统相比,最突出的优点就是具有强大的网络管理能力。在SDH的帧结构的各个层次中,都提供了丰富的开销字节,以实现对不同层次信号的全面管理。 1. SDH系统介绍 清华大学电子工程系自主开发了SDH大规模专用集成电路套片,它包括高阶复用芯片MXH0155-2,实现从VC4信
[单片机]
微控制器的FSMC到底是咋回事?(下)
摘要:上一篇文章我们具体讲解了FSMC的原理配置,这一章主要是关于使用FSMC的SRAM初始化流程,以及使用STM32CubeMX对FSMC进行配置。 一、SRAM初始化流程 通过上面的讲解,通过对 FSMC 相关的寄存器的描述,大家对 FSMC 的原理有了一个初步的认识,如果还不熟悉的朋友,请一定要搜索网络资料理解FSMC的原理。只有理解了原理,使用库函数才可以得心应手。那么在库函数中是怎么实现FSMC的配置的呢?FSMC_BCRx,FSMC_BTRx 寄存器在库函数是通过什么函数来配置的呢?下面我们来讲解一下 FSMC 相关的库函数: 1.1 使能FSMC时钟 要使用FSMC,当然首先得开启其时钟。然后需要把
[单片机]