一种裸机多核AMP固件分配共享内存的方法技术

技术编号:31832732 阅读:20 留言:0更新日期:2022-01-12 13:09
本方法涉及内存领域,具体是一种裸机多核AMP固件分配共享内存的方法,本方法将不同核的共享变量定义在相同的源文件中,并使用相同的编译选项和相同的链接脚本段来编译,从而实现编译出的各个核的共享变量的地址相同。本方法由编译器自动分配共享变量的地址,无需手动计算每个共享变量的地址和大小,增加,删除,修改共享变量无需修改该变量地址前后的其他共享变量。使用该发明专利技术可以简化多核AMP固件中共享内存的定义方法,使得代码可读性提高,有效避免因人工地址分配失误而造成的错误,可以提高开固件发效率。高开固件发效率。高开固件发效率。

【技术实现步骤摘要】
一种裸机多核AMP固件分配共享内存的方法


[0001]本专利技术涉及内存领域,具体是一种裸机多核AMP固件分配共享内存的方法。

技术介绍

[0002]在多核AMP裸机固件中,通常定义共享内存的方法是使用绝对地址来进行地址分配,这样需要手动计算每个共享变量的大小,保证各个共享变量地址相互不重叠,在需要修改,增加,删除某个变量的时候,通常需要修改其地址后共享变量的地址,稍有不慎就会出现地址重叠,导致固件运行异常的问题。

技术实现思路

[0003]针对现有的缺陷,本专利技术提供一种裸机多核AMP固件分配共享内存的方法,由编译器自动分配共享变量的地址,无需手动计算每个共享变量的地址和大小,增加,删除,修改共享变量无需修改该变量地址前后的其他共享变量。
[0004]为了解决所述技术问题,本专利技术采用的技术方案是:一种裸机多核AMP固件分配共享内存的方法,本方法将不同核的共享变量定义在相同的源文件中,并使用相同的编译选项和相同的链接脚本段来编译,从而实现编译出的各个核的共享变量的地址相同。
[0005]进一步的,本方法的实施步骤为:S01)、编写共享内存分配源文件,在该文件中定义共享变量结构,并为该文件中的每个变量都加入保留变量选项__attribute__((used)),保证不会因为未使用而被编译器优化掉;S02)、修改每个核的链接脚本文件,为共享内存分配源文件分配一个单独的段,保证这个段在每个核中的起始地址和大小都相同;S03)、每个核编译的时候都编译共享内存分配源文件,将编译出的对象文件文件链接到每个核的可执行文件中。
[0006]进一步的,步骤S01)执行完以后,如果对共享变量的起始位置有对齐要求,加入对齐附加属性选项__attribute__((aligned (N)),其中N为需要对齐的字节数。
[0007]进一步的,执行完步骤S03)之后,执行步骤S04):查看各个核编译出的可执行文件的反汇编,确认共享内存分配源文件中各个共享变量的绝对地址是否相同。
[0008]本专利技术的有益效果:本专利技术提供一种裸机多核AMP固件分配共享内存的方法,由编译器自动分配共享变量的地址,无需手动计算每个共享变量的地址和大小,增加,删除,修改共享变量无需修改该变量地址前后的其他共享变量。使用该专利技术可以简化多核AMP固件中共享内存的定义方法,使得代码可读性提高,有效避免因人工地址分配失误而造成的错误,可以提高开固件发效率。
附图说明
[0009]图1为本方法使用于双核AMP裸机的示意图。
具体实施方式
[0010]下面结合附图和具体实施例对本专利技术作进一步的说明。
[0011]实施例1当多核AMP系统中,对于不同的MCU使用的是同一个编译器和链接器的时候,同样的源文件,并且源文件所在的段相同,编译选项配置也相同的情况下,在不同的MCU核中编译出来的变量地址也是相同的,我们利用这个特点将不同核的共享变量定义在相同的.c中,并使用相同的编译选项和相同的链接脚本段来编译,从而实现编译出的各个核的共享变量的地址相同,使用这种方法可以替代传统使用绝对地址进行共享内存分配的方法。
[0012]本实施例以双核AMP裸机固件为例,说明共享内存分配的方法,具体包括以下步骤:1.编写共享内存分配源文件,如share_mem.c,在该文件中定义共享变量结构,并为该文件中的每个变量都加入保留变量选项__attribute__((used),保证不会因为未使用而被编译器优化掉;2.如果对共享变量的起始位置有对齐要求,可加入对齐附加属性选项__attribute__((aligned (N)),其中N为需要对齐的字节数;3.修改每个核的链接脚本文件,为share_mem.c分配一个单独的段,保证这个段在每个核中的起始地址和大小都相同;4.每个核编译的时候都编译share_mem.c,并将编译出的对象文件share_mem.o文件链接到每个核的可执行文件中;5.查看各个核编译出的可执行文件的反汇编,确认share_mem.c中各个共享变量的绝对地址是否相同,如果相同,则分配共享内存成功,如果不相同,则检查上述步骤是否有错误,重新执行。
[0013]以上描述的仅是本专利技术的基本原理和优先实施例,本领域技术人员根据本专利技术做出的改进和替换,属于本专利技术的保护范围。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种裸机多核AMP固件分配共享内存的方法,其特征在于:本方法将不同核的共享变量定义在相同的源文件中,并使用相同的编译选项和相同的链接脚本段来编译,从而实现编译出的各个核的共享变量的地址相同。2.根据权利要求1所述的裸机多核AMP固件分配共享内存的方法,其特征在于:本方法的实施步骤为:S01)、编写共享内存分配源文件,在该文件中定义共享变量结构,并为该文件中的每个变量都加入保留变量选项__attribute__((used)),保证不会因为未使用而被编译器优化掉;S02)、修改每个核的链接脚本文件,为共享内存分配源文件分配一个单独的段,保证这个段在每个核中的起始地...

【专利技术属性】
技术研发人员:粟汝发王璞
申请(专利权)人:山东华芯半导体有限公司
类型:发明
国别省市:

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

1