2024年1月28日发(作者:)
第34卷第1期2017年1月计算机应用与软件Computer
Applications
and
SoftwareVoL34
No. 1Jan. 2017基于ARM平台AMP架构下从核重复加载设计与实现李鑫志1
(武汉工程大学机电工程学院湖北武汉430073)2(深圳市深视智能科技有限公司广东深圳518102)13戈志华2刘向明1摘要
针对工业智能相机在不同工作场景的需求以及在二次开发方面的诸多不便,通过重点研究和分析基于多核ARM平台的AMP架构下主从核的启动机制,提出一种用户态从核重复加载方案,丰富了开发者解决实际
工程问题的手段。以Zynq-7000为硬件平台,在双核Cortex-A9处理器上分别配置嵌入式Linux系统和Bare-Metal
环境,实现了主核对从核的复位和重新唤醒控制和不同从核任务程序的自由切换,对工程应用有积极的参考价值。关键词
ARM AMP架构从核重复加载嵌入式Linux系统Bare-Metal环境
中图分类号
TP3
文献标识码
A D0I
: 10. 3969/j. issn. 1000-386x. 2017. 01.040DESIGN AND IMPLEMENTATION OF SALVE PROCESSOR RELOAD UNDER AMP
ARCHITECTURE BASED ON ARM PLATFORMLi Xinzhi1’2 Ge Zhihua2 Liu Xiangming11 ( School of Mechanical and Electrical Engineering, Wuhan Institute of Technology, Wuhan 430073, Hubei, China )2 ( Shenzhen Sincevision Technology Co. , Ltd. , Shenzhen 518102, Guangdong, China)Aiming at the need of industrial smart cameras under different working scenes and the inconvenience during secondary development, a user-mode scheme of slave processor reload is proposed through studying and analyzing the
booting mechanism of host-slave processor under AMP architecture based on multi-core ARM platform, enriching the approaches for developers to solve practical engineering problems. Choosing Zynq-7000 as hardware platform, then the embedded Linux system and Bare-Metal environment are deployed separately on the part of dual-core processor Cortex-A9.
The host processor is able to control the slave processor to reset and re-wakeup, and switch different bare-metal program
freely, which has high reference value in engineering ds
ARM AMP architecture Slave processor reload Embedded Linux system Bare-Metal environment核操作系统负责,所有的资源都是共享的,可由操作系
Abstract
〇引言随着嵌入式技术应用领域的日益广泛和复杂,其
对处理器性能、功耗等提出了更高的要求,越来越多的
嵌入式应用采用多核处理器作为其硬件开发平台。多
核并行计算技术[1]作为当前计算机系统提高处理能
力、减小体积、降低功耗的主要方式,是未来嵌入式计
算技术发展的主要方向。在多核并行计算环境中,主
要有统统一管理,在编程的时候要考虑到并行编程的技术,
不利于应用程序的移植。混合多处理multiprocessing)架构,资源由操作系统统一管理,但是
上层应用可以指定运行在某一个特定的核上。非对称
多处理 AMP( Asymmetric Multi-Processing)架构的特点
是每个核都可以拥有自己专有的操作系统,通过共享
内存和中断实现核间通信。其中有一个主核,其余为
从核,核间有序启动且互不干扰。主从核之间的关系
如图1所示。这样可根据不同系统的性能分配不同任
务,具有更优秀的能量效率。BMP (Bound
SMP、AMP和BMP三种架构[2_4]。对称多处理
SMP( Symmetric Multi-Processing)架构所有白句资源由多收稿日期:2015 -12 -03。李鑫志,硕士生,主研领域:机器视觉在工程中的应用。戈志华,硕士。刘向明,教授。
第1期李鑫志等:基于ARM平台AMP架构下从核重复加载设计与实现219CPU1程序;4)加载阶段2段引导程序到内存中,并跳
转到SSBL上进行执行程序。第二阶段是SSBL阶段。对于运行在Zynq平台的
Linux系统而言,SSBL阶段就是U-B〇〇t过程。它的作
用是完成Linux内核启动之前所需的全部初始化工
作,例如DDR控制器、NAND
Flash控制器、SPI控制器
图1主从核关系Zynq-TOOO系列是Xilinx公司携手ARM公司,于
等,并且支持从本地或网络中加载Linux内核、Device
Tree文件以及根文件系统到内存中。2012年推出的全可编程片上系统AP
S〇C(
All
Programmable
System
on
Chip) 可扩展白勺处理平台 ,米用
微处理器加可编程逻辑(ARM +
FPGA)的结构,并搭
载双核Cortex-A9处理器。本文采用Zynq-7000系列
可扩展的处理平台
EPP (
Extensible
Processing
Platform) [6] 为硬件平台, 在主核 中搭建
Linux 操作系统
(CPU0),从核(CPU1)设计为以Bare-Metal方式运行。
CPU1的作用是高速计算,计算数据和结果通过共享内
存与CPU0交流。CPU0的主要作用是提供人机交互
界面,并控制CPU1的运行。1双核处理器的启动1.1主核(CPU0)启动Zynq支持两种启动模式[7]:安全模式和非安全模
式。在安全模式模式下,可以根据PS端配置不同选择
从
Quad-SPI
Flash、Nand
Flash、NOR
Flash 或
SD 卡启
动;在非安全模式模式下,可以使用JTAG启动作为主
要启动方式。CPU0的启动可以概要地描述为三个阶
段,分别是:阶段 〇: BootROM阶段 1: First Stage Boot Loader (FSBL)阶段 2:
Second
Stage
Boot
Loader (SSBL)BootROM阶段控制着Zynq 7000芯片的整个初始
化过程。BootROM中的代码主要对片上系统SoC
(System
on
Chip)中的
NOR,
Quad-SPI,NAND,SD 与
基本外设控制器进行初始化,使得ARM核可以访问并
使用这些外围设备,它还负责加载阶段1中的FSBL
程序,将系统的控制权移交给FSBL继续执行。本文
设计是从主频200
MHz 32
MB
Quad-SPI
Flash中启动。第一阶段的初始启动引导程序FSBL(
First
Stage
Boot
Loader),是在BootROM之后启动引导过程,由
Boot
ROM将其加载到片上存储器0CM (
On-Chip
Memory)或直接在NOR
Flash上运行。FSBL主要完成
以下几项工作:1)根据XPS中的配置,完成PS端的初
始化;2)使用比特流文件对PL进行配置;3)加载启动流程如图2所示。图2启动流程图1.2从核(CPU1)启动在主核启动的FSBL阶段,会完成CPU1程序的加
载。加载过程中拷贝cpul_bootvec.
bin文件到boot,
bif
文件中所指向([load =
OxFFFFFFFO]
D:kztftp
cpul_bootvec.
bin)的地址。cpul_bootvec.
bin 文件中
的内容是一段循环执行代码的入口地址
(0xFFFFFF2C)。可以在XMD中通过命令①:①
XMD%
connect
arm
hw
-debugdevice
epunr 2② XMD% mrd 0xfffff£2c 0x10©
XMD%
ird连接到CPU1,通过命令②查看从0xFFFFFF2C位置开始的循环执行代码的内容,如下:FFFFFF2C: F57FF04F
FFFFFF30: E320F002
FFFFFF34: E3E0000F
FFFFFF38: E590E000
FFFFFF3C: E37E00D4
FFFFFF40: 0AFFFFF9
FFFFFF44: EE070F15
FFFFFF48: EE070FD5
FFFFFF4C: EE080F17
FFFFFF50: E3A04000
FFFFFF54: EE014F18
FFFFFF58: E12FFF1E循环执行的汇编代码在这里已经被编译成16个
4字节的十六进制指令。当CPU1上电后会运行这段
循环代码,代码的功能是自动检查地址OxFFFFFFFO
处的值。也可以通过命令③查看此时PC的值
220计算机应用与软件2017 年为 0x00000000。32从核重复加载实验过程及分析实验的目的是通过主核(CPU0)控制从核(CRJ1)
在AMP架构的情况下,Linux可以通过remotproc
模块动态加载从核CPU1。这种方案需要先将remot-
proc模块安装到Linux内核,或者动态加载到内核,这
完成重复加载,并先后执行Binarization. elf和Rotating-
Calipersal. elf
两个图像处理的
CPU1
程序。Binariza-
tion. elf的功能是对图像进行二值化处理,RotatingCali-
persal. elf的功能是利用旋转卡壳算法提取图像中
样不利于开发者对CRJ1的控制。而且remotproc模
块本身也存在着诸多不稳定的因素。对比该方案,本
的圆。文提出一种用户态从核加载方案。该方案的原理是,当CPU0中Linux系统运行时,
向系统级控制寄存器SLCR(
System
Level
Control
Registers) 中的复位控制寄存器
CPU_RCC(
CPU
Reset
and
Clock
Control)发送命令复位CPU1,然后CPU0将
CRJ1要运行的新程序加载到DDR中相应位置,这一
步在CPU0的代码中实现。然后重新唤醒CPU1。由于CPU1在复位后会对CPU1复位时所有通用
寄存器都将被清零,所以此时PC是指向0地址的。提
前将CRJ1的循环执行代码拷贝到0地址处,当CRJ1
重新运行起来后就开始执行循环代码,并检查地址
OxFFFFFFFO的值是否为0,不为0即说明该处被写入
了一个地址,此时CPU1就会跳转到被写入的地址处
执行。基于这种CPU0唤醒CRJ1的机制,可以实现在
用户态下从核的加载。方案的具体步骤如下:1) 在CRJ1运行时,CPU0对其复位;2) CPU0将CRJ1要运行的新程序加载到
DDR
中;3)
CPU0重新启动CRJ1。重复以上三个步骤就可以完成在用户态从核重复
加载的目的。方案的流程如图3所示。图3从核重复加载从图3中不难看出,在CPU0与CPU1间完成
几次简单的通信可以就实现从核重复加载,这使得
开发者可以更加简便、灵活地解决实际工程中的相
关问题。3.1
CPU1 复位首先,在CRJ1运行时,CPU0是通过调用CRJ1控
制函数对其进行复位。控制函数实现如下:#include < sys/mman. h >#define SYSTEM _REG_SIZE 0x1000
#define SYSTEM _REG_BASSADRESS 0xF8000000
#define SYSTEM _RELATIYE_OFFSET 0x00000244
/*CPU1控制函数实现*/void Function_Ctrl_Cpul (unsigned int reg_value) j
int rwmem_fd = - 1
;unsigned int * gp_CPU_reset_vaddr = NULL;
rwmem_fd = open ( "/dev/rwmem" , 0_RDWR I 0_SYNC);gp _ CPU _ reset _ vaddr = ( unsigned int * ) mmap(0, SYSTEM_REG_SIZE,
//映射虚拟地址
PR0T_READ I PROT_WRITE, MAP_SHARED,
rwmem_fd, SYSTEM _REG_BASSADRESS);
unsigned int base_addr = (unsigned nt) (gp_CPU_reset_vaddr);(* ( volatile unsigned int * ) (base_addr + SYSTEM
.)) = reg_value;!参考
Zynq-7000 All Programmable SoC Technical
Reference Manual中系统级控制寄存器的CRJ1复位
控制寄存器,如表1所示。向寄存器A9_CPU_RST_
CTRL
(绝对地址:0xF8000244)写入值
0x22。表 1
Register
A9_CPU_RST_CTRL (咅盼)7]Field NameBitsTypeRst_YDescriptionA9_CLKST0P15rw0x0CPU1
0:no stop
clock stop control:
1
(CPU runs): clock stoppedA9_RST12rw0x010
CPU1 reset control: :assert
: de-assert
(held in reset)(no reset)于是调用CRJ1控制函数如下:
第1期李鑫志等:基于ARM平台AMP架构下从核重复加载设计与实现221FimCti〇n_Ctrl_Cpul (0x22)
;//关闭 CPU1
时钟,复位 CPU13.2加载CPU1的启动过程,并利用这种启动机制,提出了一种在
bin文件方案是先将elf文件转编译成一个bin文件然后
再加载到DDR中。在bin文件中没有任何段表信息,
只需在编译bin文件时配置文件入口地址e这样就将
原本只能在内核中完成的从核加载转化成bin可执行
文件的用户态从核加载。通过编译工具链中的objcopy工具将Binarization.
elf文件和RotatingCalipersal. elf文件编译成bin文件,
用户态下从核重复加载方案。方案的特点是开发者可
以灵活地在用户态下复位和唤醒CPU1。将CPU1的任
务程序以bin文件的形式提前加载到DDR中,当需要切
换时只需加载相应bin文件的入口地址到指定地址即
可。通过实验证明此方案是行之有效且稳定可靠的。参考文献[1 ]张林波,迟学斌,莫则堯,等•并行计算导论[M]•北
执行如下命令:@ [ root@ localhost] #arm-none-linux-gnueabi-objcopy -0
binary Binarization. elf Binarization . bin
© [ root@ localhost] #arm-none-linux-gnueabi-objcopy-0
binary RotatingCalipersal. elf RotatingCalipersal. bin在Xilinx SDK[8]里面通过修改lscript. Id中text段
的内存区域属性修改程序入口地址,此处配置Binarization. bin
文件的入口 地址为
0x10200000 03.3重新启动CPU1加载Binarization. bin文件成功后,通过两次调用
上述CPU1控制函数,分别将CPU1的时钟开启以及重
新唤醒CPU1:Function_Ctrl_Cpul (0x20)
;
//时钟恢复Function_Ctrl_Cpul (0x0)
;
//重新唤醒 CPU1在CPU1复位后,所有通用寄存器都被清零,PC指
向0地址。将CPU1的循环执行代码提前拷贝到0地址
处,CPU1复位后就开始执行这段代码,循环检查地址
OxFFFFFFFO处的值。经过上述第=步操作,此时地址
OxFFFFFFFO
处值已经是
0x10200000,即
Binarization. bin
文件的入口地址。于是CPU1跳转到Binarization. bin文
件入口地址开始运行该可执行文件。同理,重复步骤
1)-步骤3),并将可执行文件RotatingCalipersal. bin的
入口地址写到地址OxFFFFFFFO。如此便实现了在用户
态下对从核的重复加载@实验结果如图4所示。其中
图4( a)为处理前图像,图4(b)为二值化处理后图像,图
4(c)为原提取图像9(a)原图 (b)二值化处理 (c)圆提取图4实验结果4结语本文在Zynq-7000为平台上,详细分析了
CPU0和京:清华大学出版社,2006.[2 ] Freescale Semiconductor Inc. Running AMP, SMP or BMP
Mode for Multicore Embedded Systems[M]. USA: Freescale
Semiconductor Inc, 2014.[3 ]蒋建军,刘彤.一种AMP架构下的处理器负载均衡改进
方法[J].山东农业大学学报(自然科学版),2015,46(I)
:96-100.[4]肖学甲.基于AMP架构的多核间任务同步与通信的设计
与实现[D].西安:西安电子科技大学,2011.[5 ]何宾• Xilinx All Programmable Zynq-7000 SoC
设计指南
[M]•北京:清华大学出版社,2013.[6 ] Xilinx Inc. Zynq-7000 Extensible Processing Platform Summary [OL]. http
://www. xilinx. com/support, html.[7 ] Xilinx Inc. Zynq-7000 All Programmable SoC Technical Reference Manual [ OL ]. https
://www. xilinx. com/support/
documentation/user_guides/ug585-Zynq-7000-TRM. pdf.[8 ] Xilinx Inc. Xilinx Design Tools
: Installation and Licensing
Guide[ OL]. http
://www. xilinx. com/support, html.(上接第217页)[2 ] Shou G, Zhang W, Gu Y, et al. Application of near infrared
spectroscopy for discrimination of similar rare woods in the
Chinese market[ J]. Journal of Near Infrared Spectroscopy,
2014,22(6) :423 -432.[3 ]陈慧萍,林莉莉,王建东,等.WEKA数据挖掘平台及其二
次开发[J] •计算机工程与应用,2〇〇8,44( 19) :76 _79.[4 ]杨林楠,郜鲁涛,林尔升,等.基于Android系统手机的甜
玉米病虫害智能诊断系统[J].农业工程学报,2012,28
(18) :163 -168.[5 ]李炳穆.理想的图书馆员和信息专家的素质与形象[J].图书情报工作,2000,44(2) :5 “8,95.[6 ]黄华,祝诗平,刘碧贞.近红外光谱云计算分析系统构架与实现[J].农业机械学报,2014,45 (8) :294 -298,327.[7 ]李献礼,范会联•基于JSP/Servlet技术的网上选课系统的
设计及实现[J ].涪陵师范学院学报,2005,21 (5 ) : 107
-110.[8 I张红.利用Java Servlet实现在Web服务器平台上的开发[J] .桂林电子科技大学学报,2009,29(3) :238 _242.
本文发布于:2024-01-28 23:14:47,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170645488710995.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |