CN101763273B - 一种在嵌入式系统的扩展存储器中动态装入代码的方法 - Google Patents
一种在嵌入式系统的扩展存储器中动态装入代码的方法 Download PDFInfo
- Publication number
- CN101763273B CN101763273B CN200810207949.3A CN200810207949A CN101763273B CN 101763273 B CN101763273 B CN 101763273B CN 200810207949 A CN200810207949 A CN 200810207949A CN 101763273 B CN101763273 B CN 101763273B
- Authority
- CN
- China
- Prior art keywords
- application
- code
- dynamic application
- address
- functionlist
- 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明的目的是提供一种在嵌入式系统的扩展存储器中动态装入代码的方法,可以有效解决现有技术存在的扩展性差、产品成本高等问题。本发明将系统的应用模块化,在有需要的时候把代码从扩展存储器中拷贝到非易失存储器中,然后执行跳转指令,直接跳到特定的地址运行该程序。本发明的优点在于:本发明针对各种增加扩展存储器的嵌入式系统,通过在运行过程中根据需要从扩展存储器中动态装入运行代码的方法,增加应用的扩展性,从而节约产品的成本,丰富产品的应用,提高产品的竞争力。
Description
技术领域
本发明涉及一种在嵌入式系统的扩展存储器中动态装入代码的方法。
背景技术
在嵌入式系统开发领域中,代码越来越复杂,需要的代码存储空间也越来越大,因此设计者需要在嵌入式系统中增大存储器的容量。当前通用的嵌入式硬件架构为:处理器+非易失存储器(NOR-FLASH,NAND-FLASH等)。有些嵌入式系统还增加了扩展存储器,如SD卡、T-FLASH。这类设计应用的扩展性较差,不能根据需要装载所需的应用,同时也提高了产品的成本,往往得不偿失。
发明内容
本发明的目的是提供一种在嵌入式系统的扩展存储器中动态装入代码的方法,可以有效解决现有技术存在的扩展性差、产品成本高等问题。嵌入式系统里面的程序一般是把用各种语言(C,C++,ASM等)编写的代码,通过编译、连接等过程生成一个二进制文件,然后通过下载工具写到系统的非易失存储器中。系统运行时,处理器会从存储器里读入指令,按顺序执行。本发明的实施方式是把系统的应用模块化,在有需要的时候把代码从扩展存储器中拷贝到非易失存储器中,然后执行跳转指令,直接跳到特定的地址运行该程序。
本发明涉及一种在嵌入式系统的扩展存储器中动态装入代码的方法,其特征在于,包括如下步骤:
1)将动态应用程序所需的系统函数总结出来,生成一个结构变量g_functionList_ptr来保存这些系统函数指针,并给予固定的地址;
2)编译配置文件,在指定位置留出足够大的空间用来动态装载动态应用程序,生成系统的BIN文件;
3)编写系统的调用动态应用程序的服务程序,将动态应用的代码从扩展存储器中拷贝到非易失存储器的指定位置;
4)初始化结构变量g_functionList_ptr,跳转到特定的地址;
5)编写动态应用程序,在该程序中包括系统函数指针映射表的全局变量g_functionList_ptr和应用程序代码。
所述的系统在运行过程中可通过步骤2)所写的服务程序调用步骤3)所写的动态应用程序。
本发明的优点在于:本发明针对各种增加扩展存储器的嵌入式系统,通过在运行过程中根据需要从扩展存储器中动态装入运行代码的方法,增加应用的扩展性,从而节约产品的成本,丰富产品的应用,提高产品的竞争力。
附图说明
附图为本发明涉及的方法流程图。
具体实施方式
一种在嵌入式系统的扩展存储器中动态装入代码的方法,其特征在于,包括如下步骤:
1)将动态应用程序所需的系统函数总结出来,生成一个结构变量g_functionList_ptr来保存这些系统函数指针,并给予固定的地址。
动态应用程序所需的系统函数指的是有可能调用到的系统函数,包括编程语言提供的系统函数,嵌入式系统提供的系统函数等。结构变量g_functionList_ptr,为系统函数指针映射表的全局变量,每一个可能调用到的系统函数指针都是g_functionList_ptr的一个成员,给予g_functionList_ptr固定的起始地址,如0x80000000,参与整个系统的编译和连接。
2)编写配置文件,在指定位置留出足够大的空间用来动态装载动态应用程序,生成系统的BIN文件;
编写嵌入式系统的配置文件的地方空出足够大的空间,以便能有空间拷贝动态应用的程序。空间大小由设计者根据需要决定,一般要参考最大允许动态应用的大小决定。对于ARM系统来说,嵌入式系统的配置文件一般是scatter文件。若g_functionList_ptr的起始地址为0x80000000,则需要在0x80000000处留出足够的空间。
3)编写系统的调用动态应用程序的服务程序,将动态应用的代码从扩展存储器中拷贝到非易失存储器的指定位置。
所述的指定位置是指g_functionList_ptr的起始地址。
4)初始化结构变量g_functionList_ptr,跳转到特定的地址。
所述初始化结构变量g_functionList_ptr,即初始化系统函数指针,并保存执行完应用程序后应该返回的地址。所述特定的地址是一个固定的地址,一般是g_functionList_ptr的起始地址与变量g_functionList_ptr相加并进行字对齐后得到的地址。
5)编写动态应用程序,在该程序中包括系统函数指针映射表的全局变量g_functionList_ptr和应用程序代码。
应用程序中的g_functionList_ptr的地址要与固定成跟嵌入式系统中g_functionList_ptr的地址相同,若g_functionList_ptr的起始地址为0x80000000,应用程序中的g_functionList_ptr的地址也为0x80000000。
应用程序的入口函数的地址要固定为特定的地址,一般是g_functionList_ptr的起始地址与变量g_functionList_ptr相加并进行字对齐后得到的地址,可使用静态的,也可以在配置文件中写入。应用程序的入口函数执行完后,要执行跳转指令,跳转到固定的地址,即调用入口函数的下一个地址。应用程序在编写过程中,除非设计者编写的函数,否则一律调用g_functionList_ptr来执行系统函数。
所述的系统在运行过程中可通过步骤2)所写的服务程序调用步骤3)所写的动态应用程序。
Claims (3)
1.一种在嵌入式系统的扩展存储器中动态装入代码的方法,其特征在于,包括如下步骤:
1)将动态应用程序所需的系统函数总结出来,生成一个结构变量g_functionList_ptr来保存这些系统函数的指针,并给予固定的地址;结构变量g_functionList_ptr为系统函数指针映射表的全局变量;
2)修改系统的配置文件,在指定位置留出足够大的空间,该空间用来动态装载动态应用程序;编写系统的调用动态应用程序的服务程序,该服务程序的功能是将动态应用程序的代码从扩展存储器中拷贝到非易失存储器的指定位置;编译连接系统程序,生成可执行的系统文件;
3)初始化结构变量g_functionList_ptr,跳转到步骤1)中的固定的地址;
4)编写动态应用程序,在该程序中包括系统函数指针映射表的全局变量和应用程序代码;修改动态应用程序的连接配置文件,编译连接动态应用程序生成可动态装载的可执行的系统文件;
5)系统运行,执行系统服务程序,载入动态应用程序;
6)运行应用程序。
2.如权利要求1所述的一种在嵌入式系统的扩展存储器中动态装入代码的方法,其特征在于,所述的系统在运行过程中可通过步骤2)所写的服务程序调用步骤4)所写的动态应用程序。
3.如权利要求1所述的一种在嵌入式系统的扩展存储器中动态装入代码的方法,其特征在于,所述的步骤3)中固定的地址是指g_functionList_ptr的起始地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810207949.3A CN101763273B (zh) | 2008-12-26 | 2008-12-26 | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810207949.3A CN101763273B (zh) | 2008-12-26 | 2008-12-26 | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101763273A CN101763273A (zh) | 2010-06-30 |
CN101763273B true CN101763273B (zh) | 2014-08-13 |
Family
ID=42494445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810207949.3A Active CN101763273B (zh) | 2008-12-26 | 2008-12-26 | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101763273B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101984409B (zh) * | 2010-11-10 | 2013-03-13 | 南京南瑞继保电气有限公司 | 一种用于Linux系统测试代码注入的方法 |
CN107391190B (zh) * | 2017-07-18 | 2020-10-13 | 杭州中天微系统有限公司 | 一种程序模块动态装载方法 |
CN107391191B (zh) * | 2017-07-18 | 2020-10-13 | 杭州中天微系统有限公司 | 一种程序模块动态装载方法 |
CN109324838B (zh) * | 2018-08-31 | 2022-05-10 | 深圳市元征科技股份有限公司 | 单片机程序的执行方法、执行装置及终端 |
CN110659088B (zh) * | 2019-09-20 | 2022-11-25 | 浙江杰芯科技有限公司 | 一种嵌入式环境下程序扩展的方法及系统 |
CN110888667A (zh) * | 2019-10-30 | 2020-03-17 | 北京军懋国兴科技股份有限公司 | 一种arm芯片程序在线重构的方法 |
CN111488282B (zh) * | 2020-04-13 | 2023-11-07 | 龙芯中科技术股份有限公司 | 业务功能处理方法、装置、电子设备及存储介质 |
CN113010179B (zh) * | 2021-02-23 | 2024-03-15 | 深圳市广和通无线股份有限公司 | 基于实时操作系统的独立应用的运行方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1785855A2 (en) * | 2005-11-15 | 2007-05-16 | Samsung Electronics Co., Ltd. | Method of booting a microprocessor system, method of updating contents of a serial flash memory array, microprocessor system, flash memory device and booting system |
CN101013377A (zh) * | 2007-01-12 | 2007-08-08 | 中山大学 | 一种Java Processor启动时类装载方法 |
CN101131635A (zh) * | 2006-08-24 | 2008-02-27 | 凌阳科技股份有限公司 | 动态链接函数库与主应用程序共享静态链接函数库的方法 |
-
2008
- 2008-12-26 CN CN200810207949.3A patent/CN101763273B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1785855A2 (en) * | 2005-11-15 | 2007-05-16 | Samsung Electronics Co., Ltd. | Method of booting a microprocessor system, method of updating contents of a serial flash memory array, microprocessor system, flash memory device and booting system |
CN101131635A (zh) * | 2006-08-24 | 2008-02-27 | 凌阳科技股份有限公司 | 动态链接函数库与主应用程序共享静态链接函数库的方法 |
CN101013377A (zh) * | 2007-01-12 | 2007-08-08 | 中山大学 | 一种Java Processor启动时类装载方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101763273A (zh) | 2010-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101763273B (zh) | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 | |
US8392895B2 (en) | Firmware extension method and firmware builder | |
CN108369520B (zh) | 保护基本输入/输出(bios)代码 | |
CN102985908A (zh) | 在计算平台中分布工作负荷 | |
CN101243412B (zh) | 用于安全检查模块中的可执行应用程序的系统和方法 | |
KR101059633B1 (ko) | 멀티태스킹 가상 머신을 위한 힙 구성 | |
US20110154299A1 (en) | Apparatus and method for executing instrumentation code | |
CN101668283A (zh) | 一种手机嵌入式系统中动态加载的方法 | |
CN102364433B (zh) | 在ARM处理器上实现Wine构建工具移植的方法 | |
CN101714075B (zh) | 函数调用方法和装置 | |
US9223697B2 (en) | Computer reprogramming method, data storage medium and motor vehicle computer | |
CN107391190B (zh) | 一种程序模块动态装载方法 | |
US9513912B2 (en) | Memory controllers | |
CN103294510A (zh) | 应用程序动态加载方法和装置 | |
CN211264295U (zh) | 多版本程序加载结构 | |
US8464040B2 (en) | Systems and methods to control multiple peripherals with a single-peripheral application code | |
CN103235745A (zh) | 一种地址冲突检测方法及装置 | |
CN111190658B (zh) | 一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统 | |
CN114047952A (zh) | 用于单片机的处理器、方法、单片机和存储介质 | |
KR100478463B1 (ko) | 응용 프로그램의 동적링크 방법 | |
CN107391191B (zh) | 一种程序模块动态装载方法 | |
CN113031956A (zh) | 程序编译方法和装置以及程序运行方法和装置 | |
CN114035920A (zh) | 一种dsp程序对称加载运行的方法及其装置 | |
JP5646591B2 (ja) | マルチタスク仮想マシンのためのヒープ組織 | |
CN116737087B (zh) | 一种存储装置及其数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |