衡阳派盒市场营销有限公司

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

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

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

一個(gè)軟件工程師的軟硬件協(xié)同開(kāi)發(fā)應(yīng)對(duì)經(jīng)驗(yàn)淺談

電子工程師 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 2018-02-02 05:24 ? 次閱讀

我從事嵌入式業(yè)務(wù)已有很多年時(shí)間了,但還是不清楚“協(xié)同開(kāi)發(fā)”是否是指管理人員夢(mèng)想實(shí)現(xiàn)超高效項(xiàng)目開(kāi)發(fā)進(jìn)度的一種方式,還是說(shuō)對(duì)于軟件開(kāi)發(fā)人員而言是一種折磨。或許它只是意味著軟件開(kāi)發(fā)與硬件平臺(tái)設(shè)計(jì)齊頭并進(jìn)吧。這除了意味著軟件人員的苦難之外,我真不清楚還意味著什么。

在嵌入式領(lǐng)域,經(jīng)常要為正在設(shè)計(jì)中的電路板或芯片同時(shí)編寫軟件。有時(shí)是為Mentor Graphics或Cadence Design Systems等EDA廠商仿真環(huán)境中復(fù)雜的ASIC設(shè)計(jì)而編寫軟件。有時(shí)則是為Xilinx或Altera公司功能強(qiáng)大的FPGA設(shè)計(jì)而編寫軟件。FPGA器件帶有與標(biāo)準(zhǔn)和定制IP模塊相連的嵌入式微處理器內(nèi)核。還有的時(shí)候是為了可編程片上系統(tǒng)編寫軟件,這種可編程片上系統(tǒng)將可編程數(shù)字/模擬功能和微控制器完美集成在一起(如賽普拉斯PSoC器件)。這些功能都非常強(qiáng)大,能實(shí)現(xiàn)難以置信的創(chuàng)新,但同時(shí)也會(huì)帶來(lái)痛苦,那就是硬件可能隨時(shí)發(fā)生變化,而軟件開(kāi)發(fā)人員則難以招架。

我不是建議放慢創(chuàng)新步伐,而是說(shuō)應(yīng)該給軟件工程師一個(gè)喘氣的機(jī)會(huì)。但事實(shí)上剛好相反。硬件工具需要更好地與軟件IDE集成在一起才能加速產(chǎn)品上市進(jìn)程。而設(shè)計(jì)人員需要更多工具和方法讓應(yīng)用不受硬件變化的影響。我不是說(shuō)向設(shè)計(jì)中添加或從中移除主要的通信模塊。如果您的真需要添加或移除主要通信模塊,那么您的軟件工程師真該找點(diǎn)別的事干了,因?yàn)檫@意味著硬件設(shè)計(jì)還根本沒(méi)就位呢。我這里說(shuō)的變化都是設(shè)計(jì)周期較晚階段對(duì)于已定義的功能模塊進(jìn)行的微小改變,比方說(shuō)寄存器地址變動(dòng)、比特位被重新定義、緩沖區(qū)大小改變等。這些“小變化”也會(huì)影響到軟件,進(jìn)而可能造成產(chǎn)品缺陷,甚至在忘記硬件變化原因時(shí)還要對(duì)軟件進(jìn)行長(zhǎng)時(shí)間返工。

軟件工程師,現(xiàn)在到了我們奮起反擊的時(shí)候了!以下給出了針對(duì)目標(biāo)不斷變化的情況如何靈活進(jìn)行應(yīng)用開(kāi)發(fā)的三點(diǎn)建議。在開(kāi)始新的項(xiàng)目之前,不要忘掉這些建議!

1 不要編寫HAL,要生成它!

我們需要的第一個(gè)變化就是讓硬件開(kāi)發(fā)工具生成軟件接口,也就是通常所說(shuō)的硬件適配層(HAL)。HAL應(yīng)包括能可靠地初始化可編程硬件的啟動(dòng)代碼,并提供API接口以支持系統(tǒng)的軟件控制。HAL不僅簡(jiǎn)化了固件開(kāi)發(fā),還能將實(shí)施從接口中抽象出來(lái)。這就意味著硬件的微小變化不會(huì)對(duì)固件造成影響。

