如何生成库文件 (MDK 和 IAR) 问题 : 该问题由某客户提出, 主要是想自己做一个库给第三方, 但是又不想让别人得到源代码, 不知道如何去做, 尝试了几种办法, 发现都会有些问题. 调研 : 目前 ST 已经提供了各种开源的库文件 ( 如 USB/Ethernet 等等 ), 但是部分客户依

Similar documents
目录

bingdian001.com

Microsoft Word - CVersion doc

Microsoft Word - MSP430 Launchpad 指导书.docx

EK-STM32F

ebook50-15

封面及首頁.doc

¬¬






封面.PDF

chap-1_NEW.PDF

51 C 51 isp 10 C PCB C C C C KEIL

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

C语言的应用.PDF

<30312E20B9EFB7C5AF66BEC7A4A4A175A5CDAC7ABE69B3B1A176AABABDD7AA522E706466>

精 神 與 自 然 : 楊 慈 湖 心 學 研 究 趙 燦 鵬 哲 學 博 士 嶺 南 大 學 二 零 零 五 年

C/C++ - 函数

3. 企 业 债 券 : 公 司 债 券 : 5. 证 券 公 司 债 券 : 6. 企 业 短 期 融 资 券 : 7. 中 期 票 据 : 8. 资 产 支 持 证 券 : 9. 国 际 开 发 机 构 人 民 币 债 券 : 10. 中 小 非 金 融 企 业 集 合 票 据 例 题? 判 断

1. 請 先 檢 查 包 裝 內 容 物 AC750 多 模 式 無 線 分 享 器 安 裝 指 南 安 裝 指 南 CD 光 碟 BR-6208AC 電 源 供 應 器 網 路 線 2. 將 設 備 接 上 電 源, 即 可 使 用 智 慧 型 無 線 裝 置 進 行 設 定 A. 接 上 電 源

目 录

這 是 醫 生 在 小 兒 的 初 步 診 斷 的 判 語 這 樣 的 一 段 話, 令 我 望 子 成 龍 的 美 夢 碎 了 醣 豆 豆 大 夢 想 十 一 年 前 的 資 訊 沒 有 今 天 的 發 達, 互 聯 網 還 是 一 個 很 奢 侈 的 東 西, 加 上 黏 多 醣 症 這 個 罕


優質居所 攜手共建

<BBB6D3ADB7C3CECABFC6D1A7CEC4BBAFC6C0C2DB>

Olav Lundström MicroSCADA Pro Marketing & Sales 2005 ABB - 1-1MRS755673

AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING

% 6.% 9.6% % 7.% 1.8% % 68.7% 14.5% : 15.8% 57.9% 4.7%

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

Microsoft Word - Functional_Notes_3.90_CN.doc

流離所愛(完結篇)

CC213

Chn 116 Neh.d.01.nis

Applied Biosystems StepOne™ Real-Time PCR System Quick Reference Card for Installation

外围器件-new.cdr

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

% 29.9%.7% % 2% 2.1% % 45.2% 4.9% % 42.5% 14.8% % 41.5% 23.4%... 2

C C

学习MSP430单片机推荐参考书

Xear 3D USB CH-IN-2 SPKs 2 6 :

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

Microsoft Word - (web)_F.1_Notes_&_Application_Form(Chi)(non-SPCCPS)_16-17.doc

(baking powder) 1 ( ) ( ) 1 10g g (two level design, D-optimal) 32 1/2 fraction Two Level Fractional Factorial Design D-Optimal D

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

ebook70-14

Microsoft Word - Atmel-45136A-Pick-Best-Microcontroller-Strom-Eiland-Flodell_Article_CS

