999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

雙核處理器AMP模式在電力設備控制中的應用

2018-06-15 07:56:02,,,,
單片機與嵌入式系統應用 2018年6期
關鍵詞:程序設備系統

,,,,

(南京南瑞繼保電氣有限公司,南京 211102)

引 言

電力系統控制保護設備是一種專用嵌入式系統,一般由嵌入式處理器完成保護、測控、人機通信功能。這類裝置需要實現兩類功能:其一是通信和人機接口,通常包括以太網TCP/IP通信、UART通信、通信協議處理、LCD顯示控制、磁盤存儲等功能;其二是實時性計算控制,主要用于電氣量的實時采樣和分析計算,對系統的實時響應性能有較高要求。傳統的電力系統控制保護設備通常使用嵌入式CPU(例如ARM、PowerPC)運行嵌入式操作系統(例如VxWorks、Linux)實現第一類功能,使用DSP裸機系統(Bare Metal)實現第二類功能。隨著半導體技術持續發展,多核處理器芯片已成為市場上的主流,出現了類似Zynq-7000系列集成雙核ARM和FPGA的高度集成SoC器件。本文在同一片ARM雙核處理器SoC芯片Zynq-7000上實現了非對稱多處理模式(AMP),其中一個CPU核心上運行Linux操作系統,與此同時另外一個CPU核心上運行裸機系統。

1 系統軟硬件整體設計

1.1 Zynq-7000 SoC芯片簡介

Zynq-7000是Xilinx公司的SoC芯片,片上集成了ARM Cortex-A9雙CPU核心處理系統和FPGA。除此之外,Zynq-7000還集成了片內RAM(OCM)、DDR接口,以及GPIO、UART、以太網控制器、USB、SPI、I2C、SD卡控制器等多種外設接口[1]。

1.2 硬件整體設計

基于SoC的系統硬件設計簡潔,實現框圖如圖1所示。Zynq-7000 SoC外接DDR存儲器(作為主存)和SPI Flash存儲器(作為程序和數據的外部存儲)構成最小系統。另有片上的以太網控制器和UART外接相應電路作為通信、調試之用。

圖1 硬件設計框圖

1.3 軟件整體設計

在本方案中,Zynq-7000 SoC集成了兩個CPU核心:CPU0和CPU1,工作在AMP模式。其中CPU0上運行Linux操作系統,CPU1上運行裸機系統,經過合理的資源分配,兩者并行運行互不干擾。

本方案的啟動流程是:CPU0按照正常的Linux啟動流程啟動,此時CPU1處于禁用狀態。CPU0啟動完成后,在Linux環境下可加載CPU1程序并啟動CPU1。在系統運行過程中CPU0可隨時復位CPU1、重新加載CPU1程序并重新啟動CPU1。

本方案通過配置ARM中斷控制器(GIC)的方法實現了不同中斷在兩個CPU核心之間的分配,少數電力二次應用相關的專用中斷由CPU1響應,其它外設(例如以太網控制器、UART、SPI等)的中斷由CPU0響應。

2 CPU1加載啟動方案

Xilinx提供了一種在Linux環境下通過remoteproc驅動程序加載CPU1裸機程序并啟動CPU1的方法[2]。remoteproc本身較為復雜,存在諸多不穩定因素[3]。此外remoteproc要求裸機程序以固件的形式編譯進內核模塊,這使得裸機程序與Linux源代碼緊密耦合。不同功能的電力系統控制保護設備需要多樣化的CPU1裸機程序,remoteproc的這一限制不利于裸機程序的開發和維護。

針對電力系統控制保護設備的實際需求,本文設計了一種簡潔的方案,能夠在Linux用戶態下動態加載啟動CPU1的裸機程序。具體步驟如下:①操作寄存器復位CPU1;②加載CPU1裸機程序;③操作寄存器重新啟動CPU1。

上述步驟可重復進行,每次可按需為CPU1加載不同的裸機程序。

開發Linux內核模塊,提供字符設備/dev/dsp。Linux用戶空間程序通過調用字符設備/dev/dsp的系統調用函數進行上述各步驟操作。

2.1 操作寄存器復位CPU1

寄存器A9_CPU_RST_CTRL用于復位和啟動CPU核心[1],如表1所列。

表1 A9_CPU_RST_CTRL寄存器

向A9_CPU_RST_CTRL寫入值0x22使CPU1進入復位狀態。將此操作封裝進字符設備/dev/dsp的ioctl系統調用,用戶態程序通過調用ioctl命令字0x6501控制CPU1復位。

2.2 向DDR加載CPU1裸機程序

系統預留出部分DDR空間給CPU1使用,Linux不會占用此處空間。本方案使用的硬件平臺共有512 MB DDR空間,分配情況如表2所列。

表2 內存分配

為使Linux避開CPU1專用內存區域,Linux啟動時傳入參數“mem=64M@0x00000000 mem=352M@0x0A000000”。

CPU1專用內存區域位于內存空間中部而不是末尾,目的是將來可能會開發不同DDR容量的硬件平臺,使用這種分配機制可令CPU1占用的內存地址保持不變,進而保證CPU1裸機程序兼容不同DDR容量的硬件平臺。

Linux用戶空間程序可調用字符設備/dev/dsp的mmap系統調用,將CPU1專用內存區域映射到本地用戶空間。因CPU1復位重新啟動后緩存未使能,為保證程序的正確性,此映射為no cache方式。

CPU1裸機程序鏡像以ELF文件形式存放在Flash存儲器上。ELF文件是GNU工具鏈的默認輸出格式,便于生成和管理,其內部格式如圖2所示[4]。

圖2 ELF格式

Linux用戶空間程序按照圖2右視圖解析ELF文件,根據Program header table遍歷每一個segment,將segment的內容加載到已通過mmap映射到本地用戶空間的CPU1專用內存區域。

圖3 ICD IPTR寄存器

Flash存儲器上可存放多個ELF文件,用戶空間程序每次可按需加載不同的ELF文件。

2.3 操作寄存器重新啟動CPU1

CPU1復位重新啟動后,程序指針(PC)值為0x0000 0000,即從內存地址0x0000 0000開始執行指令。提前向內存地址0x0000 0000處寫入如下小段程序:

0xE59F0000,

/*ldr r0,[pc];+8 bytes*/

0xE12FFF10, /*bx r0 */

0x04000000

此段程序的功能是令CPU1跳轉到裸機程序加載的入口地址處執行。查看Zynq-7000 Linux內核鏈接腳本可知,0x0000 0000地址開始的4 KB內存不會被Linux訪問,所以此操作不會影響CPU0的Linux運行。與參考文獻[3]提供的方法相比,本方案更加簡潔,且不會占用OCM空間。

向A9_CPU_RST_CTRL寫入值0x00使CPU1脫離復位狀態開始啟動。將此操作封裝進字符設備/dev/dsp的ioctl系統調用,用戶態程序通過ioctl命令字0x6502調用控制CPU1啟動運行。

2.4 L2緩存一致性操作

按照第2.1~2.3節的步驟重復加載啟動CPU1,多次實驗后發現CPU1出現偶發性的程序崩潰問題。

進一步調試發現,CPU1程序變量有時會意外改變。排除其它因素的影響后,猜測此現象與L2緩存有關。在Zynq-7000的雙核ARM系統中,兩個CPU核心擁有各自的L1緩存,所以CPU1復位時CPU1的L1緩存隨之復位。L2緩存被兩個CPU核心共享,CPU1復位時L2緩存不會復位。CPU1復位前某些變量可能已映射到L2緩存,重新啟動后若上述位置的L2緩存發生write back,CPU1程序的變量值就會意外改變,這有可能造成程序崩潰。

為證實上述猜想,在第2.1節的復位CPU1操作后調用ARM Linux內核提供的outer_flush_range函數flush L2緩存,解除L2緩存與主存的映射關系。增加該措施后,再重復加載啟動CPU1,沒有再出現CPU1程序崩潰問題。

3 中斷分配

ARM處理器通過GIC模塊進行中斷配置和中斷響應。GIC的ICD IPTR寄存器可配置特定中斷由CPU0或CPU1響應[2],如圖3所示。

Linux啟動時傳入參數“maxcpus=1”,此參數限制Linux在CPU0上運行,Linux下使能的外設中斷全部分配到CPU0。CPU1啟動后,配置ICD IPTR將CPU1專用的中斷分配給CPU1。

4 實驗及分析

4.1 實驗方法

模擬電力系統控制保護設備的典型工作模式,為Zynq-7000片上集成的FPGA編寫程序,產生周期為250 μs和1000 μs的兩個周期中斷,分別記為中斷A和中斷B。

在CPU1裸機程序中響應中斷A和中斷B。在中斷A服務程序中翻轉一個GPIO(記為GPIO X);在中斷B服務程序中翻轉另外一個GPIO(記為GPIO Y)。

使用本方案提供的方法加載運行CPU1的裸機程序,使用示波器觀察GPIO X和GPIO Y的電平波形。

4.2 實驗結果分析

示波器觀測到的波形如圖4所示。

圖4 實驗結果

示波器捕獲到周期為250 μs和1000 μs的穩定波形,說明CPU1裸機程序加載成功且正確響應中斷。多次重復加載CPU1程序,圖4波形能夠穩定復現。

結 語

[1] Xilinx Inc.Zynq-7000 All Programmable SoC Technical Reference Manual [EB/OL].[2018-03].https://www.xilinx.com/support/documentation/user_g'uides/ug585-Zynq-7000-TRM.pdf.

[2] Xilinx Inc.Zynq AMP Linux FreeRTOS Guide [EB/OL]. [2018-03].https://www.xilinx.com/support/documentation/sw_manuals/petalinux2014_2/ug978-petalinux-Zynq-amp.pdf.

[3] 李鑫志,戈志華,劉向明.基于ARM平臺AMP架構下從核重復加載設計與實現[J].計算機應用與軟件,2017(1):218-221.

[4] TISCommittee.Portabie Formats Specification,Version 1.1. Executabie and Linkabie Format(ELF) [Z].1995.

猜你喜歡
程序設備系統
諧響應分析在設備減振中的應用
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
“程序猿”的生活什么樣
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
主站蜘蛛池模板: 精品视频在线一区| 国产日本欧美在线观看| 天天爽免费视频| 国产交换配偶在线视频| 丰满的少妇人妻无码区| 国产黄网永久免费| 国产精品久久久久无码网站| 国产呦精品一区二区三区下载| 国产日本一线在线观看免费| 国产精品成人久久| 亚洲日韩精品欧美中文字幕| 一级全免费视频播放| 欧美日韩国产精品综合| 欧美精品一区在线看| 日韩精品高清自在线| 精久久久久无码区中文字幕| 怡红院美国分院一区二区| 亚洲黄色成人| 中文字幕人妻无码系列第三区| 国产精品妖精视频| 中文字幕无码制服中字| 毛片在线看网站| 永久免费无码日韩视频| 亚洲国产精品无码AV| 在线国产资源| 色婷婷在线影院| 无码免费试看| 真人高潮娇喘嗯啊在线观看 | 欧美成人一级| 亚洲中文字幕23页在线| 亚洲国产精品人久久电影| 这里只有精品国产| 国产h视频在线观看视频| 久久超级碰| 国产一区亚洲一区| 成人在线观看一区| 欧美97色| 污污网站在线观看| 一级毛片视频免费| 国产女人水多毛片18| 亚洲一区二区三区麻豆| 久久香蕉国产线| 亚洲最新网址| 99热这里只有精品2| 99久久精彩视频| 国产精品永久不卡免费视频| 99在线视频精品| 亚洲精品无码AV电影在线播放| 日本一区高清| 久久国产拍爱| 亚洲国产成人久久77| 欧美午夜小视频| 亚洲精品欧美日本中文字幕| 2022国产无码在线| 青青久久91| 亚洲男人在线天堂| 亚洲中文字幕久久无码精品A| 亚亚洲乱码一二三四区| 香蕉国产精品视频| 欧美精品成人一区二区在线观看| 日韩欧美中文亚洲高清在线| 青青草原国产免费av观看| 国产黄色爱视频| 亚洲精品国产成人7777| 国产精品99在线观看| 欧美日韩精品一区二区在线线| 亚洲大尺码专区影院| 亚洲欧美另类久久久精品播放的| 毛片最新网址| 国产手机在线ΑⅤ片无码观看| 国产91视频观看| 99免费视频观看| 一级香蕉人体视频| 中文字幕免费视频| 国产高清自拍视频| WWW丫丫国产成人精品| 亚洲精品黄| 国产69精品久久| 91午夜福利在线观看| 国产精品女熟高潮视频| 国产探花在线视频| 日韩人妻精品一区|