【摘" 要】在智能網(wǎng)聯(lián)汽車蓬勃發(fā)展,整車電子電器架構(gòu)邁入域控制器階段的大背景下,越野特種車輛關(guān)鍵核心電子元器件亟待實現(xiàn)自主可控,以契合國產(chǎn)化要求。文章聚焦于某特種車輛中央網(wǎng)關(guān)域控制器所采用的國產(chǎn)SoC主控芯片A核與R核應(yīng)用啟動失敗的問題,展開深入分析與試驗驗證,成功攻克該難題,確保越野特種車輛中央網(wǎng)關(guān)域控制器的穩(wěn)定、可靠運行,為國產(chǎn)化芯片在特種車輛領(lǐng)域的應(yīng)用提供堅實保障。
【關(guān)鍵詞】國產(chǎn)化;SoC芯片;多核應(yīng)用;中央網(wǎng)關(guān)域控制器;啟動失敗
中圖分類號:U463.6" " 文獻(xiàn)標(biāo)識碼:B" " 文章編號:1003-8639(2025)02-0115-06
Analysis of Startup Failure of Multi-core Application of Domestic SoC Chip
CAI Xiaohong,YANG Guochao,YANG Wei,LIU Jiabing
(Dongfeng Off-road Vehicle Co.,Ltd.,Wuhan 430056,China)
【Abstract】Under the background of the vigorous development of intelligent networked vehicles and the electronic and electrical architecture of vehicle entering the domain controller stage,the key core electronic components of off-road special vehicles need to be autonomous and controllable to meet the requirements of localization. This paper focuses on the application failure of the domestic SoC master chip A core and R core used in the central gateway domain controller of a special vehicle,carries out in-depth analysis and test verification,successfully solves the problem,ensures the stable and reliable operation of the central gateway domain controller of the off-road special vehicle,and provides a solid guarantee for the application of the domestic chip in the field of special vehicles.
【Key words】localization;SoC chip;multi-core applications;central gateway domain controller;startup failure
1" 研究背景
隨著智能網(wǎng)聯(lián)汽車的發(fā)展,整車電子電器架構(gòu)已經(jīng)步入了域控制器發(fā)展階段。汽車域控制器的核心是集成化SoC芯片。在特種車輛電子產(chǎn)品開發(fā)過程中,關(guān)鍵核心元器件需滿足國產(chǎn)自主可控相關(guān)要求,降低供應(yīng)鏈風(fēng)險。目前市面上已有國產(chǎn)化車載SoC相關(guān)產(chǎn)品,一般車載SoC含有多個處理器,每個處理器都有自己的特定應(yīng)用。本文主要針對中央網(wǎng)關(guān)域控制器SoC主控芯片進(jìn)行國產(chǎn)化選型,并在應(yīng)用過程中對多核啟動失敗問題進(jìn)行分析、處理、跟蹤和試驗驗證,最終妥善解決某車型項目中央網(wǎng)關(guān)域控制器SoC主控芯片的A核和R核適配移植時的應(yīng)用啟動問題,有力保障產(chǎn)品的及時交付和后續(xù)可靠運行。
2" 國產(chǎn)化器件
目前,國內(nèi)從事SoC主控芯片設(shè)計與生產(chǎn)的廠家主要有:南京芯馳科技、紫光芯能、蘇州國芯、華大半導(dǎo)體等。經(jīng)過深入調(diào)研,對于需滿足6路CAN和2路以太網(wǎng),同時實現(xiàn)網(wǎng)關(guān)和車身控制功能的中央網(wǎng)關(guān)域控制器選用南京芯馳科技G9系列主控SoC芯片較為適宜。G9系列處理器是專為新一代車內(nèi)中央網(wǎng)關(guān)設(shè)計的高性能車規(guī)級汽車芯片,硬件資源豐富,采用雙內(nèi)核異構(gòu)設(shè)計,包含高性能Cortex-A55 CPU內(nèi)核及雙核鎖步的高可靠Cortex-R5內(nèi)核,G9系列處理器含G9S/G9X/G9Q(成本不一樣)且Pin-Pin兼容,可以根據(jù)實際應(yīng)用需求選用不同版本SoC芯片以滿足成本要求。G9芯片硬件模塊如圖1所示。
中央網(wǎng)關(guān)域控制器除主控芯片滿足國產(chǎn)化外,外圍關(guān)鍵核心器件(如FLASH 32MB GD25LT256EBIR、DDR 4Gb SCE11N8G322AF-06YA2、eMMC 8G FEMDMW0080)也滿足國產(chǎn)化要求,真正保障產(chǎn)品自主可控。
3" SoC芯片A核和R核應(yīng)用啟動失敗問題分析
根據(jù)項目要求,中央網(wǎng)關(guān)域控制器軟硬件滿足100%國產(chǎn)化,其中R核實現(xiàn)CAN網(wǎng)關(guān)、車身控制等功能,符合AUTOSAR軟件架構(gòu),A核實現(xiàn)以太網(wǎng)網(wǎng)關(guān)、信息安全等功能。
3.1" SoC芯片啟動模式
G9系列芯片包含兩個Domain——Safety Domain和AP Domain。通常Safety Domain從ospi1啟動,AP Domain從eMMC啟動。芯片上電后,Safety R5首先運行固化在芯片中的Boot ROM,根據(jù)Boot Pin的配置從不同的存儲器中讀取下級運行程序。G9系列芯片目前使用0000(快速啟動)和1000(USB下載)兩種模式,見表1。
為滿足中央網(wǎng)關(guān)域控系統(tǒng)快速啟動(100ms內(nèi)啟動CAN路由)要求,選用快速啟動OSPI1_ONLY Boot模式,啟動引腳電平為“0000”。
3.2" A核和R核應(yīng)用啟動失敗
產(chǎn)品開發(fā)時,芯片廠商提供針對中央網(wǎng)關(guān)域控制器硬件適配后的開發(fā)包G9 SDK(PTG5.0)和程序下載工具SDToolBox進(jìn)行應(yīng)用程序開發(fā)與下載。芯片廠商提供的G9 SDK(PTG5.0)開發(fā)包是基于Linux系統(tǒng)開發(fā)環(huán)境的。根據(jù)芯片廠商快速啟動手冊,對G9 SDK(PTG5.0)開發(fā)包進(jìn)行編譯,生成A核和R核程序存儲對應(yīng)的PAC分區(qū)文件。而中央網(wǎng)關(guān)域控制器R核應(yīng)用基于IAR 8.50.9(支持Autosar CP工具鏈代碼編譯)工具進(jìn)行開發(fā),A核應(yīng)用基于國產(chǎn)自主可控操作系統(tǒng)環(huán)境進(jìn)行開發(fā),無法完全借用芯片廠商提供的開發(fā)工具包,可以借用開發(fā)包生成的A核和R核相對應(yīng)PAC分區(qū)文件及對應(yīng)固件程序進(jìn)行A核和R核應(yīng)用程序更新?;诖?,中央網(wǎng)關(guān)域控制器基于項目實際開發(fā)環(huán)境開發(fā)的R核和A核應(yīng)用程序更新與下載后,均出現(xiàn)R核和A核應(yīng)用啟動失敗現(xiàn)象,斷電后重新上電仍然不能恢復(fù)正常,嚴(yán)重影響產(chǎn)品的開發(fā)周期。
3.2.1" R核應(yīng)用啟動失敗現(xiàn)象
在IAR 8.50.9開發(fā)環(huán)境下,基于芯片廠商的G9S MCAL1.0.5工程進(jìn)行R核應(yīng)用程序開發(fā)(R核啟動函數(shù)中添加打印調(diào)試信息)并編譯生成可執(zhí)行下載文件,使用SDToolBox工具導(dǎo)入G9 SDK(PTG5.0)開發(fā)包生成的R核PAC分區(qū)文件進(jìn)行R核應(yīng)用程序更新與下載,多次上電執(zhí)行程序,串口輸出信息見圖2。R核啟動函數(shù)中調(diào)試信息均無輸出,且R核應(yīng)用功能均無效,說明R核啟動失敗。
3.2.2" A核應(yīng)用啟動失敗現(xiàn)象
G9X芯片R核基于IAR 8.50.9開發(fā)環(huán)境下的應(yīng)用開發(fā)啟動成功后,在Linux系統(tǒng)開發(fā)環(huán)境下,進(jìn)行A核國產(chǎn)操作系統(tǒng)適配移植與應(yīng)用開發(fā)。使用SDToolBox工具導(dǎo)入G9 SDK(PTG5.0)開發(fā)包生成的A核PAC分區(qū)文件進(jìn)行A核應(yīng)用程序更新與下載,并在A核啟動函數(shù)中添加打印調(diào)試信息,多次上電執(zhí)行A核程序,A核的串口沒有輸出任何信息且串口終端無法操作(圖3),說明A核啟動失敗。
3.3" R核應(yīng)用啟動失敗問題分析及解決方案
重點對R核供電電路、程序存儲Artition Table分區(qū)表及啟動地址進(jìn)行分析。R核供電電路如圖4所示,采用國產(chǎn)化的SCT2230ATVA作為電源芯片,調(diào)整FB端分壓電阻阻值,將輸出調(diào)整到0.8V。工作電壓3~17V,最大工作電流3A。內(nèi)置欠壓、過壓和過流保護(hù)。
根據(jù)國產(chǎn)芯片手冊要求,R核供電0.8V且紋波電壓100mV。對設(shè)計的硬件電路和PCB進(jìn)行設(shè)計分析,控制邏輯正確,設(shè)計合理,并且對上電電壓和紋波進(jìn)行了測試,測試結(jié)果見圖5,R核電壓0.803V,紋波電壓為±62mV,符合要求。
基于項目中實際使用G9系列芯片需求,重點對比G9S和G9X的R核PAC文件分區(qū)表,G9S PAC分區(qū)表見圖6,G9X分區(qū)表見圖7。
經(jīng)對比分析,基于G9S的PAC文件未包含DIL2、Preloader等文件,G9S在DIL階段進(jìn)行R核程序Safty OS的啟動,G9X在DIL2階段進(jìn)行R核應(yīng)用程序Safty OS的啟動。G9S和G9X的啟動流程存在差異,啟動過程中運行的文件類型和數(shù)目不同,R核應(yīng)用程序Safty OS的啟動地址和運行地址也不相同。
依據(jù)G9X芯片手冊中的程序存儲分配表和啟動流程,G9S和G9X的PAC分區(qū)表有很大不同,詳見圖8。
R核應(yīng)用程序在G9S中由DIL引導(dǎo)加載,在G9X中由DIL2引導(dǎo)加載。在IAR工程環(huán)境下,分析G9S與G9X的MCAL工程可以發(fā)現(xiàn),R核上運行的SAFETY_OS應(yīng)用程序的內(nèi)存地址都是在IAR工程的鏈接文件g9_ref_safe.icf中配置的,通過Beyond Compare軟件進(jìn)行鏈接文件比較,發(fā)現(xiàn)兩個文件存在啟動地址、內(nèi)存地址的差異,如圖9所示。
圖9中,STACK_SZ表示棧大小,HEAP_SZ表示堆大小,TCM代表緊貼CPU的內(nèi)存,IRAM指SOC內(nèi)部的內(nèi)存(G9S將代碼加載到IRAM中運行,首地址為0x140000),intvec_start_指中斷向量表首地址,一般與運行空間的首地址相同,F(xiàn)LASH指SOC外部閃存,DDR指SOC外部的內(nèi)存(G9X將代碼加載到DDR中運行,首地址為0x30000000)。
進(jìn)一步分析鏈接文件,G9S將R核代碼加載到芯片內(nèi)部IRAM中運行,首地址為0x140000,而G9X將R核代碼加載到芯片外部DDR中運行,首地址為0x30000000,同時根據(jù)應(yīng)用程序大小調(diào)整堆和棧大小。在IAR工程環(huán)境中,根據(jù)G9系列芯片和外圍存儲配置修改鏈接文件g9_ref_safe.icf中內(nèi)存運行地址和堆棧大小,中央網(wǎng)關(guān)域控器選用G9X芯片采用外部RAM啟動地址,首地址應(yīng)為0x30000000,重新編譯生成可執(zhí)行文件,使用SDToolBox工具導(dǎo)入G9 SDK(PTG5.0)開發(fā)包生成的R核PAC分區(qū)文件更新R核SAFETY_OS可執(zhí)行應(yīng)用程序文件后,下載至中央網(wǎng)關(guān)域控器中,多次上電R核程序均正常啟動,如圖10所示。同樣,中央網(wǎng)關(guān)域控器選用G9S芯片采用內(nèi)部IRAM啟動地址,鏈接文件中首地址應(yīng)為0x140000,生成的R核可執(zhí)行應(yīng)用程序文件使用SDToolBox工具更新G9S PAC文件分區(qū)表中對應(yīng)R核的可執(zhí)行文件,多次上電R核程序均正常啟動。
查看G9芯片手冊的內(nèi)存映射地址表(圖11),發(fā)現(xiàn)G9系列芯片R核應(yīng)用SAFETY_OS采用內(nèi)部IRAM運行時,首地址為0x140000(其它已被芯片固件程序占用),而采用外部DDR時,首地址為0x30000000,說明采用不同內(nèi)存加載方式的首地址是不一樣的。
中央網(wǎng)關(guān)域控制器采用G9系列不同版本主控芯片和外圍存儲配置時,在IAR工程環(huán)境下開發(fā)R核應(yīng)用程序,根據(jù)G9系列芯片和外圍存儲配置的不同,選擇對應(yīng)的PAC分區(qū)文件和工程連接文件中設(shè)置對應(yīng)的內(nèi)存啟動地址,才能保證R核正??煽繂印?/p>
3.4" A核應(yīng)用啟動失敗問題分析及解決方案
依據(jù)G9X芯片手冊,A核啟動流程見圖12。依據(jù)啟動流程,A核啟動需要通過R核觸發(fā)。各模塊在啟動階段的功能說明見表2。
經(jīng)過分析,A核應(yīng)用啟動失敗的原因可能是:A核供電異常、A核程序運行異常、R核引導(dǎo)A核的相關(guān)參數(shù)異常。
A核供電電路見圖13。采用沃芯科技的M0706作為電源芯片,調(diào)整FB端分壓電阻阻值,將輸出調(diào)整到0.8V。工作電壓3~8.5V,最大工作電流6A。內(nèi)置欠壓、過壓和過流保護(hù)。
根據(jù)國產(chǎn)芯片手冊要求,A核供電0.8V且紋波電壓100mV。對設(shè)計的硬件電路和PCB進(jìn)行設(shè)計分析,控制邏輯正確,設(shè)計合理,并且對上電電壓和紋波進(jìn)行了測試,測試結(jié)果見圖14,A核電壓0.803V,紋波電壓為±90mV,符合要求。
使用SDToolBox工具導(dǎo)入G9 SDK(PTG5.0)開發(fā)包生成A核和R核PAC分區(qū)文件,并將A核PAC分區(qū)文件中應(yīng)用程序更新為基于國產(chǎn)操作系統(tǒng)開發(fā)的A核應(yīng)用程序(R核PAC分區(qū)文件維持不變),下載至中央網(wǎng)關(guān)域控制器中,R核和A核均可以正常啟動,說明A核程序運行正常。
在此基礎(chǔ)上,R核應(yīng)用程序替換為基于IAR工程環(huán)境中針對G9X工程編譯出的程序,R核正常啟動,A核應(yīng)用無法啟動,重點分析R核引導(dǎo)A核流程及相關(guān)參數(shù)。
分析IAR工程下的R核代碼,R核應(yīng)用程序Saftey OS啟動后,通過加載內(nèi)存中Preloader程序(芯片DIL2固件程序已將Preloader拷貝至內(nèi)存),由Preloader負(fù)責(zé)加載Bootloader鏡像,再由Bootloader加載啟動A核操作系統(tǒng)及應(yīng)用。通過對代碼添加打印調(diào)試信息的方式跟蹤R核加載Preloader程序流程,R核應(yīng)用啟動后通過圖15所示的代碼流程觸發(fā)A核啟動。
詳細(xì)分析R核代碼,在Reboot_ap2函數(shù)(圖16)中,通過直接跳轉(zhuǎn)內(nèi)存地址AP2_Preloader_MEMBASE加載運行Preloader程序,從而進(jìn)一步觸發(fā)A核應(yīng)用程序運行。
查看R核中代碼,Preloader程序的內(nèi)存入口地址參數(shù)為0x45800000。參考芯片手冊公布的Preloader程序內(nèi)存地址為0x35200000(圖17),修改R核Preloader程序內(nèi)存地址參數(shù)為芯片手冊中的地址0x35200000。重新編譯下載R核程序后,上電運行R核正常啟動,A核仍然無法啟動。
進(jìn)一步分析芯片廠商提供的G9X SDK(PTG5.0)的代碼,Preloader程序內(nèi)存地址參數(shù)為0x43A00000(圖18),且A核和R核分區(qū)表中的DIL2固件程序是基于G9X SDK(PTG5.0)代碼編譯生成的。
修改R核Preloader程序內(nèi)存地址為0x43A0000后,重新編譯下載R核程序后,多次上電運行,R核正常啟動,A核正常啟動,如圖19所示。
Preloader程序是由芯片DIL2程序加載到內(nèi)存中的,R核應(yīng)用程序Saftey OS直接通過跳轉(zhuǎn)內(nèi)存地址方式執(zhí)行Preloader程序,而DIL2固件程序是基于G9X SDK(PTG5.0)開發(fā)工具包編譯生成的,IAR工程環(huán)境下的R核代碼加載Preloader程序地址需要與G9X SDK(PTG5.0)開發(fā)工具包定義地址一致,而不能以芯片手冊為準(zhǔn)。通過詳細(xì)分析R核引導(dǎo)A核的重要內(nèi)存地址參數(shù),最終解決了A核應(yīng)用啟動問題。
4" 試驗驗證
根據(jù)中央網(wǎng)關(guān)域控制器實際應(yīng)用需求,修改G9芯片R核應(yīng)用程序運行內(nèi)存代碼和引導(dǎo)A核內(nèi)存地址代碼參數(shù),A核和R核均成功運行。經(jīng)過臺架長期試驗(圖20),未出現(xiàn)A核R核應(yīng)用無法啟動的現(xiàn)象,且車身控制功能、路由功能、核間通信、以太網(wǎng)功能都正常。中央網(wǎng)關(guān)域控制器已搭載整車進(jìn)行了可靠性試驗驗證,未出現(xiàn)A核R核應(yīng)用無法啟動問題。
5" 結(jié)束語
基于G9系列芯片開發(fā)產(chǎn)品時,需要針對外圍硬件進(jìn)行適配,即G9X SDK(PTG5.0)需針對具體項目硬件適配,與之相對應(yīng)的控制器抽象層MCAL程序也需隨資源分配進(jìn)行動態(tài)化的調(diào)整。要根據(jù)具體硬件信息選擇對應(yīng)的PAC分區(qū)文件和設(shè)置IAR工程連接文件中對應(yīng)的內(nèi)存啟動地址。此外,引導(dǎo)A核運行的內(nèi)存地址需要與G9X SDK(PTG5.0)開發(fā)工具包中保持一致,才能保證多核正常啟動運行。本文針對G9X的A核和R核應(yīng)用啟動問題進(jìn)行分析和解決,為后續(xù)使用和維護(hù)產(chǎn)品奠定了扎實的基礎(chǔ),同時也為國產(chǎn)SoC芯片開發(fā)提供了寶貴參考經(jīng)驗。
參考文獻(xiàn)
[1] SD_G9_Quick_Start_Rev2.4[Z].
[2] SemiDrive_9_Series_Boot與升級指南_V01.04.pdf[Z].
[3] SemiDrive_基于Domain的資源分配指南_Rev0.5.pdf[Z].
[4] 艾薩克遜.多核應(yīng)用架構(gòu)關(guān)鍵技術(shù)——軟件管道與SOA[M].吳眾欣,譯.北京:機(jī)械工業(yè)出版社,2010.
(編輯" 凌" 波)
收稿日期:2024-07-05