從深度嵌入式,到桌面,再到云,ARM不斷攻城略地,正在成為主流。本培訓(xùn)著眼于ARM系統(tǒng)的關(guān)鍵原理,按歷史順序從ARM三大系列的M系列講起,過渡到M系列必須的外部調(diào)試技術(shù),再進(jìn)入到當(dāng)前正在大行其道的A系列,再深入解析A系列的調(diào)試設(shè)施,包括這些設(shè)施的原理和應(yīng)用。本培訓(xùn)由《軟件調(diào)試》作者張銀奎主講,深處著眼,淺出講起,上調(diào)試器,看活代碼,通過大量動手實(shí)驗(yàn)引領(lǐng)大家一起進(jìn)入到ARM的世界中。
本培訓(xùn)包含大量動手試驗(yàn)和實(shí)戰(zhàn)內(nèi)容,參加本培訓(xùn)的每一位學(xué)員,都將獲得:
- 一套基于ARM M核的GDK3開發(fā)套件
- 一套基于ARM A核的幽蘭代碼本
- 一套揮碼槍硬件調(diào)試器
上課形式:每周六晚上8:30 – 9:30直播授課(共15節(jié)),講解、演示和講師引領(lǐng)的動手實(shí)驗(yàn)
培訓(xùn)對象:軟件工程師、信息安全領(lǐng)域的工程師和研究者
通過本培訓(xùn),學(xué)習(xí)者可以在如下多個方面進(jìn)階獲益:
- 深刻理解ARM架構(gòu)的技術(shù)精髓,包括三大系列,四大特權(quán)模式,安全/非安全兩大陣營,以及ATF,TrustZone,CoreSight等關(guān)鍵技術(shù)
- 全面認(rèn)識ARM平臺的調(diào)試設(shè)施,包括自稱載的本機(jī)調(diào)試和基于硬件調(diào)試器的外部調(diào)試
- 熟練使用GDB、NDB(揮碼槍)兩大調(diào)試器和很多其它軟件工具(strace, dtc, readelf)
- 熟悉ARM生態(tài)中的常用固件和系統(tǒng)軟件,包括ATF、U-BOOT、WoA和Linux等
整個培訓(xùn)分為三篇,15講。目錄如下:
序:
第一講:準(zhǔn)備上手和以物為師
要點(diǎn):ARM的三大系列,M系列代表之GDK3,A系列代表之RK3588,內(nèi)部調(diào)試器之GDB和NDB(Nano code Debugger),外部調(diào)試器之揮碼槍,ARM文檔大觀之ARM和TRM,上調(diào)試器和以物為師
上篇:M核精華
第二講:M核精華之中央處理器
要點(diǎn):ARM簡史,ARM指令集,THUMB指令,通用寄存器,Banked寄存器,特殊寄存器,常用指令,謂詞執(zhí)行,訪問內(nèi)存的指令,ARM反匯編,觀看函數(shù),在NDB中理解ARM的應(yīng)用層指令和寄存器
第三講:M核精華之存儲與外設(shè)
要點(diǎn):片上內(nèi)存,片上閃存,地址空間,哈佛架構(gòu),中斷向量表,復(fù)位后的第一條指令,M核固件概述,使用GNU工具鏈構(gòu)建固件,使用揮碼槍燒錄固件
第四講:M核精華之RTOS
要點(diǎn):M核的軟件棧,HAL,驅(qū)動,RTOS背景,CMSIS,RTX,線程創(chuàng)建和管理,多線程同步,在調(diào)試器下觀察線程
第五講:M核精華之外部調(diào)試器
要點(diǎn):ARM架構(gòu)手冊定義的調(diào)試架構(gòu)(Debug Architecture),自承載調(diào)試(Self-hosted Debug),外部調(diào)試,CoreSight,調(diào)試事件,面向調(diào)試器編程
“雖然ARM主推的SWD通信方式只有三根很普通的線:時鐘、數(shù)據(jù)、地,但是它工作的非常穩(wěn)定。能用低廉的硬件把硬件調(diào)試實(shí)現(xiàn)的如此穩(wěn)定,其中的一個主要原因是協(xié)議定義的優(yōu)秀,包括400多頁的調(diào)試接口協(xié)議(ADI),訪問內(nèi)部資源的CoreSight技術(shù),以及散布在整個ARM架構(gòu)中的調(diào)試支持?!?/p>
“三線”代表ARM硬件調(diào)試器常用的三根線。擼豹模仿“擼貓”之語。ARM能用三根線把芯片硬件調(diào)試實(shí)現(xiàn)的如此精湛,舉重若輕,把兇猛的CPU控制的服服貼貼,“擼豹”如同“擼貓”一樣,真是讓人贊嘆,神乎其技!。
——張銀奎 《三線擼豹,神乎其技!》
中篇:A核精華
第六講:A核精華之V8傳奇
要點(diǎn):ARMv8新境界,AA64,A64指令集,四大特權(quán)級別,安全與非安全(NS),TrustZone,通用寄存器,系統(tǒng)寄存器,訪問系統(tǒng)寄存器,使用NDB讀寫系統(tǒng)寄存器
第七講:A核精華之可信固件
要點(diǎn):上電過程,M核護(hù)駕,ATF(ARM Trusted Firmware)代碼,分階段初始化,從BL0到BL3,Power State Coordination Interface (PSCI),調(diào)用ATF的服務(wù),TEE OS,與TEE OS交互,使用NDB觀察TEE核PSCI行為
第八講:A核精華之U-Boot
要點(diǎn):ARM生態(tài)中成長起來的U-BOOT,代碼結(jié)構(gòu),兩大階段,U-BOOT搬家,使用U-BOOT的命令行,使用揮碼槍調(diào)試U-BOOT,神奇的x18寄存器,修改U-BOOT代碼,定制啟動流程
第九講:A核精華之設(shè)備樹(DTS)
要點(diǎn):五花八門的ARM硬件,林納斯發(fā)怒,x86和PC的先進(jìn)經(jīng)驗(yàn),設(shè)備樹描述,DTS,DTB,編譯方法,傳遞內(nèi)核命令行,Linux中解析設(shè)備樹的代碼,根據(jù)設(shè)備樹加載驅(qū)動的過程,使用DTC工具逆向設(shè)備樹
下篇:融會貫通
第十講:函數(shù)調(diào)用和棧
要點(diǎn):分支指令,調(diào)用子函數(shù),棧,LR寄存器,棧指針寄存器,壓棧指令,棧幀,棧上的數(shù)據(jù)組織,?;厮?,?;厮莸脑恚瑮R绯?,返回到libc,棧保護(hù),在NDB下認(rèn)識棧上的數(shù)據(jù)
第十一講:頁表和虛擬內(nèi)存
要點(diǎn):地址翻譯,頁表,頁表格式,MMU,ARM的TTBR寄存器,地址翻譯過程,頁屬性,訪問權(quán)限,TLB,進(jìn)程切換,缺頁異常,觀察頁表,手工翻譯內(nèi)存地址
第十二講:異常和中斷處理
要點(diǎn):CPU異常,同步異常,異步異常,ESR寄存器,異常進(jìn)入,異常退出,中斷處理,GIC,GIC的結(jié)構(gòu),GIC的配置,GIC的初始化,Linux內(nèi)核中的中斷處理代碼
第十三講:自承載調(diào)試和調(diào)試異常
要點(diǎn):self-hosted debug,端點(diǎn)指令和軟件端點(diǎn),硬件斷點(diǎn)寄存器,監(jiān)視點(diǎn)寄存器和監(jiān)視點(diǎn),向量捕捉(Vector Catch),單步跟蹤,大范圍內(nèi)存監(jiān)視,使用NDB的硬件斷點(diǎn)和監(jiān)視點(diǎn)功能
第十四講:實(shí)戰(zhàn)之NT內(nèi)核和WOA
要點(diǎn):WoA的背景和未來,二進(jìn)制翻譯和兼容x86程序,NT架構(gòu),KD引擎,調(diào)試符號服務(wù)器,使用揮碼槍調(diào)試NT內(nèi)核,NT內(nèi)核的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)
第十五講:實(shí)戰(zhàn)之Linux系統(tǒng)與根件
要點(diǎn):so和用戶空間注入,基于LD_PRELOAD的注入,strace和系統(tǒng)調(diào)用,內(nèi)核根件之Reptile,LKM,構(gòu)建和加載,隱藏文件,隱藏進(jìn)程,反調(diào)試原理和化解
講師介紹:張銀奎
格蠹科技創(chuàng)始人,微軟全球最有價值技術(shù)專家(MVP),同濟(jì)大學(xué)電子與信息工程學(xué)院特邀講師,前英特爾亞太研發(fā)有限公司軟件架構(gòu)師?!盾浖{(diào)試》、《格蠹匯編》的作者,新版《十萬個為什么》電子分冊撰稿人之一,《程序員》雜志調(diào)試之劍欄目作者 。1996年畢業(yè)于上海交通大學(xué)信息與控制工程系,在軟件產(chǎn)業(yè)工作20年,在多家跨國公司歷任開發(fā)工程師、軟件架構(gòu)師、開發(fā)經(jīng)理、項目經(jīng)理等職務(wù),對 IA-32 架構(gòu)、操作系統(tǒng)內(nèi)核、驅(qū)動程序、虛擬化技術(shù)、云計算、軟件調(diào)優(yōu)、尤其是軟件調(diào)試有較深入研究。
從2005年開始公開講授“Windows內(nèi)核及高級調(diào)試”課程,曾在微軟的Webcast和各種技術(shù)會議上做過《Windows Vista內(nèi)核演進(jìn)》、《調(diào)試之劍》(全球軟件戰(zhàn)役研究峰會)、《感受和思考調(diào)試器的威力》(CSDN SD2.0大會)、《Windows啟動過程》、《如何診斷和調(diào)試藍(lán)屏錯誤》、《Windows體系結(jié)構(gòu)——從操作系統(tǒng)的角度》(以上三個講座都是微軟“深入研究Windows內(nèi)部原理系列”的一部分)等。翻譯(合譯)作品有《現(xiàn)代x86匯編語言編程》、《21世紀(jì)機(jī)器人》、《觀止——微軟創(chuàng)建NT和未來的奪命狂奔》、《數(shù)據(jù)挖掘原理》、《機(jī)器學(xué)習(xí)》、《人工智能:復(fù)雜問題求解的結(jié)構(gòu)和策略》等。
學(xué)習(xí)器材:
揮碼槍硬件調(diào)試器
幽蘭代碼本
GDK3 開發(fā)套件