日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于AUTOSAR的應(yīng)用層如何獲取準(zhǔn)確的時(shí)間戳呢

汽車ECU開發(fā) ? 來源:ADAS與ECU之吾見 ? 作者:奮斗的農(nóng)民工 ? 2022-09-21 14:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

首先,請問大家?guī)讉€(gè)小小問題,你清楚:

基于AUTOSAR的應(yīng)用層如何獲取準(zhǔn)確的時(shí)間戳嗎?

時(shí)間同步的具體過程包含哪些細(xì)節(jié)呢?

如何正確地獲取到全局時(shí)間戳呢?

今天,我們來一起探索并回答這些問題。為了便于大家理解,以下是本文的主題大綱:

eb2ee662-396f-11ed-9e49-dac502259ad0.png

正文

時(shí)間同步軟件框架

正如前文《AUTOSAR基礎(chǔ)篇之CanTsyn》所述,CanTsyn模塊負(fù)責(zé)時(shí)間同步之間的協(xié)議處理,StbM模塊則用來負(fù)責(zé)抽象底層不同的時(shí)間同步協(xié)議,為上層提供統(tǒng)一的時(shí)間戳接口以及當(dāng)前的時(shí)間同步狀態(tài)的接口。

通過如下圖1所示的Tsync則用來代表基于不同總線通訊的時(shí)間同步協(xié)議,StbM則是時(shí)間同步協(xié)議層基礎(chǔ)上的抽象,OS作為Triggered Customer,SW-C則作為Active Customer,后文將解釋這兩者之間的區(qū)別。

ebe2bf48-396f-11ed-9e49-dac502259ad0.png

圖1 AUTOSAR時(shí)間同步協(xié)議軟件框架

在上圖中,我們可以看到存在5個(gè)不一樣的數(shù)據(jù)流,下面將一一解釋每個(gè)數(shù)據(jù)流的基本作用:

數(shù)據(jù)流1表示StbM主動(dòng)調(diào)用TriggerCustomer提供的函數(shù)接口來完成時(shí)間同步,當(dāng)前主要應(yīng)用場景為OS Schedule Table的同步;

數(shù)據(jù)流2表示Active Customer(SW-C)主動(dòng)調(diào)用StbM提供的標(biāo)準(zhǔn)接口來獲取當(dāng)前時(shí)間戳或者時(shí)間同步狀態(tài);

數(shù)據(jù)流3表示Active Customer(SW-C)主動(dòng)調(diào)用StbM提供的標(biāo)準(zhǔn)接口來更新StbM維護(hù)的時(shí)間基準(zhǔn);

數(shù)據(jù)流4表示StbM模塊通過Tsyn模塊提供的標(biāo)準(zhǔn)函數(shù)接口來更新StbM的時(shí)間基準(zhǔn);

數(shù)據(jù)流5表示StbM模塊主動(dòng)通過Tsyn模塊提供的標(biāo)準(zhǔn)函數(shù)接口來將當(dāng)前的時(shí)間同步信息發(fā)送到相應(yīng)的bus總線上。

在時(shí)間同步領(lǐng)域內(nèi)涉及到諸多專有名詞,因此為了便于大家理解后續(xù)的內(nèi)容,有必要在此跟大家解釋些重要的標(biāo)準(zhǔn)術(shù)語,具體細(xì)節(jié)如下圖2所示:

ebffe0fa-396f-11ed-9e49-dac502259ad0.png

圖2 時(shí)間同步標(biāo)準(zhǔn)術(shù)語解釋

啟動(dòng)階段

在該階段StbM模塊將會(huì)提供完成必要的初始化來提供針對上層應(yīng)用的時(shí)間同步服務(wù)。

前置條件

StbM模塊通過調(diào)用函數(shù)接口StbM_Init來完成初始化工作,但是在此之前需務(wù)必完成基礎(chǔ)通訊模塊的初始化,如Canif模塊初始化,CanTsyn模塊初始化等。

初始化

通過調(diào)用上述函數(shù)完成初始化之后,將會(huì)完成如下基本動(dòng)作:

變量StbMSynchrinizedTimeBase將會(huì)被初始化為0;

timeBaseStatus將會(huì)將所有的bit初始化為0;

如果參數(shù)StbMStoreTimebaseNonVolatile等于STORAGE_AT_SHUTDOWN,那么就會(huì)從NVM中獲取數(shù)據(jù)(一般包含s跟ns部分),如果NVM獲取數(shù)據(jù)不成功,則都會(huì)賦值為0處理。

正常工作

Synchronized Time Base

每一次調(diào)用函數(shù)接口StbM_BusSetGlobalTime()時(shí)就會(huì)更新對應(yīng)的同步time base以及對應(yīng)的Time Base Status。

Time Master 同步狀態(tài)監(jiān)控

如下圖3所示,一個(gè)全局時(shí)間網(wǎng)絡(luò)至少一個(gè)Time Master跟一個(gè)Time Slave, Time Master將會(huì)將其時(shí)間信息傳遞至在同一Time Domain下的Time Slave。

ec2e2d34-396f-11ed-9e49-dac502259ad0.png

圖3 Time Master 同步狀態(tài)更新示意圖

由上圖可知,Time Master通過reference本地clock來更新本地全局時(shí)間,然后通過sync/FUP報(bào)文發(fā)送給到總線上。其中,如果Time Domain為0-15則為synchronized time base,而Time Domain 16-31則為Offset Time Base。

通過調(diào)用函數(shù)接口 StbM_GetCurrentTime() 來獲取當(dāng)前對應(yīng)Time Domain下的Time Base,對應(yīng)的timebasestatus以及user data;

通過調(diào)用函數(shù)接口StbM_GetCurrentTimeRaw() 來獲取當(dāng)前時(shí)間Time Base的ns部分;

通過調(diào)用函數(shù)接口StbM_GetCurrentTimeDiff() 來獲取輸入的時(shí)間戳與當(dāng)前時(shí)間戳的時(shí)間間隔,單位為ns;

通過調(diào)用函數(shù)接口StbM_BusSetGlobalTime()來更新當(dāng)前的Time Base以及設(shè)置對應(yīng)的timebaseStatus;

通過調(diào)用函數(shù)接口 StbM_SetGlobalTime()并且會(huì)就將GLOBAL_TIME_BASE bit位置1,同時(shí)清除其他bit 位;

Time Slave 同步狀態(tài)監(jiān)控

如下圖4所示體現(xiàn)了Time Slave的數(shù)據(jù)流交互關(guān)系,在下圖中我們可以看到Time Slave會(huì)接收來自同一Time Domin下的sync/fup 報(bào)文,同時(shí)加上本地計(jì)算出來的接收sync/fup報(bào)文的時(shí)間差最終用于更新當(dāng)前StbM的Time Base,該Time Base將最終被應(yīng)用到應(yīng)用層。

ec4ef06e-396f-11ed-9e49-dac502259ad0.png

圖4 Time Slave同步狀態(tài)更新圖

Time Slave在完成上述時(shí)間同步的過程中,需要注意幾點(diǎn):

每次更新調(diào)用函數(shù)StbM_BusSetGlobalTime時(shí),都會(huì)比較下當(dāng)前更新的時(shí)間戳與當(dāng)前內(nèi)部正在使用的時(shí)間戳的差值是否超過StbMSyncLossThreshold參數(shù)設(shè)定的值,如果該值為0,則會(huì)取消該部分的檢查,如果超過了設(shè)定的值, 那么將會(huì)將timeBaseStatus中的狀態(tài)位TIMELEAP 置1;

如果下一次更新,差值保證在范圍內(nèi),那么timeBaseStatus中的狀態(tài)位TIMELEAP將會(huì)被清0;

TIme Slave會(huì)實(shí)時(shí)確認(rèn)下當(dāng)前的時(shí)間戳與最近一次調(diào)用該函數(shù)的時(shí)間差距是否在參數(shù)StbMSyncLossTimeout設(shè)定的范圍內(nèi),如果Timeout發(fā)生,那么需置timeBaseStatus中的TIMEOUT bit位,一旦調(diào)用StbM_BusSetGlobalTime函數(shù)將會(huì)清除該TIMEOUT bit位。

