公开/公告号CN101763273A
专利类型发明专利
公开/公告日2010-06-30
原文格式PDF
申请/专利权人 上海闻泰电子科技有限公司;
申请/专利号CN200810207949.3
发明设计人 钱小刚;
申请日2008-12-26
分类号G06F9/445(20060101);
代理机构31128 上海世贸专利代理有限责任公司;
代理人李浩东
地址 200001 上海市黄浦区北京东路668号科技京城G区6楼
入库时间 2023-12-18 00:14:16
法律状态公告日
法律状态信息
法律状态
2014-08-13
授权
授权
2012-07-04
实质审查的生效 IPC(主分类):G06F9/445 申请日:20081226
实质审查的生效
2010-06-30
公开
公开
技术领域
本发明涉及一种在嵌入式系统的扩展存储器中动态装入代码的方法。
背景技术
在嵌入式系统开发领域中,代码越来越复杂,需要的代码存储空间也越来越大,因此设计者需要在嵌入式系统中增大存储器的容量。当前通用的嵌入式硬件架构为:处理器+非易失存储器(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)所写的动态应用程序。
机译: 用于最佳地控制计算机网络上的计算机程序的兑现和转移的计算机系统和相关方法(57)专利:“用于最佳地控制计算机网络上的计算机程序的兑现和转移的计算机系统和相关方法”。一种计算机系统和相关方法,用于最佳地控制网络上计算机之间的计算机程序的存储和传输,并促进交互式程序的使用。根据该方法,应用程序作为多个单独且独立的机器可执行代码模块存储在第一计算机的非易失性存储器中。响应于通过网络连接传输的第二计算机的请求,第一计算机从所述机器可执行代码模块中检索选择的模块,并且仅从存储器中检索该选择的代码模块,并将通过网络连接选择的代码模块传输到第二计算机。
机译: 虚拟程序命令转换安排,例如用于嵌入式系统,其中两个命令存储器通过地址总线直接链接,以便第一个存储器可以访问第二个存储器中的机器代码序列
机译: 实时嵌入式系统中的存储器管理装置以及实时嵌入式系统中的存储器分配,解除分配和管理方法