CN111190658A - 一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统 - Google Patents
一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统 Download PDFInfo
- Publication number
- CN111190658A CN111190658A CN202010016573.9A CN202010016573A CN111190658A CN 111190658 A CN111190658 A CN 111190658A CN 202010016573 A CN202010016573 A CN 202010016573A CN 111190658 A CN111190658 A CN 111190658A
- Authority
- CN
- China
- Prior art keywords
- application program
- program
- application
- main
- main program
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统,其特征在于,包含主程序和应用程序;主程序包含应用程序加载模块和应用程序清除模块;应用程序加载模块负责从外部存储芯片中解析应用程序信息,进行内存资源分配,并跳转到应用程序入口;应用程序清除模块在应用程序退出时运行;应用程序和主程序不存在编译阶段的依赖关系;应用程序数据段位于动态分配的动态内存区域;应用程序以指令重定向方式访问主程序指令段,以动态内存映射方式访问应用程序数据段。本发明中,应用程序和主程序可以完全分开烧录和升级,应用程序的静态和全局变量采用动态内存映射方式访问,减少人力评估成本,方便维护,内存布局更加紧致。
Description
技术领域
本发明涉及嵌入式领域,特别是一种基于片内执行且在不具有MMU(MemoryManagement Unit,内存管理单元)的SoC(System on Chip,系统级芯片)片上支持应用程序动态加载的系统。
背景技术
对于一些微控制单元(Microcontroller Unit,MCU),硬件不具有MMU,并且通常直接在闪存(flash)上运行程序,此类MCU一般内存资源有限,复制到内存中运行的代码量也有限。有时候我们希望,在不同的场景下运行不同的应用程序,或者进行分离升级。
现有方案是将主程序和应用程序编译在一起,整体烧录进flash,在工作的时候调用应用程序完成业务,应用程序利用编译时绑定的信息,访问主程序提供的功能。主程序和应用程序一起编译的方案,在运行时,要求加载的时候将全部的全局数据段和静态数据段划分到内存中去,哪怕当前应用程序并不需要运行。这会造成内存的消耗增大。特别是当多个应用程序同时编译时,更容易造成内存的浪费,甚至硬件内存的不足,而且无法实现应用程序和主程序的分离升级。
根据以上场景,需要一种应用程序和主程序分离的方案,主程序根据需求,动态的选择需要运行的应用程序。中国发明专利(CN101673204A),公开了一种基于内存静态划分的应用程序动态加载方案,具体包含通过人为评估主程序和应用程序内存大小,然后通过编译器提前划分好主程序和应用程序的ROM(Read Only Memory,只读存储器)和RAM(Random Access Memory,随机访问存储器)区域。在应用程序运行时,将应用程序和应用程序的RAM段拷贝到指定的内存运行空间,应用程序根据主程序提供的函数接口,然后从内存空间开始运行。
此方式,首先需要耗费人力提前评估应用程序和主程序占用的内存大小,并根据占用内存的大小,通过编译器确定应用程序和主程序的内存地址。由于布局应用程序和主程序的内存分布时,一般都会多预留一定的内存,使内存分布不紧致,造成浪费。在应用程序缺陷修复或者功能扩展时,可能会影响到占用内存大小的改变,由于内存空间布局的提前固化,所以应用程序扩展具有很大限制。
发明内容
本发明的目的在于提供一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统,主要解决上述现有技术存在的问题,通过在主程序中引入动态加载方法,实现内存的动态分配,实现应用程序的动态加载。
为了实现上述目的,本发明所采用的技术方案是提供一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统,其特征在于,包含SoC芯片和外部存储芯片;
所述SoC芯片不具有MMU;所述外部存储芯片上保存有主程序和应用程序;所述主程序包含应用程序加载模块和应用程序清除模块;所述应用程序加载模块负责从所述外部存储芯片中解析所述应用程序,准备运行环境,并跳转到应用程序入口开始执行;所述应用程序清除模块在所述应用程序完成业务退出的时候执行;
所述应用程序包括应用程序指令段和应用程序数据段;所述主程序包括主程序指令段和主程序数据段;
所述应用程序指令段、所述应用程序数据段和所述主程序指令段相互独立,不存在编译阶段的依赖关系;所述应用程序指令段、所述应用程序数据段和所述主程序数据段相互独立,不存在编译阶段的依赖关系;
所述应用程序以指令重定向方式的访问所述主程序指令段;
所述应用程序数据段位于动态分配的动态内存区域;所述应用程序以动态内存映射方式的访问所述应用程序数据段。
进一步地,所述主程序还包含共享函数集;所述应用程序加载模块在调用所述应用程序入口时,传递所述共享函数集给所述应用程序;所述应用程序利用所述共享函数集访问所述主程序代码段,实现所述指令重定向。
进一步地,所述应用程序数据段包含静态数据区和全局数据区;所述动态内存区域的大小是所述静态数据区和所述全局数据区大小的总和,由所述应用程序加载模块在加载所述应用程序时通过解析所述应用程序获得。
进一步地,所述动态内存区域由所述主程序动态分配。
进一步地,所述动态内存区域由所述应用程序动态分配。
进一步地,所述动态内存区域,在所述应用程序被加载时分配,在所述应用程序被卸载时释放。
进一步地,编译器将所述应用程序数据段链接到非法内存区域;当所述应用程序加载时,所述主程序建立所述非法内存区域和所述动态内存区域的映射。
进一步地,当所述应用程序访问所述应用程序数据段时,对所述非法内存区域的操作引起系统异常;所述主程序接管执行权,进入异常处理;在所述异常处理中,所述主程序根据所述映射,将对所述非法内存区域的访问转换为对所述动态内存区域的访问,完成对所述应用程序数据段的访问,并在退出所述异常处理后,将执行权交还于所述应用程序。
进一步地,当所述主程序代码段中调用存储操作时,所述主程序先判断操作地址是否属于所述非法内存区域;如果属于,所述主程序根据所述映射,将对所述操作地址的访问转换为对所述动态内存区域的访问,完成对所述应用程序数据段的访问;如果不属于,则直接对所述操作地址进行访问。
进一步地,所述应用程序加载模块在跳转到所述应用程序入口前,检查所述应用程序的完整性。
鉴于上述技术特征,本发明具有如下优点:
1、应用程序不需要关心主程序函数的真实地址,达到应用程序和主程序可以完全分开烧录和升级的目的。
2、应用程序不需要关心内存分布,静态和全局变量采用动态内存映射方式,减少人力评估成本,方便维护,加速开发。
3、由于内存映射是在加载应用程序时,根据真实使用情况进行映射的,所以内存布局将更加紧致,不会造成内存的浪费。
4、应用程序内存资源主要由主程序动态维护,加载应用程序时,分配资源;删除应用程序时,清除资源。便于应用程序功能的扩展和升级。
附图说明
图1是本发明一个实施例的应用程序动态加载和执行的流程图。
具体实施方式
下面结合具体实施方式,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
本实施例以xtensa平台为例。
在主程序中实现应用程序加载模块。对于应用程序固件,主程序的应用程序加载模块在加载应用程序的时候,可以根据应用程序固件的各个段的定义,找到静态数据和全局数据的地址和大小,以及应用程序的入口点。主程序中的应用程序加载函数流程包含步骤:
步骤1.A、检查应用程序固件的完整性。
步骤2.A、解析应用程序固件各个段的信息,找到应用程序数据段和应用程序代码段入口。
步骤3.A、根据应用程序数据段中的静态数据区和全局数据区大小,分配应用程序的静态变量和全局变量空间,并进行初始化,建立非法内存和共享内存的映射表,供应用程序使用。
步骤4.A、加载应用程序固件,并传递上述的共享符号表。
步骤5.A、跳转到应用程序代码段入口,将执行权交与应用程序。
上述步骤,也可以替换成:
步骤1.B、检查应用程序固件的完整性。
步骤2.B、解析应用程序固件各个段的信息,找到应用程序数据段和应用程序代码段入口。
步骤3.B、根据应用程序数据段中的静态数据区和全局数据区大小,计算出共享内存的大小。
步骤4.B、加载应用程序固件,并传递上述的共享符号表和共享内存大小。
步骤5.B、跳转到应用程序代码段入口,将执行权交与应用程序。
步骤6.B、应用程序得到共享内存大小,调用共享符号表中的内存分配逻辑,完成共享内存的分配,并进行初始化,建立非法内存和共享内存的映射表,作为静态变量和全局变量空间使用。
在主程序的代码段加入需要与应用程序共享的共享函数的具体实现,然后这些共享函数以函数指针数组的形式被组织起来,在主程序中记录此函数指针数组的入口,作为共享符号表。在应用程序编译时,不链接任何的主程序函数和编译器自带的函数,应用程序所需要链接的外部函数,都通过主程序的共享符号表传递过来。应用程序开始执行后,如果需要调用主程序的共享函数,则通过共享符号表,寻找到指向共享函数的函数指针,然后发起调用。
以strlen为例,应用程序需要对此函数进行重新实现,其中export_stb为主程序共享过来的共享符号表,假设其中第一个元素为主程序中的strlen函数,则应用程序中strlen函数的实现如下:
此时,在应用程序中调用strlen函数时,就会使用重定义的函数,从共享符号表中查找到第一个共享函数进行调用。至此,应用程序就可以正常的调用主程序函数进行运行了。
在主程序中实现应用程序清除模块。在应用程序清除模块中,完成应用程序资源的清除,包括在应用程序加载模块中分配的应用程序的静态变量和全局变量空间,完成资源的回收。
当应用程序要访问应用程序的全局变量的时候,会触发动态内存映射,具体实现如下:
应用程序预先将全局变量和静态变量在编译的时候链接到非法地址。那么当应用程序执行到访问非法地址的指令的时候,处理器会触发异常,进入异常处理例程。主程序通过注册异常处理例程,重新取得执行权,然后在异常处理例程中检查异常类型是否为存储地址非法异常。如果异常类型是存储地址非法异常,那么就利用指令计数寄存器得到触发异常的指令,并动态解析机器指令,得到非法地址。接下来,主程序利用应用程序加载模块建立的映射表,将非法地址转换成共享内存中的合法地址,完成动态内存映射。
假设应用程序中的需要使用的一个全局变量名称为value。在编译阶段,将此全局变量的内存地址链接到一个非法地址0x10000。在应用程序执行到对value变量的访问时,因为0x10000为非法地址(不是内存地址),处理器陷入异常。陷入异常的时候,处理器跳转到异常处理例程执行。而异常处理例程是主程序的一部分,因此这样主程序就可以得到执行权,并读取到当前全部寄存器的值,例如:异常原因寄存器(EXCCAUSE)的值是0x0000001d;异常发生时的指令计数寄存器(PC)的值是0x4021b2ca。
从异常原因寄存器的值可以得知,当前异常的原因是存储地址非法,因此属于动态内存映射需要处理的情况。进一步从指令计数寄存器(PC)标记的0x4021b2ca位置,读取到触发异常的指令的机器码是0x006232。根据xtensa指令集格式,此指令为s32i指令(s32ia3,a2,0),其含义是将A3寄存器保存的数值存入A2寄存器指向的内存。读取寄存器A2和寄存器A3的值如下:A2=0x00010000;A3=0x00000064。因此异常指令是将0x64存入内存地址0x10000,即非法地址是0x10000。
主程序获取到出现异常时候的正在执行的应用程序的信息,那么就可以找到相应应用程序的非法内存和共享内存的映射表,根据此映射表,找到0x10000对应的真实内存地址,然后将0x64放入真实内存空间,接着退出异常处理例程,并返回到应用程序继续运行。
当应用程序要访问应用程序的全局数据区或者静态代码区的时候,如果都依靠异常处理来实现动态内存映射,会影响效率。因此,本实施例对由主程序代码段中的共享函数发起的访问内存的逻辑,实现了另外一种动态内存映射的方式,具体实现为:
当共享函数主动发起内存访问的时候,对应内存的操作地址,首先进行检查,然后发起实际操作。如果操作地址(源地址或者目标地址)在应用程序的非法内存和共享内存的映射表的范围内,那么就先完成操作地址到共享内存合法地址的转换,然后以共享内存合法地址为参数发起实际的内存操作,从而避免引发异常。
在实施例中,两种动态内存映射方式同时存在,发挥各自的优点,兼顾效率和可靠性。
请参阅图1,在本实施例的一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统中,应用程序动态加载和执行的流程,包含步骤:
步骤101、应用程序加载模块解析应用程序段信息,得到应用程序数据段和代码段信息。
步骤102、应用程序加载模块根据应用程序数据段信息,得到应用程序静态数据区和全局数据区的大小,并由主程序或者应用程序调用主程序共享函数的方式分配动态内存,建立映射表。
步骤103、主程序跳转到应用程序代码段入口开始执行。
步骤104、应用程序访问静态数据或者全局数据的时候,引发异常处理。
步骤105、主程序在异常处理中,利用映射表完成数据段地址转换,并完成数据读写操作。
步骤106、异常处理完成,应用程序继续执行。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统,其特征在于,包含SoC芯片和外部存储芯片;
所述SoC芯片不具有MMU;所述外部存储芯片上保存有主程序和应用程序;所述主程序包含应用程序加载模块和应用程序清除模块;所述应用程序加载模块负责从所述外部存储芯片中解析所述应用程序,准备运行环境,并跳转到应用程序入口开始执行;所述应用程序清除模块在所述应用程序完成业务退出的时候执行;
所述应用程序包括应用程序指令段和应用程序数据段;所述主程序包括主程序指令段和主程序数据段;
所述应用程序指令段、所述应用程序数据段和所述主程序指令段相互独立,不存在编译阶段的依赖关系;所述应用程序指令段、所述应用程序数据段和所述主程序数据段相互独立,不存在编译阶段的依赖关系;
所述应用程序以指令重定向方式的访问所述主程序指令段;
所述应用程序数据段位于动态分配的动态内存区域;所述应用程序以动态内存映射方式的访问所述应用程序数据段。
2.根据权利要求1所述的支持应用程序动态加载的系统,其特征在于,所述主程序还包含共享函数集;所述应用程序加载模块在调用所述应用程序入口时,传递所述共享函数集给所述应用程序;所述应用程序利用所述共享函数集访问所述主程序代码段,实现所述指令重定向。
3.根据权利要求1所述的支持应用程序动态加载的系统,其特征在于,所述应用程序数据段包含静态数据区和全局数据区;所述动态内存区域的大小是所述静态数据区和所述全局数据区大小的总和,由所述应用程序加载模块在加载所述应用程序时通过解析所述应用程序获得。
4.根据权利要求3所述的支持应用程序动态加载的系统,其特征在于,所述动态内存区域由所述主程序动态分配。
5.根据权利要求3所述的支持应用程序动态加载的系统,其特征在于,所述动态内存区域由所述应用程序动态分配。
6.根据权利要求3所述的支持应用程序动态加载的系统,其特征在于,所述动态内存区域,在所述应用程序被加载时分配,在所述应用程序被卸载时释放。
7.根据权利要求1所述的支持应用程序动态加载的系统,其特征在于,编译器将所述应用程序数据段链接到非法内存区域;当所述应用程序加载时,所述主程序建立所述非法内存区域和所述动态内存区域的映射。
8.根据权利要求7所述的支持应用程序动态加载的系统,其特征在于,当所述应用程序访问所述应用程序数据段时,对所述非法内存区域的操作引起系统异常;所述主程序接管执行权,进入异常处理;在所述异常处理中,所述主程序根据所述映射,将对所述非法内存区域的访问转换为对所述动态内存区域的访问,完成对所述应用程序数据段的访问,并在退出所述异常处理后,将执行权交还于所述应用程序。
9.根据权利要求7所述的支持应用程序动态加载的系统,其特征在于,当所述主程序代码段中调用存储操作时,所述主程序先判断操作地址是否属于所述非法内存区域;如果属于,所述主程序根据所述映射,将对所述操作地址的访问转换为对所述动态内存区域的访问,完成对所述应用程序数据段的访问;如果不属于,则直接对所述操作地址进行访问。
10.根据权利要求1所述的支持应用程序动态加载的系统,其特征在于,所述应用程序加载模块在跳转到所述应用程序入口前,检查所述应用程序的完整性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010016573.9A CN111190658B (zh) | 2020-01-08 | 2020-01-08 | 一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010016573.9A CN111190658B (zh) | 2020-01-08 | 2020-01-08 | 一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111190658A true CN111190658A (zh) | 2020-05-22 |
CN111190658B CN111190658B (zh) | 2023-02-28 |
Family
ID=70709965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010016573.9A Active CN111190658B (zh) | 2020-01-08 | 2020-01-08 | 一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111190658B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094119A (zh) * | 2021-04-28 | 2021-07-09 | 杭州国芯科技股份有限公司 | 一种嵌入式设备程序动态加载方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4709324A (en) * | 1985-11-27 | 1987-11-24 | Motorola, Inc. | Data processor control unit having an interrupt service using instruction prefetch redirection |
JPH03208187A (ja) * | 1989-10-12 | 1991-09-11 | Texas Instr Inc <Ti> | 拡張グラフィック機能を与える方法 |
US6918106B1 (en) * | 2000-07-31 | 2005-07-12 | Sun Microsystems, Inc. | Method and apparatus for collocating dynamically loaded program files |
CN101661397A (zh) * | 2008-08-29 | 2010-03-03 | 宇龙计算机通信科技(深圳)有限公司 | 实现程序动态加载的方法和生成映射文件的方法及设备 |
CN101673204A (zh) * | 2009-08-13 | 2010-03-17 | 上海酷吧信息技术有限公司 | 一种基于arm的手机应用程序动态加载方法 |
US7743371B1 (en) * | 2004-03-10 | 2010-06-22 | Apple Inc. | System and method for dynamically loading object modules |
CN101930377A (zh) * | 2009-06-22 | 2010-12-29 | 深圳市融创天下科技发展有限公司 | 一种动态获取uid的链接库编译方法 |
CN103309684A (zh) * | 2012-03-07 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 动态加载应用的方法及装置 |
CN104376255A (zh) * | 2014-11-28 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序运行控制方法与装置 |
CN104462879A (zh) * | 2014-11-28 | 2015-03-25 | 北京奇虎科技有限公司 | 应用程序免Root运行控制方法与装置 |
-
2020
- 2020-01-08 CN CN202010016573.9A patent/CN111190658B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4709324A (en) * | 1985-11-27 | 1987-11-24 | Motorola, Inc. | Data processor control unit having an interrupt service using instruction prefetch redirection |
JPH03208187A (ja) * | 1989-10-12 | 1991-09-11 | Texas Instr Inc <Ti> | 拡張グラフィック機能を与える方法 |
US6918106B1 (en) * | 2000-07-31 | 2005-07-12 | Sun Microsystems, Inc. | Method and apparatus for collocating dynamically loaded program files |
US7743371B1 (en) * | 2004-03-10 | 2010-06-22 | Apple Inc. | System and method for dynamically loading object modules |
CN101661397A (zh) * | 2008-08-29 | 2010-03-03 | 宇龙计算机通信科技(深圳)有限公司 | 实现程序动态加载的方法和生成映射文件的方法及设备 |
CN101930377A (zh) * | 2009-06-22 | 2010-12-29 | 深圳市融创天下科技发展有限公司 | 一种动态获取uid的链接库编译方法 |
CN101673204A (zh) * | 2009-08-13 | 2010-03-17 | 上海酷吧信息技术有限公司 | 一种基于arm的手机应用程序动态加载方法 |
CN103309684A (zh) * | 2012-03-07 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 动态加载应用的方法及装置 |
CN104376255A (zh) * | 2014-11-28 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序运行控制方法与装置 |
CN104462879A (zh) * | 2014-11-28 | 2015-03-25 | 北京奇虎科技有限公司 | 应用程序免Root运行控制方法与装置 |
Non-Patent Citations (4)
Title |
---|
C.H. LIN ET AL.: "《The optimal switching operation of distribution systems with stochastic load models by object-oriented programming》", 《POWERCON 2000. 2000 INTERNATIONAL CONFERENCE ON POWER SYSTEM TECHNOLOGY. PROCEEDINGS (CAT. NO.00EX409)》 * |
刘吉成: "《基于OSGI的Android动态模块加载技术的研究》", 《信息技术与信息化》 * |
张莹: "利用DLL技术实现数据采集", 《潍坊学院学报》 * |
王太勇等: "动态链接库技术及其在信号分析中的应用", 《组合机床与自动化加工技术》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094119A (zh) * | 2021-04-28 | 2021-07-09 | 杭州国芯科技股份有限公司 | 一种嵌入式设备程序动态加载方法 |
CN113094119B (zh) * | 2021-04-28 | 2022-07-12 | 杭州国芯科技股份有限公司 | 一种嵌入式设备程序动态加载方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111190658B (zh) | 2023-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291480B (zh) | 一种函数调用方法及装置 | |
EP0665496B1 (en) | Method and apparatus for run-time error checking using dynamic patching | |
US7454603B2 (en) | Method and system for linking firmware modules in a pre-memory execution environment | |
US8650538B2 (en) | Meta garbage collection for functional code | |
US7730464B2 (en) | Code compilation management service | |
US8887141B2 (en) | Automatically modifying a native code module accessed from virtual machine bytecode to determine execution information | |
CN106325970A (zh) | 编译方法和编译系统 | |
US10241894B2 (en) | Data-scoped dynamic data race detection | |
US7856637B1 (en) | Runtime emulating static thread local storage of portable executable software code | |
CN107729240B (zh) | 嵌入式软件堆栈溢出检测方法和装置 | |
US20100192026A1 (en) | Implementations of program runtime checks | |
CN103927187A (zh) | 嵌入式系统程序执行方法 | |
US6901583B1 (en) | Method for testing of a software emulator while executing the software emulator on a target machine architecture | |
CN105849698B (zh) | 动态编程中的执行防护 | |
CN109739824B (zh) | 日志获取方法及设备 | |
US20240095174A1 (en) | Method for detecting error of operating system kernel memory in real time | |
CN111427782A (zh) | 安卓动态链接库的运行方法、装置、设备及存储介质 | |
CN111666102A (zh) | 文件格式转换方法、芯片验证方法、相关装置及网络芯片 | |
CN117193882A (zh) | 一种基于微内核操作系统的elf加载方法 | |
CN111190658B (zh) | 一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统 | |
EP3635561A1 (en) | Asynchronous operation query | |
CN113778838A (zh) | 二进制程序动态污点分析方法及装置 | |
CN115292201B (zh) | 函数调用栈解析和回溯方法与装置 | |
KR100478463B1 (ko) | 응용 프로그램의 동적링크 방법 | |
CN113220334B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |