适用于处理器实时控制的软件编程及其汇编链接方法技术

技术编号:19388698 阅读:19 留言:0更新日期:2018-11-10 01:57
本发明专利技术公开了一种适用于处理器实时控制的软件编程及其汇编链接方法,包括以下步骤:将所有函数划分为若干组,汇编器对每个函数定义进行词法及语法分析,并将每个函数的信息均记录于函数信息链表中,其中,每个函数的信息为函数信息链表中的一个节点;同时对每个函数组定义进行分析,将每个函数组的信息记录于函数组信息链表,该方法能够动态调整处理器逻辑地址与物理地址的映射。

Software programming for real-time processor control and its assembly link method

The invention discloses a software programming and assembly linking method suitable for real-time control of processors, which includes the following steps: dividing all functions into several groups, the assembler performs lexical and grammatical analysis of each function definition, and records the information of each function in the function information chain, in which each function is divided into several groups. The information is a node in the function information chain, and the definition of each function group is analyzed. The information of each function group is recorded in the function information chain. This method can dynamically adjust the mapping between the logical address and the physical address of the processor.

【技术实现步骤摘要】
适用于处理器实时控制的软件编程及其汇编链接方法
本专利技术属于嵌入式系统软件领域,涉及一种适用于处理器实时控制的软件编程及其汇编链接方法。
技术介绍
现有一款处理器,其存储器包括SRAM存储器和只读指令存储器(ROM),该处理器特点为所接存储器的物理地址空间大于其逻辑地址空间。为方便下文叙述,指定其逻辑寻址空间大小为64K字节,所接SRAM大小为32K,ROM大小为128K。在处理器设计上,其逻辑地址的低32K字节被固定映射到SRAM存储器,高32K字节为用户程序USER_PROGRAM空间,映射到ROM特定的段,每个段大小为32K。逻辑地址高32K字节到存储器物理地址的映射关系通过一个空间映射寄存器MAP_REG控制,其关系如下:physical_addr=(MAP_REG-1)*0x8000+logicl_addrphysical_addr表示ROM存储器物理地址,logical_addr表示高32K逻辑地址,MAP_REG寄存器存储处理器当前映射的ROM段的基址,控制物理地址起始位置相对于逻辑地址的偏移。在实际使用中,该处理器的应用环境要求对程序的执行时间进行精确控制,即每组任务的执行时间应少于指定的时间。且在装载可执行程序时,程序的大小会大于32K字节,所以要求对处理器的逻辑地址与物理地址的映射进行动态调度以加载相应的函数,然而现有公开文件中没有出现相应的技术。
技术实现思路
本专利技术的目的在于克服上述现有技术的缺点,提供了一种适用于处理器实时控制的软件编程及其汇编链接方法,该方法能够动态调整处理器逻辑地址与物理地址的映射。为达到上述目的,本专利技术所述的适用于处理器实时控制的软件编程方法包括以下步骤:将所有函数划分为若干组,汇编器对每个函数定义进行词法及语法分析,并将每个函数的信息均记录于函数信息链表中,其中,每个函数的信息为函数信息链表中的一个节点;同时对每个函数组定义进行分析,将每个函数组的信息记录于函数组信息链表。每个函数的信息均包括函数的函数名、函数包含的指令的机器码、函数的起始物理地址及函数的结束物理地址。每个函数组的信息均包括函数组id以及函数组包含的函数名。本专利技术所述的适用于处理器实时控制的汇编链接方法包括以下步骤:在ROM中定义函数入口地址数组USR_PROG_ARR及空间映射配置数组MAP_REG_ARR,其中,通过USR_PROG_ARR数组记录每个函数的起始物理地址,同时通过USR_PROG_ARR数组按顺序连续存放各个函数组中的函数,每个函数组起始处对应的元素为该函数组的id;MAP_REG_ARR数组记录每个函数所在的ROM段的基址,MAP_REG_ARR数组中的元素与USR_PROG_ARR数组中的函数一一对应,MAP_REG_ARR数组中的元素值由函数的起始物理地址与ROM段的大小相除再取整得到,MAP_REG_ARR数组中的元素值与MAP_REG寄存器中的值一致,然后通过内核程序执行函数组的运行调度。通过内核程序执行函数组的运行调度的具体操作为:1)内核程序定义指针USR_PROG_POINTER及MAP_REG_POINTER,USR_PROG_POINTER的初始位置指向USR_PROG_ARR数组的头部,MAP_REG_POINTER的初始位置指向MAP_REG_ARR数组的头部,当执行函数组调用时,则转至步骤2);2)USR_PROG_POINTER加1;3)判断USR_PROG_POINTER指向函数组的位置,当USR_PROG_POINTER指向函数组的id标识时,表明已经完成了该函数组的调用,则退出此次函数组的调用;当USR_PROG_POINTER没有指向函数组的id标识时,表明此时USR_PROG_POINTER指向函数组中某个函数的入口地址,则转至步骤4):4)取MAP_REG_POINTER指向的函数组中的数据,并将MAP_REG_POINTER指向的函数组中的数据赋值给空间映射寄存器MAP_REG;5)MAP_REG_POINTER加1,以指向下一个函数所在的ROM段基址;6)取USR_PROG_POINTER指向的函数组中的数据,并调用该函数;7)重复步骤2)至步骤6),直至完成该函数组的调用为止;8)USR_PROG_POINTER加1,然后转至步骤3),直至完成所有函数组的调用为止。本专利技术具有以下有益效果:本专利技术所述的适用于处理器实时控制的软件编程及其汇编链接方法在具体操作时,通过预先将实际应用中每个任务应执行的多个函数配置为一个函数组,通过对函数组的设计及定义,在处理器逻辑寻址空间有限的情况下,通过动态调整处理器逻辑地址到ROM物理地址的映射,实现可装载执行ROM中任意位置函数的目的。附图说明图1为函数组调用设计及实现过程的示意图;图2为逻辑地址与物理地址分段及映射关系图;图3为函数入口地址数组USR_PROG_ARR的示意图;图4为内核程序进行函数组调用流程图。具体实施方式下面结合附图对本专利技术做进一步详细描述:参考图1,首先是处理器逻辑地址与物理地址的映射,其中,处理器的逻辑寻址空间为64K字节,该64K空间被划分为两个逻辑子空间,低32K为RAM空间,映射到一个32K的SRAM存储器;高32K为用户程序USER_PROGRAM空间,映射到ROM的特定位置。参考图2,ROM物理空间大于32K字节,负责存储可执行应用程序代码,根据处理器的架构特点,将ROM分为N个段:USER_SEGM_1到USER_SEGM_N,每个段大小均为32K,且在功能上是等价的。在程序执行过程中,可以通过配置空间映射寄存器MAP_REG,改变处理器当前的段基址,实现将高32K逻辑子空间映射到ROM中特定的物理段。将汇编代码转换为可执行程序分为汇编级链接两个步骤,汇编阶段的主要工作是词法分析、语法分析、语义分析以及目标代码的生成,在进行分析时,还要负责代码的错误诊断、处理以及符号表的管理。链接阶段的主要工作是符号的解析、重定位以及可执行文件的生成,同时也要负责部分错误诊断及处理工作。本专利技术在定义汇编函数时,会显式地定义其存储的起始物理地址,汇编器在汇编时,以链表的形式存储每个函数的信息,每个函数为链表中的一个节点。节点存储的信息包括函数名、函数内各个指令的机器码数组、函数的起始及结束物理地址,其中,函数的结束物理地址由起始物理地址加上函数内部所有指令所占的总空间得到。各个函数组的信息同样以链表的形式存储,链表中每个函数组节点存储的信息包括函数组标识fun_group_id及函数名数组。同一个函数组中的不同函数存储在ROM的不同物理段,但同一个函数不能跨段存储。所以对于每个函数,用户在编写程序时要保证其起始和结束指令处于同一个ROM段。汇编器在解析函数定义时,会对此部分进行检查,若函数起始及结束物理地址不在同一个段,则报错退出。汇编语法规定:函数组定义中的函数名必须在当前汇编工程存在该函数定义。因此汇编阶段完成后,在链接阶段要对函数组信息链表的每个节点进行检查,遍历每个节点的函数名数组,对数组中的每个函数名,在函数信息链表中查找是否存在相应的元素,如不存在则报错退出。具体的,本专利技术所述的适用于处理器实时控制的软件编程方法包括以下步骤:将所有函数划分为若干组本文档来自技高网...

【技术保护点】
1.一种适用于处理器实时控制的软件编程方法,其特征在于,包括以下步骤:将所有函数划分为若干组,汇编器对每个函数定义进行词法及语法分析,并将每个函数的信息均记录于函数信息链表中,其中,每个函数的信息为函数信息链表中的一个节点;同时对每个函数组定义进行分析,将每个函数组的信息记录于函数组信息链表。

【技术特征摘要】
1.一种适用于处理器实时控制的软件编程方法,其特征在于,包括以下步骤:将所有函数划分为若干组,汇编器对每个函数定义进行词法及语法分析,并将每个函数的信息均记录于函数信息链表中,其中,每个函数的信息为函数信息链表中的一个节点;同时对每个函数组定义进行分析,将每个函数组的信息记录于函数组信息链表。2.根据权利要求1所述的适用于处理器实时控制的软件编程方法,其特征在于,每个函数的信息均包括函数的函数名、函数包含的指令的机器码、函数的起始物理地址及函数的结束物理地址。3.根据权利要求2所述的适用于处理器实时控制的软件编程方法,其特征在于,每个函数组的信息均包括函数组的id以及函数组包含的函数名。4.一种适用于处理器实时控制的汇编链接方法,其特征在于,基于权利要求3所述的适用于处理器实时控制的软件编程方法,包括以下步骤:在ROM中定义函数入口地址数组USR_PROG_ARR及空间映射配置数组MAP_REG_ARR,其中,通过USR_PROG_ARR数组记录每个函数的起始物理地址,同时通过USR_PROG_ARR数组按顺序连续存放各个函数组中的函数,每个函数组起始处对应的元素为该函数组的id;MAP_REG_ARR数组记录每个函数所在的ROM段的基址,MAP_REG_ARR数组中的元素与USR_PROG_ARR数组中的函数一一对应,MAP_REG_ARR数组中的元素值由函数的起始物理地址与ROM段的大小相除再取整得到,MAP_REG_ARR数组中的元素值与MA...

【专利技术属性】
技术研发人员:梅魁志赵海波伍健郑斐李恒杰张瑞智程军舒伟华谷新宇
申请(专利权)人:西安交通大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1