• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    ARM Cortex—M0+機器碼文件分析方法

    2017-07-25 07:19:59蔡伯峰蔣建武王宜懷
    現(xiàn)代電子技術(shù) 2017年14期

    蔡伯峰+蔣建武+王宜懷

    摘 要: MCU深層次應用開發(fā)需要開發(fā)人員深入了解機器碼在MCU中的存儲和執(zhí)行機制,但機器碼自身可讀性差、相互關(guān)系不清晰等特點決定了對其閱讀、查找、分析難度較大。針對這一情況,以采用ARM Cortex?M0+內(nèi)核的KL25 MCU為藍本,根據(jù)工程編譯鏈接過程和鏈接腳本文件(.ld),分析機器碼文件的生成機制和組織結(jié)構(gòu)。在此基礎(chǔ)上針對機器碼文件中的中斷向量表、初始化代碼、函數(shù)、常變量、FLASH配置域等主要內(nèi)容,結(jié)合機器碼系列文件,給出了簡明快捷實用的分析方法,為嵌入式開發(fā)人員優(yōu)化及動態(tài)更新程序和數(shù)據(jù)、設(shè)計機器碼下載軟件等提供支撐,對其他內(nèi)核機器碼文件的分析有借鑒意義。

    關(guān)鍵詞: ARM Cortex?M0+; 機器碼文件; KL25; 鏈接腳本

    中圖分類號: TN918.2?34; TP311 文獻標識碼: A 文章編號: 1004?373X(2017)14?0044?05

    Abstract: MCU deep?level application development requires its developers to understand storage and enforcement mechanisms of machine codes in MCU, but the machine code itself has poor readability and unclear structure, thus it is difficult to be directly read, searched and analyzed. In response to this situation, using the ARM Cortex?M0+ KL25 MCU as a model, and according to engineering compiling linking process and linker script files (.ld) of MCU application project, the generative mechanism and structure of machine code file are analyzed. On this basis, a concise, efficient and practical analysis method is given in allusion to the interrupt vector table, initialization code, functions, constants, variables and Flash configuration domain. This is helpful for the embedded developers to update dynamically and optimize programs and data, design machine code download software, and analyze machine code files of other kernels.

    Keywords: ARM Cortex?M0+; machine?code file; KL25; linker script

    0 引 言

    用C語言開發(fā)的MCU應用工程經(jīng)過編譯鏈接后生成機器碼目標文件,正確全面深入地掌握機器碼文件的分析方法是快速進行MCU深層次應用開發(fā)必備的技能。機器碼文件要通過機器碼下載軟件下載到目標板上芯片的FLASH存儲區(qū)中運行,下載軟件一般需要開發(fā)人員自行設(shè)計,因為KDS(Kinetis Design Studio)等集成開發(fā)環(huán)境提供的下載方法在脫離開發(fā)環(huán)境后無法使用,不便于產(chǎn)品的批量生產(chǎn);而在程序正常運行后,有時需要動態(tài)在線更新或升級部分程序和數(shù)據(jù),如濾波算法程序、排序算法程序、系統(tǒng)參數(shù)等;嵌入式系統(tǒng)的存儲資源與通用計算機系統(tǒng)相比,相對匱乏、速度較低,對實時性、可靠性要求較高[1],需要根據(jù)實際情況動態(tài)修改或優(yōu)化程序和數(shù)據(jù)等。這一切都需要開發(fā)人員對機器碼文件有充分的了解,能正確深入地分析機器碼文件,了解程序數(shù)據(jù)的存儲和執(zhí)行機制、芯片復位啟動過程、程序執(zhí)行時間等芯片底層內(nèi)容。但不同廠家不同內(nèi)核的指令機器碼存在差異,應用工程的機器碼文件結(jié)構(gòu)和組成也不相同,分析方法也不盡相同,目前有關(guān)ARM Cortex?M0+內(nèi)核機器碼文件的系統(tǒng)性分析研究很少。機器碼自身可讀性差、相互關(guān)系不清晰、不符合通常思維習慣等特點決定了由其組成的機器碼文件閱讀、理解和分析困難,為此,要有正確實用的分析機制和分析方法。

    本文在深入剖析機器碼文件的生成機制、組織結(jié)構(gòu)的基礎(chǔ)上,結(jié)合機器碼系列文件,給出了簡明快捷的分析方法。

    1 機器碼文件的生成

    MCU應用工程在編譯鏈接工程中會使用一些文件,并生成若干文件,只有了解這些文件的生成過程、相互關(guān)系、功能作用等內(nèi)容才能全面準確地分析機器碼文件。

    1.1 MCU程序編譯鏈接過程

    KDS集成開發(fā)環(huán)境下,對任一用C語言開發(fā)的MCU應用工程,運行Cross ARM GCC編譯器,會經(jīng)過如圖1所示的編譯、匯編和鏈接等過程。

    MCU應用工程往往包含若干源代碼文件(.c)(也包含需要快速執(zhí)行的匯編程序.S),每個源代碼文件在編譯、匯編后都會生成一個可重定位的二進制目標文件(.o)[2](本文稱之為中間文件),再通過ld鏈接器根據(jù)鏈接腳本文件(.ld)的內(nèi)部相關(guān)規(guī)則將這些中間文件鏈接組合成針對ARM CPU的.elf格式的可執(zhí)行目標文件[3]。如果程序調(diào)用了靜態(tài)庫(.a)中的函數(shù)或變量,鏈接時還會包括相應的庫文件。在編譯鏈接過程中,還可同時生成機器碼文件(.hex)、映像文件(.map)、列表文件(.lst)。

    1.2 鏈接腳本文件的使用

    鏈接腳本文件(.ld)提供給鏈接器控制鏈接過程,用于重定位代碼并提供程序、數(shù)據(jù)在內(nèi)存中的存儲位置[4?5]。它規(guī)定如何將各個中間文件中的段(稱為輸入段)放入可執(zhí)行目標文件中合適的段(稱為輸出段)中,并控制目標文件內(nèi)各部分的地址分配。它主要由MEMORY,SECTIONS命令組成[6]。首先通過MEMORY命令劃分FLASH和RAM存儲空間可用資源區(qū)為多個存儲區(qū),并定義各存儲區(qū)的起始地址及長度、設(shè)置讀寫或執(zhí)行等屬性。再通過SECTIONS命令定義一些可供應用程序使用的符號并賦值、包含在可執(zhí)行目標文件中的各個輸出段及裝載到哪個存儲區(qū)。在各個輸出段中定義一些與該段相關(guān)的一些符號并賦值,同時確定該段應該由哪些中間文件的哪些輸入段如何鏈接而成。

    以 KL25_UART應用工程為例,該工程運行于本課題組自行設(shè)計的基于KL25(NXP公司的MKL25Z128VLK4)的開發(fā)板上,用于測試串口與PC機間通信情況。KL25[7]包含128 KB FLASH,16 KB SRAM。FLASH分成128扇區(qū),每扇區(qū)1 024 KB。MEMORY和SECTIONS命令所定義的各存儲區(qū)、包含的輸出段及存儲器空間分配情況如圖2所示。共定義4個存儲區(qū):中斷向量區(qū)“m_interrupts”、FLASH配置區(qū)“m_flash_config”、用戶程序區(qū)“m_text”和數(shù)據(jù)區(qū)“m_text”。前3個區(qū)在FLASH(本文稱為目標FLASH)中,數(shù)據(jù)區(qū)在SRAM中。其中,“m_text”區(qū)中的.text段定義如下:

    .text:

    { . = ALIGN(4); /*4 B的邊界對齊*/

    *(.text) /*非函數(shù)代碼*/

    *(.text.*) /*函數(shù)代碼*/

    *(.rodata) /*字符串等*/

    *(.rodata.*) /*數(shù)組常量等*/

    } > m_text

    鏈接腳本文件可由開發(fā)人員根據(jù)MCU應用工程的程序、數(shù)據(jù)所需空間大小及存放要求、鏈接要求等自行編寫或由開發(fā)環(huán)境生成后修改。

    1.3 機器碼系列文件的生成

    可執(zhí)行目標文件(.elf)的生成依賴于鏈接腳本文件和各個中間文件。當源文件被編譯成中間文件時,其中的各輸入段并沒有具體地址,中間文件中只是記錄了程序中所使用的各個符號和各符號在輸入段中的相對位置。只有當鏈接器根據(jù)鏈接腳本文件鏈接中間文件的各個輸入段時,各段才會根據(jù)鏈接腳本文件中所分配的地址獲得加載內(nèi)存地址LMA和虛擬內(nèi)存地址VMA[8],各個符號也才有了真實地址。再根據(jù)每一符號所對應的真實地址更新相應的指令,從而實現(xiàn)真正的函數(shù)調(diào)用和符號引用功能。通過這一重定位過程就可生成可執(zhí)行目標文件(.elf)。

    因為可執(zhí)行目標文件是二進制文件,包含程序開始執(zhí)行地址、程序頭、輸出段頭、符號表、各個輸出段、重定位信息以及調(diào)試和說明信息等并需專門工具軟件打開,可讀性差、分析不便,不是本文分析研究的對象。本文所要分析的機器碼文件是指由可執(zhí)行目標文件在KDS下經(jīng)格式轉(zhuǎn)換而生成的機器碼文件(.hex)。它是由十六進制文本組成的ASCII碼文件,已經(jīng)包含可執(zhí)行目標文件中的程序入口地址、各個輸出段等主要內(nèi)容,可讀性和結(jié)構(gòu)清晰度均較好,分析比較方便。而可執(zhí)行目標文件中的其他內(nèi)容也已經(jīng)包含在KDS下生成的列表文件(.lst)和映像文件(.map)中。

    映像文件提供了鏈接腳本文件中所定義的各個符號的地址值和各個輸入輸出段的長度及LMA,VMA地址映射信息。列表文件提供了程序開始執(zhí)行地址、程序頭、輸出段頭、符號表,以及“C代碼、匯編代碼、機器碼及存儲地址”的對應關(guān)系及LMA、常量數(shù)據(jù)等內(nèi)容,用于程序分析。

    2 機器碼文件組織結(jié)構(gòu)分析

    機器碼文件(.hex)存放了中斷向量表、FLASH配置域信息、程序機器碼、常量、初始化了的靜態(tài)變量和全局變量、程序入口地址等內(nèi)容,可直接使用串行線調(diào)試(Serial Wire Debug,SWD)技術(shù)通過下載程序下載到目標MCU中運行,比通過USBDM外部調(diào)試接口下載.elf文件方便、快捷。

    機器碼文件是由若干行符合Intel HEX文件格式的十六進制文本所構(gòu)成的ASCII文本文件,文件每一行均是一條HEX記錄,記錄分成6種不同類型,但記錄格式均相同,如表1所示。

    本文以KL25_UART應用工程的KL25_UART.hex為例進行分析,文件內(nèi)容如圖3所示。記錄中的偏移量表示當前記錄中“數(shù)據(jù)/信息區(qū)”的有效數(shù)據(jù)在裝載到目標FLASH中時的偏移地址,也只有這些數(shù)據(jù)才會被裝載到目標FLASH中,它們在FLASH中以小端方式(KL25 MCU內(nèi)部采用的存儲方式[4],即字的低字節(jié)存儲在低地址中)依次存放。

    圖3中“數(shù)據(jù)/信息區(qū)”的內(nèi)容簡要分析如下:

    (1) 中斷向量表。存放于第1~12行的記錄中。KL25有48個中斷向量,每個中斷向量占4 B,每條記錄可存放4個中斷向量,共占用12條記錄。裝載到目標FLASH中時,中斷向量表將會從偏移地址是“0x0000”處開始存放,占用(4×12)×4=192 B。

    (2) FLASH配置域。存放于第13行記錄中, 固定長度為16 B,在目標FLASH中的偏移地址是“0x0400”。

    (3) 程序和常量。存放于第14~209行中,在目標FLASH中的偏移地址是“0x0800”。

    (4) 靜態(tài)變量及全局變量。緊接著上述機器碼程序和常量后是已初始化為非0的靜態(tài)變量及全局變量,數(shù)據(jù)長度因應用工程而異。它們也會裝載到目標FLASH中,斷電后數(shù)據(jù)不會丟失。復位啟動時初始化程序會將它們拷貝到RAM中。

    (5) 其他內(nèi)容。機器碼文件倒數(shù)第2行固定為存放程序開始執(zhí)行地址的記錄,記錄類型為“0x03”,最后一行固定為文件結(jié)束記錄,記錄類型為“0x01”。

    3 機器碼文件內(nèi)容分析

    雖然機器碼文件本身提供的信息量有限,但結(jié)合.ld,.lst、,map等系列文件提供的編譯鏈接和裝載等信息,就可以全面分析該文件,以深入了解中斷向量表、芯片復位啟動過程、FLASH加密解密機制、代碼及數(shù)據(jù)的鏈接方法、定位、裝載和運行地址、空間占用情況、執(zhí)行時間、符號的處理等內(nèi)容。

    3.1 中斷向量表定位與分析

    中斷向量表位于機器碼文件的開始處,將直接裝載到目標FLASH的0x00000000地址處。因為根據(jù)芯片內(nèi)部工作機制,中斷向量表應存放于目標FLASH的0x00000000地址處即第0扇區(qū),當MCU上電啟動或復位時,將從該處取出4 B的第一表項內(nèi)容賦給堆棧指針SP,完成堆棧指針初始化工作,取出4 B的第二表項內(nèi)容賦給程序計數(shù)器PC,以便轉(zhuǎn)到相應地址處執(zhí)行芯片復位處理代碼。中斷向量表占用的空間依賴于具體MCU的中斷源數(shù)量,就目前市場上的MCU而言,最多占用1個扇區(qū),在扇區(qū)大小是1 024 KB的情況下,1個扇區(qū)可以存放=256個中斷向量,即使扇區(qū)大小是512 KB也可以存放128個中斷向量。

    中斷向量表中各個中斷向量對應的是符號值、0(表示未用)或中斷處理函數(shù)名或弱函數(shù)名,在編譯鏈接并重定位時,鏈接器會將這些符號、函數(shù)名、弱函數(shù)名更新為相應的符號值、函數(shù)、弱函數(shù)或?qū)膹姾瘮?shù)的虛擬內(nèi)存地址VMA(即運行地址)。

    中斷向量表一般在芯片啟動文件(.s)中定義,啟動文件的內(nèi)容結(jié)構(gòu)[9]如圖4所示。

    在KL25芯片啟動文件定義的中斷向量表中,序號為0的中斷向量是__StackTop(棧頂?shù)刂贩枺?,序號?的中斷向量是Reset_Handler(芯片復位處理函數(shù)),序號為29的中斷向量是UART1_IRQHandler弱函數(shù),并在中斷處理源文件中定義了對應的強函數(shù)。圖3中序號為0的中斷向量4字節(jié)組“00 30 00 20”實際表示的數(shù)據(jù)是“20 00 30 00”,正是_StackTop的值。序號為1的中斷向量4字節(jié)組“01 08 00 00”→“00 00 08 01”,其內(nèi)容減1后的值正是Reset_Handler函數(shù)的VMA,也是程序開始執(zhí)行地址。內(nèi)容減1是因為KL25的Cortex?M0+處理器的指令地址為半字對齊,即PC寄存器的最低位必須始終為0,但程序在跳轉(zhuǎn)時,PC的最低位必須被置為1,以表明內(nèi)核處于執(zhí)行16位Thumb指令的Thumb狀態(tài),而非執(zhí)行32位指令的ARM狀態(tài)[10]。序號為29的中斷向量4字節(jié)組“ED 08 00 00”→“00 00 08 ED”,其內(nèi)容減1后的值正是UART1_IRQHandler強函數(shù)的VMA。從KL25_UART.map或intflash.ld文件中可以查到_StackTop和Reset_Handler,UART1_IRQHandler等函數(shù)的VMA正是這些值。

    進而根據(jù)中斷處理函數(shù)的VMA就可在機器碼文件中相應的偏移地址(=中斷處理函數(shù)的VMA-0x00000000)處查找到其機器碼。

    3.2 FLASH配置域定位與分析

    FLASH配置域在機器碼文件中緊接著中斷向量表后存放,記錄中的偏移量對應的是目標FLASH第一扇區(qū)的開始地址。由于FLASH保護和加解密功能需擦除整個第一扇區(qū),所以該扇區(qū)剩余的空間保留著,當不用FLASH保護和加解密功能時可以存放機器碼數(shù)據(jù)。

    FLASH配置域保存了默認的FLASH保護設(shè)定及加密屬性,用于對FLASH模塊進行訪問控制,以防止某些FLASH存儲區(qū)域受意外擦除、寫入,或通過外部調(diào)試接口(如JTAG,SWD和USBDM等)訪問FLASH存儲器,但加密后通過外部調(diào)試接口仍可進行大規(guī)模的擦除操作,只是無法執(zhí)行讀取或?qū)懭隖LASH的指令。在芯片復位時,F(xiàn)LASH模塊讀取FLASH配置域相應字段信息對FLASH保護寄存器FPROT 和加密寄存器FSEC進行初始化。FLASH配置域信息如表2所示,相關(guān)寄存器內(nèi)容可見文獻[7]。

    開發(fā)者可直接對FLASH配置域字段進行改寫(先擦除整個扇區(qū),再復位芯片后寫入)以啟用/關(guān)閉加密功能,或使用封裝的加密解密函數(shù)來對配置域進行設(shè)置,但前者操作簡單直接且更為安全。

    3.3 MCU初始化代碼定位與分析

    MCU應用程序機器碼區(qū)包括芯片初始化代碼、各個函數(shù)代碼、常量、初始化為非0的靜態(tài)和全局變量等,位于機器碼文件中緊接著FLASH配置域后,首條記錄中的偏移量對應的是目標FLASH第二扇區(qū)的開始地址。應用工程不同,記錄條數(shù)和機器碼長度也不相同。由于中斷向量表第二表項存放的是MCU初始化函數(shù)Reset_Handler的VMA,所以只要計算出偏移地址(=Reset_Handler函數(shù)的VMA-0x00000000),就可方便地在機器碼文件中查找到Reset_Handler函數(shù)的機器碼。圖3中Reset_Handler函數(shù)的機器碼從記錄中偏移量是0x0800處(第14行記錄)開始存放。通過查看KL25_UART.lst文件可知,該處的機器碼“72 B6 00 F0…”→“B6 72 F0 00…”對應的是芯片啟動文件的Reset_Handler函數(shù),共占0x44 B,初始化過程見圖4。弄清MCU初始化過程后,在實際應用中,就可根據(jù)是否要啟動看門狗、是否要復制中斷向量表至RAM、是否要清零未初始化.bss段、啟動時間、是否添加監(jiān)控程序等要求來編寫或修改、優(yōu)化相關(guān)代碼,以提高系統(tǒng)的穩(wěn)定性、可靠性、靈活性。監(jiān)控程序可添加在進入main函數(shù)之前的位置處,以判斷是否有要寫入機器碼到FLASH中的命令,若有則完成寫入,這是更新用戶程序的一種簡便方法。

    3.4 函數(shù)和功能段的定位與分析

    在C函數(shù)代碼編譯成匯編指令時,編譯器自動在函數(shù)開始處添加push指令以保存函數(shù)被調(diào)用時的現(xiàn)場,如push{r7, lr},函數(shù)結(jié)束處自動添加pop指令以恢復現(xiàn)場,如pop{r7, pc}。其機器碼高位字節(jié)分別為B5,BD,低位字節(jié)與指令中使用的寄存器相關(guān),在存儲時機器碼是半字對齊并采用小端格式。這樣就可根據(jù)B5,BD來定位函數(shù)。

    (1) 用戶函數(shù)及ISR的定位。若某一存儲單元的內(nèi)容為“B5”且其偏移地址的最低位為1,則從該存儲單元的上一單元開始表示某個函數(shù)開始。其后第一個“BD”所在的存儲單元(其偏移地址的最低位必須為1)表示該函數(shù)結(jié)束。找出函數(shù)機器碼后就可直接計算其占用的存儲空間字節(jié)數(shù),更加便捷的方法是查詢.lst文件中的符號表。

    (2) 某個特定函數(shù)的定位。由于機器碼文件中沒有函數(shù)名,所以要定位特定名稱的某個函數(shù)需要借助于.lst文件進行,即根據(jù).lst文件中提供的“C代碼、匯編代碼、機器碼及存儲地址”部分的內(nèi)容,找到該函數(shù)的前幾個機器碼字節(jié),從而就可在機器碼文件中定位到函數(shù)的開始部分。

    (3) 相鄰存儲的兩函數(shù)之間的數(shù)據(jù)歸屬。如果函數(shù)中使用了字符串常數(shù)、數(shù)組常量、靜態(tài)和全局變量等數(shù)據(jù),那么它們的VMA地址將會存放到該函數(shù)最后。函數(shù)中的指令先通過相對尋址方式,從PC值與指令中給出的偏移量相加后形成的操作數(shù)地址所指向的存儲單元中取出VMA地址,再通過獲得的VMA地址訪問到所需數(shù)據(jù)。其余常量直接轉(zhuǎn)換成指令中的立即數(shù)存放于機器碼中。

    (4) 功能段的定位。特定的C語言功能段代碼對應的機器碼可以直接在.lst文件中查找到,據(jù)此就可在機器碼文件中定位,并可很方便地計算其占用的存儲空間字節(jié)數(shù)。計算執(zhí)行時間時可根據(jù)對應的匯編指令及內(nèi)核參考手冊上提供的指令執(zhí)行周期進行精確計算[11]。

    定位到函數(shù)或功能段后就可修改其代碼,或動態(tài)在線更新目標FLASH中的相應代碼。要實現(xiàn)動態(tài)更新功能,可以在編程時在main的永久循環(huán)中添加監(jiān)控代碼,以判斷是否有要寫入機器碼到FLASH中的命令,若有則完成寫入。

    3.5 常量、靜態(tài)和全局變量的定位與分析

    字符串常數(shù)、數(shù)組常量等在機器碼文件中的存放位置取決于.ld文件中對.text段的定義,在本文中,它們集中存放于機器碼的后面,而其余常量將其值以立即數(shù)形式直接存放于指令中。要確定某個特定常量的存放位置,可從.lst文件的最后內(nèi)容中先查找到該常量的存放地址,再到機器碼文件中精確定位。

    根據(jù)鏈接腳本文件,未初始化或初始化為0的靜態(tài)和全局變量存放于RAM中.data段后的.bss內(nèi)存區(qū)域中,但.bss段不占機器碼文件空間和目標FLASH空間,只占運行時的RAM空間。而.data段中包含的初始化為非0的靜態(tài)和全局變量占用機器碼文件空間、目標FLASH空間和運行時的RAM空間,斷電后初始化數(shù)據(jù)能保存。

    在機器碼文件中,初始化為非0的靜態(tài)和全局變量緊接著機器碼和常量的后面存放。從.lst文件中可以查看到它們的LMA和占用空間,據(jù)此可在機器碼文件中精確定位到特定的變量,并可計算出FLASH剩余空間的起始地址。定位到常量、靜態(tài)和全局變量后,可根據(jù)需要修改其值或通過監(jiān)控程序動態(tài)在線更新目標FLASH中的相應值。FLASH剩余空間可用于存放其他數(shù)據(jù),如系統(tǒng)參數(shù)等,同樣可實現(xiàn)動態(tài)在線更新。

    4 結(jié) 語

    本文在對ARM Cortex?M0+機器碼文件的生成機制、組織結(jié)構(gòu)和內(nèi)容進行深入剖析的基礎(chǔ)上,結(jié)合機器碼系列文件提供的信息,系統(tǒng)地給出了中斷向量表、FLASH配置域、初始化代碼、函數(shù)和常量、全局或靜態(tài)變量等內(nèi)容在機器碼文件中的定位與分析方法,使得對機器碼文件的分析變得簡明快捷。開發(fā)人員可以將分析結(jié)果應用于MCU深層次應用開發(fā)工作中,如編寫或修改鏈接腳本文件及芯片復位啟動程序、精確計算代碼執(zhí)行時間和占用的存儲空間、添加監(jiān)控代碼、優(yōu)化及動態(tài)更新程序和數(shù)據(jù)、設(shè)計機器碼下載軟件等,以充分利用MCU有限的資源,提高系統(tǒng)的可靠性、穩(wěn)定性、健壯性。

    參考文獻

    [1] 廉玉龍,史崢,李春強,等.基于C.SKY CPU的地址立即數(shù)編譯優(yōu)化方法[J].計算機工程,2016,42(1):46?50.

    [2] 胡宗棠,王宜懷,沈忱.面向MC1321X的低開銷無線重編程機制的研究與設(shè)計[J].計算機應用與軟件,2014,31(12):272?277.

    [3] 王宜懷,朱仕浪,郭蕓.嵌入式技術(shù)基礎(chǔ)與實踐[M].3版.北京:清華大學出版社,2013:86?87.

    [4] STANKIC M, CETIC N, KRNJETIN M, et al. Graphical tool for generating linker configuration files in embedded systems [C]// Proceedings of 2011 19th Telecommunications Forum. [S.l.: s.n.], 2011: 1550?1553.

    [5] ARM. Armlink user guide [DB/OL]. (2016?03?31) [2016?05?15]. http://infocenter.arm.com/help/.

    [6] Free Software Foundation. Documentation for binutils 2.26 [DB/OL]. (2016?01?25) [2016?05?15]. https://sourceware.org/binutils/docs?2.26/ld/.

    [7] NXP. KL25 Sub?family reference manual [DB/OL]. (2014?09?01) [2016?05?15]. http://www.nxp.com/.

    [8] 胡敏,盧永江,劉兵.基于CK810處理器的匯編鏈接時優(yōu)化[J].計算機工程,2014,40(11):250?254.

    [9] NXP. Kinetis assembler reference manual [DB/OL]. (2014?02?01) [2016?05?15]. http://www.nxp.com/.

    [10] JOESEP Yiu.ARM?Cortex?M0權(quán)威指南[M].吳常玉,譯.北京:清華大學出版社,2013:52?53.

    [11] ARM. Cortex?M0+ Processor technical reference manual [DB/OL]. (2012?12?16) [2016?05?15]. http://infocenter.arm.

    999久久久精品免费观看国产| 久久久久久久久大av| 亚洲精品粉嫩美女一区| 午夜爱爱视频在线播放| 天堂网av新在线| 人妻制服诱惑在线中文字幕| 此物有八面人人有两片| 床上黄色一级片| 男插女下体视频免费在线播放| 亚洲av不卡在线观看| a级一级毛片免费在线观看| 永久网站在线| 少妇的逼好多水| 久久国内精品自在自线图片| 国产色婷婷99| 大型黄色视频在线免费观看| 亚洲av日韩精品久久久久久密| 亚洲四区av| 欧美国产日韩亚洲一区| 国产亚洲精品久久久久久毛片| 日本 av在线| 精品免费久久久久久久清纯| 女人被狂操c到高潮| 人人妻人人看人人澡| 日韩中文字幕欧美一区二区| 亚洲精品在线观看二区| 大型黄色视频在线免费观看| 老女人水多毛片| 真实男女啪啪啪动态图| 久久久久久久久久久丰满 | 精品人妻熟女av久视频| 男插女下体视频免费在线播放| 一边摸一边抽搐一进一小说| 久久久色成人| 午夜福利在线观看吧| 色播亚洲综合网| 99久久无色码亚洲精品果冻| 欧美黑人欧美精品刺激| 22中文网久久字幕| 在线a可以看的网站| 不卡视频在线观看欧美| 国产高清不卡午夜福利| 成人二区视频| 久久久久性生活片| 亚洲国产精品久久男人天堂| 欧美一级a爱片免费观看看| netflix在线观看网站| 国产乱人伦免费视频| 12—13女人毛片做爰片一| 午夜福利18| 91麻豆精品激情在线观看国产| 久久人人爽人人爽人人片va| 亚洲性夜色夜夜综合| 久久午夜亚洲精品久久| 久久久久久久亚洲中文字幕| 日韩欧美 国产精品| 长腿黑丝高跟| 亚洲人成伊人成综合网2020| 久久精品国产亚洲av涩爱 | 变态另类成人亚洲欧美熟女| 色吧在线观看| 欧美色视频一区免费| 精品久久久久久久久久免费视频| 日本免费一区二区三区高清不卡| 美女xxoo啪啪120秒动态图| xxxwww97欧美| 亚洲无线观看免费| 亚洲国产精品sss在线观看| 男女之事视频高清在线观看| 一卡2卡三卡四卡精品乱码亚洲| 看免费成人av毛片| 午夜a级毛片| 嫩草影院新地址| 婷婷丁香在线五月| 国产亚洲精品久久久久久毛片| 在线免费观看的www视频| 俺也久久电影网| 中文在线观看免费www的网站| 小说图片视频综合网站| 有码 亚洲区| 乱系列少妇在线播放| 可以在线观看毛片的网站| ponron亚洲| 女生性感内裤真人,穿戴方法视频| 精品一区二区三区视频在线| 免费一级毛片在线播放高清视频| 日韩欧美精品v在线| 免费大片18禁| 精品午夜福利视频在线观看一区| 99视频精品全部免费 在线| 免费电影在线观看免费观看| 精品一区二区三区视频在线| 久久久久久久久久成人| 他把我摸到了高潮在线观看| 国产真实乱freesex| 看片在线看免费视频| 人人妻,人人澡人人爽秒播| 嫩草影院精品99| 啦啦啦啦在线视频资源| 日本成人三级电影网站| 九九热线精品视视频播放| 精品无人区乱码1区二区| 亚洲午夜理论影院| 日本 av在线| 99riav亚洲国产免费| 男女那种视频在线观看| 日韩一本色道免费dvd| 久久久精品欧美日韩精品| 国产单亲对白刺激| 国产毛片a区久久久久| 热99在线观看视频| 国产淫片久久久久久久久| 国产激情偷乱视频一区二区| 久久久午夜欧美精品| 国内毛片毛片毛片毛片毛片| 在线播放国产精品三级| 日本免费一区二区三区高清不卡| 91在线精品国自产拍蜜月| 亚洲久久久久久中文字幕| 国产精品亚洲一级av第二区| 久久精品综合一区二区三区| 性欧美人与动物交配| 日韩,欧美,国产一区二区三区 | 欧美一级a爱片免费观看看| 久久热精品热| 69av精品久久久久久| 尤物成人国产欧美一区二区三区| 亚洲中文字幕一区二区三区有码在线看| 亚洲熟妇中文字幕五十中出| 啦啦啦啦在线视频资源| 九九在线视频观看精品| or卡值多少钱| 亚洲第一电影网av| 两个人的视频大全免费| 最近中文字幕高清免费大全6 | 国产 一区精品| 天天躁日日操中文字幕| 美女被艹到高潮喷水动态| 婷婷精品国产亚洲av在线| 午夜亚洲福利在线播放| 淫妇啪啪啪对白视频| 亚洲专区中文字幕在线| 欧美zozozo另类| 国产大屁股一区二区在线视频| 亚洲一区二区三区色噜噜| 日韩强制内射视频| 欧美高清性xxxxhd video| 成人特级黄色片久久久久久久| 哪里可以看免费的av片| 亚洲久久久久久中文字幕| 精品一区二区三区视频在线观看免费| 亚洲性夜色夜夜综合| 99热这里只有精品一区| 一进一出抽搐gif免费好疼| 欧美性感艳星| 国产又黄又爽又无遮挡在线| 国产午夜精品久久久久久一区二区三区 | 国产一区二区三区视频了| 国产一区二区亚洲精品在线观看| 亚洲男人的天堂狠狠| 成人特级黄色片久久久久久久| 亚洲无线在线观看| 日韩欧美国产在线观看| 97碰自拍视频| www.www免费av| 可以在线观看毛片的网站| 精品人妻视频免费看| 最后的刺客免费高清国语| 成人美女网站在线观看视频| 国内精品一区二区在线观看| 亚洲精品亚洲一区二区| 国产主播在线观看一区二区| 国产黄a三级三级三级人| 我要搜黄色片| 色综合亚洲欧美另类图片| 久久久午夜欧美精品| 麻豆久久精品国产亚洲av| 久久亚洲精品不卡| 欧美性感艳星| 国产成人av教育| 人妻丰满熟妇av一区二区三区| 亚洲人成网站在线播放欧美日韩| 搡女人真爽免费视频火全软件 | 久久精品国产亚洲av香蕉五月| а√天堂www在线а√下载| 国产视频内射| 中文字幕av在线有码专区| 22中文网久久字幕| 天堂√8在线中文| 桃红色精品国产亚洲av| 日本在线视频免费播放| 精品福利观看| 精华霜和精华液先用哪个| 禁无遮挡网站| 欧美人与善性xxx| 高清日韩中文字幕在线| 很黄的视频免费| 白带黄色成豆腐渣| 国产一区二区亚洲精品在线观看| av黄色大香蕉| 亚洲精品日韩av片在线观看| 简卡轻食公司| 亚洲成人免费电影在线观看| 深爱激情五月婷婷| 国产欧美日韩精品一区二区| 久久久久久久久大av| 狂野欧美白嫩少妇大欣赏| 色综合色国产| 琪琪午夜伦伦电影理论片6080| 精品99又大又爽又粗少妇毛片 | 精品午夜福利视频在线观看一区| 日韩精品青青久久久久久| 啪啪无遮挡十八禁网站| a级一级毛片免费在线观看| avwww免费| 在线免费十八禁| 黄色一级大片看看| 国产一区二区激情短视频| 精品99又大又爽又粗少妇毛片 | 女的被弄到高潮叫床怎么办 | 中出人妻视频一区二区| 亚洲成人久久性| 免费看美女性在线毛片视频| 99精品在免费线老司机午夜| 在线观看一区二区三区| 日本黄色片子视频| 日本免费一区二区三区高清不卡| 国产精华一区二区三区| 老司机深夜福利视频在线观看| 欧美精品国产亚洲| 亚洲美女搞黄在线观看 | 国产精品爽爽va在线观看网站| 亚洲不卡免费看| 国产三级中文精品| 在现免费观看毛片| 国产视频一区二区在线看| 欧美一区二区亚洲| 99热精品在线国产| 久久久久久久久久黄片| 亚洲精品乱码久久久v下载方式| 日韩一本色道免费dvd| 午夜福利在线观看吧| av在线亚洲专区| 亚洲18禁久久av| 亚洲欧美精品综合久久99| 亚洲成人久久性| 欧美黑人巨大hd| 午夜日韩欧美国产| 他把我摸到了高潮在线观看| 精品久久久久久成人av| 国产乱人视频| 狠狠狠狠99中文字幕| 51国产日韩欧美| 久久人人爽人人爽人人片va| 丝袜美腿在线中文| 真人一进一出gif抽搐免费| 日日干狠狠操夜夜爽| 99久国产av精品| 国语自产精品视频在线第100页| 我的女老师完整版在线观看| 精品一区二区三区视频在线| 国产在线男女| 久久欧美精品欧美久久欧美| 免费不卡的大黄色大毛片视频在线观看 | 中文字幕人妻熟人妻熟丝袜美| 亚洲电影在线观看av| 国产亚洲91精品色在线| 亚洲人与动物交配视频| 国产伦精品一区二区三区四那| 久久欧美精品欧美久久欧美| 美女xxoo啪啪120秒动态图| 免费看日本二区| 99久久九九国产精品国产免费| 国产免费av片在线观看野外av| 亚洲四区av| 赤兔流量卡办理| 人人妻人人澡欧美一区二区| 欧美日韩乱码在线| 内地一区二区视频在线| 国语自产精品视频在线第100页| 亚洲精品色激情综合| 午夜激情欧美在线| 一区二区三区高清视频在线| 久久九九热精品免费| 网址你懂的国产日韩在线| 我要搜黄色片| 国产成人一区二区在线| 嫩草影院精品99| 日韩大尺度精品在线看网址| 国产精品人妻久久久影院| 亚洲人成网站在线播| 精品人妻1区二区| 1024手机看黄色片| 国产高清不卡午夜福利| 久久午夜福利片| 久久久久久久久久成人| 一级毛片久久久久久久久女| 尾随美女入室| 狂野欧美激情性xxxx在线观看| 久久久久久久亚洲中文字幕| 日本 av在线| 免费观看的影片在线观看| 亚洲在线观看片| 成人特级黄色片久久久久久久| 久久亚洲精品不卡| 少妇人妻精品综合一区二区 | 在线免费观看的www视频| 午夜精品久久久久久毛片777| 亚洲在线观看片| 中文字幕av成人在线电影| 听说在线观看完整版免费高清| 一进一出抽搐动态| 99久久精品一区二区三区| 内地一区二区视频在线| 国产免费男女视频| 午夜福利18| 精品久久国产蜜桃| 国产精品美女特级片免费视频播放器| 色5月婷婷丁香| www.色视频.com| 国产成人aa在线观看| 免费看光身美女| 亚洲av美国av| 久久精品国产亚洲网站| .国产精品久久| 国产一区二区激情短视频| 精品午夜福利视频在线观看一区| 夜夜看夜夜爽夜夜摸| 欧美日韩中文字幕国产精品一区二区三区| 国产精品伦人一区二区| av天堂中文字幕网| 亚洲国产欧美人成| 男人狂女人下面高潮的视频| 看免费成人av毛片| 国内揄拍国产精品人妻在线| 午夜免费激情av| 免费观看精品视频网站| 亚洲自拍偷在线| 性色avwww在线观看| 少妇的逼水好多| 成人国产麻豆网| 国产欧美日韩一区二区精品| 网址你懂的国产日韩在线| 国产一区二区在线av高清观看| 在线免费观看不下载黄p国产 | 免费大片18禁| av在线老鸭窝| 亚洲精品一区av在线观看| 丝袜美腿在线中文| 成人一区二区视频在线观看| 深夜a级毛片| 亚洲四区av| 成人永久免费在线观看视频| 国产精品国产三级国产av玫瑰| 欧美成人免费av一区二区三区| 国产综合懂色| 他把我摸到了高潮在线观看| 尤物成人国产欧美一区二区三区| 欧美日本亚洲视频在线播放| 成年女人毛片免费观看观看9| 色噜噜av男人的天堂激情| 美女被艹到高潮喷水动态| 成人毛片a级毛片在线播放| 免费观看人在逋| 日韩欧美国产在线观看| 久久欧美精品欧美久久欧美| 日本 欧美在线| av黄色大香蕉| 欧美+日韩+精品| 又黄又爽又免费观看的视频| 长腿黑丝高跟| 婷婷丁香在线五月| 亚洲专区中文字幕在线| 欧美xxxx黑人xx丫x性爽| 亚洲性久久影院| www.色视频.com| 能在线免费观看的黄片| 色综合色国产| 国产黄色小视频在线观看| 啦啦啦观看免费观看视频高清| 黄色女人牲交| 亚洲欧美精品综合久久99| 大型黄色视频在线免费观看| 免费观看的影片在线观看| 国产精品乱码一区二三区的特点| 88av欧美| 亚洲av电影不卡..在线观看| av在线蜜桃| 日韩av在线大香蕉| 日韩在线高清观看一区二区三区 | 国产精品av视频在线免费观看| 国产精品美女特级片免费视频播放器| av.在线天堂| 一夜夜www| 中国美白少妇内射xxxbb| 欧美黑人欧美精品刺激| 久久草成人影院| 国产视频一区二区在线看| 一个人免费在线观看电影| 亚洲在线观看片| 无遮挡黄片免费观看| 在现免费观看毛片| 伦精品一区二区三区| 丰满的人妻完整版| 精品无人区乱码1区二区| av福利片在线观看| 听说在线观看完整版免费高清| 黄色丝袜av网址大全| 国产爱豆传媒在线观看| 亚洲精品影视一区二区三区av| 亚洲av中文字字幕乱码综合| 国产蜜桃级精品一区二区三区| bbb黄色大片| 亚洲av电影不卡..在线观看| 又黄又爽又免费观看的视频| 久久精品综合一区二区三区| 精品久久久久久久久久久久久| 午夜福利18| 简卡轻食公司| 日韩中文字幕欧美一区二区| 嫩草影院新地址| 真人做人爱边吃奶动态| 亚洲av.av天堂| 精品午夜福利视频在线观看一区| 99久久久亚洲精品蜜臀av| 久久久久九九精品影院| 亚洲在线观看片| 中文字幕av在线有码专区| 精品人妻视频免费看| 18禁黄网站禁片午夜丰满| 欧美日韩综合久久久久久 | 日韩欧美免费精品| 精品国内亚洲2022精品成人| 亚洲av成人av| 亚洲欧美日韩高清在线视频| 亚洲美女视频黄频| 免费看日本二区| av在线观看视频网站免费| 精品欧美国产一区二区三| 网址你懂的国产日韩在线| 深爱激情五月婷婷| 真人做人爱边吃奶动态| АⅤ资源中文在线天堂| 免费在线观看日本一区| 91麻豆精品激情在线观看国产| 色尼玛亚洲综合影院| 少妇丰满av| 老司机午夜福利在线观看视频| 婷婷精品国产亚洲av在线| 久久久久性生活片| 日本五十路高清| 非洲黑人性xxxx精品又粗又长| 不卡一级毛片| 禁无遮挡网站| 成年版毛片免费区| 亚洲乱码一区二区免费版| 极品教师在线免费播放| 99热精品在线国产| 少妇被粗大猛烈的视频| 成人鲁丝片一二三区免费| 日韩欧美国产一区二区入口| 欧美黑人巨大hd| 国产成人一区二区在线| 亚州av有码| 九九爱精品视频在线观看| 一进一出抽搐gif免费好疼| 性插视频无遮挡在线免费观看| 黄色一级大片看看| 性插视频无遮挡在线免费观看| 在线国产一区二区在线| 日日撸夜夜添| 99久国产av精品| 日韩欧美精品v在线| 久99久视频精品免费| 日本黄色视频三级网站网址| 搡老妇女老女人老熟妇| 亚洲无线观看免费| 亚洲精品国产成人久久av| 成人一区二区视频在线观看| 十八禁网站免费在线| 九色国产91popny在线| www.色视频.com| 别揉我奶头 嗯啊视频| 色噜噜av男人的天堂激情| 国产精品久久久久久久久免| 亚洲欧美日韩无卡精品| 麻豆精品久久久久久蜜桃| 国产爱豆传媒在线观看| 99精品久久久久人妻精品| 国产一区二区三区视频了| 国内精品宾馆在线| 精品不卡国产一区二区三区| 免费人成视频x8x8入口观看| 欧美精品啪啪一区二区三区| 精品免费久久久久久久清纯| 国产成人一区二区在线| 乱人视频在线观看| 91狼人影院| 免费观看人在逋| 国产免费男女视频| 国产伦人伦偷精品视频| 伦精品一区二区三区| 超碰av人人做人人爽久久| 日本熟妇午夜| 精品欧美国产一区二区三| 亚洲美女黄片视频| 中文在线观看免费www的网站| 久久精品综合一区二区三区| 亚洲色图av天堂| 麻豆国产av国片精品| 久久人人精品亚洲av| 亚洲天堂国产精品一区在线| 国产精品爽爽va在线观看网站| 精品福利观看| 国产麻豆成人av免费视频| 18禁黄网站禁片免费观看直播| 老女人水多毛片| 听说在线观看完整版免费高清| 三级男女做爰猛烈吃奶摸视频| 狂野欧美白嫩少妇大欣赏| 午夜a级毛片| 可以在线观看毛片的网站| 亚洲av熟女| 国产高潮美女av| 老司机福利观看| АⅤ资源中文在线天堂| 亚洲国产精品合色在线| 国产真实乱freesex| 黄片wwwwww| 免费人成在线观看视频色| 免费大片18禁| 欧美三级亚洲精品| 免费看日本二区| 国产男人的电影天堂91| 人妻制服诱惑在线中文字幕| 国产淫片久久久久久久久| 国产一区二区在线观看日韩| 可以在线观看毛片的网站| 欧美在线一区亚洲| 日韩人妻高清精品专区| 日本在线视频免费播放| 国产一区二区三区在线臀色熟女| 在线a可以看的网站| 别揉我奶头~嗯~啊~动态视频| av国产免费在线观看| 免费在线观看日本一区| 91久久精品国产一区二区成人| 午夜福利高清视频| 99热这里只有精品一区| 九九热线精品视视频播放| 波野结衣二区三区在线| 久久精品国产亚洲网站| 在线免费观看的www视频| 在线观看舔阴道视频| 国产成人影院久久av| 村上凉子中文字幕在线| 精品久久久噜噜| 69人妻影院| 一进一出抽搐gif免费好疼| 免费看日本二区| 国产国拍精品亚洲av在线观看| 日韩精品中文字幕看吧| 欧美xxxx性猛交bbbb| 他把我摸到了高潮在线观看| 国产午夜精品论理片| 成年人黄色毛片网站| 精华霜和精华液先用哪个| 可以在线观看毛片的网站| 日本 欧美在线| 国产av在哪里看| 亚洲人成网站高清观看| av视频在线观看入口| 国产乱人视频| 天堂影院成人在线观看| 欧美日韩乱码在线| 国产高清视频在线播放一区| 色尼玛亚洲综合影院| 欧美性感艳星| 三级国产精品欧美在线观看| 亚洲男人的天堂狠狠| or卡值多少钱| 国产极品精品免费视频能看的| 老司机福利观看| 亚洲无线在线观看| 中文亚洲av片在线观看爽| 啦啦啦啦在线视频资源| 变态另类丝袜制服| 欧美最新免费一区二区三区| 国产69精品久久久久777片| 亚洲国产欧洲综合997久久,| 免费无遮挡裸体视频| 久久九九热精品免费| 在线观看免费视频日本深夜| 嫩草影院入口| 三级毛片av免费| 97碰自拍视频| 免费看日本二区| 久久久成人免费电影| 久久人妻av系列| 干丝袜人妻中文字幕| 在线a可以看的网站| 日韩高清综合在线| 我的老师免费观看完整版| 中国美女看黄片| 欧美日韩瑟瑟在线播放| 日本 欧美在线| 日本-黄色视频高清免费观看| 狂野欧美白嫩少妇大欣赏| 色噜噜av男人的天堂激情| 国产色爽女视频免费观看| 欧美黑人欧美精品刺激| 国产伦精品一区二区三区四那| av在线天堂中文字幕| 黄色一级大片看看| 18禁裸乳无遮挡免费网站照片|