<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個全新的AWorks平臺,服務IoT物聯網生態系統

UtFs_Zlgmcu7890 ? 來源:互聯網 ? 作者:佚名 ? 2018-04-06 09:12 ? 次閱讀

本文導讀

經過十多年的不斷研發、積累和完善,廣州致遠電子有限公司(www.zlg.cn)推出了全新的AWorks平臺——IoT物聯網生態系統。并已成功地應用到ZLG的示波器、功率計、功率分析儀、電壓監測儀、電能質量分析儀、數據記錄儀與工業通訊等系列高性能儀器和工業IoT產品中。AWorks的誕生極大的降低了開發者門檻,為開發者提供便利,使開發者可以忽略底層技術細節,專注產品“核心域”,更快的開發出具有競爭力的產品。同時,AWorks為開發者提供的是高度抽象的通用接口,基于AWorks平臺的軟件與底層硬件無關,可以“隨心所欲”的跨平臺復用(如更換MCU等等)。

AWorks是在怎樣的背景下誕生的?AWorks究竟是什么?怎樣使用AWorks?本文作為AWorks的簡介,將解答這些疑問,使讀者對AWorks有一個初步的認識。

1.1誕生的背景

雖然嵌入式系統和通用計算機系統同源,但由于應用領域和研發人員的不同,嵌入式系統很早就走向了相對獨立的發展道路。通用計算機軟件幫助人們解決了各種繁雜的問題,隨著需求的提升,所面臨的問題越來越復雜,軟件領域的大師們對這些問題進行了深入研究和實踐,于是誕生了科學的軟件工程理論,無需多言,通用計算機軟件的發展是我們有目共睹的。

再回過頭來看嵌入式系統的發展,其需求相對來說較為簡單,比如,通過熱電阻傳感器測溫、上下限報警與繼電器的動作,因此嵌入式系統的應用開發似乎沒有必要使用復雜的軟件工程方法,于是通用計算機系統和嵌入式系統走上了不同的發展道路。

當嵌入式系統發展到今天,所面對的問題也日益變得復雜起來,而編程模式卻沒有多大的進步,這就是所面臨的困境。相信大家都或多或少地感覺到了,嵌入式系統行業的環境已經開始發生根本的改變,智能硬件和工業互聯網等都讓人始料不及,危機感油然而生。

盡管企業投入巨資不遺余力地組建了龐大的開發團隊,當產品開發完成后,從原材料BOM與制造成本角度來看,毛利還算不錯。當扣除研發投入和合理的營銷成本后,企業的利潤所剩無幾,即便這樣員工依然還是感到不滿意,這就是傳統企業管理者的窘境。

雖然ZLG投入了大量的人力資源,但重復勞動所造成的損耗以億元計。上千種MCU、大量的片上外設、眾多的外圍器件,操作方式不盡相同。由于缺乏平臺化的技術,即便相同的外圍器件,幾乎都要重新編寫相應的代碼和文檔并進行測試,所有的應用軟件很難做到完美地復用。

在開發同一系列高中低三個層次的產品時,通常會遇到這樣的問題,主芯片可能使用ARM9、雙核A9和DSP,其操作系統分別為μC/OS-II、Linux和SysBIOS。不僅驅動代碼不兼容,而且應用層代碼也不一樣,如此一來,僅僅維護這些各不相同的代碼就要消耗大量的人力資源。同時,對于開發人員,每天處在這繁重的維護工作中,很難再專注于產品本身,發現新的創新點。

傳統的嵌入式開發門檻很高,從硬件到軟件,從底層驅動到各種協議棧、中間件,再到應用程序,這些都是嵌入式開發必須要掌握的技能。比如,使用一個新的MCU,需要閱讀上千頁的數據手冊;使用OS不得不深入底層,了解原理和移植底層核心代碼;產品需要聯網,又不得不學習豐富的通信技術和物聯網協議(NB-IoT、Lora、Bluetooth、WIF、HTTP、MQTT、LWM2M、TLS……)。

相信很多開發者都有過項目從最底層的寄存器操作開始,一步一步地構建整個開發平臺的慘痛經歷。項目投入了大量的人力、物力、財力,結果往往卻不甚理想。這是因為我們并非是各個方面的專家,不可能每一面都能做得很好,項目自然會為此而付出巨大的成本。

什么都要做,卻什么也做不好,這就是當前嵌入式開發的真實寫照。同時,對于一個具體產品來講,這些技術僅僅只是產品的基礎“工具”,并非“核心域”,產品的價值在于產品本身的創新。若在開發產品前,開發者需要花大量的時間和精力學習這些新技術、新知識,不僅嚴重影響產品的開發進度,而且隨著時間的消耗,最初的創意、最初的靈感,很可能就被這些技術細節打敗,消磨殆盡,很難開發出具有競爭力的產品了。為了解決種種痛點,經過十多年的不斷研發、積累和完善,ZLG推出了AWorks平臺。

1.2概述

圖1.1 AWorks

如圖1.1所示是AWorks的標識符。從概念上講,AWorks是ZLG經過十多年時間積累開發的IoT物聯網生態系統。AWorks平臺的宗旨是“軟件定義一切”,使應用與具體硬件平臺徹底分離,實現“一次編程、終生使用”和“跨平臺”。AWorks提供了大量高質量、可復用的組件,行業合作伙伴可以在該平臺上直接開發各種應用,通過有線接入和無線接入收集、管理和處理數據。從而將程序員從“自底層寄存器開始開發、學習各種協議”的苦海中解放出來,使開發者可以回歸產品本質,以應用為中心,將主要精力集中在需求、算法和用戶體驗等業務邏輯上。具體來說,可以從兩個方面來理解AWorks。

首先,AWorks是一個平臺。它提供了一種通用機制,能夠將各種軟件組件有機的集成在一起,使其可以為用戶提供數量龐大且高質量、高價值的服務。這些組件經過了精心的設計和實現,在代碼體積、效率、可靠性和易用性方面下了很大功夫。

其次,AWorks是跨平臺的,這里的平臺指的是底層硬件平臺或具體軟件的實現。AWorks規范了各種類型組件的通用接口,這些通用接口是對某一類功能高度抽象的結果,與具體芯片、外設、器件及實現方式均無關。例如,定義了一組文件系統接口,接口與具體存儲硬件,具體文件系統實現方法(FAT、YaFFS、UFFS等)均無關。換言之,存儲硬件、文件系統的實現都可以任意更換,不會影響到通用接口?;诖?,只要應用程序基于這些通用接口進行開發。那么,應用程序就可以跨平臺使用,更換底層硬件不會影響到應用程序。換句話說,無論 MCU 如何改變,則基于AWorks平臺的應用軟件均可復用。

下面,首先簡述AWorks的基本特點,然后向讀者展示AWorks的架構圖。

1.2.1 特點

AWorks具有以下特點:

  • 所有內部組件均可靜態實例化,避免內存泄漏,提高系統運行的確定性和實時性;

  • 深度優化了組件初始化過程,使系統能以極短的時間(通常小于1s)啟動;

  • 所有組件可插拔、可替換、可配置(可通過便捷的圖形配置工具完成);

  • 領先的驅動管理框架:AWbus-lite,使驅動程序可以得到最大限度的復用;

  • 先進的電源管理模塊,最大限度地降低功耗;

  • 提供常用的通用組件:文件系統、TCP/IP議棧、USB協議棧等;

  • 主要目標領域:IoT物聯網,提供WiFi、Bluetooth、Zigbee、GPRS、3G等無線接入方式,以及6LoWPAN、TLS、DTLS、CoAP、MQTT、LWM2M等物聯網關鍵協議棧。云端接入方面,支持機智云、IBM、阿里云等云服務平臺應用程序框架,很快也將推出ZLG自主研發的云平臺;

  • 包含極微小原生內核,任務數量無限制,高達1024優先級,支持同優先級任務,最小能在1K RAM、2K ROM中運行,包含多任務管理、信號量、互斥量、消息隊列等多種OS服務;

  • 除原生內核外,也可使用ucCOS、FreeRTOS等實時操作系統作為AWorks的內核;

  • 提供第三方組件的適配器,方便用戶跳過移植階段,直接使用第三方組件,比如LWIP、FatFS、SQLite等。

簡單的說AWorks平臺提供了標準化的硬件擴展接口與硬件無關的標準化API函數接口,提供了大量高質量的組件,這些組件都是可剪裁、可配置的?;贏Works中大量的組件,開發者無需關心與MCU、OS有關的基礎知識,只要會 C語言就能將需求開發成產品。

為了幫助用戶快速搭建產品原型,ZLG還提供了豐富的硬件模塊供開發者選擇,如i.MX28x底板及系列核心板、M3352底板及系列核心板、M6748底板及系列核心板和一系列外圍擴展配件(傳感器配件、ZigBee配件、WI-FI配件、3G配件等工業IoT常用配件)。

1.2.2 架構

AWorks架構圖詳見圖1.2。

圖1.2 AWorks的架構

可以簡單地將AWorks看作三層結構:應用層、中間層和硬件層。

1、應用層

包含用戶編寫的應用程序。應用程序可以使用C開發,也可以使用C++開發。對于部分硬件平臺,AWorks還提供了Python(MicroPython)的支持,用戶可以直接使用Python語言開發應用程序。

2、中間層

中間層是AWorks的主體部分,其包含了各式各樣的組件,在AWorks中,一切軟件都可以視為組件,常見的有:驅動軟件(比如,PCF85063驅動)、通用工具軟件(比如,鏈表、環形緩沖區)、一些大型的協議棧(比如,TCP/IP)等。

雖然AWorks集成的組件十分繁多,但都是可裁剪的,AWorks甚至能夠在只有幾K內存的小資源平臺上運行。其中,AMetal是一個特殊的組件,其位于外設和外圍器件之上,本質上是一個裸機支持包,負責與底層硬件打交道,完成寄存器級別的操作,封裝底層硬件的功能,并完成基礎功能的抽象,為系統上層提供統一的硬件操作接口。換言之,AMetal處理了底層硬件的差異性,使系統上層專注于硬件功能的使用,無需再處理繁雜器件之間的差異性,為每一類不同器件編寫不同的驅動。

除AMetal外,其余所有組件可以分為5大類(在架構圖中使用黑色的矩形框進行了劃分,并在矩形框左上角對該類組件進行了命名):應用框架&庫(Application Frameworks & Libs)、基礎服務(Base Facilities)、實時內核(Real-Time Kernel)、網絡(Networking)、設備管理(Device Management)。

  • 應用框架&庫

    (Application Frameworks & Libs)

應用框架是直接為應用程序服務的,主要包含一些大型的系統框架,如:GUI、腳本引擎、數據庫、Bootloader等。

AWorks兼容Posix,使基于Posix接口的應用程序可以無縫移植到AWorks平臺中運行。為便于用戶使用,AWorks還提供了一系列算法庫。

在這里,特別說明一下相對讀者來講比較陌生的一個概念:“AWPI C++框架”,其同樣是由廣州致遠電子有限公司推出的。AWPI提供了一套C++接口,它與操作系統和平臺均無關,在任何地方都可以使用,類似于Posix接口,只要一個系統兼容AWPI,那么基于AWPI的應用就可以在該系統中運行。

當前,AWPI已經支持AWorks、Windows和Linux系統。如此一來,習慣于在Windows或Linux上做開發的C++程序員,只要其使用AWPI開發C++應用程序,那么這些應用程序就可以在AWorks中運行,而AWorks又是定位于IoT物聯網的生態系統,換句話說,C++程序員無需了解嵌入式底層,就可以直接使用C++開發物聯網相關應用。

  • 基礎服務

AWorks提供了一系列基礎服務,這是一些高效、功能完善的組件,主要包括:文件系統、I/O系統、Shell服務、加密(安全)服務、電源管理(低功耗)、測試框架、狀態機框框架、事件管理框架等。

  • 實時內核

實時內核可以看作一個OS內核,提供OS基礎服務:時間管理、線程服務、同步(互斥鎖、信號量、消息郵箱等)、原子操作、數據傳遞、內存管理等。

通常情況下,AWorks默認使用的OS內核是廣州致遠電子有限公司自主研發的輕量級RTOS:AWorks OS(RTK)。但實際上,AWorks并不限制使用某一特定的操作系統,操作系統如同驅動代碼一樣,僅僅是一個可以根據需要任意更換的組件。

在AWorks中,要使用某一操作系統,僅需提供一個對應的適配器即可。操作系統適配器直接駐留在操作系統接口之上,主要用于屏蔽各類操作系統和硬件接口的差異,從而大大地增強了AWorks的可移植性和可維護性。

當前,AWorks已經為常見的操作系統提供了適配器,比如,SYSBIOS Adaptor、Windows Adaptor、Linux Adaptor等。以支持在AWorks中使用這些操作系統。

  • 網絡

網絡是AWorks非常重要的組成部分,也是其作為IoT生態系統的必備條件。在萬物互聯的大趨勢下,網絡相關技術也得到了快速的發展。AWorks緊隨時代潮流,支持眾多常用協議以及最新的協議。用戶基于AWorks平臺開發,無需再深入研究網絡協議,直接使用這些協議即可。

目前,AWorks支持常見的通信技術,主要有:ModBus協議、CAN協議(這里的CAN側重于CAN協議棧,設備管理中的CAN側重于CAN硬件通訊接口)、Cellular(蜂窩)、WIFI、以太網、Lora WAN、NB-IoT、Bluetooth、zigbee等。

同時,AWorks具有TCP/IP協議棧,支持IPv6,支持TLS(使用TLS加密通信)以及大量基于TCP/IP的應用協議,如:FTP、SMTP、HTTP、MQTT、CoAP、LWM2M等。

特別地,隨著物聯網的發展,越來越多的設備需要接入“云”,AWorks已經針對第三方云(主要包括阿里云、機智云等)進行了適配,基于AWorks的應用可以輕松的接入這些“云”,第三方云的支持可以方便用戶將之前的程序遷移到AWorks平臺。除此之外,AWorks平臺還將推出自主研發的云平臺。

  • 設備管理

設備管理用于管理一系列硬件設備,在嵌入式系統中,設備的種類非常繁多,如GPIO、PWM、ADC、ADC、I2C、SPI、CAN、Serial、USB、PCIe、傳感器、人機界面、媒體設備、存儲設備等。使用一個設備管理框架可以實現對這些設備“有條不紊”的管理。

3、硬件層

硬件層表示了當前AWorks支持的硬件設備。主要分為兩大類:

  • 支持的CPU內核

當前支持的CPU內核主要有:Cortex-M0/3/4/7、Coterx-A7/8/9、ARM7/9、DSP等常用內核。

  • 支持的外設 & 外圍器件

外設主要是指MCU的片上外設,如ADC、DAC、GPIO、UART、SPI、I2C等;外圍器件主要是指一些IC芯片,常見的有:各類傳感器芯片、存儲器芯片、接口擴展芯片(比如,UART轉兩路SPI)、專用芯片(如以太網PHY芯片)等。

1.3發布形式

圖1.3 SDK發布形式

AWorks的發布形式是SDK(Software Development Kit),SDK中包含了文檔、工具、示例代碼、模版工程等。詳見圖1.3。

詳盡的文檔旨在幫助用戶快速上手AWorks。例如:《快速入門手冊》可以幫助用戶快速搭建好開發環境;《用戶手冊》可以使用戶對SDK有更深入的了解,如目錄結構、平臺資源(ADC通道數目、PWM通道數目等)等,并掌握硬件平臺相關資源的定義和配置(如LED0對應的I/O口)。

示例代碼展示了一些組件的使用方法,比如,多任務、文件系統、定時器、內存管理等等。當用戶使用一個新的組件時,可以參考SDK中提供的示例代碼,快速理解各個接口的使用方法。模版工程用于用戶快速創建自己的應用工程,使創建新的工程非常簡單:拷貝一份模版工程并重命名即可。

