CN111856989A - 一种单片机动态链接方法 - Google Patents
一种单片机动态链接方法 Download PDFInfo
- Publication number
- CN111856989A CN111856989A CN202010565207.9A CN202010565207A CN111856989A CN 111856989 A CN111856989 A CN 111856989A CN 202010565207 A CN202010565207 A CN 202010565207A CN 111856989 A CN111856989 A CN 111856989A
- Authority
- CN
- China
- Prior art keywords
- linked
- linker
- symbol
- chip microcomputer
- single chip
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0423—Input/output
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/23—Pc programming
- G05B2219/23262—DDE direct data exchange, DLL dynamic library linking
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Automation & Control Theory (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种单片机动态链接方法,本发明的方法基于改进的存储布局结构实现,所述改进的存储布局结构为:将单片机存储区域划分为一个链接者和至少一个被链接者;所述链接者用于实现初始化和相应的业务功能;所述被链接者作为被链接程序完成各静态库的功能和符号操作接口;所述链接者和被链接者之间进行双向动态链接。本发明改变了单片机程序开发的组织形式,将各参研方模块进行解耦,各自编译和烧写自己负责的模块,各模块可独立升级。
Description
技术领域
本发明涉及单片机技术领域,具体涉及一种单片机动态链接方法,以及用于执行该动态链接方法的计算机存储介质。
背景技术
不带复杂操作系统的单片机程序一般是将所有程序作为一个整体编译成一个二进制或者十六进制文件,内存也同样作为一个整体进行使用。当单片机里的程序由多方共同完成,出于对各方知识产权的保护往往通过静态库的方式提供出来,由集成方将所有库和程序进行集成编译出可烧写的文件,如图1所示。
这样的处理方式使得静态库提供方对代码的修改需要集成方重新编译,重新发布程序。静态库提供方不能单独升级程序,不能有独立的构型,底层程序和应用程序强耦合。针对像航空这样对构型管理严格的行业,这样的处理方式存在很多不足,比如,不便于参与程序开发的各方对各自的代码进行修改、编译和管理等。
发明内容
本发明针对上述的问题,提出一种单片机动态链接方法,让参与程序开发的各方都有独立的构型,可独立升级,互不影响,物理上解耦底层程序和应用程序,灵活性更强。
本发明通过下述技术方案实现:
一种单片机动态链接方法,该方法基于改进的存储布局结构实现,所述改进的存储布局结构为:将单片机存储区域划分为一个链接者和至少一个被链接者;
所述链接者用于实现初始化和相应的业务功能;
所述被链接者作为被链接程序完成各静态库的功能和符号操作接口;
所述链接者和被链接者之间进行双向动态链接。
为了让参与开发的各方程序互相独立,不能采用静态库的方式进行集成,本发明提出将静态库编译成特定格式可执行程序的方式,提前将单片机存储区域(FLASH和RAM内存) 资源进行分配,各方将自己的程序烧写入对应的分区,实现单片机动态链接。
单片机存储器分为程序存储器和数据存储器,通常程序存储器采用FLASH存储器,数据存储器采用RAM存储器,因此本发明的被链接者的存储格式为:
被链接者在FLASH中,包括魔数、代码段、只读数据段和数据段;
所述代码段包括符号操作接口函数、内存初始化接口函数和其他函数;
被链接者在内存RAM中,包括数据段和bss段。
优选的,本发明的魔数放在分配FLASH的起始地址处用以判断该FLASH分区是否烧写有效的程序。
优选的,本发明的符号操作接口函数作为整个程序的入口地址,固定从魔数后面的空间开始存放,且所示符号操作接口函数供链接者调用,完成符号的设置和获取操作。
优选的,本发明的内存初始化接口函数供链接者调用,完成被链接程序的内存环境(包括数据段和bss段)重建。
优选的,本发明的动态链接方式具体包括:
步骤S1,通过链接者实现动态链接初始化,使得链接者和被链接者能够互相调用对端的函数或者使用对端的数据;
步骤S2,通过符号操作接口实现链接者和被链接者间的符号交换;
步骤S3,采用符号映射方式实现函数和数据的直接调用。
优选的,本发明的符号映射以指针或者表的方式完成函数和数据的映射。
优选的,本发明的符号操作接口函数作为被链接者的入口函数,提供获取和设置被链接者的符号,完成名称到符号的映射。
另一方面,本发明还设置了一种计算机存储介质,该计算机存储介质被配置为执行本发明的上述单片机动态链接方法。
本发明具有如下的优点和有益效果:
1、本发明改变了单片机程序开发的组织形式,将各参研方模块进行解耦,各自编译和烧写自己负责的模块,各模块可独立升级。
2、本发明能够实现各程序间的双向符号映射链接。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1为传统的单片机存储结构示意图。
图2为本发明的改进的单片机存储布局示意图;
图3为本发明的被链接者存储结构示意图。
图4为本发明的双向动态链接示意图。
图5为本发明的动态链接初始化流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例
本实施例提出了一种单片机动态链接方法。
为了让参与开发的各方程序互相独立,不能采用静态库的方式进行集成,我们提出将静态库编译成特定格式可执行程序的方式,提前将FLASH和RAM资源进行分配,各方将自己的程序烧写入对应的分区。
如图2所示,将单片机存储区域划分为一个链接者和至少一个被链接者。
其中,APP1作为链接者,完成单片机中断向量维护,最基本的初始化和相应的业务功能,通过动态链接的方法启动其余程序,它是一个正常的单片机程序。
APP2及后面的其它APP作为被链接程序完成传统方式中各静态库的功能和符号操作接口,其存储格式如图3所示。
被链接者在FLASH中有魔数,代码段,只读数据段和数据段,在内存RAM中有数据段和bss段。
被链接者程序存储格式的各部分作用为:
1、被链接程序的魔数放在分配FLASH的起始地址处用以判断该FLASH分区是否烧写有效的程序;
2、符号操作接口函数作为整个程序的入口地址,固定从魔数后面的空间开始存放,该函数供链接者调用,完成符号的设置和获取操作;
3、被链接程序必须提供一个内存初始化接口,该函数供链接者调用,完成被链接程序的内存环境重建,包括数据段和bss段的重建。
基于上述存储布局以及被链接者的存储格式,链接者和被链接者之间进行双向动态链接,本实施例中以两个程序(1个链接者和1个被链接者)之间的交互关系为例进行阐述具体的动态链接过程包括:
动态链接初始化接口,符号操作接口和符号映射。
具体如图4所示。
(1)动态链接初始化接口
链接者需要实现动态链接初始化的功能,它完成映射关系的建立和被链接者内存初始化,其流程图如图5所示。
如图5所示,动态链接初始化接口流程具体包括以下步骤:
一、链接者通过获取被链接者的魔数并判断魔数是否有效,有效则获取内存初始化接口;
二、调用内存初始化接口函数;
三、获取本体调用接口建立本体符号映射;
四、设置对端调用接口建立对端符号映射。
完成初始化后链接者和被链接者就可以互相调用对端的函数。
(2)符号操作接口
符号操作接口函数作为被链接者的入口函数,提供获取和设置被链接者的符号,完成名称到符号的映射,该接口必须提供被链接者的内存初始化函数给链接者。
(3)符号映射
符号映射主要是以指针或者表的方式完成函数和数据的映射,完成映射后函数和数据可被直接调用。
本实施例还能够采用上述方法实现多个程序之间的动态链接,即一个程序作为链接者,另外的程序作为被链接者,采用如图4所示的交互方式实现链接者和被链接者之间的双向动态链接。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和 /或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和 /或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种单片机动态链接方法,其特征在于,该方法基于改进的存储布局结构实现,所述改进的存储布局结构为:将单片机存储区域划分为一个链接者和至少一个被链接者;
所述链接者用于实现初始化和相应的业务功能;
所述被链接者作为被链接程序完成各静态库的功能和符号操作接口;
所述链接者和被链接者之间进行双向动态链接。
2.根据权利要求1所述的一种单片机动态链接方法,其特征在于,所述被链接者的存储格式为:
被链接者在FLASH中,包括魔数、代码段、只读数据段和数据段;
所述代码段包括符号操作接口函数、内存初始化接口函数和其他函数;
被链接者在内存RAM中,包括数据段和bss段。
3.根据权利要求2所述的一种单片机动态链接方法,其特征在于,所述魔数放在分配FLASH的起始地址处用以判断该FLASH分区是否烧写有效的程序。
4.根据权利要求2所述的一种单片机动态链接方法,其特征在于,所述符号操作接口函数作为整个程序的入口地址,固定从魔数后面的空间开始存放,且所示符号操作接口函数供链接者调用,完成符号的设置和获取操作。
5.根据权利要求2所述的一种单片机动态链接方法,其特征在于,所述内存初始化接口函数供链接者调用,完成被链接程序的内存环境重建。
6.根据权利要求2-5任一项所述的一种单片机动态链接方法,其特征在于,所述动态链接具体包括:
步骤S1,通过链接者实现动态链接初始化,使得链接者和被链接者能够互相调用对端的函数或者使用对端的数据;
步骤S2,通过符号操作接口函数实现链接者和被链接者间的符号交换;
步骤S3,采用符号映射方式实现函数和数据的直接调用。
7.根据权利要求6所述的一种单片机动态链接方法,其特征在于,所述符号映射以指针或者表的方式完成函数和数据的映射。
8.根据权利要求6所述的一种单片机动态链接方法,其特征在于,所述符号操作接口函数作为被链接者的入口函数,提供获取和设置被链接者的符号,完成名称到符号的映射。
9.一种计算机存储介质,其特征在于,该计算机存储介质被配置为执行如权利要求1-8任一项所述的单片机动态链接方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565207.9A CN111856989A (zh) | 2020-06-19 | 2020-06-19 | 一种单片机动态链接方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565207.9A CN111856989A (zh) | 2020-06-19 | 2020-06-19 | 一种单片机动态链接方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111856989A true CN111856989A (zh) | 2020-10-30 |
Family
ID=72987668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010565207.9A Pending CN111856989A (zh) | 2020-06-19 | 2020-06-19 | 一种单片机动态链接方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111856989A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101277265A (zh) * | 2008-05-07 | 2008-10-01 | 浙江大学 | 一种无线传感网络中加速加载elf文件的方法 |
TWI327710B (en) * | 2004-08-27 | 2010-07-21 | Hon Hai Prec Ind Co Ltd | Method for burning bios online |
CN105117210A (zh) * | 2015-07-28 | 2015-12-02 | 苏州大学 | 一种面向wscn的图形化编程系统 |
CN105224370A (zh) * | 2015-10-21 | 2016-01-06 | 安一恒通(北京)科技有限公司 | 一种加载elf文件的方法和装置 |
CN105808298A (zh) * | 2016-03-08 | 2016-07-27 | 大连楼兰科技股份有限公司 | 一种单片机下模块的动态加载方法 |
CN108628643A (zh) * | 2018-03-30 | 2018-10-09 | 深圳市伟文无线通讯技术有限公司 | 单片机系统软件加载方法 |
CN109445856A (zh) * | 2018-09-17 | 2019-03-08 | 深圳点猫科技有限公司 | 一种基于教育系统的加速应用启动的方法及电子设备 |
CN109542532A (zh) * | 2018-10-29 | 2019-03-29 | 中国科学院西安光学精密机械研究所 | 一种从fpga配置芯片向单片机进行程序加载的方法 |
CN110851140A (zh) * | 2019-11-11 | 2020-02-28 | 艾体威尔电子技术(北京)有限公司 | 一种实现单片机动态库的系统及方法 |
-
2020
- 2020-06-19 CN CN202010565207.9A patent/CN111856989A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI327710B (en) * | 2004-08-27 | 2010-07-21 | Hon Hai Prec Ind Co Ltd | Method for burning bios online |
CN101277265A (zh) * | 2008-05-07 | 2008-10-01 | 浙江大学 | 一种无线传感网络中加速加载elf文件的方法 |
CN105117210A (zh) * | 2015-07-28 | 2015-12-02 | 苏州大学 | 一种面向wscn的图形化编程系统 |
CN105224370A (zh) * | 2015-10-21 | 2016-01-06 | 安一恒通(北京)科技有限公司 | 一种加载elf文件的方法和装置 |
CN105808298A (zh) * | 2016-03-08 | 2016-07-27 | 大连楼兰科技股份有限公司 | 一种单片机下模块的动态加载方法 |
CN108628643A (zh) * | 2018-03-30 | 2018-10-09 | 深圳市伟文无线通讯技术有限公司 | 单片机系统软件加载方法 |
CN109445856A (zh) * | 2018-09-17 | 2019-03-08 | 深圳点猫科技有限公司 | 一种基于教育系统的加速应用启动的方法及电子设备 |
CN109542532A (zh) * | 2018-10-29 | 2019-03-29 | 中国科学院西安光学精密机械研究所 | 一种从fpga配置芯片向单片机进行程序加载的方法 |
CN110851140A (zh) * | 2019-11-11 | 2020-02-28 | 艾体威尔电子技术(北京)有限公司 | 一种实现单片机动态库的系统及方法 |
Non-Patent Citations (1)
Title |
---|
李艳丽等: "面向传感网节点的动态加载器的研究和实现", 《传感技术学报》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5639274B2 (ja) | 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有 | |
CN101517536B (zh) | 带多重优化的函数级即时翻译引擎 | |
CA2768752C (en) | Terminal device of non-android platform for executing android applications, and computer readable recording medium for storing program of executing android applications on non-android platform | |
US10929149B2 (en) | Method and system for updating firmware | |
WO2017185606A1 (zh) | 基于overlay机制的APK开发方法及系统 | |
CN101681294B (zh) | 用于存储器事务分组的方法和系统 | |
EP2494454A1 (en) | Two way communication support for heterogenous processors of a computer platform | |
CN101937356B (zh) | 一种编译WebKit浏览器的方法及装置 | |
CN114077462A (zh) | 软件操作系统调用Android HIDL接口的方法、装置、设备及介质 | |
CN115629971A (zh) | 一种应用的开发系统和开发方法 | |
CN114077460A (zh) | 软件操作系统调用Android动态库HAL接口的方法、设备及介质 | |
CN114398172A (zh) | 资源配置方法、装置、电子设备及计算机可读存储介质 | |
EP3207453A1 (en) | Api versioning independent of product releases | |
US20020174266A1 (en) | Parameterized application programming interface for reconfigurable computing systems | |
CN112306539B (zh) | 一种单片机应用层开发方法、系统、终端及介质 | |
CN105335203B (zh) | 共享库的二进制翻译执行方法和装置 | |
CN113253978A (zh) | 嵌入式软件开发方法、模型、电子设备和介质 | |
CN111856989A (zh) | 一种单片机动态链接方法 | |
CN106294143B (zh) | 芯片的寄存器的调试方法及装置 | |
Werner et al. | Virtualized on-chip distributed computing for heterogeneous reconfigurable multi-core systems | |
JP2000010791A (ja) | グロ―バルレジスタを初期化するための方法、コンピュ―タプログラム製品及び装置 | |
CN117008984A (zh) | 一种基于多核异构的可执行文件加载系统和芯片 | |
US20200401415A1 (en) | Operating system architecture for microkernel generations support | |
CN114391155A (zh) | Gpu着色器程序迭代调用方法、gpu、编译器和gpu驱动器 | |
CN113031956A (zh) | 程序编译方法和装置以及程序运行方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201030 |
|
RJ01 | Rejection of invention patent application after publication |