如果從來沒有發(fā)生過時(shí)間同步, 那么TIMEOUT位將不會(huì)置位,只要發(fā)生過一次成功的時(shí)間同步,后續(xù)同步?jīng)]有按照預(yù)期發(fā)送,那么就會(huì)啟動(dòng)這個(gè)Timeout檢查。

如果參數(shù)syncToTimeBase設(shè)定為sync to GTM,那么調(diào)用StbM_BusSetGlobalTime() 將會(huì)清除timeBaseStatus中的SYNC_TO_GATEWAY bit位;

如果參數(shù)syncToTimeBase設(shè)定為sync to subdomain,那么調(diào)用StbM_BusSetGlobalTime() 將會(huì)置位timeBaseStatus中的SYNC_TO_GATEWAY bit位;

一旦調(diào)用函數(shù)接口fStbM_BusSetGlobalTime(),那么就會(huì)設(shè)置timeBaseStatus中的GLOBAL_TIME_BASE Bit位,一旦置位,則不會(huì)清除。

Time Gateway同步狀態(tài)監(jiān)控

Time Gateway既作為屬于某個(gè)Time Domain的Time slave,同時(shí)也會(huì)作為某個(gè)Time Domain下的Time Master而存在,如果存在Time Gateway的節(jié)點(diǎn),那么必然存在Time SubDomain的概念。

如果Time Gateway作為某個(gè)Time Domain的Time Slave存在,同樣存在著如下特性需要了解:

每次更新調(diào)用函數(shù)StbM_BusSetGlobalTime時(shí),都會(huì)比較下當(dāng)前更新的時(shí)間戳與當(dāng)前內(nèi)部正在使用的時(shí)間戳的差值是否超過StbMSyncLossThreshold參數(shù)設(shè)定的值,如果該值為0,則會(huì)取消該部分的檢查,如果超過了設(shè)定的值, 那么將會(huì)將timeBaseStatus中的狀態(tài)位TIMELEAP 置1;

如果下一次更新,差值保證在范圍內(nèi),那么timeBaseStatus中的狀態(tài)位TIMELEAP將會(huì)被清0;

TIme Slave會(huì)實(shí)時(shí)確認(rèn)下當(dāng)前的時(shí)間戳與最近一次調(diào)用該函數(shù)的時(shí)間差距是否在參數(shù)StbMSyncLossTimeout設(shè)定的范圍內(nèi),如果Timeout發(fā)生,那么需置timeBaseStatus中的TIMEOUT bit位,一旦調(diào)用StbM_BusSetGlobalTime函數(shù)將會(huì)清除該TIMEOUT bit位。

如果從來沒有發(fā)生過時(shí)間同步, 那么TIMEOUT位將不會(huì)置位,只要發(fā)生過一次成功的時(shí)間同步,后續(xù)同步?jīng)]有按照預(yù)期發(fā)送,那么就會(huì)啟動(dòng)這個(gè)Timeout檢查。

如果參數(shù)syncToTimeBase設(shè)定為sync to GTM,那么調(diào)用StbM_BusSetGlobalTime() 將會(huì)清除timeBaseStatus中的SYNC_TO_GATEWAY bit位;

如果參數(shù)syncToTimeBase設(shè)定為sync to subdomain,那么調(diào)用StbM_BusSetGlobalTime() 將會(huì)置位timeBaseStatus中的SYNC_TO_GATEWAY bit位;

一旦調(diào)用函數(shù)接口fStbM_BusSetGlobalTime(),那么就會(huì)設(shè)置timeBaseStatus中的GLOBAL_TIME_BASE Bit位,一旦置位,則不會(huì)清除。

Offset Time Base

對于Offset Time Base,相比Synchronized Time Base存在著如下一些特性:

每次調(diào)用StbM_SetOffset()就會(huì)用來更新相應(yīng)的Time base的 Offset Time;