第 十 一 期 2015 年 2 月 关 于 车 辆 购 置 税 征 收 管 理 有 关 问 题 的 公 告 ( 点 击 跳 转 至 全 文 ) 国 家 税 务 总 局 公 告 2015 年 第 4 号 关 于 电 池 涂 料 消 费 税 征 收 管 理 有 关 问 题 的 公 告 ( 点 击 跳

Microsoft Word - Sears Guidebook _Chinese_ _ _.doc

cover01.doc

Microsoft Word - 山西焦化(600740)--焦炭价格上涨提升业绩,市场整合带来机会 doc

C++ 程式設計

:5-6

Microsoft Word - A1译者的话.doc

1 目 的 为 维 护 国 内 政 企 市 场 良 好 的 市 场 秩 序, 加 强 对 窜 货 等 重 大 违 规 行 为 的 管 理, 特 在 2016 年 中 兴 通 讯 国 内 政 企 市 场 窜 货 管 理 办 法 基 础 上 制 定 本 管 理 办 法 本 管 理 办 法 适 用 于 中

¬¬

<4D F736F F D20C4CFBEA9D0C2B0D9A3A A3A9A3BAC7C9BDB3BFAAB3F6BAC3D3F1C0B4A3ACB9D8D7A2D2B5CEF1BDE1B9B9B5F7D5FBA3BBCDB6D7CAC6C0BCB6A1B0BDF7C9F7CDC6BCF6A1B12E646F63>

PIC_SERVER (11) SMTP ( ) ( ) PIC_SERVER (10) SMTP PIC_SERVER (event driven) PIC_SERVER SMTP 1. E-

省政协委员陈志实:知识产权市场化须以法治方式推:大奖娱乐官方网站 进

Process Data flow Data store External entity 6-10 Context diagram Level 0 diagram Level 1 diagram Level 2 diagram

Logitech Wireless Combo MK45 English

<4D F736F F D20BABAC0A4D7A8B5DD20B5DA3635C6DAA3A C4EAB5DA37C6DAA3A9A3A8D6D0CEC4A3A9>

自然辩证法索引

V6800/V6600 3D

江 西 : 失 信 被 执 行 人 曝 光 台 写 入 两 会 报 告 摘 要 1 月 27 日, 江 西 省 十 二 届 人 大 五 次 会 议 举 行 第 二 次 全 体 会 议, 江 西 省 高 级 人 民 法 院 院 长 张 忠 厚 向 大 会 作 江 西 省 高 级 人 民 法 院 工 作

形 式 审 查 不 通 过, 将 说 明 原 因 并 予 退 回, 不 予 重 新 修 改 提 交 ( 形 式 审 查 常 见 主 要 问 题 参 考 附 件 3) ( 三 ) 申 请 人 下 载 打 印 网 上 状 态 为 请 交 纸 质 材 料 至 窗 口 受 理 的 申 报 书, 报 送 项

撤 离 你 听 到 了 吗? 它 们 已 经 进 了 墙 里 边 了 那 些 金 属 的 撞 击 声 在 狂 风 之 中 很 难 听 清, 但 断 然 不 会 有 错 围 坐 在 桌 边 的 四 人 靠 得 更 紧 了 些, 并 不 是 因 为 害 怕, 而 是 为 了 取 暖 你 们 觉 得 呢?

論 康 德 的 道 德 主 體 觀 歐 麗 穎 哲 學 碩 士 嶺 南 大 學 二 零 零 八 年

C/C++ - 文件IO

2002 Shintoukai Chinese Academy. All rights reserved 2

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

QQGQ2.E Power Supplies, Information Technology Equipment Including Ele... 1/10

試卷一


截 至 2016 年 3 月 23 日, 农 林 牧 渔 板 块 累 计 涨 幅 为 %, 在 申 万 28 个 一 级 行 业 分 类 中 排 名 第 八, 在 年 初 至 今 所 有 板 块 全 线 下 跌 的 情 况 下, 农 林 牧 渔 板 块 跌 幅 相 对 较 小 主 要 原

第 1 页共 9 页 文档履历 版本号日期制 / 修订人内容描述 V 正式版本

陳偉補習班環境介紹

<33352E20C0B3A5CEB2D5BEC7A7DEB34EB5FBBBF9A4A4C3C4B5C7AC72A9CAAABAACE3A873B669AE692E706466>

els0xu_zh_nf_v8.book Page Wednesday, June, 009 9:5 AM ELS-0/0C.8

B

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM

<32372E20B077A8EBABE1B7CBA5DEA4A3A650B260ABD7B9EFAA76C0F8AFABB867AEDAABACC056B4D5AF66AABAC0F8AEC4B1B4AFC12E706466>

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

MyCOS

untitled


China Academic Journal Electronic Publishing House. All rights reserved.

China Academic Journal Electronic Publishing House. All rights reserved.


幻灯片 1


C/C++程序设计 - 字符串与格式化输入/输出

Gerotor Motors Series Dimensions A,B C T L L G1/2 M G1/ A 4 C H4 E

Microsoft PowerPoint 中醫大簡報-1HR版 [相容模式]

C/C++语言 - C/C++数据

ChungShun_Beauty.pdf

bingdian001.com

Transcription:

如何生成库文件 (MDK 和 IAR) 问题 : 该问题由某客户提出, 主要是想自己做一个库给第三方, 但是又不想让别人得到源代码, 不知道如何去做, 尝试了几种办法, 发现都会有些问题. 调研 : 目前 ST 已经提供了各种开源的库文件 ( 如 USB/Ethernet 等等 ), 但是部分客户依然有使用 IDE 生成可加密的库文件的需求, 因各种 IDE 之间在生成库的方法上有些不同, 调用的方式也有细微的差别, 所以大部分工程师还是需要有一个初级入门的文档供来参考 结论 : 撰写了一个小的说明文档发给客户, 按照 demo 程序生成自己的库文件 处理 : 1. 适用范围本文基于 STM32F40xDiscovery 做的测试,MCU 为 :STM32F407VGT6 和 STM32F4101VCT6 关于其他 ARM 未做相关测试 但基本原理是相同的 2. 思路概述该文主要是讲解了在 Keil 和 IAR 环境中实现库文件的生成 并且如何使用已经生成的库函数 我们正常提供给别人的只有一个 *.h 和 *.lib 或 *.a, 这样可以既实现了代码的加密 ( 不可更改 ), 又会给别人一个方便调用的库函数. 3. 开发环境 IAR:V6.60

Keil:V5.0 硬件 :STM32F4DISCOVERY 和 STM32F401C-DISCO 4. 技术实现 在此以生成库的方式来实现亮 LED 为例 这里我们先编写两个文件,LED.c 和 LED.h. LED.h 文件内容 : * Name: LED.c * Purpose: low level LED functions * Note(s): *-----------------------------------------------------------------------------*/ #include "STM32F4xx.h" #include "LED.h" const unsigned long led_mask[] = {1UL << 12, 1UL << 13, 1UL << 14, 1UL << 15; initialize LED Pins *----------------------------------------------------------------------------*/ void LED_Init (void) { RCC->AHB1ENR = ((1UL << 3) ); /* Enable GPIOD clock */ GPIOD->MODER &= ~((3UL << 2*12)

(3UL << 2*13) (3UL << 2*14) (3UL << 2*15) ); /* PD.12..15 is output */ GPIOD->MODER = ((1UL << 2*12) (1UL << 2*13) (1UL << 2*14) (1UL << 2*15) ); GPIOD->OTYPER &= ~((1UL << 12) (1UL << 13) (1UL << 14) (1UL << 15) ); /* PD.12..15 is output Push-Pull */ GPIOD->OSPEEDR &= ~((3UL << 2*12) (3UL << 2*13) (3UL << 2*14) (3UL << 2*15) ); /* PD.12..15 is 50MHz Fast Speed */ GPIOD->OSPEEDR = ((2UL << 2*12) (2UL << 2*13) (2UL << 2*14) (2UL << 2*15) ); GPIOD->PUPDR &= ~((3UL << 2*12) (3UL << 2*13) (3UL << 2*14) (3UL << 2*15) ); /* PD.12..15 is Pull up */ GPIOD->PUPDR = ((1UL << 2*12) (1UL << 2*13) (1UL << 2*14) (1UL << 2*15) ); Function that turns on requested LED *----------------------------------------------------------------------------*/ void LED_On (unsigned int num) { if (num < LED_NUM) { GPIOD->BSRRL = led_mask[num]; Function that turns off requested LED *----------------------------------------------------------------------------*/ void LED_Off (unsigned int num) { if (num < LED_NUM) { GPIOD->BSRRH = led_mask[num]; Function that outputs value to LEDs *----------------------------------------------------------------------------*/ void LED_Out(unsigned int value) { int i; for (i = 0; i < LED_NUM; i++) {

if (value & (1<<i)) { LED_On (i); else { LED_Off(i); LED.h 文件内容 : * Name: LED.h * Purpose: low level LED definitions * Note(s): *---------------------------------------------------------------------------- * This file is part of the uvision/arm development tools. * This software may only be used under the terms of a valid, current, * end user licence from KEIL for a compatible version of KEIL software * development tools. Nothing else gives you the right to use this software. * * This software is supplied "AS IS" without warranties of any kind. * * Copyright (c) 2011 Keil - An ARM Company. All rights reserved. *----------------------------------------------------------------------------*/ #ifndef LED_H #define LED_H /* LED Definitions */ #define LED_NUM 4 /* Number of user LEDs */ extern void LED_Init(void); extern void LED_On (unsigned int num); extern void LED_Off (unsigned int num); extern void LED_Out (unsigned int value); #endif 4.1Keil 环境中库的应用 4.1.1 如何生成 *.Lib 新建一个工程, 命名 lib source, 添加 startup_stm32f4xx.s LED.c system_stm32f4xx.c 三个文件在工程 usr lib 里 : 注 : startup_stm32f4xx.s 和 system_stm32f4xx.c 在 keil 的安装目录中

在 Options 里设置 Create Library. 项 点击 F7, 运行生成 lib source.lib 文件 这时候在工程路径中就会生成 lib source.lib 这个文件 如下图 所示

4.1.2 如何调用库 在新建的工程中添加上我们所需要的 lib source.lib 文件和对应的头文件 LED.h, 在自建的主文件 use lib.c 中包含 LED.h 文件. use lib.c 文件的内容如下 : 注意 : 以下 IAR 中的文件也是相同的内容 #include "LED.h" int main(void) { LED_Init(); LED_On(0x1); LED_Off(0x1); LED_Out(0x3); 在工程中添加上 lib source.lib system_stm32f4xx.c startup_stm32f4xx.c 文件 如下图所 示 这时候我们的就可以正常调试了, 试试你的 LED 是不是按照库中所实现的功能来运行了.

注意 :system_stm32f4xx.c 和 startup_stmewf4xx.s 在上一个工程中可以复制过来, 这个部分的内容是相同的. 与 MCU 型号和 IDE 有关. 4.2IAR 环境中库的应用 4.2.1 如何生成 Lib 文件新建工程选择如图 : 右键 -Option OutPut 选择输出文件位置

选择 Library 的类型 选择优化最大

覆盖旧文件 直接运行生成 lib source.a 文件, 如下图所示 :

4.2.2 如何调用 IAR 生成的库文件 新建立一个 IAR 工程, 将生成的 lib source.a 文件添加到工程中 如下图所示 use lib.c 文件的内容不变. 即可编译调试代码运行情况了. 注意 :startup_stm32f40xx.s 和 system_stm32f4xx.c 是在 IAR 环境下的文件.use lib.c 与在 Keil 环 境下所使用的文件内容是相同的. 建议 : 类似的问题其实是工程师的一个基本技能, 以后我们是不是会针对工程师的基本技能出一个常见问题 集锦, 以便以后的工程师查阅