HAL中其實(shí)沒(méi)什么新概念,許多經(jīng)驗(yàn)豐富的設(shè)計(jì)人員已經(jīng)明智指出,常量、函數(shù)和變量都應(yīng)采用一致的、直觀的命名規(guī)范。不過(guò),對(duì)于FPGA、CPLD和PSoC等可編程器件而言,我們還要將此規(guī)范進(jìn)一步擴(kuò)展,也就是HAL要由硬件設(shè)計(jì)工具生成,否則軟件工程師怎么才能確保可靠的接口呢?

在固定或變化很少的環(huán)境中(比如說(shuō)固定功能MCU或大規(guī)模ASIC項(xiàng)目),我們可將HAL視為一套獨(dú)立的API,可將其作為硬件設(shè)計(jì)變化的一部分進(jìn)行修改。不過(guò),對(duì)于現(xiàn)代化的可編程器件而言,硬件一天會(huì)變化好幾次。手動(dòng)HAL維護(hù)與當(dāng)前情況根本不相匹配,肯定會(huì)在實(shí)施階段出現(xiàn)錯(cuò)誤,更別說(shuō)要對(duì)軟件工程師帶來(lái)多大痛苦和折磨了!我認(rèn)為,HAL自動(dòng)生成應(yīng)為任何可編程平臺(tái)的必備要求。

1.jpg

圖1:PSoC Creator工作區(qū)域抓屏,其中我們看到采用FanController模塊和一對(duì)比較器(Comp_Hi)和(Comp_Lo)的系統(tǒng)控制器設(shè)計(jì)所用的API文件(HAL)。

2 集成自己最喜歡的IDE

可編程器件為創(chuàng)新帶來(lái)了巨大機(jī)遇,但往往設(shè)計(jì)硬件所需的工具會(huì)對(duì)正常軟件開(kāi)發(fā)實(shí)踐造成影響。工程師往往不得不使用簡(jiǎn)單、功能欠佳的工具,而且不能與現(xiàn)有的流程很好地結(jié)合。

大多數(shù)協(xié)同設(shè)計(jì)環(huán)境都是從硬件設(shè)計(jì)工具演變而來(lái),這些工具多年來(lái)一直支持ASIC和FPGA或CPLD流程。隨著嵌入式CPU越來(lái)越普及,為工具產(chǎn)品組合添加軟件開(kāi)發(fā)功能的需求變得非常明顯,這樣,一種工具就能支持軟硬件兩個(gè)領(lǐng)域,但對(duì)兩個(gè)領(lǐng)域各自而言又都不夠理想。在此情況下,工程師就會(huì)在兩個(gè)領(lǐng)域都會(huì)減少特性選擇,甚至喪失特性選擇。

解決方案不是讓工具廠商提供業(yè)界領(lǐng)先的調(diào)試器,將其捆綁到硬件設(shè)計(jì)工具中,就宣布成功,然后奇怪軟件工程師怎么還在不停地抱怨。為以硬件為中心的工具添加源代碼編輯器并調(diào)試特性,這并不能真正解決問(wèn)題,因?yàn)楣ぞ呷詻](méi)有集成到用戶的流程中。源控制接口、軟件測(cè)試套件、自動(dòng)化構(gòu)建等是目前開(kāi)發(fā)人員每天都要接觸的工作,將硬件設(shè)計(jì)工具集成到他們的日常工作中才是真正的挑戰(zhàn)。

正確的做法根本不是集成調(diào)試器、編輯器或整個(gè)IDE,而是要讓軟件開(kāi)發(fā)人員從項(xiàng)目一開(kāi)始就能在自己真正喜歡并使用的傳統(tǒng)IDE開(kāi)發(fā)環(huán)境中開(kāi)展工作。硬件設(shè)計(jì)人員或許仍需要工具中的軟件特性來(lái)創(chuàng)建并運(yùn)行小型測(cè)試程序,但真正的應(yīng)用開(kāi)發(fā)應(yīng)當(dāng)始終在工程師首選的IDE中進(jìn)行。

