服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)及方法
【專利摘要】一種服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)及方法,該服務(wù)器包括BMC芯片和BIOS芯片。該方法包括:在BMC芯片中定義一個(gè)系統(tǒng)錯(cuò)誤碼與系統(tǒng)錯(cuò)誤信息的錯(cuò)誤對照關(guān)系表;開啟BMC芯片與BIOS芯片之間的LPC總線,并在BIOS芯片中設(shè)置一個(gè)用于獲取服務(wù)器的系統(tǒng)啟動(dòng)信息的主板端口;當(dāng)服務(wù)器正常啟動(dòng)時(shí),通過LPC總線從主板端口中獲取服務(wù)器的系統(tǒng)啟動(dòng)信息并保存在系統(tǒng)偵測文件中;當(dāng)服務(wù)器發(fā)生故障時(shí),利用系統(tǒng)偵測文件從保存在錯(cuò)誤對照關(guān)系表中獲取系統(tǒng)錯(cuò)誤碼;根據(jù)BMC芯片中的錯(cuò)誤對照關(guān)系表解析出獲取的系統(tǒng)錯(cuò)誤碼對應(yīng)的系統(tǒng)錯(cuò)誤信息。本發(fā)明能夠準(zhǔn)確快速簡便地找出服務(wù)器的系統(tǒng)故障原因,以便盡快完成服務(wù)器的系統(tǒng)故障修復(fù)。
【專利說明】服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種計(jì)算機(jī)錯(cuò)誤偵測系統(tǒng)及方法,特別是關(guān)于一種服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)及方法。
【背景技術(shù)】
[0002]服務(wù)器的應(yīng)用在當(dāng)今信息社會(huì)應(yīng)用的越來越廣泛,其性能好,安全性高,從而得到了用戶的好評。在服務(wù)器使用過程中,不論研發(fā)人員或用戶,都會(huì)地對服務(wù)器進(jìn)行開關(guān)機(jī)、重新啟動(dòng)、強(qiáng)制關(guān)機(jī)、斷電等許多操作。這時(shí),服務(wù)器就有可能因?yàn)楦鞣N各樣的故障原因而無法進(jìn)入操作系統(tǒng),但卻不能確定具體的故障原因,無法繼續(xù)利用服務(wù)器喚醒工作。當(dāng)這樣的情況發(fā)生時(shí),用戶經(jīng)常需要將服務(wù)器無法啟動(dòng)的各種故障原因都考慮其中,花費(fèi)大量的時(shí)間來對服務(wù)器進(jìn)行調(diào)試修復(fù),耗費(fèi)時(shí)間非常巨大,影響了需要依靠服務(wù)器來完成的工作。
[0003]對于服務(wù)器不能進(jìn)入操作系統(tǒng)的常用調(diào)試方法是利用調(diào)試(Debug)卡插在服務(wù)器的主板端口(例如PortSO)上來獲得服務(wù)器的故障信息,從而對服務(wù)器進(jìn)行調(diào)試修復(fù)。然而,這種調(diào)試方法對于普通用戶來說很難實(shí)現(xiàn),并且不能將錯(cuò)誤信息保存下來,不方便用戶隨時(shí)查看故障原因。尤其對擁有大量服務(wù)器的數(shù)據(jù)中心(Data Center)來說,這種調(diào)試方法更加耗時(shí),并且成本較高,難以實(shí)現(xiàn)。
【發(fā)明內(nèi)容】
[0004]鑒于以上內(nèi)容,有必要提供一種服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)及方法,能夠準(zhǔn)確快速簡便地找出服務(wù)器的系統(tǒng)故障原因,以便盡快完成服務(wù)器的系統(tǒng)故障修復(fù)。
[0005]所述服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng),該服務(wù)器包括BMC芯片以及B1S芯片。該系統(tǒng)包括:設(shè)置模塊,用于定義一個(gè)系統(tǒng)錯(cuò)誤碼與系統(tǒng)錯(cuò)誤信息的錯(cuò)誤對照關(guān)系表,將該錯(cuò)誤對照關(guān)系表保存在BMC芯片的存儲(chǔ)器中,開啟BMC芯片與B1S芯片之間的LPC總線,以及在B1S芯片中設(shè)置一個(gè)用于獲取服務(wù)器的系統(tǒng)啟動(dòng)信息的主板端口 ;偵測模塊,用于當(dāng)服務(wù)器正常啟動(dòng)時(shí),通過LPC總線從所述主板端口中實(shí)時(shí)獲取服務(wù)器的系統(tǒng)啟動(dòng)信息,并將系統(tǒng)啟動(dòng)信息保存在所述存儲(chǔ)器的系統(tǒng)偵測文件中,當(dāng)服務(wù)器發(fā)生故障時(shí),利用所述系統(tǒng)偵測文件從保存在所述錯(cuò)誤對照關(guān)系表中獲取系統(tǒng)錯(cuò)誤碼;解析模塊,用于根據(jù)BMC芯片中的錯(cuò)誤對照關(guān)系表解析出獲取的系統(tǒng)錯(cuò)誤碼對應(yīng)的系統(tǒng)錯(cuò)誤信息,以及將系統(tǒng)錯(cuò)誤信息記錄在服務(wù)器的系統(tǒng)日志表中。
[0006]所述服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測方法,該服務(wù)器包括BMC芯片以及B1S芯片。該方法包括步驟:定義一個(gè)系統(tǒng)錯(cuò)誤碼與系統(tǒng)錯(cuò)誤信息的錯(cuò)誤對照關(guān)系表,并將該錯(cuò)誤對照關(guān)系表保存在BMC芯片的存儲(chǔ)器中;開啟BMC芯片與B1S芯片之間的LPC總線,并在B1S芯片中設(shè)置一個(gè)用于獲取服務(wù)器的系統(tǒng)啟動(dòng)信息的主板端口 ;當(dāng)服務(wù)器正常啟動(dòng)時(shí),通過LPC總線從主板端口中實(shí)時(shí)獲取服務(wù)器的系統(tǒng)啟動(dòng)信息,并將系統(tǒng)啟動(dòng)信息保存在存儲(chǔ)器的系統(tǒng)偵測文件中;當(dāng)服務(wù)器發(fā)生故障時(shí),利用系統(tǒng)偵測文件從保存在所述錯(cuò)誤對照關(guān)系表中獲取系統(tǒng)錯(cuò)誤碼;根據(jù)BMC芯片中的錯(cuò)誤對照關(guān)系表解析出獲取的系統(tǒng)錯(cuò)誤碼對應(yīng)的系統(tǒng)錯(cuò)誤信息,并將系統(tǒng)錯(cuò)誤信息記錄在服務(wù)器的系統(tǒng)日志表中。
[0007]相較于現(xiàn)有技術(shù),當(dāng)服務(wù)器在啟動(dòng)過程中發(fā)生故障時(shí),本發(fā)明所述的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)及方法能夠通過BMC芯片來準(zhǔn)確快速地找出系統(tǒng)故障的原因,其操作簡便高效,增強(qiáng)了服務(wù)器自身的查錯(cuò)能力,以便盡快完成服務(wù)器的系統(tǒng)故障修復(fù)。這種方法不僅適用于服務(wù)器開發(fā)的工作人員,而且同樣適用于使用服務(wù)器的普通用戶。
【專利附圖】
【附圖說明】
[0008]圖1是本發(fā)明服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)較佳實(shí)施例的運(yùn)行環(huán)境示意圖。
[0009]圖2是本發(fā)明服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測方法較佳實(shí)施例的流程圖。
[0010]圖3是存儲(chǔ)在BMC芯片的存儲(chǔ)器中的錯(cuò)誤對照關(guān)系表的不意圖。
[0011]主要元件符號(hào)說明
[0012]服務(wù)器I
[0013]BMC 芯片10
[0014]系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)100
[0015]設(shè)置模塊111
[0016]偵測模塊112
[0017]解析模塊113
[0018]B1S 芯片11
[0019]LPC 總線12
[0020]存儲(chǔ)器110
[0021]微處理器120
[0022]遠(yuǎn)程監(jiān)控設(shè)備2
[0023]網(wǎng)絡(luò)3
【具體實(shí)施方式】
[0024]參閱圖1所示,是本發(fā)明系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)100較佳實(shí)施例的運(yùn)行環(huán)境示意圖。在本實(shí)施例中,所述的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)100安裝并運(yùn)行于服務(wù)器I中,該服務(wù)器I還包括,但不僅限于,基板管理控制器(Baseboard Management Controller,BMC芯片)10以及B1S芯片11。該BMC芯片10和B1S芯片11通過LPC (Low Pin Count)總線12相互連接。該BMC芯片10包括,但不僅限于,存儲(chǔ)器110以及微處理器120。該服務(wù)器I通過網(wǎng)絡(luò)3與遠(yuǎn)程監(jiān)控設(shè)備2相連接。所述的遠(yuǎn)程監(jiān)控設(shè)備2可以為一種個(gè)人計(jì)算機(jī)(PC)、工作站計(jì)算機(jī)(Workstat1n computer)或者其他電子裝置。該遠(yuǎn)程監(jiān)控設(shè)備2用于用戶輸入偵測服務(wù)器I的系統(tǒng)運(yùn)行發(fā)生錯(cuò)誤時(shí)的偵測指令,以及顯示服務(wù)器I發(fā)生的系統(tǒng)錯(cuò)誤信息。所述的網(wǎng)絡(luò)3可以為一種國際互聯(lián)網(wǎng)(Internet)或者企業(yè)局域網(wǎng)(Intranet)。
[0025]在本實(shí)施例中,所述的存儲(chǔ)器110為一種內(nèi)置于BMC芯片10中的Flash存儲(chǔ)器或者EEPROM存儲(chǔ)器,用于存儲(chǔ)偵測服務(wù)器I的錯(cuò)誤對照關(guān)系表以及系統(tǒng)偵測文件。該錯(cuò)誤對照表定義了服務(wù)器I發(fā)生故障時(shí)的系統(tǒng)錯(cuò)誤碼與系統(tǒng)錯(cuò)誤信息的對照關(guān)系。該系統(tǒng)偵測文件用于存儲(chǔ)服務(wù)器I正常啟動(dòng)時(shí)從服務(wù)器I獲取的系統(tǒng)啟動(dòng)信息,在服務(wù)器I發(fā)生故障時(shí),偵測服務(wù)器I發(fā)生故障的系統(tǒng)錯(cuò)誤信息。所述的微處理器120是一種微控制器或其他具備數(shù)據(jù)處理能力的處理芯片。
[0026]在本實(shí)施例中,所述的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)100包括設(shè)置模塊111、偵測模塊112以及解析模塊113。本發(fā)明所稱的功能模塊是指一種能夠被微處理器120所執(zhí)行并且能夠完成固定功能的一系列程序指令段,其存儲(chǔ)在存儲(chǔ)器110中。關(guān)于各功能模塊111-113將在圖2的流程圖中作具體描述。
[0027]參閱圖2所示,是本發(fā)明服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測方法較佳實(shí)施例的流程圖。在本實(shí)施例中,當(dāng)服務(wù)器I在啟動(dòng)過程中發(fā)生故障時(shí),該方法可以通過BMC芯片10來準(zhǔn)確快速地找出服務(wù)器I的系統(tǒng)故障原因,其操作簡便高效,增強(qiáng)了服務(wù)器I自身的查錯(cuò)能力。
[0028]步驟S21,設(shè)置模塊111定義一個(gè)系統(tǒng)錯(cuò)誤碼與系統(tǒng)錯(cuò)誤信息的錯(cuò)誤對照關(guān)系表,并將該錯(cuò)誤對照關(guān)系表保存在BMC芯片10的存儲(chǔ)器110中。參考圖3所示,是一個(gè)存儲(chǔ)在存儲(chǔ)器110中的錯(cuò)誤對照關(guān)系表的示意圖。該錯(cuò)誤對照表定義了服務(wù)器I發(fā)生故障時(shí)的系統(tǒng)錯(cuò)誤碼與系統(tǒng)錯(cuò)誤信息的對照關(guān)系,例如定義了 CPU錯(cuò)誤、內(nèi)存錯(cuò)誤、硬盤錯(cuò)誤、顯卡錯(cuò)誤及聲卡錯(cuò)誤的系統(tǒng)錯(cuò)誤碼,其分別為:EC00001、EC00002、EC00003、EC00004及EC00005
坐寸ο
[0029]步驟S22,設(shè)置模塊111開啟BMC芯片10與B1S芯片11之間的LPC總線12,并在B1S芯片11中設(shè)置一個(gè)用于獲取服務(wù)器I的系統(tǒng)啟動(dòng)信息的主板端口。在本實(shí)施例中,該主板端口設(shè)置為第80號(hào)端口(例如Port:80),用于當(dāng)服務(wù)器I正常啟動(dòng)時(shí),BMC芯片10透過該端口獲取服務(wù)器I的系統(tǒng)啟動(dòng)信息。
[0030]步驟S23,當(dāng)服務(wù)器I正常啟動(dòng)時(shí),偵測模塊112通過LPC總線12從所述主板端口中實(shí)時(shí)獲取服務(wù)器I的系統(tǒng)啟動(dòng)信息,并將系統(tǒng)啟動(dòng)信息保存在存儲(chǔ)器110的系統(tǒng)偵測文件(Sensor file)中。在本實(shí)施例中,所述的系統(tǒng)偵測文件由BMC芯片10建立,并存儲(chǔ)在BMC芯片10的存儲(chǔ)器110中。當(dāng)服務(wù)器I正常啟動(dòng)時(shí),該系統(tǒng)偵測文件用于保存從服務(wù)器I獲取的系統(tǒng)啟動(dòng)信息;當(dāng)服務(wù)器I發(fā)生故障時(shí),該系統(tǒng)偵測文件用于偵測服務(wù)器I發(fā)生故障的系統(tǒng)錯(cuò)誤信息。
[0031]步驟S24,當(dāng)服務(wù)器發(fā)生故障時(shí),偵測模塊112利用系統(tǒng)偵測文件從BMC芯片10中的錯(cuò)誤對照關(guān)系表中獲取系統(tǒng)錯(cuò)誤碼。在本實(shí)施例中,偵測模塊112判斷所述系統(tǒng)偵測文件中的系統(tǒng)啟動(dòng)信息是否被正常記錄,當(dāng)服務(wù)器I的硬件設(shè)備(例如內(nèi)存)的啟動(dòng)信息沒有被正常記錄到系統(tǒng)偵測文件中,偵測模塊112即從所述錯(cuò)誤對照關(guān)系表中獲取該硬件設(shè)備的系統(tǒng)錯(cuò)誤碼(例如EC00002)。
[0032]步驟S25,解析模塊113根據(jù)BMC芯片10中的錯(cuò)誤對照關(guān)系表解析出獲取的系統(tǒng)錯(cuò)誤碼對應(yīng)的系統(tǒng)錯(cuò)誤信息。參考如圖3所示,假如獲取的系統(tǒng)錯(cuò)誤碼為EC00002,則解析模塊113根據(jù)該錯(cuò)誤對照關(guān)系表解析出的系統(tǒng)錯(cuò)誤信息為內(nèi)存(Memory)錯(cuò)誤。
[0033]步驟S26,解析模塊113將系統(tǒng)錯(cuò)誤信息記錄在服務(wù)器I的系統(tǒng)日志表中,并將該系統(tǒng)錯(cuò)誤信息通過網(wǎng)絡(luò)3顯示在遠(yuǎn)程監(jiān)控設(shè)備2上。當(dāng)?shù)玫椒?wù)器I的系統(tǒng)錯(cuò)誤信息后,解析模塊113將通過網(wǎng)絡(luò)瀏覽器(Web GUI)的形式直觀將服務(wù)器I的系統(tǒng)錯(cuò)誤信息顯示在遠(yuǎn)程監(jiān)控設(shè)備2上,同時(shí)也會(huì)以系統(tǒng)日志表(SEL)的形式將錯(cuò)誤類型記錄下來,方便用戶后續(xù)通過多種不同的途徑來產(chǎn)看服務(wù)器I的系統(tǒng)故障原因。此外,用戶也可以通過IPMI命令來讀取保存錯(cuò)誤對照關(guān)系表中的系統(tǒng)錯(cuò)誤碼來獲取服務(wù)器I的系統(tǒng)故障原因。
[0034]以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照以上較佳實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換都不應(yīng)脫離本發(fā)明技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng),該服務(wù)器包括81(:芯片以及8103芯片,其特征在于,所述的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng)包括: 設(shè)置模塊,用于定義一個(gè)系統(tǒng)錯(cuò)誤碼與系統(tǒng)錯(cuò)誤信息的錯(cuò)誤對照關(guān)系表,將該錯(cuò)誤對照關(guān)系表保存在81(:芯片的存儲(chǔ)器中,開啟81(:芯片與8103芯片之間的總線,以及在8108芯片中設(shè)置一個(gè)用于獲取服務(wù)器的系統(tǒng)啟動(dòng)信息的主板端口 ; 偵測模塊,用于當(dāng)服務(wù)器正常啟動(dòng)時(shí),通過總線從所述主板端口中實(shí)時(shí)獲取服務(wù)器的系統(tǒng)啟動(dòng)信息,并將系統(tǒng)啟動(dòng)信息保存在所述存儲(chǔ)器的系統(tǒng)偵測文件中,當(dāng)服務(wù)器發(fā)生故障時(shí),利用所述系統(tǒng)偵測文件從保存在所述錯(cuò)誤對照關(guān)系表中獲取系統(tǒng)錯(cuò)誤碼;以及 解析模塊,用于根據(jù)81(:芯片中的錯(cuò)誤對照關(guān)系表解析出獲取的系統(tǒng)錯(cuò)誤碼對應(yīng)的系統(tǒng)錯(cuò)誤信息,以及將系統(tǒng)錯(cuò)誤信息記錄在服務(wù)器的系統(tǒng)日志表中。
2.如權(quán)利要求1所述的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng),其特征在于,所述的解析模塊還用于將服務(wù)器的系統(tǒng)錯(cuò)誤信息通過網(wǎng)絡(luò)顯示在遠(yuǎn)程監(jiān)控設(shè)備上。
3.如權(quán)利要求1所述的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng),其特征在于,所述的系統(tǒng)偵測文件由810芯片建立,并存儲(chǔ)在8此芯片的存儲(chǔ)器中。
4.如權(quán)利要求1所述的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng),其特征在于,當(dāng)服務(wù)器正常啟動(dòng)時(shí),所述的系統(tǒng)偵測文件用于保存從服務(wù)器獲取的系統(tǒng)啟動(dòng)信息,當(dāng)服務(wù)器發(fā)生故障時(shí),所述的系統(tǒng)偵測文件用于偵測服務(wù)器發(fā)生故障的系統(tǒng)錯(cuò)誤信息。
5.如權(quán)利要求1所述的系統(tǒng)錯(cuò)誤信息偵測系統(tǒng),其特征在于,所述的從錯(cuò)誤對照關(guān)系表中獲取系統(tǒng)錯(cuò)誤碼的步驟包括: 判斷所述系統(tǒng)偵測文件中的系統(tǒng)啟動(dòng)信息是否被正常記錄;以及 當(dāng)服務(wù)器的硬件設(shè)備的系統(tǒng)啟動(dòng)信息沒有被正常記錄到系統(tǒng)偵測文件中時(shí),從所述錯(cuò)誤對照關(guān)系表中獲取該硬件設(shè)備對應(yīng)的系統(tǒng)錯(cuò)誤碼。
6.一種服務(wù)器的系統(tǒng)錯(cuò)誤信息偵測方法,該服務(wù)器包括81(:芯片以及8103芯片,其特征在于,該方法包括步驟: 定義一個(gè)系統(tǒng)錯(cuò)誤碼與系統(tǒng)錯(cuò)誤信息的錯(cuò)誤對照關(guān)系表,并將該錯(cuò)誤對照關(guān)系表保存在81(:芯片的存儲(chǔ)器中; 開啟81(:芯片與8103芯片之間的總線,并在8103芯片中設(shè)置一個(gè)用于獲取服務(wù)器的系統(tǒng)啟動(dòng)信息的主板端口; 當(dāng)服務(wù)器正常啟動(dòng)時(shí),通過總線從所述主板端口中實(shí)時(shí)獲取服務(wù)器的系統(tǒng)啟動(dòng)信息,并將系統(tǒng)啟動(dòng)信息保存在所述存儲(chǔ)器的系統(tǒng)偵測文件中; 當(dāng)服務(wù)器發(fā)生故障時(shí),利用所述系統(tǒng)偵測文件從保存在所述錯(cuò)誤對照關(guān)系表中獲取系統(tǒng)錯(cuò)誤碼;以及 根據(jù)81(:芯片中的錯(cuò)誤對照關(guān)系表解析出獲取的系統(tǒng)錯(cuò)誤碼對應(yīng)的系統(tǒng)錯(cuò)誤信息,以及將系統(tǒng)錯(cuò)誤信息記錄在服務(wù)器的系統(tǒng)日志表中。
7.如權(quán)利要求6所述的系統(tǒng)錯(cuò)誤信息偵測方法,其特征在于,該方法還包括步驟:將服務(wù)器的系統(tǒng)錯(cuò)誤信息通過網(wǎng)絡(luò)顯示在遠(yuǎn)程監(jiān)控設(shè)備上。
8.如權(quán)利要求6所述的系統(tǒng)錯(cuò)誤信息偵測方法,其特征在于,所述的系統(tǒng)偵測文件由810芯片建立,并存儲(chǔ)在8此芯片的存儲(chǔ)器中。
9.如權(quán)利要求6所述的系統(tǒng)錯(cuò)誤信息偵測方法,其特征在于,當(dāng)服務(wù)器正常啟動(dòng)時(shí),所述的系統(tǒng)偵測文件用于保存從服務(wù)器獲取的系統(tǒng)啟動(dòng)信息,當(dāng)服務(wù)器發(fā)生故障時(shí),所述的系統(tǒng)偵測文件用于偵測服務(wù)器發(fā)生故障的系統(tǒng)錯(cuò)誤信息。
10.如權(quán)利要求6所述的系統(tǒng)錯(cuò)誤信息偵測方法,其特征在于,所述的從錯(cuò)誤對照關(guān)系表中獲取系統(tǒng)錯(cuò)誤碼的步驟包括: 判斷所述系統(tǒng)偵測文件中的系統(tǒng)啟動(dòng)信息是否被正常記錄;以及當(dāng)服務(wù)器的硬件設(shè)備的系統(tǒng)啟動(dòng)信息沒有被正常記錄到系統(tǒng)偵測文件中時(shí),從所述錯(cuò)誤對照關(guān)系表中獲取該硬件設(shè)備對應(yīng)的系統(tǒng)錯(cuò)誤碼。
【文檔編號(hào)】G06F11/34GK104424084SQ201310381583
【公開日】2015年3月18日 申請日期:2013年8月27日 優(yōu)先權(quán)日:2013年8月27日
【發(fā)明者】馬淞, 張文杰 申請人:鴻富錦精密電子(天津)有限公司, 鴻海精密工業(yè)股份有限公司