基于ARM平台AMP架构下从核重复加载设计与实现

阅读: 评论:0

2024年1月28日发(作者:)

基于ARM平台AMP架构下从核重复加载设计与实现

第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 dur­ing 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 ap­proaches for developers to solve practical engineering problems. Choosing Zynq-7000 as hardware platform, then the em­bedded 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

Pro­grammable

System

on

Chip) 可扩展白勺处理平台 ,米用

微处理器加可编程逻辑(ARM +

FPGA)的结构,并搭

载双核Cortex-A9处理器。本文采用Zynq-7000系列

可扩展的处理平台

EPP (

Extensible

Processing

Plat­form) [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

Reg­isters) 中的复位控制寄存器

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段

的内存区域属性修改程序入口地址,此处配置Binari­zation. 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 Sum­mary [OL]. http

://www. xilinx. com/support, html.[7 ] Xilinx Inc. Zynq-7000 All Programmable SoC Technical Ref­erence 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.

基于ARM平台AMP架构下从核重复加载设计与实现

本文发布于:2024-01-28 23:14:47,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170645488710995.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:加载   启动   地址   实现   复位
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23