函數(shù)StbM_SetOffset() 與StbM_GetOffset() 只能接收16-31的TimeBaseId;

每一次調(diào)用函數(shù)StbM_GetOffset()將會(huì)返回對應(yīng)的Offset Time Base的Offset Time;

在配置上也會(huì)存在限制,即只有StbMSynchronizedTimeBaseIdentifier為16至31,StbMOffsetTimeBase才會(huì)真實(shí)有效。

Customer

Customers作為理解為基于StbM模塊基礎(chǔ)之上的一種應(yīng)用角色,按照其功能作用可劃分為如下兩種角色:

Active customers:顧名思義就是一種主動(dòng)觸發(fā)調(diào)用StbM相關(guān)函數(shù)接口的應(yīng)用角色;

Triggered customers:就是一種被動(dòng)被StbM模塊調(diào)用其自身接口的應(yīng)用角色;

Active customers

對于Active customers,為了便于理解,我們可以列出如下場景來體現(xiàn)其基本作用:

讀取當(dāng)前的time base value,同步狀態(tài)以及user data;

設(shè)置對應(yīng)time base的value以及相應(yīng)的user data;

Triggered customers

對于Triggered customer,當(dāng)前僅用于同步OS的schedule table,通過調(diào)用OS提供的API函數(shù) SyncScheduleTable() 來實(shí)現(xiàn)Schedule Table之間的counter同步。

通過配置參數(shù)STBM_TRIGGERED_CUSTOMER_PERIOD來完成StbM定周期調(diào)用上述函數(shù)接口來完成各個(gè)sechdule table的os counter間的同步;

同時(shí)StbM僅在Schedule Table 處于WAITING,RUNNING,或者 RUNNING_SYNCHRONOUS狀態(tài)時(shí)完成同步,因此也就意味著StbM在同步前先要確認(rèn)下當(dāng)前需同步的Schedule Table的狀態(tài),然后才能進(jìn)行同步。

關(guān)閉階段

針對Shutdown階段,僅存在一個(gè)需要做的操作,如果參數(shù)StbMStoreTimebaseNonVolatile等于STORAGE_AT_SHUTDOWN,那么便會(huì)將當(dāng)前實(shí)時(shí)時(shí)間戳(S跟ns部分)存儲(chǔ)在NVM中。

常用函數(shù)接口說明

為了便于大家了解StbM模塊所提供的基本功能,因此將常見的函數(shù)接口列舉如下,以方便大家的查閱:

ec6cefa6-396f-11ed-9e49-dac502259ad0.png

