日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

搭建嵌入式ARM完整系统

發布時間:2024/3/12 windows 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 搭建嵌入式ARM完整系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

## 系統構建概述

對于移植到開發板上運行的linux系統,我們需要構建三個最基本的東西:

  • 引導程序bootloader;
  • 開發板運行機制內核文件系統;
  • 文件管理系統
  • 如下圖,我們以mini2440的下載為參考:

    ? 由燒寫軟件界面可以看到,我們在完成一個完整系統的移植時需要的成分也是以上三個。第一是引導程序,第二是內核系統,第三是命令行,第四是文件系統

    • LINUX中bootloader、linuxkernel、rootfile三者之間的確切關系是怎么樣的呢?

      bootloader ----> linuxkernel ----> rootfile

      后者需要前者提供功能支持,前者的目的就是啟動后者。

    一.Linux內核構建

    一、內核簡介
      內核,是一個操作系統的核心。它負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定著系統的性能和穩定性。
      Linux的一個重要的特點就是其源代碼的公開性,所有的內核源程序都可以在/usr/src/linux下找到,大部分應用軟件也都是遵循GPL而設計的,你都可以獲取相應的源程序代碼。全世界任何一個軟件工程師都可以將自己認為優秀的代碼加入到其中,由此引發的一個明顯的好處就是Linux修補漏洞的快速以及對最新軟件技術的利用。而Linux的內核則是這些特點的最直接的代表。
      想象一下,擁有了內核的源程序對你來說意味著什么?首先,我們可以了解系統是如何工作的。通過通讀源代碼,我們就可以了解系統的工作原理,這在Windows下簡直是天方夜譚。其次,我們可以針對自己的情況,量體裁衣,定制適合自己的系統,這樣就需要重新編譯內核。在Windows下是什么情況呢?相信很多人都被越來越龐大的Windows整得莫名其妙過。再次,我們可以對內核進行修改,以符合自己的需要。這意味著什么?沒錯,相當于自己開發了一個操作系統,但是大部分的工作已經做好了,你所要做的就是要增加并實現自己需要的功能。在Windows下,除非你是微軟的核心技術人員,否則就不用癡心妄想了。

    二、內核版本號

    由于Linux的源程序是完全公開的,任何人只要遵循GPL,就可以對內核加以修改并發布給他人使用。Linux的開發采用的是集市模型(bazaar,與cathedral–教堂模型–對應),為了確保這些無序的開發過程能夠有序地進行,Linux采用了雙樹系統。一個樹是穩定樹(stable tree),另一個樹是非穩定樹(unstable tree)或者開發樹(development tree)。一些新特性、實驗性改進等都將首先在開發樹中進行。如果在開發樹中所做的改進也可以應用于穩定樹,那么在開發樹中經過測試以后,在穩定樹中將進行相同的改進。一旦開發樹經過了足夠的發展,開發樹就會成為新的穩定樹。開發數就體現在源程序的版本號中;源程序版本號的形式為x.y.z:對于穩定樹來說,y是偶數;對于開發樹來說,y比相應的穩定樹大一(因此,是奇數)。到目前為止,穩定樹的最高版本是2.4.18;開發樹的最新版本是2.5.10。下載內核版本請訪問http://www.kernel.org。

    三、為什么重新編譯內核

    Linux作為一個自由軟件,在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂了舊內核的bug,并增加了許多新的特性。如果用戶想要使用這些新特性,或想根據自己的系統度身定制一個更高效,更穩定的內核,就需要重新編譯內核。
      通常,更新的內核會支持更多的硬件,具備更好的進程管理能力,運行速度更快、 更穩定,并且一般會修復老版本中發現的許多漏洞等,經常性地選擇升級更新的系統內核是Linux使用者的必要操作內容。
      為了正確的合理地設置內核編譯配置選項,從而只編譯系統需要的功能的代碼,一般主要有下面四個考慮:
      l 自己定制編譯的內核運行更快(具有更少的代碼)
      l 系統將擁有更多的內存(內核部分將不會被交換到虛擬內存中)
      l 不需要的功能編譯進入內核可能會增加被系統攻擊者利用的漏洞
      l 將某種功能編譯為模塊方式會比編譯到內核內的方式速度要慢一些

    四、內核編譯模式

    要增加對某部分功能的支持,比如網絡之類,可以把相應部分編譯到內核中(build-in),也可以把該部分編譯成模塊(module),動態調用。如果編譯到內核中,在內核啟動時就可以自動支持相應部分的功能,這樣的優點是方便、速度快,機器一啟動,你就可以使用這部分功能了;缺點是會使內核變得龐大起來,不管你是否需要這部分功能,它都會存在,這就是Windows慣用的招數,建議經常使用的部分直接編譯到內核中,比如網卡。如果編譯成模塊,就會生成對應的.o文件,在使用的時候可以動態加載,優點是不會使內核過分龐大,缺點是你得自己來調用這些模塊。

    五、新版本內核的獲取和更新

    Linux內核版本發布的官方網站是http://www.kernel.org。新版本的內核…一種是patch文件,即補丁。完整的內核版本比較大,一般是tar.gz或者是.bz2文件,二者分別是使用gzip或者bzip2進行壓縮的文件,使用時需要解壓縮。patch文件則比較小,一般只有幾十K到幾百K,但是patch文件是針對于特定的版本的,你需要找到自己對應的版本才能使用。
      編譯內核需要root權限,以下操作都假定你是root用戶。請把你需要升級的內核拷貝到/usr/src/下(下文中以2.4.18的內核的linux-2.4.18.tar.gz為例),命令為

    #cp linux-2.4.18.tar.gz /usr/src

    讓我們先來查看一下當前/usr/src的內容,注意到有一個linux-2.4的符號鏈接,指向一個linux-2.4.7-10(以REDHAT7.2為例)的目錄。這就是你所裝linux的kernel源代碼,刪除這個鏈接。

    現在解壓我們下載的源程序文件。如果所下載的是.tar.gz(.tgz)文件,請使用下面的命令:

    #tar -zxvf linux-2.4.18.tar.gz.tar.gz

    如果你所下載的是.bz2文件,例如linux-2.4.0test8.tar.bz2,請使用下面的命令

    #bzip2 -d linux-2.4.18.tar.bz2
    #tar -xvf linux-2.4.18.tar

    文件將解壓到/usr/src/linux目錄中,我們把它稍作修改:

    #mv linux linux-2.4.18
    #ln -s linux-2.4.18 linux

    如果下載的是patch文件,就可以進行patch操作(下面假設patch-2.4.18已經位于/usr/src目錄下了,否則你需要先把該文件拷貝到/usr/src下):

    #patch -p0 < patch-2.4.18

    六、內核編譯

    通常要運行的第一個命令是:

    #cd /usr/src/linux
    #make mrproper

    該命令確保源代碼目錄下沒有不正確的.o文件以及文件的互相依賴。由于我們使用剛下載的完整的源程序包進行編譯,所以本步可以省略。而如果你多次使用了這些源程序編譯內核,那么最好要先運行一下這個命令。
      確保/usr/include/目錄下的asm、linux和scsi等鏈接是指向要升級的內核源代碼的。它們分別鏈向源代碼目錄下的真正的、該計算機體系結構(對于PC機來說,使用的體系結構是i386)所需要的真正的include子目錄。如:asm指向/usr/src/linux/include/asm-i386等。若沒有這些鏈接,就需要手工創建,按照下面的步驟進行:

    這是配置非常重要的一部分。刪除掉/usr/include下的asm、linux和scsi鏈接后,再創建新的鏈接指向新內核源代碼目錄下的同名的目錄。這些頭文件目錄包含著保證內核在系統上正確編譯所需要的重要的頭文件。現在你應該明白為什么我們上面又在/usr/src下"多余"地創建了個名為linux的鏈接了吧?

    接下來的內核配置過程比較煩瑣,但是配置的適當與否與日后Linux的運行直接相關,有必要了解一下一些主要的且經常用到的選項的設置。
    配置內核可以根據需要與愛好使用下面命令中的一個:

    #make config(基于文本的最為傳統的配置界面,不推薦使用)
    #make menuconfig(基于文本選單的配置界面,字符終端下推薦使用)
    #make xconfig(基于圖形窗口模式的配置界面,Xwindow下推薦使用)
    #make oldconfig(如果只想在原來內核配置的基礎上修改一些小地方,會省去不少麻煩)

    這三個命令中,make xconfig的界面最為友好,如果你可以使用Xwindow,那么就推薦你使用這個命令,界面如下:

    如果你不能使用Xwindow,那么就使用make menuconfig好了。界面雖然比上面一個差點,總比make config的要好多了,下圖為make menuconfig的界面:

    選擇相應的配置時,有三種選擇,它們分別代表的含義如下:

    • Y--將該功能編譯進內核
    • N--不將該功能編譯進內核
    • M--將該功能編譯成可以在需要時動態插入到內核中的模塊

    如果使用的是make xconfig,使用鼠標就可以選擇對應的選項。如果使用的是make menuconfig,則需要使用空格鍵進行選取。你會發現在每一個選項前都有個括號, 但有的是中括號有的是尖括號,還有一種圓括號。 用空格鍵選擇時可以發現,中括號里要么是空,要么是"",而尖括號里可以是空,""和"M"這表示前者對應的項要么不要,要么編譯到內核里;后者則多一樣選擇,可以編譯成模塊。而圓括號的內容是要你在所提供的幾個選項中選擇一項。
      在編譯內核的過程中,最煩雜的事情就是這步配置工作了,很多新手都不清楚到底該如何選取這些選項。實際上在配置時,大部分選項可以使用其缺省值,只有小部分需要根據用戶不同的需要選擇。選擇的原則是將與內核其它部分關系較遠且不經常使用的部分功能代碼編譯成為可加載模塊,有利于減小內核的長度,減小內核消耗的內存,簡化該功能相應的環境改變時對內核的影響;不需要的功能就不要選;與內核關心緊密而且經常使用的部分功能代碼直接編譯到內核中。

    至于選項,因為比較復雜,只是簡單做一介紹,編譯時應視具體情況,參考幫助的內容再加以選擇。

  • Code maturity level options
  • 代碼成熟等級。此處只有一項:prompt for development and/or incomplete code/drivers,如果你要試驗現在仍處于實驗階段的功能,比如khttpd、IPv6等,就必須把該項選擇為Y了;否則可以把它選擇為N。

  • Loadable module support
  • 對模塊的支持。這里面有三項:

    Enable loadable module support:除非你準備把所有需要的內容都編譯到內核里面,否則該項應該是必選的。
      Set version inFORMation on all module symbols:可以不選它。
      Kernel module loader:讓內核在啟動時有自己裝入必需模塊的能力,建議選上。

  • Processor type and features
  • CPU類型。內容蠻多的,不一一介紹了,有關的幾個如下:

    Processor family:根據你自己的情況選擇CPU類型
      High Memory Support:大容量內存的支持。可以支持到4G、64G,一般可以不選。
      Math emulation:協處理器仿真。協處理器是在386時代的寵兒,現在早已不用了
      MTTR support:MTTR支持。可不選
      Symmetric multi-processing support:對稱多處理支持。除非你富到有多個CPU,否則就不用選了

  • General setup
  • 這里是對最普通的一些屬性進行設置。這部分內容非常多,一般使用缺省設置就可以了。下面介紹一下經常使用的一些選項:

    Networking support:網絡支持。必須,沒有網卡也建議你選上
      PCI support:PCI支持。如果使用了PCI的卡,當然必選。
      PCI access mode:PCI存取模式。可供選擇的有BIOS、Direct和Any,選Any吧。
      Support for hot-pluggabel devices:熱插拔設備支持。支持的不是太好,可不選。
      PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必選了。
      System V IPC
      BSD Process Accounting
      Sysctl support:以上三項是有關進程處理/IPC調用的,主要就是System V和BSD兩種風格。如果你不是使用BSD,就按照缺省吧。
      Power Management support:電源管理支持。
      Advanced Power Management BIOS support:高級電源管理BIOS支持。

  • Memory Technology Device(MTD)
  • MTD設備支持。可不選。

  • Parallel port support
  • 并口支持。如果不打算使用串口,就別選了。

  • Plug and Play configuration
  • 即插即用支持。雖然Linux對即插即用目前支持的不如Windows好,但是還是選上吧,這樣你可以拔下鼠標之類的體驗一下Linux下即插即用的感覺。

  • Block devices
  • 塊設備支持。這個就得針對自己的情況來選了,簡單說明一下吧:

    Normal PC floppy disk support:普通PC軟盤支持。這個應該必選。
      XT hard disk support:
      Compaq SMART2 support:
      Mulex DAC960/DAC1100 PCI RAID Controller support:RAID鏡像用的。
      Loopback device support:
      Network block device support:網絡塊設備支持。如果想訪問網上鄰居的東西,就選上。
      Logical volume manager(LVM)support:邏輯卷管理支持。
      Multiple devices driver support:多設備驅動支持。
      RAM disk support:RAM盤支持。

  • Networking options
  • 網絡選項。這里配置的是網絡協議。內容太多了,不一一介紹了,自己看吧,如果你對網絡協議有所了解的話,應該可以看懂的。如果懶得看,使用缺省選項(肯定要選中TCP/IP networking哦)就可以了。讓我們看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的協議好多哦,IPv6也支持了,Qos and/or fair queueing(服務質量公平調度)也支持了,還有kHTTPd,不過這些都還在實驗階段。

  • Telephony Support
  • 電話支持。Linux下可以支持電話卡,這樣你就可以在IP上使用普通的電話提供語音服務了。記住,電話卡可和modem沒有任何關系哦。

  • ATA/IDE/MFM/RLL support
  • 這個是有關各種接口的硬盤/光驅/磁帶/軟盤支持的,內容太多了,使用缺省的選項吧,如果你使用了比較特殊的設備,比如PCMCIA等,就到里面自己找相應的選項吧。

  • SCSI support
  • SCSI設備的支持。我沒有SCSI的設備,所以根本就不用選,如果你用了SCSI的硬盤/光驅/磁帶等設備,自己找好了。

  • Fusion MPT device support
  • 需要Fusion MPT兼容PCI適配器,不用選

  • I2O device support
  • 需要I2O接口適配器支持,在智能Input/Output(I2O)體系接口中使用。

  • Network device support
  • 網絡設備支持。上面選好協議了,現在該選設備了,可想而知,內容肯定多得很。還好還好,里面大概分類了,有ARCnet設備、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support幾大類。我用的是10/100M的以太網,看來只需要選則這個了。還是10/100M的以太網設備熟悉,內容雖然多,一眼就可以看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support,為了免得麻煩,編譯到內核里面好了,不選M了,選Y。耐心點,一般說來你都能找到自己用的網卡。如果沒有,你只好自己到廠商那里去要驅動了。

  • Amateur Radio support
  • 配置業余無線廣播。

  • IrDA(infrared)support
  • 紅外線支持。

  • ISDN subsystem
  • 如果你使用ISDN上網,這個就必不可少了。

  • Old CD-ROM drivers(not SCSI、not IDE)
  • 做的可真周到,原來那些非SCSI/IDE口的光驅誰還在用啊,自己選吧,用IDE的CD-ROM不用選。

  • Character devices
  • 字符設備。這個內容又太多了,先使用缺省設置,需要的話自己就修改。把大類介紹一下吧:

    I2C support:I2C是Philips極力推動的微控制應用中使用的低速串行總線協議。如果你要選擇下面的Video For Linux,該項必選。
      Mice:鼠標。現在可以支持總線、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,自己根據需要選擇。
      Joysticks:手柄。即使在Linux下把手柄驅動起來意義也不是太大,游戲太少了。
      Watchdog Cards:雖然稱為Cards,這個可以用純軟件來實現,當然也有硬件的。如果你把這個選中,那么就會在你的/dev下創建一個名為watchdog的文件,它可以記錄你的系統的運行情況,一直到系統重新啟動的1分鐘左右。有了這個文件,你就可以恢復系統到重啟前的狀態了。
      Video For Linux:支持有關的音頻/視頻卡。
      Ftape, the floppy tape device driver:
      PCMCIA character device support:

  • File systems
  • 文件系統。內容又太多了,老法子,在缺省選項的基礎上進行修改。介紹以下幾項:

    Quota support:Quota可以限制每個用戶可以使用的硬盤空間的上限,在多用戶共同使用一臺主機的情況中十分有效。
      DOS FAT fs support:DOS FAT文件格式的支持,可以支持FAT16、FAT32。
      ISO 9660 CD-ROM file system support:光盤使用的就是ISO 9660的文件格式。
      NTFS file system support:ntfs是NT使用的文件格式。
      /proc file system support:/proc文件系統是Linux提供給用戶和系統進行交互的通道,建議選上,否則有些功能沒法正確執行。

    還有另外三個大類都規到這兒了:Network File Systems(網絡文件系統)、Partition Types(分區類型)、Native Language Support(本地語言支持)。值得一提的是Network File Systems里面的兩種:NFS和SMB分別是Linux和Windows相互以網絡鄰居的形式訪問對方所使用的文件系統,根據需要加以選擇。

  • Console drivers
  • 控制臺驅動。一般使用VGA text console就可以了,標準的80*25的文本控制臺。

  • Sound
  • 聲卡驅動。如果你能在列表中找到聲卡驅動那自然最好,否則就試試OSS了。

  • USB supprot
  • USB支持。很多USB設備,比如鼠標、調制解調器、打印機、掃描儀等,在Linux都可以得到支持,根據需要自行選擇。

  • Kernel hacking
  • 配置了這個,即使在系統崩潰時,你也可以進行一定的工作了。普通用戶是用不著這個功能的。

    配置完后,存盤退出,當然你也可以把現在的配置文件保存起來,這樣下次再配置的時候就省力氣了。

    接下來是編譯,輸入以下命令。

    第一個命令make dep實際上讀取配置過程生成的配置文件,來創建對應于配置的依賴關系樹,從而決定哪些需要編譯而那些不需要;第二命令make clean完成刪除前面步驟留下的文件,以避免出現一些錯誤;make zImage和make bzImage則實現完全編譯內核,二者生成的內核都是使用gzip壓縮的,只要使用一個就夠了,它們的區別在于使用make bzImage可以生成大一點的內核。建議大家使用make bzImage命令。
      后面三個命令只有在你進行配置的過程中,在回答Enable loadable module support (CONFIG_MODULES)時選了"Yes"才是必要的,make modules和make modules_install分別生成相應的模塊和把模塊拷貝到需要的目錄中。
      嚴格說來,depmod -a命令和編譯過程并沒有關系,它是生成模塊間的依賴關系,這樣你啟動新內核之后,使用modprobe命令加載模塊時就能正確地定位模塊。

    更新

    經過以上的步驟,我們終于得到了新版本的內核。為了能夠使用新版本的內核,我們還需要做一些改動:

    #cp /usr/src/linux/System.map /boot/System.map-2.4.18
    #cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.18

    以上這兩個文件是我們剛才編譯時新生成的。下面修改/boot下的兩個鏈接System.map和vmlinuz,使其指向新內核的文件:

    #cd /boot;rm -f System.map vmlinuz
    #ln -s vmlinuz-2.4.18 vmlinuz
    #ln -s System.map-2.4.18 System.map

    七、修改啟動管理器

    如果用LILO,修改/etc/lilo.conf,添加以下項:

    image=/boot/vmlinuz-2.4.18
    label=linux240
    read-only
    root=/dev/hda2

    其中root=/dev/hda2一行要根據需要自行加以修改。
      運行:

    #/sbin/lilo -v

    確認對/etc/lilo.conf的編輯無誤,現在重新啟動系統:

    #shutdown -r now

    如果是用Grub啟動管理器,則添加如下幾項即可。

    title Red Hat Linux (2.4.18)
    root (hd0,0)
    kernel /vmlinuz-2.4.18 ro root=/dev/hda2

    Grub不需再次調用命令,自動生效。

    重啟以后就可以用新內核了。

    二.bootloader構建

    1、Bootloader基本概述

    ? Bootloader是嵌入式系統的引導加載程序,它是系統上電后運行的第一段程序,其作用類似于PC機上的BIOS。Bootloader是依賴于硬件而實現的,特別是在嵌入式領域,為嵌入式系統建立一個通用的Bootloader是很困難的,但為了能達到啟動Linux內核的目的,所有的Bootloader都必須具備以下功能:

    1)初始化RAM

    ? 因為Linux內核一般都會在RAM中運行,所以在調用Linux內核之前Bootloader必須設置和初始化RAM,為調用Linux內核做好準備。初始化RAM的任務包括設置CPU的控制寄存器參數,以便能正常使用RAM以及檢測RAM大小等。

    2)初始化串口端口

    ? 在Linux的啟動過程中有著非常重要的作用,它是Linux內核和用戶交互的方式之一。Linux在啟動過程中可以將信息通過串口輸出,這樣便可清楚的了解Linux的啟動過程。雖然它并不是Bootloader必須要完成的工作,但是通過串口輸出信息是調試Bootloader和Linux內核的強有力的工具,所以一般的Bootloader都會在執行過程中初始化一個串口作為調試端口。

    3)檢測處理器類型

    ? Bootloader在調用Linux內核前必須檢測系統的處理器類型,并將其保存到某個常量中提供給Linux內核。Linux內核在啟動過程中會根據該處理器類型調用相應的初始化程序。

    4)設置Linux啟動參數

    ? Bootloader在執行過程中必須設置和初始化Linux的內核啟動參數。

    5)調用Linux內核映像

    ? Bootloader完成的最后一項工作便是調用Linux內核。如果Linux內核存放在Flash中,并且可直接在上面運行(這里的Flash指NorFlash),那么可直接跳轉到內核中去執行。但由于在Flash中執行代碼會有種種限制,而且速度也遠不及RAM快,所以一般的嵌入式系統都是將Linux內核拷貝到RAM中,然后跳轉到RAM中去執行。

    2、Bootloader啟動過程

    ? 嵌入式Linux系統通過Bootloader引導,一上電,就要執行Bootloader來初始化系統。在完成對系統的初始化任務之后,它會將非易失性存儲器(通常是Flash或DOC等)中的Linux內核拷貝到RAM中去,然后跳轉到內核的第一條指令處繼續執行,從而啟動Linux內核。Bootloader和Linux內核有著密不可分的聯系。

    Bootloader多數有兩個階段的啟動過程:

    Stage1:

    ? 基本的硬件初始化

    ? 為加載stage2準備RAM空間

    ? 拷貝內核映像和文件系統映像到RAM中

    ? 設置堆棧指針sp

    ? 跳到stage2的入口點

    Stage2:

    ? 初始化本階段要使用到的硬件設備

    ? 檢測系統的內存映射

    ? 加載內核映像和文件系統映像

    ? 設置內核的啟動參數

    ? 嵌入式系統中廣泛采用的非易失性存儲器通常是Flash,而Bootloader就位于該存儲器的最前端,所以系統上電或復位后執行的第一段程序便是Bootloader。Bootloader在flash中的存儲示意圖如下:

    3、Bootloader的啟動方式

    3.1網絡啟動方式

    ? 這種方式的開發板不需要較大的存儲介質,跟無盤工作站有點類似,但是使用這種啟動方式之前,需要把Bootloader安裝到板上的EPROM或者Flash中。Bootloader通過以太網接口遠程下載Linux內核映像或者文件系統。Bootloader下載文件一般都使用TFTP網絡協議,還可以通過DHCP的方式動態配置IP地址。

    3.2硬盤啟動方式

    ? 傳統的Linux系統運行在臺式機或者服務器上,這些計算機一般都使用BIOS引導,并使用磁盤作為存儲介質。Linux傳統上是LILO(LinuxLoader)引導,后來又出現了GUN的軟件(GrandUnifiedBootloader)。這兩種Bootloader廣泛應用在X86的Linux系統上。

    3.3Flash啟動方式

    ? 大多數嵌入式系統上都使用Flash存儲介質。Flash有很多類型,包括NORFlash、NANDFlash和其它半導體盤。它們之間的不同在于:NORFlash支持芯片內執行(XIP,eXecuteInPlace),這樣代碼可以在Flash上直接執行而不必拷貝到RAM中去執行。而NANDFlash并不支持XIP,所以要想執行NANDFlash上的代碼,必須先將其拷貝到RAM中去,然后跳到RAM中去執行。NORFlash使用最為普遍。Bootloader一般放在Flash的底端或者頂端,這需要根據處理器的復位向量來進行設置。可以配置成MTD設備來訪問Flash分區

  • 概述

    最近在做linux內核移植,內核是編譯好了,只是內核導進EMMC后啟動不了,移植卡在Starting kernel ...所以有必要把啟動梳理一遍,看卡在那個地方。
  • Uboot介紹

    U-Boot是Das U-Boot的簡稱,其含義是Universal Boot Loader,是遵循GPL條款的開放源碼項目。一開始德國DENX軟件工程中心的Wolfgang Denk基于8xxROM和FADSROM的源碼創建了PPCBoot工程項目,此后不斷添加處理器的支持。后來,Sysgo Gmbh把PPCBoot移植到ARM平臺上,創建了ARMBoot工程項目。然后以PPCBoot工程和ARMBoot工程為基礎,創建了U-Boot工程,2002年12月17日第一個版本U-Boot-0.2.0發布,同時PPCBoot和ARMboot停止維護。而今,U-Boot作為一個主流、通用的Bootloader,成功地被移植到包括主流的PowerPC、ARM、X86 、MIPS、NIOS、XScale等體系結構的上百種開發板,成為功能最多、靈活性最強,并且開發最積極的開源BootLoader。目前。U-Boot仍然由DENX的Wolfgang Denk維護。
  • Uboot 下載

    下載: [ftp://ftp.denx.de/pub/u-boot/](ftp://ftp.denx.de/pub/u-boot/)介紹:[http://www.denx.de/wiki/U-Boot/SourceCode](http://www.denx.de/wiki/U-Boot/SourceCode)

    4、Uboot 編譯
    1)下載后解壓
    tar -xjvf u-boot-2017.09.tar.bz2
    2)編譯
    參考文檔 https://blog.csdn.net/guyongqiangx/article/details/52565493
    具體步驟:

    》uboot也支持menuconfig,先調用設置處理器
  • 》選擇打印串口編號,迅為的開發板為 串口3![](https://img-blog.csdn.net/20180418235221805)》設置 交叉編譯器export CROSS_COMPILE=/home/cjx/Linux/Linux/LinuxTool/CompileTool/arm-2014.05/bin/arm-none-linux-gnueabi- 》設置處理器export ARCH=arm》設置板子類型make am335x_evm_config》開始編譯make5、Uboot menuconfig 認識> Architecture select (ARM architecture) ---> 處理器架構選擇>> ARM architecture ---> ARM 架構子選項>[ ] Support for ARM SMC Calling Convention (SMCCC) 支持SMCCC,這是一個開源的

    Minecraft啟動器核心庫,SMCCC介紹點擊打開鏈接

    >[ ] support boot from semihosting 支持半主控,用于調試>[*] Build U-Boot using the Thumb instruction set 用thumb指令建立uboot>[*] Build SPL using the Thumb instruction set 用thumb指令建立SPL>[ ] L2cache off >[*] Use an assembly optimized implementation of memcpy memcpy用匯編優化執行>>[ ] ARM64 system support AArch32 execution state 32位執行支持> Target select (Samsung EXYNOS) ---> 目標芯片選擇>[ ] EXYNOS architecture type select >[ ] Use LPAE page table format 頁表格式>[ ] Support the 'dek_blob' command > ARM debug ---> 調試> General setup ---> >() Local version - append to U-Boot release 版本號>[*] Automatically append version information to the version strin >[*] Optimize for size 優化大小>[*] Select defaults suitable for booting general purpose Linux di│ 選擇何時的啟動>[*] Enable malloc() pool before relocation 使能malloc池在引導之前>(0x400) Size of malloc() pool before relocation malloc大小>[*] Configure standard U-Boot features (expert users) ---> 配置標準的uboot特性>[ ] 64bit physical address support 64位物理地址支持> Boot images ---> 鏡像>[*] Enable support for Android Boot Images 使能安卓引導>[*] Support Flattened Image Tree 支持扁平鏡像樹>[*] Support SHA256 checksum of FIT image contents 支持FIT鏡像校驗和>[ ] Enable signature verification of FIT uImages FIT uimage簽名驗證>[ ] Show verbose messages when FIT images fail 打印信息當FIT鏡像失敗> [ ] Select the best match for the kernel device tree 選擇最好的匹配到設備樹>-*- Support Flattened Image Tree within SPL>[ ] Enable signature verification of FIT firmware within SPL >[*] Enable SPL loading U-Boot as a FIT >[ ] Set up board-specific details in device tree before boot >> API ---> >[ ] Enable U-Boot API 使能uboot api> Boot timing ---> 開機時序>[ ] Boot timing and reporting 開機報告>(20) Number of boot ID numbers available for user use 引導ID給 user>(30) Number of boot stage records to store 引導記錄數>(0) Address to stash boot timing information 開機時序記錄存儲地址>(0x1000) Size of boot timing stash region 存儲區大小>Boot media ---> 引導媒介>>(2) delay in seconds before automatically booting 自動引導延時>[ ] Enable boot arguments 啟動參數>() Boot arguments > Console ---> 控制臺>[ ] Console recording 控制臺記錄>() Board specific string to be added to uboot version string >[ ] Support a silent console 支持無信息控制臺>[ ] Buffer characters before the console is available 控制臺之前有效的字符緩沖>[ ] Enable console multiplexing 使能控制臺復用>[ ] Select console devices from the environment 選擇控制臺設備根據環境>[ ] Allow board control over console overwriting 允許控制臺覆蓋板控制>[ ] Update environment variables during console init 更新環境變量在控制臺初始化之前>[*] Don't display the console devices on boot 在boot里面不顯示控制臺設備>[ ] Allow deregistering stdio devices 允許注銷輸入輸出設備>[ ] Support a FIT image embedded in the U-boot image 支持FIT鏡像到

    U-boot鏡像點擊打開鏈接

    >() Default fdt file 默認的fdt文件>[*] add U-Boot environment variable vers 增加環境矢量>[*] Display information about the CPU during start up 啟動顯示CPU信息>[*] Display information about the board during start up 啟動顯示板子信息> Start-up hooks ---> 啟動鉤子函數> Security support ---- 安全支持> SPL / TPL ---> SPL是uboot第一階段執行的代碼. 主要負責搬移uboot第二階段的代碼到內存中運行. SPL是由固化在芯片內部的ROM引導的. 我們知道很多芯片廠商固化的ROM支持從nandflash, SDCARD等外部介質啟動> Command line interface ---> 命令行接口> [*] Support U-Boot commands > Autoboot options ---> 自動引導選項>>[*] Fastboot support ---> fastboot支持,fastboot是一種比recovery更底層的刷機模式>> Info commands ---> > Boot commands ---> 啟動命令> Environment commands ---> 環境命令>> Memory commands ---> 內存命令> Compression commands ---> 壓縮命令> Device access commands ---> 設備控制命令> Shell scripting commands ---> 腳本命令> Network commands ---> 網絡命令> Misc commands ---> 函數命令> Power commands ---- 電源控制命令> Security commands ---> 安全命令> Firmware commands ---- 固件命令> Filesystem commands ---> 文件系統命令> Debug commands ---> 調試命令>[ ] Enable UBI - Unsorted block images commands 是一種用于Raw Flash的卷管理系統,主要功能是在同一個Flash芯片上管理多個邏輯卷,并且平衡整個Flash讀寫操作> Partition Types ---> 分區類型>> Device Tree Control ---> 設備樹控制>> Environment ---> 環境>>-*- Networking support ---> 網絡支持>> Device Drivers ---> 設備驅動>> File systems ---> 文件系統> Library routines ---> 庫程序> [ ] Unit tests ---- 單元測試

    Uboot啟動流程分析
    參考文檔:

    [ https://blog.csdn.net/kl1125290220/article/details/78683999](https://blog.csdn.net/kl1125290220/article/details/78683999 )

    ? https://www.cnblogs.com/xiaojiang1025/p/6496704.html

    **1)**概述對于CPU來說整個啟動分兩步,第一步是固化在芯片內部的引導,主要加載uboot.bin。這段固件應該要先判斷uboot是在那個存儲里面,拷貝完之后進行跳轉,執行uboot.bin。第二階段uboot.bin先初始化外設,然后初始化系統允許環境**2)**初始化外設的代碼arch/arm/cpu/armv7/start.Sboard/samsung/myboard/lowlevel_init.Sarch/arm/lib/crt0.Sarch/arm/lib/board.carch/samsung/myboard/myboard.c**start.S**1、設置CPU為SVC模式,uboot需要更多的權限所以需要打開2、關閉MMU,uboot操作的都是實際地址3、關閉Cache,cache主要是做緩存的,因為內存的初始化比CPU初始化慢半拍,上電之初就操作存儲可能會導致問題4、跳轉到lowerlevel_init.s low_level_init**lowlevel_init.S**5、初始化時鐘6、初始化內存7、初始化串口,看門狗8、跳轉到crt0.S _main**crt0.S**9、設置棧10、初始化C運行環境11、調用board_init_f()**board.c**12、board_init_f對全局信息GD結構體進行填充**crt0.S**13、代碼重定位**3)**準備環境階段arch/arm/lib/crt0.Sarch/arm/lib/board.c

    ? 1. board_init_r()是進入定制板目錄的入口common/main.c

    ? 2. main_loop()中關閉中斷,執行命令以及加載引導內核

    **4)**uboot是如何加載內核的1.uboot需要先初始化好DRAM,因為要把內核搬運到這里面2.初始化一個串口3.uboot需要把板子類型傳給內核,按照arch/arm/tools/mach-types中的描述,將板子編號存儲在r1寄存器,這里板子類型有什么用?4.建立內核參數,包含內存位置,內存大小及根文件系統的位置等5.加載文件系統

    ? 6.啟動內核鏡像

    三.busybox文件系統構建

    本文適配fs4412開發板,使用的內核為linux4.9.9。
    1.源碼下載
    Busybox的官方源碼下載路徑為:
    http://busybox.net/downloads/
    可以下載最新的busybox-1.28.1

    參考文章:https://blog.csdn.net/qq_39077333/article/details/87090249

    2.解壓源碼

    tar xvf busybox-1.28.1.tar.bz2

    3.進入源碼目錄

    cd busybox-1.28.1

    4.配置busybox
    Busybox官方已經對其做了大量的默認的配置(如一些常用的shell命令:ls ,cd,mkdir等默認選擇),所以我們只需要做幾步簡單的適配即可。
    首先,執行

    make menuconfig

    4.1 busybox運行使用的庫的選擇

    Settings --->[*] Build static binary (no shared libs)

    在這里選擇編譯編譯靜態庫不依賴與任何動態鏈接庫,編譯出來的可執行文件busybox會大一點但是不過也只是1M大小。
    4.2 交叉編譯工具鏈的選擇

    Settings --->( arm-none-linux-gnueabi-) Cross compiler prefix

    根據你自己的平臺選擇填寫自己的工具鏈
    4.3 安裝目錄的選擇

    Settings --->(./_install) Destination path for 'make install'

    這里安裝目錄選擇當前目錄的_install目錄
    4.4 usr相關文件生成選擇

    Settings --->[ ] Don't use /usr

    注:此編譯選擇默認是選上的,我們要手動去掉,才能編譯出/usr相關目錄。
    5.編譯
    執行

    make

    等待幾分鐘即可編譯完成。
    6.安裝
    執行

    make install

    結果如下:

    ......./_install//usr/sbin/svlogd -> ../../bin/busybox./_install//usr/sbin/telnetd -> ../../bin/busybox./_install//usr/sbin/tftpd -> ../../bin/busybox./_install//usr/sbin/ubiattach -> ../../bin/busybox./_install//usr/sbin/ubidetach -> ../../bin/busybox./_install//usr/sbin/ubimkvol -> ../../bin/busybox./_install//usr/sbin/ubirename -> ../../bin/busybox./_install//usr/sbin/ubirmvol -> ../../bin/busybox./_install//usr/sbin/ubirsvol -> ../../bin/busybox./_install//usr/sbin/ubiupdatevol -> ../../bin/busybox./_install//usr/sbin/udhcpd -> ../../bin/busyboxYou will probably need to make your busybox binary setuid root to ensure all configured applets willwork properly.

    7.查看編譯生成的文件
    進入_install目錄

    cd _install/ l$ ls bin linuxrc sbin usr

    可以發現生成了4個文件。
    可以發現:/bin下的busybox大小為1.9M,其他的命令可執行文件都是指向它的符號鏈接。
    如執行:ls <===> busybox ls
    執行

    $file bin/busybox bin/busybox: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.38, stripped

    可以看到生成了arm架構的使用靜態庫的可執行文件busybox,即是安裝成功
    下面的步驟不進行操作,直接把以上的目錄拷貝到/source/rootfs下啟動開發板網絡掛載,可以發現也可以進入系統且可以輸入shell命令(能夠輸入shell命名說明了shell命令本身不是動態鏈接的,因為我們還沒有在文件系統中放入庫文件)。功能一樣不少(/dev下也創建出了設備節點)但是一下的功能是沒有的:
    1) 系統不能運行使用動態庫鏈接的可執行文件(何況默認情況下系統編譯時會鏈接動態庫,為了減可執行文件的體積,可以使用-static選項編譯和不適用此選項編譯放在根文件系統中試一下?)
    2)/sys目錄時空的,所以我們無法通過sysfs看到總線-設備-驅動的信息
    3)/proc目錄是空的,我們無法看不到內核導出的一些內核和進程信息(mount命令查看系統掛載情況都看不了,ps命令也看不到信息了)
    4)Init進程解析的inittab文件沒有所以采用了默認的配置
    5)無法運行我們的啟動程序等
    這對于實際應用來說是不可忍受的,所以還需要加入其它的目錄文件。
    8.創建其他需要的目錄

    mkdir dev etc lib sys proc tmp var home root mnt

    9.lib目錄下添加庫文件
    需要拷貝交叉工具鏈的庫拷貝到此目錄下(這里拷貝的是動態庫的原因是一般程序使動態編譯需要板子上動態庫的支持,而靜態庫一般在靜態編譯的時候用到是編譯階段,由于交叉編譯的工作放在了PC上所以不需要靜態庫,這樣還可以減小根文件系統的體積):

    cp /home/linux/tool_chain/arm-2010.09/arm-none-linux-gnueabi/libc/lib/*.so* . -a

    對庫文件進行瘦身(去除符號表和調試信息):

    arm-none-linux-strip *

    查看文件類型已經被瘦身了

    $file ld-2.11.1.so ld-2.11.1.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, stripped

    10.etc目錄下添加配置文件
    10.1 添加profile文件

    !/bin/sh export HOSTNAME=liebao export USER=root export HOME=home export PS1="[$USER@$HOSTNAME \W]\# " PATH=/bin:/sbin:/usr/bin:/usr/sbin LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH export PATH LD_LIBRARY_PATH

    進入系統就顯示了如下:

    ... Please press Enter to activate this console. [root@liebao:/]# [root@liebao:/]#cd [root@liebao:/home]# [root@liebao:/home]#echo $PATH /bin:/sbin:/usr/bin:/usr/sbin

    可以看到我們自定義了命令提示符,cd進入了我們制定的家目錄homes,導出了環境變量。
    10.2 添加inittab和rcS文件
    1)在 etc 下添加文件 inittab,文件內容如下:

    #this is run first except when booting in single-user mode. ::sysinit:/etc/init.d/rcS #/bin/sh invocations on selected ttys #start an "askfirst" shell on the console (whatever that may be) ::askfirst:-/bin/sh #stuff to do when restarting the init process ::restart:/sbin/init #stuff to do before rebooting ::ctrlaltdel:/sbin/reboot

    這個是init進程解析的配置文件,通過這個配置文件決定執行哪個進程,何時執行。
    2)創建etc/init.d目錄

    mkdir etc/init.d

    進入 etc/init.d
    創建文件rcS這是個啟動腳本(里面可以放一些系統啟動的時候需要執行的腳本或者程序)
    寫入一段語句如:

    echo “welcome to linux” > rcS

    加可執行權限:

    chmod +x rcS

    重啟開發板觀察打印,打印出了這句話說明配置文件配置成功,可以在里面添加自己的可執行程序。
    10.3 添加fstab文件
    為了讓那個系統自動掛載一些文件,需要一個fstab文件,dev下創建fstab文件:

    touch fstab

    文件內容如下:

    device mount-point type options dump fsck order sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 tmp /tmp tmpfs defaults 0 0 tmp /dev tmpfs defaults 0 0

    指定掛載的文件系統。
    這里我們掛在的文件系統有三個proc、sysfs和tmpfs,在內核中proc和sysfs默認都支持,而tmpfs是沒有支持的,我們需要添加tmpfs的支持
    修改內核配置:

    $ make menuconfig
    File systems --->
    Pseudo filesystems --->
    [*] Virtual memory file system support (former shm fs)
    [*] Tmpfs POSIX Access Control Lists

    重新編譯內核即可(實際上,我們使用的linux4.9的內核已經配置好了)。

    啟動腳本/etc/init.s/rcS中添加自動掛載命令:

    /bin/mount -a
    /bin/mkdir /dev/pts
    /bin/mount -t devpts devpts /dev/pts

    第一句話為:將會執行/etc/fstab文件
    第二三句為:創建虛擬的devpts 文件系統用于用于偽終端設備(當我們使用telnet或者ssh等登陸系統的時候就會自動在/dev/pts/下創建/dev/pts/0,/dev/pts/1等表示這些終端設備)
    重啟開發板,執行mount命令:

    [root@liebao:/]#mount
    172.16.21.104:/source/rootfs on / type nfs (rw,relatime,vers=2,rsize=4096,wsize=4096,namlen=255,hard,nolock,proto=udp,timeo=11,retrans=3,sec=sys,mountaddr=172.16.21.104,mountvers=1,mountproto=udp,local_lock=all,addr=172.16.21.104)
    devtmpfs on /dev type devtmpfs (rw,relatime,size=469156k,nr_inodes=117289,mode=755)
    sysfs on /sys type sysfs (rw,relatime)
    proc on /proc type proc (rw,relatime)
    tmpfs on /tmp type tmpfs (rw,relatime)
    devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)

    掛載上了我們需要掛載的文件系統,這個時候查看/sys和/proc下都有了相應的文件(這時ps命令才可以從proc中讀取進程相關信息)。
    10.4 使能mdev功能
    以上基本上實現了文件系統應該有的功能,但是我們知道“linux一切皆文件”,對于設備的訪問都抽象為對文件的訪問,所以就有了設備文件節點的概念,所以需要創建出設備節點后才能訪問設備,手動創建不切實際,linux采用udev機制自動創建設備節點,嵌入式中使用小型的mdev來讀取內核信息創建設備文件。
    在/etc/init.d/rcS中添加:

    /sbin/mdev > /proc/sys/kernel/hotplug
    /sbin/mdev -s

    第一句:為設置內核熱插拔,當有設備的熱插拔時調用/sbin/mdev
    第二句:為在/dev下生成內核支持的所有的設備節點
    重啟開發板,系統mdev就會掃描/sys/dev/block 和/sys/dev/char下的文件自動創建設備節點。
    11.dev目錄下添加設備文件
    需要創建兩個設備文件:

    mknod /dev/console c 5 1
    mknod /dev/null c 1 3

    其實,不創建這兩個文件系統也能夠自動創建。

    現在我們的系統就完全可以使用了,功能也基本完善了。

    注:有關linux4.9.9內核的移植見《移植最新的linux4.9.9內核(適配fs4412平臺)》:
    http://blog.csdn.net/liebao_han/article/details/79436819

    四.mini2440-內核構建分析

    在友善之臂的CD中,找到我們可用的內核壓縮包

    解壓壓縮包:

    tar -zxvf linux-2.6.32.2-mini2440-20150709.tgz

    進入解壓得到的文件夾

    cd linux-2.6.32.2

    在我們這個由友善之臂整理的壓縮包源碼里,已經為我們配置了很多的缺省文件,這里,我們的開發板板載H43的LCD,因此,我們拷貝一個缺省文件來配置編譯。如下,講文件復制成.config文件,因為make默認的是這個文件。

    cp config_mini2440_h43 .config

    下面就是配置我們的內核文件,這里用make menuconfig啟動界面化的配置界面:

    make menuconfig

    出現下面的界面:

    在這里進行一些配置,因為我們使用的是缺省的配置文件,沒有特許需求,不會有問題,我們直接保存。按下鍵到達最后,回車后保存ok之后,連按兩次ESC即可退出。

    配置完成后,我們就可以開始我們的編譯了:

    make zImage

    等待一段時間后,編譯結束后,會在 arch/arm/boot 目錄下生成 linux 內核映象文件: zImage

    這里,我們就拿到了我們編譯出來的內核文件了,如果我們要用minitools來下載該文件到我們的開發板測試,我們還需要更改下該文件,更改他的后綴,也就是文件格式。才能被minitools識別,否則一直是灰色,不允許使用。

    mv zImage zImage.bin

    下載測試:

    ## 五.mini2440-bootloader構建分析

    在友善之臂的CD中,找到我們可用的uboot的源碼文件壓縮包

    解壓文件

    tar -xvf bootloader.tgz

    進入得到的文件夾,其中就有一個u-boot,進入其中

    cd bootloader/u-boot/

    因為該文件是為mini2440這塊開發板定制的,所以我們可以直接進行如下操作:

    make mini2440_config
    make

    依次執行上面兩個指令后,在u-boot目錄下就會生成我們需要的u-boot.bin文件了,這也是我們要下載到板子上的文件。

    下載測試:(minitools)

    六.mini2440-文件系統分析

    制作文件系統我們需要兩個工具,這兩個工具在我們友善之臂的CD里面可以找到:

    • Busybox
    • mkyaffs2image

    Busybox用于定制根文件系統,利用這個來制作,可以很好的移植一些我們常用的工具到我們的系統當中。

    mkyaffs2image,用來包裝文件生成一個鏡像文件。

  • 安裝mkyaffs2image

    解壓壓縮包

    tar -zxvf mkyaffs2image.tgz

    進入對應的文件夾內

    cd mkyaffs2image

    在這個文件夾里面,我們就可以看到兩個可執行的程序:mkyaffs2image 和 mkyaffs2image-128M,下面為了后面調用程序簡單,我們進行如下操作:

    cp mkyaffs2image /usr/bin/

    cp mkyaffs2image-128M /usr/bin/

    該操作將可執行文件加入到了我們的路徑當中,任何時候都可以調用程序了。(bin目錄對應的是普通用戶)

    # mkyaffs2image mkyaffsimage: image building tool for YAFFS built Apr 29 2008 usage: mkyaffsimage dir image_file [convert]dir the directory tree to be convertedimage_file the output file to hold the image'convert' produce a big-endian image from a little-endian machine

    測試時輸入mkyaffs2image,出現如上反應,即可。

    使用:mkyaffs2image 文件夾 文件名

    例子:mkyaffs2image-128M /opt/workspace/rootfs_qtopia_qt4 /opt/workspace/rootfs_qtopia_qt4.img

  • 編譯busybox,產生根文件系統

    具體參考上方介紹的通用方法

  • 也可以參照:https://blog.csdn.net/liebao_han/article/details/79450086

    下面介紹如何建立自己的程序文件系統:

    https://blog.csdn.net/u011308691/article/details/15811477

    下面介紹下我們開發板自帶的文件系統如何處理:

    在我們的開發板資料CD中,有如下文件

    這兩個都是已經配置好的文件系統源碼,上面一個是Qt的程序系統,下面的qtopia的程序文件系統,

    下面我們以移植qtopia的程序系統為例子:

    解壓該壓縮包:

    #tar -zxvf rootfs_atopia_qt4-20141223.tar.gz

    得到rootfs_atopia_qt4文件夾

    執行指令:

    #mkyaffs2image-128M rootfs_qtopia_qt4 rootfs_qtopia_qt4.img

    得到一個rootfs_qtopia_qt4.img文件,這就是我們可以燒寫到開發板的文件系統鏡像

    測試:

    總結

    自此,我們就完成了一個基本的可移植的linux系統的制作,后期我們 在分部對每一部分進行詳細的構建,從【bootloader的詳細配置與搭建】 到 【內核kernel的詳細配置與構建】  再到 【文件系統的詳細構建】 以及【裸機程序的開發】【系統驅動的開發】【應用程序的制作】 等等。敬請期待!

    總結

    以上是生活随笔為你收集整理的搭建嵌入式ARM完整系统的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    成人夜晚看av| 婷婷精品国产一区二区三区日韩 | 午夜黄色影院 | 亚洲成色777777在线观看影院 | 国产69精品久久久久99尤 | 国产日韩精品一区二区在线观看播放 | 国产精品视频永久免费播放 | 91精品国 | 久久久久综合精品福利啪啪 | av一区二区三区在线播放 | 国产一级特黄毛片在线毛片 | 亚洲高清免费在线 | 黄色三级免费网址 | 久久只精品99品免费久23小说 | 狠狠操天天射 | 国产成人一区二区在线观看 | 九九爱免费视频在线观看 | 激情文学丁香 | 99re热精品视频 | 91黄色免费网站 | 国产精品毛片久久久久久久久久99999999 | 亚洲欧洲精品一区二区精品久久久 | 亚洲性视频 | 日本亚洲国产 | 亚洲欧美怡红院 | 免费试看一区 | 91精品婷婷国产综合久久蝌蚪 | 天天干人人 | 久草在线国产 | 五月婷视频| 国产中文字幕一区二区 | 久久久www成人免费精品 | 日韩v在线91成人自拍 | 亚洲精品伦理在线 | 97超碰中文字幕 | 91久久久久久国产精品 | 久久久久女教师免费一区 | 中文字幕在线视频一区二区三区 | 夜夜爱av | 久久久久久国产一区二区三区 | 日韩在线网址 | 最近日韩免费视频 | 视频国产精品 | 丁香婷婷综合五月 | 亚洲国内精品视频 | 91麻豆精品国产91 | 日日爱夜夜爱 | 色窝资源 | 在线观看中文字幕2021 | 最新国产一区二区三区 | 午夜在线观看 | 国产亚洲欧美日韩高清 | 一区免费视频 | 欧美韩国日本在线观看 | 国产精品1区2区3区 久久免费视频7 | 国产高清中文字幕 | 日日操网 | 91免费观看网站 | 国产日韩欧美在线影视 | 免费观看国产精品视频 | 国产一级高清 | 国产又粗又猛又黄视频 | av网站在线观看免费 | 久久综合免费视频影院 | 色天天天| 久久专区 | 欧美精品国产精品 | 国产免费叼嘿网站免费 | 狠狠色伊人亚洲综合成人 | 国产 一区二区三区 在线 | 国产日产精品一区二区三区四区的观看方式 | 国产色视频网站 | 一区三区视频在线观看 | 国产无套一区二区三区久久 | 在线播放 日韩专区 | 国产亚洲va综合人人澡精品 | 九色91福利 | 免费h漫在线观看 | 国产在线观看你懂得 | 国产精品露脸在线 | 国产综合91 | 精品国内自产拍在线观看视频 | 色的网站在线观看 | 人成免费网站 | 在线免费观看视频a | 激情婷婷 | 九草在线视频 | 国产色婷婷 | 中文字幕成人网 | 五月婷婷网站 | 久久毛片网 | 91精品国自产在线偷拍蜜桃 | 激情在线网址 | 色香天天 | 久草在线资源网 | 91人人爽久久涩噜噜噜 | 日韩av美女| 亚洲欧美日本一区二区三区 | 日本黄色免费在线 | 久久精品国产精品 | 欧美色888| 亚洲精品国产片 | 色综合久久综合中文综合网 | 91自拍成人 | 成人精品视频 | 99c视频高清免费观看 | 伊人久久在线观看 | 久久人人爽人人爽 | 欧美激情va永久在线播放 | www激情com | 五月综合激情网 | 成人一区二区在线观看 | 一二三区视频在线 | 九九99视频| 胖bbbb搡bbbb擦bbbb | 婷婷丁香在线视频 | 五月天综合婷婷 | 久草在线视频精品 | 亚洲精品黄网站 | av高清免费 | 亚洲国产精品久久久久久 | 粉嫩av一区二区三区入口 | 深爱婷婷 | 国产资源精品 | 人人干狠狠操 | 久久夜色精品国产欧美乱 | 久久精品国亚洲 | 九九久久电影 | 99久久婷婷国产综合精品 | 久久99久久精品 | 久久国产精品久久精品国产演员表 | 96av麻豆蜜桃一区二区 | 国产一性一爱一乱一交 | 国产免费午夜 | 黄色av一区二区 | 国产精品久久久久久一区二区 | 日韩在线观看视频中文字幕 | 国产亚洲欧美在线视频 | 黄色1级大片 | 亚洲视频在线观看免费 | 91成人网页版| 国产a国产a国产a | 精品国产乱码久久久久久天美 | 性色av一区二区三区在线观看 | 97精品国产一二三产区 | 天天草av| 日韩免费电影一区二区三区 | av中文字幕在线免费观看 | 亚洲日韩欧美一区二区在线 | 久久官网| 综合精品在线 | 欧美激情第28页 | 在线看片91 | 亚洲精品久久久蜜桃直播 | av国产在线观看 | 国产精品激情在线观看 | 亚洲一区视频免费观看 | 久艹视频免费观看 | 91人人揉日日捏人人看 | 成人黄色电影在线观看 | 九九免费在线观看视频 | 欧美日韩精品综合 | 久久久午夜精品理论片中文字幕 | 成人在线小视频 | 欧美黑人巨大xxxxx | 在线岛国av | 伊人视频 | 精品视频久久久 | 中文字幕在线视频一区二区三区 | 精品久久久久久久久久久久久久久久久久 | 91av原创| 一区二区三区四区不卡 | 97精品国产97久久久久久 | 激情一区二区三区欧美 | 久久久亚洲成人 | 在线免费观看国产视频 | 国产一级特黄毛片在线毛片 | 成人av电影网址 | 激情五月婷婷丁香 | 免费大片av | 久艹视频在线免费观看 | 蜜臀av免费一区二区三区 | 美女国产精品 | 日免费视频 | 一区三区在线欧 | 香蕉久久国产 | 国产成人三级一区二区在线观看一 | 高清在线一区二区 | 国产伦理剧 | 97视频在线 | 久久久精品在线观看 | 91精品啪在线观看国产线免费 | 欧美最猛性xxxxx免费 | 色在线亚洲 | 欧美一区二区在线免费观看 | 中文字幕av专区 | 色综合小说| 日韩免费观看高清 | 午夜精品99久久免费 | 久久精彩视频 | 九九爱免费视频在线观看 | 美女视频黄免费的 | 在线观看视频免费大全 | 久久久综合色 | 黄色免费看片网站 | 久久免费视频这里只有精品 | 九九99视频| 国产精品99久久久久久宅男 | 日韩网站一区二区 | 国产视频日韩 | 奇米影音四色 | 亚洲精品videossex少妇 | 久久精品女人毛片国产 | 国产精品一区二区三区免费视频 | 国产一区二区三区在线 | 欧美日韩国产伦理 | 成人精品久久 | 日韩黄色免费 | 91在线视频 | 精品在线视频观看 | 91x色| 美女视频黄免费网站 | 成人欧美一区二区三区黑人麻豆 | 国产精品video | 黄色小网站在线 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 国产在线播放不卡 | 国产精品福利在线观看 | 涩涩资源网| 日韩av在线一区二区 | 日韩精品视频免费专区在线播放 | 免费看国产a | 久久久天堂 | 国产日产精品久久久久快鸭 | 欧美日韩国产在线 | 91亚洲国产成人久久精品网站 | 国内精品久久久久久久影视麻豆 | 黄色av播放 | 在线视频手机国产 | 色网站免费在线观看 | 欧美精品久久久 | 久久精品国产免费看久久精品 | 久久综合九色综合久99 | 亚洲理论在线观看电影 | 亚洲视频在线观看网站 | 久久久久久久久久影院 | 99精品视频在线观看 | 在线看国产日韩 | 亚洲精品国精品久久99热 | 色鬼综合网 | 久久精品视频3 | 午夜av大片 | 美女网站在线观看 | 一级黄色片毛片 | 欧美亚洲精品在线观看 | 91精品国产综合久久福利不卡 | 在线看黄网站 | 婷婷久久亚洲 | av不卡在线看| 夜夜干天天操 | 亚洲一二三在线 | 亚洲精品影视在线观看 | 毛片无卡免费无播放器 | 国产精品亚洲视频 | 日韩视频在线不卡 | 97在线观看免费视频 | 正在播放国产精品 | 麻豆一区在线观看 | 特级西西人体444是什么意思 | 国产精品久久久网站 | 中文字幕区 | 久草新在线 | 国产日本亚洲高清 | 一区二区三区www | 99久久久国产免费 | 久久99国产精品自在自在app | 国产亚洲精品福利 | 国产一区二区午夜 | 综合久久五月天 | 99亚洲天堂 | 国产只有精品 | 欧美日产在线观看 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 欧美一级特黄aaaaaa大片在线观看 | 97福利在线观看 | 91经典在线 | 亚洲成人精品在线观看 | 久草在线视频新 | 久久精品久久国产 | 久久er99热精品一区二区 | 久久精品一区二区 | 亚洲黄色在线 | 中文字幕乱码日本亚洲一区二区 | 国产资源免费在线观看 | 在线观看 国产 | 免费瑟瑟网站 | 久久久久久国产精品 | 国产一级高清视频 | 亚洲mv大片欧洲mv大片免费 | 成人在线超碰 | 91九色视频在线观看 | 91 在线视频播放 | 久久国产福利 | 91精品在线免费 | 欧美污在线观看 | 成人免费在线观看av | 亚洲干视频在线观看 | 日韩电影在线观看一区二区三区 | 激情综合五月婷婷 | 天天草网站| 成年人电影免费看 | 国产一区在线免费观看视频 | 日本精品免费看 | 日本久久免费电影 | 91成人精品一区在线播放69 | 91女子私密保健养生少妇 | 亚洲全部视频 | 在线观看蜜桃视频 | 国产精品久久一卡二卡 | 97香蕉超级碰碰久久免费软件 | 色爱区综合激月婷婷 | 91中文在线 | 久久久久久久久久久黄色 | 91视频在线免费下载 | 91大神视频网站 | 婷婷午夜天 | 色a综合 | 国产欧美高清 | 免费观看一级成人毛片 | 成 人 a v天堂 | 在线观看香蕉视频 | 亚洲资源在线 | 国产 一区二区三区 在线 | 久久午夜电影网 | 亚洲精品在线免费 | 一区二区三区在线电影 | 人人爱夜夜操 | 日日夜夜操操操操 | 国产成人亚洲在线观看 | 日韩欧美在线观看一区二区三区 | 日韩欧美高清在线观看 | 国内精品久久久久影院优 | 99久久精品国产免费看不卡 | 国产免费叼嘿网站免费 | 免费观看日韩 | 操少妇视频| 日韩免费播放 | www.com.日本一级 | japanese黑人亚洲人4k | 日韩视频在线播放 | 亚洲精品日韩一区二区电影 | 一区二区三区 中文字幕 | av免费播放 | 91视频免费视频 | 中文字幕久久精品一区 | 免费看av片网站 | 色在线中文字幕 | 91av原创| 国产精品18久久久久久久久 | 亚洲欧洲日韩在线观看 | 久久av影视 | 91视频啪 | 日韩在线首页 | 黄色软件视频大全免费下载 | 在线观看麻豆av | 久久久久久国产精品美女 | 狠狠干,狠狠操 | 欧美日韩精品在线视频 | 高清av影院 | 成年人免费在线观看 | 午夜三级理论 | 亚洲mv大片欧洲mv大片免费 | 久久久久亚洲精品男人的天堂 | 亚洲精品免费观看 | 国产免费久久精品 | 国产高清绿奴videos | 91福利免费 | 亚洲精品视频中文字幕 | 在线国产视频一区 | 久久久久一区二区三区 | 国产亚洲成av人片在线观看桃 | 精品国产区在线 | 热久久在线视频 | 精品久久久久久亚洲综合网站 | 美女网站一区 | 嫩草91影院| 亚洲黄色三级 | 婷婷激情站 | 国产午夜精品视频 | 久久久久久久免费看 | 爱情影院aqdy鲁丝片二区 | 久草免费在线视频观看 | 日本在线观看中文字幕无线观看 | 久久五月天色综合 | 在线观看国产区 | 日本中文字幕一二区观 | 久久精品美女视频 | 国产女人40精品一区毛片视频 | 亚洲撸撸| 四虎影视精品 | www色婷婷com | 亚洲国产中文字幕在线观看 | 久99久在线视频 | av永久网址| 国产免费观看久久 | 国产成人精品亚洲 | 久久国产精品一区二区三区 | 91丨九色丨蝌蚪丰满 | av直接看 | 日韩精品一区二区三区中文字幕 | 色5月婷婷| 国产一区在线视频 | 91传媒在线播放 | 一区二区三区精品在线视频 | 欧美综合色 | 国产91小视频 | 亚洲精品视频网站在线观看 | 精品国产视频一区 | 亚洲精品乱码久久久久久9色 | 国产精品99精品久久免费 | 中文字幕第一页在线视频 | av黄色在线播放 | 国产免费观看高清完整版 | 一二区电影 | 日本精品视频在线观看 | 欧美激情精品久久久久久免费 | 在线观看日韩精品 | 欧美午夜性 | 人人插人人爱 | 日韩毛片在线播放 | av一二三区 | 91精品视频免费看 | 亚洲高清久久久 | 欧美精选一区二区三区 | a级国产乱理伦片在线观看 亚洲3级 | av先锋影音少妇 | 99r在线精品 | 欧美大荫蒂xxx | 丝袜足交在线 | 国产亚洲精品女人久久久久久 | 激情九九| 久久精品看片 | 精品网站999www | 久久96国产精品久久99软件 | 久久精品国产99国产 | 中文字幕在线看视频 | 国内一级片在线观看 | 欧美另类美少妇69xxxx | 欧美日韩中文在线视频 | 色婷婷成人网 | 狠狠88综合久久久久综合网 | 91成人精品一区在线播放 | 99精品国产99久久久久久福利 | 精品你懂的 | 日本bbbb摸bbbb | 91在线看片 | 亚洲欧美日本国产 | av在线免费观看不卡 | 少妇搡bbb | 国产分类视频 | 一区二区三区四区五区在线 | 一区二区三区在线视频111 | 91精品伦理 | 久久大视频 | 久久久999免费视频 日韩网站在线 | 最新久久久 | 在线观看黄网 | 国产欧美日韩视频 | 欧美日韩一区二区三区免费视频 | 中文字幕欧美日韩va免费视频 | 99视频免费在线观看 | 国产成人精品一区二区三区在线观看 | 午夜丁香网 | 国产精品久久久久久一区二区 | 国产精品 日本 | 国产精品国产亚洲精品看不卡15 | 欧美日bb | 福利视频精品 | 免费在线观看av不卡 | 久久人人爽人人爽人人 | 亚洲精品在线视频观看 | www.久久色| 91在线免费视频观看 | 久久99亚洲精品久久久久 | 缴情综合网五月天 | 久久伊人八月婷婷综合激情 | 中文字幕国语官网在线视频 | 久久99深爱久久99精品 | 久草精品在线播放 | 美女网站免费福利视频 | 天天操天天射天天 | 国产在线精品一区 | 日韩一级电影网站 | 国产色区 | 亚洲一区二区三区四区在线视频 | 99久久精品久久久久久清纯 | 久久免费视频这里只有精品 | 色婷婷国产精品一区在线观看 | 天躁狠狠躁 | 麻豆精品传媒视频 | 国产精品自在欧美一区 | 天堂v中文| 国产区在线视频 | 欧美乱淫视频 | 欧美日韩高清一区二区 | 亚洲国产精品第一区二区 | 66av99精品福利视频在线 | av成人黄色 | 一区二区欧美激情 | 美女久久99 | 欧美日韩视频 | 97视频在线观看播放 | 麻豆91视频 | 在线观看成年人 | 国产玖玖精品视频 | 日本不卡一区二区三区在线观看 | 免费日韩电影 | 一区二区三区免费在线 | 91黄色小网站 | 久久伊人国产精品 | 久草9视频| 国产一级免费播放 | 日韩在线视频网站 | 97精品国自产拍在线观看 | 国产永久免费高清在线观看视频 | 亚洲一区视频在线播放 | 午夜在线看| 久久久久免费看 | 激情欧美一区二区三区 | av综合站| 成人午夜影视 | 国产1区2 | 成人免费一区二区三区在线观看 | 日本婷婷色 | 国产一区二区中文字幕 | 免费看麻豆| 精品一区精品二区高清 | 久久视频这里有精品 | 久久免费资源 | 天天综合网 天天综合色 | 日韩免费一级a毛片在线播放一级 | 久久96国产精品久久99软件 | 亚洲三级在线播放 | 久久久久久电影 | 免费av大全 | 国产又粗又猛又黄又爽的视频 | 精品国产欧美一区二区 | 亚洲视频免费在线观看 | 久草网视频 | 狠狠色丁香九九婷婷综合五月 | 国产精品a成v人在线播放 | 91九色成人蝌蚪首页 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 天天激情在线 | 福利视频第一页 | 狠狠狠色丁香婷婷综合久久88 | 在线观看免费日韩 | 日韩区视频 | 成人黄色免费在线观看 | 亚洲精品一区二区18漫画 | 狠狠干婷婷 | 操操操干干干 | 国产精品高潮呻吟久久久久 | 夜夜婷婷 | 波多野结衣视频一区二区 | 亚洲婷久久 | 91精品国产99久久久久 | 免费看网站在线 | 午夜精品99久久免费 | 久久在线免费 | 黄色大片免费网站 | 手机av永久免费 | 精品国产123| 久久久久北条麻妃免费看 | 手机av在线网站 | 在线播放一区二区三区 | 99久高清在线观看视频99精品热在线观看视频 | av不卡在线看 | 一本一本久久a久久精品牛牛影视 | 成人18视频| 婷婷伊人五月天 | 中文在线字幕观看电影 | 日韩最新在线视频 | 国产一区二区不卡视频 | 免费观看的av | 五月激情婷婷丁香 | 久久国产露脸精品国产 | 免费h精品视频在线播放 | 国色天香在线 | 天天做日日做天天爽视频免费 | 91cn国产在线| 亚洲国产精品999 | 久久久伦理 | 黄色的网站免费看 | 99热只有精品在线观看 | 国产九九热视频 | 成人欧美一区二区三区在线观看 | 国产精品免费在线播放 | 国产视频 亚洲精品 | 激情视频一区二区 | av高清在线| 人人射人人插 | 国产精品久久久久久久久久不蜜月 | 国产美腿白丝袜足在线av | 国产成人精品在线 | 99久久精品无码一区二区毛片 | 99热精品免费观看 | 91视频高清完整版 | 久久久久久国产精品美女 | 天堂视频中文在线 | 亚洲精品在线一区二区 | 国产在线观看一区 | 91av99 | 日韩精品黄 | 黄色软件网站在线观看 | 国产又粗又猛又黄又爽 | 人人爽影院 | 亚洲黄色成人网 | 久久国产热视频 | 免费日韩 精品中文字幕视频在线 | 欧美精品亚洲精品日韩精品 | 91人人澡| 国产成人久久av免费高清密臂 | 国产精品第72页 | 日本电影黄色 | 国产成人在线播放 | 亚洲久在线 | 国产精品美女在线观看 | 96香蕉视频 | 国产精品资源在线 | 国内精品视频免费 | 狠狠躁日日躁夜夜躁av | 伊人丁香 | 在线免费高清一区二区三区 | 国产精品久久久99 | 九九免费精品视频 | 91成人在线观看高潮 | 91亚洲精品乱码久久久久久蜜桃 | 婷婷精品国产欧美精品亚洲人人爽 | 免费网站观看www在线观看 | 亚洲欧美日韩在线看 | 日韩在线视 | 国产精品高潮呻吟久久久久 | 黄色毛片网站在线观看 | 中文字幕永久在线 | 久久伦理 | 亚洲国产精品99久久久久久久久 | 黄色小说在线观看视频 | 欧美日本国产在线观看 | 欧美日韩在线视频观看 | 国模一二三区 | 亚洲一区日韩精品 | 久久av伊人| 中文国产字幕 | 国产v在线播放 | 亚洲v精品 | 亚洲成人家庭影院 | 免费视频成人 | 手机看片午夜 | 国产永久免费观看 | 国产一区久久久 | 久久免费精品 | 草莓视频在线观看免费观看 | 美女网站一区 | 日韩欧美综合精品 | 超碰97免费 | 国产一级视频在线观看 | 午夜久久久久久久 | 国产欧美中文字幕 | 久久久久一区二区三区四区 | 亚洲综合精品视频 | 日本中文字幕在线电影 | 日日夜夜免费精品视频 | 国内免费的中文字幕 | 亚洲精品动漫在线 | 婷五月天激情 | 人人爽人人爱 | 国产黄色资源 | 97精品国产一二三产区 | 国产999在线观看 | 国产一区在线免费 | 一级黄色视屏 | 国产成人精品三级 | 国产精品永久久久久久久www | 麻豆国产精品永久免费视频 | 欧美少妇bbwhd | 中文字幕在线网 | 久久超碰网 | 99久久精品久久久久久清纯 | 色综合久久网 | 日韩毛片久久久 | 欧美人牲| 亚洲综合导航 | 婷婷五月在线视频 | 天天操福利视频 | 伊人黄| av网站免费看 | 国产亚洲欧美精品久久久久久 | 国产成人三级在线播放 | 天天色天天操天天爽 | 国产免码va在线观看免费 | 欧美孕妇与黑人孕交 | 国产又粗又猛又爽又黄的视频先 | 在线激情小视频 | 亚洲理论在线观看 | 国产在线久草 | avove黑丝| 天天久久夜夜 | av免费看电影 | 国产精品不卡在线 | 欧美男男tv网站 | 91热这里只有精品 | 91丨九色丨国产在线观看 | 亚洲激情av | 九九久久免费视频 | 激情影音先锋 | 欧美在线观看禁18 | 成人欧美一区二区三区黑人麻豆 | 国产精品久久精品国产 | 国产精品观看在线亚洲人成网 | 精品久久久久久久久久久久久久久久 | 国内成人av| 亚洲无吗av| 综合色站| 久久99精品一区二区三区三区 | 在线观看日韩中文字幕 | 日韩精品网址 | 91综合视频在线观看 | 久久在线 | 日韩福利在线观看 | 麻豆视频免费版 | 亚洲国产mv| 99精品在这里 | 中文字幕成人一区 | 黄色av一级| 中文字幕第一页在线视频 | 国产免费又爽又刺激在线观看 | 久久精品96| 992tv人人网tv亚洲精品 | 亚洲aⅴ在线观看 | 日本中出在线观看 | 免费av试看| 911亚洲精品第一 | 九九九在线观看视频 | 天天做天天爱天天爽综合网 | 亚洲精品乱码久久久久久蜜桃动漫 | 草久久久久久 | 久久精品免费看 | 亚洲国产精品va在线看黑人 | 亚洲一区av | 91综合色 | 美女黄频在线观看 | 国产99久久久国产精品 | av 一区二区三区四区 | 九九99视频 | 99视频国产在线 | 亚洲综合导航 | 日本超碰在线 | 国产精品www | 日本在线h | 天天夜操 | 国色天香av | 超级碰视频 | 亚洲精品影视在线观看 | 免费大片黄在线 | 婷婷色综合网 | 久久久久久久久久福利 | 国产精品一二 | 黄色h在线观看 | 五月天久久综合 | 97国产大学生情侣酒店的特点 | 中文字幕精品视频 | 国产精品热视频 | 在线日韩视频 | 日韩av电影中文字幕在线观看 | 69亚洲视频 | 欧美一级片免费播放 | 中文字幕亚洲高清 | 免费高清在线观看成人 | 婷婷久久丁香 | 九九热在线精品视频 | 亚洲视频分类 | 国产亚洲精品av | 人人爱人人射 | 正在播放国产精品 | 在线播放一区二区三区 | 国产区精品 | 97免费在线观看视频 | 久久网址 | 99久久精品无码一区二区毛片 | 久久影院精品 | 九九热国产视频 | 天天干,天天操 | 免费大片av | 久久社区视频 | 99精品一级欧美片免费播放 | 精品国产123 | 中文字幕免费观看视频 | 69国产精品成人在线播放 | 日韩在线视频精品 | 狠狠色狠狠色合久久伊人 | 免费视频你懂的 | 91九色在线视频观看 | 国产一区av在线 | 日韩高清无线码2023 | 色视频在线看 | 天天干天天碰 | 国产在线中文字幕 | 国产精品视频999 | 国产成人在线观看免费 | 成人小视频在线观看免费 | 久草精品视频在线看网站免费 | 国产不卡在线视频 | 色七七亚洲影院 | 日韩在线高清免费视频 | 国产中文字幕国产 | www国产在线| 免费三及片 | 午夜国产一区二区三区四区 | 国产久草在线 | 成人在线黄色电影 | 国产成人久久av977小说 | 亚洲第一区精品 | 免费手机黄色网址 | 久久亚洲综合国产精品99麻豆的功能介绍 | 日韩欧美在线国产 | 九九热免费视频在线观看 | 久久伊99综合婷婷久久伊 | 久久亚洲区 | 一区二区三区高清 | 国产日产精品一区二区三区四区 | 日韩免费视频播放 | 日本中文字幕一二区观 | 天天鲁天天干天天射 | 97精品视频在线播放 | 精品一区二区三区久久 | 毛片网站在线 | 亚洲免费视频观看 | av一级在线观看 | 国产 视频 高清 免费 | 欧美日韩国产一二三区 | 国产精品99精品久久免费 | 国产在线视频资源 | 中文乱幕日产无线码1区 | 玖草影院 | 美女福利视频在线 | 国产无遮挡猛进猛出免费软件 | 天天操天天色天天射 | 欧美久久99| 日韩午夜精品 | 欧美精品一区二区三区一线天视频 | 五月天天色 | 亚洲欧美日本国产 | 亚洲国产三级 | 在线黄色免费 | a视频在线 | 有码视频在线观看 | 免费视频在线观看网站 | 国产破处在线视频 | 日本视频网 | 狠狠操欧美| 日韩在线观看你懂得 | 亚洲精品一区二区三区四区高清 | 2019天天干夜夜操 | 国产精品国产三级国产不产一地 | 久草99| 日韩中文字幕免费电影 | 国产中文字幕视频 | 久要激情网 | 成人97视频一区二区 | 国产高清精 | 欧美少妇xx | 国产不卡在线 | www国产精品com | 天天干天天干 | 国产一区观看 | 在线成人欧美 | 国产精品久久久久久久免费大片 | 中文字幕一区二区三区四区 | 成人黄色av免费在线观看 | 日韩国产精品一区 | 免费在线观看a v | 欧美一区二区三区在线视频观看 | 日韩一级片观看 | 黄色软件在线观看视频 | 97视频中文字幕 | 久久免费国产精品 | 在线观看视频中文字幕 | 在线观看深夜视频 | av电影免费 | 婷婷色5月 | 天天干夜夜干 | 中文字幕乱码视频 | 成人在线视频在线观看 | 日韩电影一区二区三区在线观看 | 99色人 | 色五月激情五月 | 免费观看一级视频 | 99久热在线精品视频观看 | 久久人人爽人人爽人人片av软件 | 在线观看黄网 | 99爱国产精品 | a电影在线观看 | 午夜精品一区二区三区在线 | 不卡电影一区二区三区 | 日本午夜免费福利视频 | 久久久久久久久艹 | 午夜久久影视 | 亚洲精品在线观看视频 | 国产丝袜一区二区三区 | 五月婷婷久草 | 成人黄色免费在线观看 | 日韩字幕| 婷婷成人亚洲综合国产xv88 | 免费日韩av电影 | 日韩中文字幕亚洲一区二区va在线 | 免费高清在线一区 | 免费看搞黄视频网站 | 国产在线中文 | 亚洲伊人成综合网 | 亚洲高清国产视频 | 国产精品观看视频 | 日本成人免费在线观看 | 久久久久久久久影院 | 亚洲最大的av网站 | 午夜视频在线观看网站 | 国产涩涩网站 | 少妇搡bbbb搡bbb搡忠贞 | 天天操狠狠操夜夜操 | 久久精品视频免费观看 | 欧洲精品视频一区二区 | 中文字幕在线观看91 | 久久人人爽人人爽人人片av软件 | 1000部18岁以下禁看视频 | 91热| 免费人成网ww44kk44 | 一级a性色生活片久久毛片波多野 | 亚洲精品高清视频 | 国产日韩欧美视频在线观看 | 欧美日韩国产在线精品 | 天天操天| 色婷婷精品大在线视频 | 黄色大全视频 | 欧美精品三级在线观看 | 亚洲欧美激情插 | 国产精品嫩草69影院 | 久久99精品久久久久久久久久久久 | 成人 亚洲 欧美 | 国际精品久久久久 | 亚洲九九九在线观看 | 99视频免费观看 | 91九色在线观看 | 亚洲成人av在线电影 | 国内精品久久久久影院日本资源 | 一区二区三区在线免费观看 | 久草在线免 | 国产精品18久久久久久vr | 久久精品美女 | 国产一区欧美在线 | 亚洲色图 校园春色 | 色综合天天综合网国产成人网 | 国产一区二区在线免费播放 | 97视频在线观看免费 | 爱色婷婷| 一区二区三区手机在线观看 | 香蕉视频在线网站 | 中文字幕资源在线观看 | 国产精品美女久久久久久久久 | 天天射天天操天天色 | 麻豆一二三精选视频 | 国产麻豆果冻传媒在线观看 | 国产午夜三级一二三区 | 国产精品一区二区美女视频免费看 | 欧美一区成人 | 91成人午夜 | 最近中文字幕 | 蜜臀精品久久久久久蜜臀 | 一区二区三区在线视频111 | 国产麻豆精品95视频 | 久久一级片 | 亚洲天堂毛片 | 欧美ⅹxxxxxx | 欧美日韩在线观看不卡 | 免费视频黄 | 国产在线久久久 | 成人午夜剧场在线观看 | 亚洲aaa毛片 | 国产亚洲精品电影 | 国产色视频网站2 | 国产美女视频免费观看的网站 | www久| 国产精品99久久久久久武松影视 | 久久综合五月天 | 免费观看一区 | 99麻豆视频 | 友田真希av| 97理论电影 | 97国产一区二区 |