如果想要滿足這一要求,一個(gè)辦法就是要能夠?qū)㈨?xiàng)目從一個(gè)工具導(dǎo)出到另一個(gè)工具。舉例來(lái)說(shuō),賽普拉斯的PSoC Creator能夠?qū)SoC設(shè)計(jì)直接導(dǎo)入到Keil μVision工具中。在許多可編程系統(tǒng)中,“硬件”事實(shí)上是作為數(shù)據(jù)塊提供,能在啟動(dòng)時(shí)被編程到器件中,以創(chuàng)建配置好的器件。對(duì)于軟件而言,它僅僅是數(shù)據(jù),因此導(dǎo)出設(shè)計(jì)只需硬件工具為目標(biāo)產(chǎn)品生成項(xiàng)目文件,再用HAL源文件和初始化代碼植入即可。應(yīng)用隨后就能在硬件頂層上進(jìn)行構(gòu)建,而且不會(huì)干擾現(xiàn)代化環(huán)境中使用的自動(dòng)化測(cè)試和源控制系統(tǒng)

2.jpg

圖2:PSoC Creator的“IDE 導(dǎo)出”GUI。本對(duì)話框用來(lái)創(chuàng)建和更新用于應(yīng)用開(kāi)發(fā)的Keil μVision項(xiàng)目。

當(dāng)然,對(duì)于動(dòng)態(tài)的硬件平臺(tái)而言,一次性導(dǎo)出不是完整的解決方案,還必須提供無(wú)縫更新設(shè)計(jì)的特性,而且不會(huì)破壞應(yīng)用。對(duì)于支持庫(kù)的IDE來(lái)說(shuō),更新過(guò)程很簡(jiǎn)單,因?yàn)樵O(shè)計(jì)可被拆分為應(yīng)用項(xiàng)目和配置庫(kù),這就能將應(yīng)用完全隔離開(kāi)來(lái),而且能讓包含配置數(shù)據(jù)和HAL的硬件庫(kù)在設(shè)計(jì)變化時(shí)自動(dòng)更新。

3.jpg

圖3:以上導(dǎo)出的系統(tǒng)控制器項(xiàng)目在Keil μVision中打開(kāi),可用于應(yīng)用開(kāi)發(fā)。

3 超越軟件范疇的調(diào)試

設(shè)計(jì)人員所需的第三個(gè)特性就是改進(jìn)調(diào)試。在現(xiàn)代化器件中,“處理器”的定義不僅限于CPU的寄存器和指令集。處理器芯片集成了各種額外的片上功能,比如說(shuō)常見(jiàn)的通信模塊和標(biāo)準(zhǔn)接口,此外還包括無(wú)所不在的定時(shí)器和計(jì)數(shù)器,以及為軟件提供數(shù)字接口的模擬功能,有時(shí)也包括定制邏輯和可切換的路由功能等。這種可定制性說(shuō)到底正是我們最初選擇協(xié)同設(shè)計(jì)的原因所在。調(diào)試器如果只支持CPU,就會(huì)讓軟件開(kāi)發(fā)人員非常失望。我們需要圍繞硬件認(rèn)真解決以下問(wèn)題:硬件啟動(dòng)了嗎?時(shí)鐘啟動(dòng)并穩(wěn)定了嗎?外設(shè)在正常工作嗎?通信模塊是否生成中斷?能否發(fā)送和接收數(shù)據(jù)?能否在內(nèi)部總線上正常工作?

如果這聽(tīng)起來(lái)就夠嚇人的話,我還沒(méi)說(shuō)到從調(diào)試器改變硬件呢,這其實(shí)是讓人的角色在迫害者和受害者之間轉(zhuǎn)變。我需要符號(hào)化外設(shè)硬件的存取方式,這樣我就能監(jiān)控和控制影響應(yīng)用的狀態(tài)變化。

當(dāng)然,符號(hào)信息必須從硬件工具中生成,就好像上述HAL一樣。通過(guò)簡(jiǎn)單添加這一點(diǎn),調(diào)試過(guò)程就變得更加簡(jiǎn)單,功能也更加強(qiáng)大了。之所以說(shuō)更簡(jiǎn)單,是因?yàn)槲覀儾辉傩枰恢辈樵兾臋n去尋找并確認(rèn)調(diào)試器中要注意哪些關(guān)鍵寄存器的地址了。而之所以說(shuō)更強(qiáng)大,是因?yàn)楝F(xiàn)在它能支持更為復(fù)雜的調(diào)試。除了快速獲得外設(shè)模塊狀態(tài)快照之外,有時(shí)我們還能從調(diào)試器控制功能塊,無(wú)需編寫代碼以編程方式重建情境就能了解情境工作的具體情況。

