<em id="kjidc"><acronym id="kjidc"><input id="kjidc"></input></acronym></em>
    <em id="kjidc"></em>
  • <button id="kjidc"><acronym id="kjidc"></acronym></button>

        1. A5系列
          ZC1 Cat.1,500MHz,AWorksLP
          ARM9系列
          M1106/M1107 雙核,四核800MHz,1GHz HDMI
          M7系列
          M1052 528MHz,ZigBee,Mifare,WiFi,LoRa
          M1062 528MHz,WiFi,雙網口,三路CAN
          A7系列
          M6G2C 528MHz,雙網口,8串口,雙CAN
          A6G2C系列無線IoT核心板 528MHz,ZigBee,Mifare,WiFi,藍牙
          M6Y2C 800MHz,8串口,雙網口,大容量
          A6Y2C系列無線IoT核心板  800MHZ,8串口,WiFi,藍牙
          M1126 瑞芯微四核,1.5GHz,GPU
          A8系列
          M335x-T 800MHz,6串口,雙網口,雙CAN
          A3352系列無線IoT核心板 800MHz,WiFi,藍牙,RFID
          A9/A9+FPGA系列
          M6708-T 雙核/四核,800MHz/1GHz HDMI
          M7015 雙核Cortex?-A9 + FPGA,766MHz
          A35系列
          M1808  瑞芯微雙核A35,1.6GHz,AI核心板,NPU
          A53系列
          M62XX 1.4GHz,3路CAN FD,2路千兆,9路串口
          M65XX 1.1GHz,擴展18串口或6路千兆網口
          M6442 1.0GHz,5路TSN千兆網口,支持EtherCAT,GPMC
          A55系列
          M3568 

          瑞芯微四核A55,2GHz,NPU,GPU,
          VPU,Android,ubuntu,debian,鴻蒙

          Risc-V系列
          MR6450/MR6750 15路串口,4路CAN FD,2路千兆
          MIPS系列
          MX2000 1.2GHz,快速啟動,實時系統

          【Linux學習小技巧】Linux內核開發工具介紹1

          盡管她是一個復雜的系統,但對絕大部分內核開發者來說只需要知道如何使用,而無需了解其中的細節。她對絕大部分內核開發者基本上是透明的,隱藏了大部分實現細節,有效地降低了開發者的負擔,能使其能專注于內核開發,而不至于花費時間和精力在編譯過程上。
          1.1 Linux內核中的Makefile文件
          1.1.1 頂層Makefile

          源碼目錄樹頂層Makefile是整個內核源碼管理的入口,對整個內核的源碼編譯起著決定性作用。編譯內核時,頂層Makefile會按規則遞歸歷遍內核源碼的所有子目錄下的Makefile文件,完成各子目錄下內核模塊的編譯。熟悉一下該Makefile,對內核編譯等方面會有所幫助。

          1. 內核版本號

          打開頂層Makefile,開頭的幾行記錄了內核源碼的版本號,通常如下所示:

          VERSION = 2
          PATCHLEVEL = 6
          SUBLEVEL = 35
          EXTRAVERSION =3

          說明代碼版本為2.6.35.3,編譯得到的內核在目標板運行后,輸入uname -a命令可以得到印證:

          # uname -a
          Linux boy 2.6.35.3-571-gcca29a0-gd431b3d-dirty #22 PREEMPT Tue Oct 27 20:12:33 CST 2015 armv5tejl GNU/Linux

          2. 編譯控制

          (1)體系結構

          Linux是一個支持眾多體系結構的操作系統,在編譯過程中需指定體系結構,以與實際平臺對應。在頂層Makefile中,通過變量ARCH來指定:

          ARCH?= $(SUBARCH)
          如果沒有在編譯命令行中指定ARCH參數,系統將會進行本地編譯,通過獲取本機信息來自動指定:
          SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
          -e s/arm.*/arm/ -e s/sa110/arm/ \
          -e s/s390x/s390/ -e s/pa

          如果進行Arm?嵌入式Linux開發,則必須指定ARCH為arm(注意大小寫,須與arch/目錄下的arm一致),如:

          $make ARCH=arm

          當然,也可以修改Makefile,將修改為ARCH ?= $(SUBARCH)修改為ARCH = arm,在命令行直接make即可。

          (2)編譯器

          如果不是進行本地編譯,則須指定交叉編譯器,通過CROSS_COMPILE來指定。Makefile中與交叉編譯器的指定如下:

          CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
          ……
          AS = $(CROSS_COMPILE)as
          LD = $(CROSS_COMPILE)ld
          CC = $(CROSS_COMPILE)gcc
          CPP = $(CC) –E
          AR = $(CROSS

          CONFIG_CROSS_COMPILE是一個配置選項,可在內核配置時候指定。如果在配置內核時候沒有指定CONFIG_CROSS_COMPILE,也沒有在編譯參數指定CROSS_COMPILE,則會采用本地編譯器進行編譯。

          進行Arm?嵌入式Linux開發,必須指定交叉編譯器,可以在內核配置通過CONFIG_CROSS_COMPILE指定交叉編譯器,也可以通過CROSS_COMPILE指定。

          $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

          或者在Makefile中,直接指定CROSS_COMPILE的值:

          CROSS_COMPILE = arm-linux-gnueabihf-

          注意:CROSS_COMPILE指定的交叉編譯器必須事先安裝并正確設置系統環境變量;如果沒有設置環境變量,則需使用絕對地址,例如:

          CROSS_COMPILE =/home/ctools/linux-devkit/bin/arm-linux-gnueabihf-
          如果同時指定了ARCH和CROSS_COMPILE,則在編譯的時候,只需簡單的make就可以了。
          1.1.2 子目錄的Makefile

          在內核源碼的子目錄中,幾乎每個子目錄都有相應的Makefile文件,管理著對應目錄下的代碼。對該目錄的文件或者子目錄的編譯控制,Makefile中有兩種表示方式,一種是默認選擇編譯,用obj-y表示,如:

          另一種表示則與內核配置選項相關聯,編譯與否以及編譯方式取決于內核配置,例如:
          是否編譯wdt.c文件,或者以何種方式編譯,取決于內核配置后的變量CONFIG_WDT值:如果在配置中設置為[*],則靜態編譯到內核,如果配置為[M],則編譯為wdt.ko模塊,否則不編譯。 說明:受控目標是一個目錄,obj-y并不直接決定受控目錄的文件以及子目錄的文件,僅僅是與受控目錄Makefile交互,實際編譯控制在受控子目錄的Makefile中。例如“obj-y+= gpio/”,最終gpio目錄下哪些文件被編譯,完全取決于gpio目錄下的Makefile?!皁bj-$(CONFIG_PCI) += pci/”的含義同理。
          天天日天天射人人摸,天天视频在线播放免费,天天摸天天干天天插天日,天天插夜夜操美女

          <em id="kjidc"><acronym id="kjidc"><input id="kjidc"></input></acronym></em>
          <em id="kjidc"></em>
        2. <button id="kjidc"><acronym id="kjidc"></acronym></button>