圖5 StbM模塊常用函數(shù)接口




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • AUTOSAR
    +關(guān)注

    關(guān)注

    11

    文章

    409

    瀏覽量

    23759
  • NVM
    NVM
    +關(guān)注

    關(guān)注

    1

    文章

    47

    瀏覽量

    19822
  • Bus總線
    +關(guān)注

    關(guān)注

    1

    文章

    6

    瀏覽量

    8166
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    ETAS如何打破AUTOSAR的固有偏見

    AUTOSAR Classic 常被詬病為復(fù)雜且緩慢——但這種看法是否合理?ETAS 首席產(chǎn)品經(jīng)理 Darren Buttle 在《Automotive World》中闡述了 RTA-CAR 如何直
    的頭像 發(fā)表于 04-11 09:10 ?505次閱讀

    S32K344如何配置 MCAL 和應(yīng)用層模型?

    我想使用 S32DS 配置工具 simulink(MBD) 開發(fā) CAN Receive 項(xiàng)目S32K344。我在 MBDT 中嘗試了這個(gè)例子,但經(jīng)過編程,它并沒有實(shí)現(xiàn)我想要的功能。您能否建議我應(yīng)該如何配置 MCAL 和應(yīng)用層模型?我將不勝感激詳細(xì)步驟。
    發(fā)表于 04-01 06:38

    求助,關(guān)于TJA1103硬件時(shí)間問題求解

    我正在使用 MR-CANHUBK334,其中集成了一個(gè) gPTP 堆棧,該堆棧配置為從 TJA1103 的硬件時(shí)間模塊獲取時(shí)間。該節(jié)點(diǎn)配
    發(fā)表于 03-26 07:38

    合規(guī)之錨:FDA對電子時(shí)間的最新指南與藥廠應(yīng)對之道

    在藥品生產(chǎn)與質(zhì)量管理的數(shù)字化進(jìn)程中,電子時(shí)間已成為證明數(shù)據(jù)完整性的核心要素。對于面向國際市場的制藥企業(yè)而言,理解FDA對電子時(shí)間的最新要求,不僅是滿足監(jiān)管合規(guī)的底線,更是構(gòu)建可信數(shù)
    的頭像 發(fā)表于 03-24 09:40 ?182次閱讀
    合規(guī)之錨:FDA對電子<b class='flag-5'>時(shí)間</b><b class='flag-5'>戳</b>的最新指南與藥廠應(yīng)對之道

    飛凌嵌入式ElfBoard-系統(tǒng)信息與資源之獲取時(shí)間time

    用于獲取當(dāng)前時(shí)間(1970 年以來的秒數(shù)),通常用于簡單的時(shí)間計(jì)算,時(shí)間精度為秒級。1.頭文件#include 2.函數(shù)原型time_t
    發(fā)表于 01-16 08:38

    如何確保電能質(zhì)量在線監(jiān)測裝置運(yùn)行日志的準(zhǔn)確性?

    “真實(shí)、完整、可追溯”。以下是具體落地措施: 一、源頭把控:確保日志數(shù)據(jù)采集的真實(shí)性與精度 日志的準(zhǔn)確性始于數(shù)據(jù)采集環(huán)節(jié),需從 “時(shí)間同步、傳感器精度、硬件穩(wěn)定性” 三方面筑牢基礎(chǔ): 1. 高精度時(shí)間同步(日志
    的頭像 發(fā)表于 12-17 11:08 ?754次閱讀
    如何確保電能質(zhì)量在線監(jiān)測裝置運(yùn)行日志的<b class='flag-5'>準(zhǔn)確</b>性?

    基于以太網(wǎng)芯片的應(yīng)用層方案

    聚焦于以沁恒微電子以太網(wǎng)芯片(如CH394/CH395及集成型MCU CH32V317等)為基礎(chǔ)構(gòu)建的多種高效應(yīng)用層方案,闡述其如何以簡化的硬件與低成本,實(shí)現(xiàn)豐富的網(wǎng)絡(luò)功能。
    的頭像 發(fā)表于 12-09 14:47 ?724次閱讀
    基于以太網(wǎng)芯片的<b class='flag-5'>應(yīng)用層</b>方案

    應(yīng)用層外設(shè)進(jìn)行數(shù)據(jù)傳輸,是否應(yīng)該調(diào)用rt_device_create,rt_device_register等函數(shù)

    假如我要在應(yīng)用層用一個(gè)新的usart2串口傳輸數(shù)據(jù),那我應(yīng)該是怎么做? 1.在工程未編譯前將usart2加上,即定義宏BSP_USING_UART2,利用RT-Thread在硬件初始化
    發(fā)表于 10-11 06:29

    時(shí)間同步問題可能會(huì)對裝置的哪些方面產(chǎn)生影響?

    在電能質(zhì)量監(jiān)測、工業(yè)控制、電網(wǎng)運(yùn)維等場景中,裝置(如電能質(zhì)量在線監(jiān)測儀、數(shù)據(jù)校驗(yàn)系統(tǒng)、通信模塊、故障錄波器等)的時(shí)間同步是保障其功能正常的核心基礎(chǔ)。時(shí)間同步問題(如同步精度不足、時(shí)間
    的頭像 發(fā)表于 09-23 11:24 ?1486次閱讀

    使用羅德與施瓦茨CMX500的吞吐量應(yīng)用層測試方案

    5G NR(New Radio)吞吐量應(yīng)用層測試是評估5G網(wǎng)絡(luò)性能的一個(gè)重要方面,它主要關(guān)注的是在實(shí)際應(yīng)用條件下,用戶能夠體驗(yàn)到的數(shù)據(jù)傳輸速率。這種測試通常包括了對下行鏈路和上行鏈路的吞吐量進(jìn)行測量,以確保網(wǎng)絡(luò)可以滿足各種應(yīng)用場景的需求,比如高清視頻流、虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)、大規(guī)模物聯(lián)網(wǎng)等。
    的頭像 發(fā)表于 09-02 13:56 ?8184次閱讀
    使用羅德與施瓦茨CMX500的吞吐量<b class='flag-5'>應(yīng)用層</b>測試方案

    時(shí)間準(zhǔn)確?就選網(wǎng)絡(luò)時(shí)間服務(wù)器

    網(wǎng)絡(luò)時(shí)間服務(wù)器是為網(wǎng)絡(luò)設(shè)備提供準(zhǔn)確、標(biāo)準(zhǔn)、、可靠和多功能的時(shí)間服務(wù)的解決方案,能提供準(zhǔn)確的同步時(shí)鐘信號,支持標(biāo)準(zhǔn)的NTP和SNTP網(wǎng)絡(luò)時(shí)間
    的頭像 發(fā)表于 08-13 15:39 ?1228次閱讀
    <b class='flag-5'>時(shí)間</b>不<b class='flag-5'>準(zhǔn)確</b>?就選網(wǎng)絡(luò)<b class='flag-5'>時(shí)間</b>服務(wù)器

    東軟睿馳亮相第16屆AUTOSAR開放大會(huì)

    此前,5月27日-28日,第16屆AUTOSAR開放大會(huì)(16th AUTOSAR Open Conference)在比利時(shí)布魯日成功召開,本屆大會(huì)以“AUTOSAR solutions
    的頭像 發(fā)表于 06-06 16:07 ?1788次閱讀

    光庭信息亮相第16屆AUTOSAR開放大會(huì)

    此前,當(dāng)?shù)?b class='flag-5'>時(shí)間5月27日至28日,第16屆AUTOSAR開放大會(huì) (AUTOSAR Open Conference)在比利時(shí)布魯日會(huì)議中心隆重舉行。
    的頭像 發(fā)表于 05-30 15:09 ?1078次閱讀

    感知、傳輸應(yīng)用層一體化:工控一體機(jī)廠家聚徽詳解集成技術(shù)方案

    過程的全面智能化與高效化。本文將深入探討工控一體機(jī)中感知、傳輸應(yīng)用層一體化的集成技術(shù)方案,剖析其工作原理、技術(shù)優(yōu)勢以及實(shí)際應(yīng)用案例。 一、工控一體機(jī)概述 工控一體機(jī)是一種專為工業(yè)環(huán)境設(shè)計(jì)的計(jì)算機(jī)設(shè)備,具備高可
    的頭像 發(fā)表于 05-27 14:35 ?1477次閱讀

    基于RK3576的時(shí)間參數(shù)系統(tǒng)操作

    ,文章介紹了時(shí)間操作API的使用,包括獲取時(shí)間、系統(tǒng)延時(shí)、獲取和設(shè)置系統(tǒng)日期時(shí)間等功能,并提供
    的頭像 發(fā)表于 05-12 14:32 ?1177次閱讀
    基于RK3576的<b class='flag-5'>時(shí)間</b>參數(shù)系統(tǒng)操作
    红桥区| 五大连池市| 延长县| 兴业县| 丹巴县| 团风县| 泰顺县| 曲阳县| 黑水县| 公主岭市| 扶余县| 巴楚县| 南投市| 漳平市| 福海县| 凉城县| 鄂尔多斯市| 独山县| 商洛市| 蒲城县| 兴仁县| 遵义市| 竹山县| 山东省| 新河县| 桂阳县| 杭锦旗| 黑山县| 阿坝县| 宽城| 闻喜县| 黔西县| 贺州市| 武城县| 隆子县| 平湖市| 遵义县| 尼木县| 额尔古纳市| 奈曼旗| 普宁市|