交換此信息的典型方法就是讓IDE使用由硬件工具生成的XML文件。ARM CMSIS-SVD(軟件接口標(biāo)準(zhǔn)——系統(tǒng)視圖描述)標(biāo)準(zhǔn)就是一個(gè)很好的例子。它是基于XML的硬件描述,旨在讓調(diào)試器支持高度集成的微控制器。CMSIS是一種面向ARM Cortex微控制器的HAL的標(biāo)準(zhǔn)定義,得到了眾多廠商的廣泛采用。SVD擴(kuò)展主要針對(duì)硬件描述,如寄存器、存儲(chǔ)器、外設(shè)等,讓從事可編程系統(tǒng)開(kāi)發(fā)的人員真正地大獲裨益。

4.jpg

圖4:這是一小段XML,介紹了賽普拉斯PSoC Creator調(diào)試器有關(guān)CAN實(shí)施中一個(gè)寄存器的情況。CAN_CSR_ERR_SR寄存器的地址、大小和描述均已定義,在寄存器中有5個(gè)字段,定義了名稱、大小和存取權(quán)限。

共享硬件定義的一個(gè)重要因素就是能夠定義外設(shè)寄存器,進(jìn)而言之,則能提供面向寄存器中字段的存取權(quán)限,從而確保調(diào)試器認(rèn)真對(duì)待讀/寫可修改的位。硬件給我們提供clear-on-read位和zero-to-toggle位以及各種其它晶體管能夠感應(yīng)但是軟件很難應(yīng)付的狀態(tài)處理接口。只有對(duì)硬件進(jìn)行良好的機(jī)器生成定義,我們才能保證用戶在外設(shè)模塊上調(diào)試寄存器或個(gè)別位時(shí)不至于浪費(fèi)時(shí)間,或?qū)е乱馔饨Y(jié)果。

有了可編程硬件的高級(jí)視圖,我們不僅能檢查狀態(tài)寄存器和錯(cuò)誤狀態(tài),還能實(shí)現(xiàn)更多功能。舉例來(lái)說(shuō),如果硬件支持寄存器控制的開(kāi)關(guān),能實(shí)現(xiàn)外設(shè)I/O到器件引腳的靈活路由,那么軟件開(kāi)發(fā)人員就能從調(diào)試器操控器件的內(nèi)部布線!有些人聽(tīng)到這里可能感覺(jué)有些嚇人,不過(guò)如果SVD信息正確生成,那么我們就能限制允許的變化,確保“安全的”編輯,比如說(shuō)數(shù)字信號(hào)上的多路復(fù)用器通道選擇或兩個(gè)物理引腳之間的模擬輸入切換。

硬件工具為軟件開(kāi)發(fā)人員生成調(diào)試信息,有望顯著縮短應(yīng)用開(kāi)發(fā)時(shí)間。不僅如此,重要的是,我們還有機(jī)會(huì)在早期檢測(cè)出硬件設(shè)計(jì)錯(cuò)誤,因?yàn)檐浖_(kāi)發(fā)人員發(fā)現(xiàn)混亂和代碼重寫的不正常情況下更有可能發(fā)現(xiàn)意料之外的行為。

面向可編程器件的完整產(chǎn)品

現(xiàn)在,“完整產(chǎn)品”的概念已得到充分地理解和廣泛地接受,也成了成功的重要因素。只有最佳的工具或最出色的芯片已經(jīng)不夠了。我們今天使用的可編程解決方案形式多樣:可能是全定制的ASIC,其在高度專業(yè)化的解決方案中集成了ARM內(nèi)核和多個(gè)IP模塊;也可能是更加通用的平臺(tái),其集成了可編程芯片和設(shè)計(jì)工具,諸如Altera和賽靈思推出的FPGA解決方案,或賽普拉斯半導(dǎo)體公司推出的PSoC器件等。雖然這些環(huán)境千差萬(wàn)別,但都面臨著同樣的問(wèn)題——不能將硬件修改有效地遷移到軟件領(lǐng)域,從而影響應(yīng)用開(kāi)發(fā)。