AWorks是不開源的,內部核心功能組件都是以庫的形式提供,相關接口通過頭文件引出。用戶直接使用各個組件提供的接口開發應用程序,專注于應用程序開發,無需關心底層實現。需要注意的是,AWorks SDK與具體硬件開發套件相對應,不同硬件平臺使用的SDK是不同的。廣州致遠電子有限公司推出了一系列嵌入式硬件開發套件,供用戶二次開發,快速搭建產品原型。如EPC-AW280底板可以分別與A280-W64F8AWI(WIFI核心板)、A280-Z64F8AWI(zigbee核心板)和A280-M64F8AWI(無線讀卡核心板)組成3套開發套件,詳見圖1.4。

圖1.4 底板與3個核心板可以組成3套開發套件

為了便于客戶使用,廣州致遠電子有限公司為每套硬件都提供了對應的AWorks SDK,即SDK與具體硬件開發套件一一對應。在使用AWorks前,需要聯系廣州致遠電子有限公司,獲取到對應硬件的SDK。

不同硬件對應的SDK是不同的,不建議混用。不同SDK對底層硬件的不同分別進行了處理,屏蔽了底層硬件的差異性,對于用戶來講,無論使用何種硬件,應用程序使用的API是完全相同的,也正因為如此,應用程序不會與某一硬件平臺捆綁,可以很容易地實現跨平臺復用。

1.4使用方法

對于用戶來講,獲取AWorks SDK后,即可基于AWorks快速開發應用程序。在開發某一應用程序前,需要先建立一個新的工程,在AWorks SDK中,已經提供了模板工程,“新建工程”只需簡單拷貝一下即可。

模板工程就是位于projects_keil5applications目錄下的template文件夾。新建工程即將template文件夾重新復制一份,并將拷貝得到的文件夾重命名為與具體應用相關的名字,例如:要編寫一個LED閃爍應用,則可以命名為:led_blinking。接著打開led_blinking文件夾,將工程文件template.uvprojx也重命名為led_blinking.uvprojx,至此,即完成了工程的建立。若用戶已經正確安裝了keil軟件,則雙擊led_blinking.uvprojx工程文件即可打開工程。(更詳細的操作詳見配套開發資料中的《快速入門手冊》,其中包含了詳盡的軟件安裝步驟)。打開工程后,即可在user_code分組下的main.c文件中添加具體的應用程序代碼。

作為示例,可以編寫一個簡單的LED閃爍程序,詳見程序清單1.1。

程序清單1.1 LED閃爍范例程序

將該程序編譯、鏈接后即可生成程序固件,并可以下載到開發板上運行,具體操作方法相見SDK中的《快速入門手冊》。

在AWorks中,函數的命名以“aw_”開頭,其中,aw_led_toggle()在aw_led.h文件中聲明,用于翻轉LED;aw_mdelay()在aw_delay.h文件中聲明,用于延時指定的時間(單位:毫秒)。這些接口的詳細使用方法將在后續相關的章節予以介紹。需要特別注意的是,在AWorks平臺中編寫應用程序時,所有源文件都應該首先包含aworks.h文件。

在這里,初步體會了LED和延時服務兩類API,實際中,任何模塊或服務的使用方法都是類似的。首先,包含該模塊或服務對應的頭文件(“aw_xxx.h”);然后,使用頭文件中提供的API。后續章節將詳細介紹AWorks提供的一些基礎服務,比如,常用設備(LED、按鍵、數碼管等)、常用外設(GPIO、PWM、SPI等)、時間管理、內存管理、OS內核、文件系統等。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 物聯網
    +關注

    關注

    2878

    文章

    41999

    瀏覽量

    360111

原文標題:AWorks生態系統簡介