我認(rèn)為,這個(gè)問(wèn)題的根源在于項(xiàng)目中使用的硬件設(shè)計(jì)工具和IDE采用了狹隘的方法。像我這樣的軟件狂人(開(kāi)玩笑)總喜歡把所有問(wèn)題都?xì)w咎于硬件工具和工程師,但事實(shí)上硬件工具和軟件工具集都太過(guò)偏向于他們特定的領(lǐng)域了。很難見(jiàn)到二者添加了我以上提到的特性,因?yàn)檫@些特性跟其各自的客戶好像沒(méi)什么關(guān)系。我相信這種局面正在發(fā)生變化,PSoC Creator等產(chǎn)品支持在可編程硬件上進(jìn)行器件配置同時(shí)還集成第三方IDE(如ARM的Keil μVision IDE)的工具會(huì)不斷發(fā)展。在工程師首選的IDE中實(shí)現(xiàn)應(yīng)用開(kāi)發(fā),同時(shí)讓工具獲得獨(dú)有的強(qiáng)大信息并控制硬件平臺(tái),這顯然是更高效進(jìn)行產(chǎn)品開(kāi)發(fā)、加速產(chǎn)品上市進(jìn)程的必由之路。與此同時(shí),減少對(duì)工程師的折磨也不失為一件大好事!

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

    關(guān)注

    5093

    文章

    19178

    瀏覽量

    307710
  • 工程師
    +關(guān)注

    關(guān)注

    59

    文章

    1572

    瀏覽量

    68654
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式軟件工程師硬件工程師的區(qū)別?

    嵌入式軟件工程師硬件工程師的區(qū)別? 嵌入式軟件工程師 嵌入式軟件工程師軟件開(kāi)發(fā)領(lǐng)域中的
    發(fā)表于 05-16 11:00

    硬件工程師還是軟件工程師

    我從機(jī)械電子轉(zhuǎn)向電子工程師,轉(zhuǎn)硬件工程師有前途還是軟件工程師
    發(fā)表于 03-22 16:42

    【招聘】軟硬件工程師多名

    、DXP等EDA軟件;5. 精通單片機(jī)、ARM7、STM32等硬件開(kāi)發(fā);6. 能夠熟練閱讀英文資料;7. 高度責(zé)任心,思維敏捷,具有創(chuàng)造力,良好的團(tuán)隊(duì)合作精神和溝通協(xié)調(diào)能力。【高級(jí)軟件工程師
    發(fā)表于 08-06 14:24

    【高薪誠(chéng)聘】硬件工程師、嵌入式軟件工程師【上海】

    ;3.有定的硬件調(diào)試經(jīng)驗(yàn),配合硬件工程師完成功能開(kāi)發(fā); ?4.配合上位機(jī)
    發(fā)表于 08-07 11:15

    深圳急招:BMS軟件工程師-深圳

    硬件開(kāi)發(fā)工程師完成BMS的設(shè)計(jì)、測(cè)試、生產(chǎn)和維護(hù)。4. 協(xié)同其他工程師共同完成智能充電器的開(kāi)發(fā)
    發(fā)表于 04-09 14:31

    招聘:軟件工程師(數(shù)字信號(hào)處理方向-FPGA)、硬件工程師

    公司行業(yè):航天航空公司性質(zhì):國(guó)企公司規(guī)模:1000人招聘:軟件工程師(數(shù)字信號(hào)處理方向)、硬件工程師軟件工程師:1)通信、電子、計(jì)算機(jī)專業(yè),碩士及以上學(xué)歷;2)具有XILINX/ACT
    發(fā)表于 04-25 21:02

    深圳高薪誠(chéng)聘電子硬/軟件工程師

    、C/C++嵌入式開(kāi)發(fā)工程師(3名)崗位要求: 1、本科學(xué)歷以上,電子工程,自控,計(jì)算機(jī)科學(xué),軟件工程或其他相關(guān)專業(yè); 2、1年以上嵌入
    發(fā)表于 07-14 17:53

    重慶某電源技術(shù)公司誠(chéng)招高級(jí)電源工程師以及單板軟硬件工程師

    相全橋、無(wú)橋PFC等電源電路設(shè)計(jì)的優(yōu)先。單板軟硬件工程師工作職責(zé):1.負(fù)責(zé)嵌入式(單片機(jī)、ARM或者DSP)軟件相關(guān)模塊設(shè)計(jì)、編碼開(kāi)發(fā)調(diào)試、單元測(cè)試等工作;2.組織
    發(fā)表于 11-14 17:39

    誠(chéng)聘嵌入式軟件工程師

    獵頭職位:嵌入式軟件工程師【上海】崗位職責(zé):1、根據(jù)產(chǎn)品功能需求,制訂嵌入式系統(tǒng)設(shè)計(jì)方案;2、負(fù)責(zé)嵌入式系統(tǒng)內(nèi)核定制和外設(shè)驅(qū)動(dòng)程序的開(kāi)發(fā)工作;3、負(fù)責(zé)對(duì)各類傳感器及其他嵌入式模塊進(jìn)行測(cè)試和評(píng)估;4
    發(fā)表于 03-10 10:31

    泰禾光電(合肥)硬件工程師/軟件工程師招聘

    泰禾光電(合肥)硬件工程師/軟件工程師招聘()硬件工程師1)電子相關(guān)專業(yè),本科及以上學(xué)歷;2)
    發(fā)表于 06-20 22:05

    硬件工程師軟件工程師哪個(gè)更有前途?

    的職位要多的多,而且軟件工程師找工作上來(lái)說(shuō)會(huì)比硬件工程師更容易。先從企業(yè)的角度來(lái)講講。我個(gè)人認(rèn)為造成這個(gè)差異的原因,第一個(gè)是基本上所有的公司,從初創(chuàng)公司到全球百?gòu)?qiáng),都有對(duì)
    發(fā)表于 08-23 10:59

    嵌入式軟件工程師和嵌入式硬件工程師有什么不同,區(qū)別在哪里?

    數(shù)據(jù)結(jié)構(gòu),會(huì)web編程有相關(guān)經(jīng)歷就夠了。??6、軟件工程師很多時(shí)候吃的是體力,硬件工程師大部分時(shí)候是吃經(jīng)驗(yàn),所以硬件
    發(fā)表于 07-15 16:01

    「干貨必看」嵌入式硬件工程師軟件工程師有什么區(qū)別?

    會(huì)千方百計(jì)的留住產(chǎn)品設(shè)計(jì)的核心人員,尤其是硬件設(shè)計(jì)人員。另外,培養(yǎng)個(gè)硬件工程師比較難,而且時(shí)間也比較長(zhǎng)。所以企業(yè)
    發(fā)表于 05-28 17:18

    硬件工程師軟件工程師對(duì)比分析哪個(gè)更好

    企業(yè)的角度來(lái)講講。我個(gè)人認(rèn)為造成這個(gè)差異的原因,第一個(gè)是基本上所有的公司,從初創(chuàng)公司到全球百?gòu)?qiáng),都有對(duì)軟件工程師的需求。現(xiàn)在哪個(gè)公司不需要幾個(gè)碼農(nóng)來(lái)開(kāi)發(fā)app,或者做個(gè)web。但是做硬件
    發(fā)表于 12-24 08:05

    如何成為個(gè)軟硬件通吃的技術(shù)大牛?

    有沒(méi)有軟硬件通吃的大牛,絕對(duì)有。這樣的大牛多是懂點(diǎn)軟件,也懂點(diǎn)硬件,在軟件工程師面前和人聊
    的頭像 發(fā)表于 03-20 16:49 ?6199次閱讀
    新世纪百家乐官网娱乐城| 网络百家乐可信吗| 大发888娱乐城优惠码lm0| 百家乐导航| 百家乐官网庄家提成| 玩百家乐官网的玩法技巧和规则 | 百家乐官网客户端LV| 百家乐网投开户| 棋牌游戏大全| 百家乐官网手机壳| 星际博彩| 百家乐官网技巧看| 网上娱乐城注册送现金| 百家乐官网现金网最好的系统哪里有可靠吗| 历史百家乐官网路单图| 澳门百家乐文章| 钱柜娱乐城现金网| 做生意房子选哪个方位| 莆田棋牌游戏下载| 沙龙百家乐官网赌场娱乐网规则 | 百家乐棋牌游戏币| 斗六市| 百家乐官网网址官网| 皇冠代理网址| 现场百家乐玩法| 线上百家乐官网代理| 大发888官方 hdlsj| 百家乐休闲游戏| 百家乐官网怎样投注好| 万达百家乐娱乐城| 百家乐官网永利赌场娱乐网规则| 958棋牌游戏| 百家乐客户端软件| 百家乐官网玄机| 威尼斯人娱乐城信誉好不好| 百家乐官网赌博代理合作| 最好的棋牌游戏大厅| 百家乐代理每周返佣| 竹溪县| 百家乐赢钱心得| 百家乐官网经验之谈|