文章出處:【微信號:Zlgmcu7890,微信公眾號:周立功單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    MCU產品、軟件、生態系統的演變及未來展望

    ,涉及所有相關環節的參與者和相關的支持資源:工具、軟件、文檔、設計服務、論壇、研討會、大學實驗室、競賽、圖書、培訓等。ARM生態系統日益繁榮,也進步推動了其內核在32位領域的領導地位。適應新
    發表于 01-19 15:17

    NB-IoT來了!共建NB-IoT生態,擁抱萬互聯

    的部署亦日益增多?! 」步∟B-IoT生態,擁抱萬互聯!  項技術由紙面到商用離不開強大
    發表于 09-30 14:45

    高通和機智云打造全球首個可遠程升級NB-IoT的開發平臺

    調制解調器的新功能將是項重要的創新,也是聯網生態系統發展的重要里程碑。"移遠BG36模組將是款集成Qualcomm MDM9
    發表于 06-29 10:14

    安森美半導體為全球客戶群提供關鍵生態系統元素

    和技術之外,公司為關鍵應用領域如工業、汽車和無線設備的客戶和合作伙伴提供前所未有的支持。設計工具和參考設計在任何生態系統都至關重要,安森美半導體在這方面大力投資。如最近推出的模塊化聯網(Io
    發表于 10-23 09:03

    ROHM三款傳感器通過阿里IoT生態系統驗證

    2018年10月18日,全球知名半導體制造商羅姆(ROHM)宣布,其氣壓傳感器BM1383A、地磁傳感器BM1422A和環境光亮度傳感器BH1730FVC等三款產品通過阿里IoT聯網生態
    發表于 07-11 04:20

    聯網的需求有哪些?

    想要在聯網IoT)市場占據席之地,原始設備制造商(OEM)必須加快創新的步伐。聯網的應用
    發表于 10-22 07:09

    生態聯網數據采集怎么實現?

    隨著信息技術的發展,聯網(Internet of Things,IOT)得到了越來越多的企業和學者的重視。盡管對聯網的確切定義還頗有爭議
    發表于 03-23 07:40

    基于arduino +機智云聯網平臺的陽臺生態控制系統的設計

    模塊與手機通信,設計了基于Arduino的智能溫室大棚控制系統[5]。還有大量學者對控制策略進行了研究。2 陽臺植物環境監測控制系統硬件平臺設計陽臺植物生態環境是
    發表于 07-16 12:28

    Microchip FPGA 和基于 SoC 的 RISC-V 生態系統簡介

    和 Buildroot Linux BSP、Hart 軟件服務、各種中間件和其他資源——完善 MI-V 生態系統并加快上市時間。結論RISC-V 是嵌入式計算的下一個前沿,Microchip
    發表于 09-07 17:59

    什么是STM32Cube生態系統?

    什么是STM32Cube生態系統?
    發表于 09-29 06:12

    使用linux嵌入式構建IoT生態系統組件

    linux嵌入式聯網 您會發現,構建IoT生態系統組件的最快方法是使用嵌入式Linux,無論您是從開始就擴充現有設備還是設計新設備或
    發表于 11-04 08:47

    IT的生態系統概述

    、IT的生態系統概述1.1 計算機CPU四大體系結構1、以PC機為代表的X86結構2、以嵌入式計算機為代表的ARM結構3、以國產龍芯為代表的MIPS結構4、以IBM巨型機為代表的POWPC結構
    發表于 12-22 06:47

    PlatformIO聯網開發生態系統簡介

    PlatformIO簡介PlatformIO 是開源的聯網開發生態系統。它提供跨平臺的代碼構建器、集成開發環境(IDE),并且兼容 Arduino 和 MBED。它支持超過 200
    發表于 01-24 06:55

    高通推出開創性聯網和機器人產品,擴展智能網聯邊緣生態系統

    聯網處理器、兩全新機器人平臺,以及面向聯網生態系統合作伙伴的加速器計劃。這些
    發表于 03-14 16:18

    NB-IoT 和 LTE-M 如何適用于物聯網生態系統:蜂窩物聯網的特性

    NB-IoT 和 LTE-M 如何適用于物聯網生態系統:蜂窩物聯網的特性
    的頭像 發表于 12-26 10:16 ?1437次閱讀
    NB-<b class='flag-5'>IoT</b> 和 LTE-M 如何適用于物<b class='flag-5'>聯網</b><b class='flag-5'>生態系統</b>:蜂窩物<b class='flag-5'>聯網</b>的特性
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>