娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年12月27日(星期五)

正在發生

2019年12月27日 | ARM-Linux開發步驟

發布者:mb5362443 來源: eefocus關鍵字:ARM  Linux  開發步驟 手機看文章 掃描二維碼
隨時隨地手機看文章

拿到一塊YC2440(s3c2440)的開發板,經過幾天的學習,我對arm-linux系統開發步驟有了一些認識。就以開發這個開發板為例,arm-linux開發工作大概分4個部分


1.硬件(hardware)

2.引導加載器(bootloader)

3.內核(kernel)

4.文件系統(file system)

 

硬件

我并不是硬件工程師,但我知道硬件的設計基本上是從性能,結構,可靠性等方面的需求方面來考慮。比如串口調試很常用,那么硬件就需要設計串口。在比如硬件需要接LCD,就必須提供LCD接口。

bootloader

bootloader是什么?

bootloader是一個引導程序,它最主要的功能是加載內核,所謂加載內核就是讓內核代碼常駐內存,并且得到執行。

 

bootloader因為什么而存在?

每一種CPU都有自己的啟動方式

a)CPU上電后從某個地址開始取指令運行,這樣的指令往往是已經固化的,因為RAM剛上電時,里面的內容是沒有意義的,很多單片機是這樣方式。可以說這根本不是boot

b)CPU上電后從ROM讀代碼到RAM,然后跳到RAM里開始執行,這種方式的CPU一般會拷貝固定長度的二進制代碼到RAM,因為它不知道有效代碼有長,只有一個固定的長度拷貝完成后,CPU才知道拷貝工作完成,以便從RAM執行。這就是boot

c)方式二只能拷貝固定長度的代碼到RAM運行,為了拷貝更多的代碼到RAM運行,方式二就做了改進,首先進入RAM的代碼不是一個功能固件,而是另一個功能代碼的加載器(loader),這就是bootloader了

 

arm的bootloader

arm會拷貝4K長度的代碼運行。顯然arm不是為4K的固件設計的。拷貝代碼到RAM并不需要很多指令,因為ARM對RAM的管理需要一個MMU控制器(可以讓CPU訪問更多的RAM或許)而這個控制器需要配置相關寄存器,所以代碼可能要多一點,另外可能還有許多別的功能,所以代碼可能會更多。當然都不超過4K時都沒問題,但往往還是要過4K的。所以真正arm-linux的bootloader一般有兩步驟:

a)拷貝4K代碼到RAM,開始執行

b)拷貝另一段代碼到RAM并初始化一些必須的硬件設置,開始執行

 

u-boot

 

u-boot是一種很流行的bootloader,除了加載內核,它還提供了許多其他功能。基本上u-boot是一個精簡的linux,它提供人機交換的,一般現在linux開發都采用串口方式使用u-boot。


關于u-boot的說明有很多,我簡單說明一下

a)u-boot可以被打斷,通過串口向u-boot輸入命令后,u-boot中斷,可以執行各種命令,這些命令有專門的手冊可以查詢。串口其實就是u-boot的一個遠程終端。

b)u-boot可以設置網絡,通過tftp服務,u-boot可以下載代碼到RAM然后執行,也可以燒寫到flash

c)u-boot之所以有這么多功能是因為里面集成了許多驅動,如果要讓u-boot有更多的功能可以在u-boot源代碼里添加,如果要用硬件就需要添加驅動。

d)如果要修改u-boot需要。。編譯。。。。。。。。。。。。

 

內核

Linux內核部分是工作量比較多的部分


1.交叉編譯

2.BSP

3.Kconfig以及內核裁減

4.鏡像制作和燒寫


交叉編譯

關于交叉編譯,網絡上有很多文章。以ubuntu 8.10說明一下:

a)下載編譯器,比如arm-linux-gcc 3.4.1

b)sudo tar vxjf arm-linux-gcc 3.4.1.bz2 –C /

c)命令行編譯需要設置環境變量

sudo gedit /etc/bash.bashrc

在文件最后添加 export PATH=$PATH:/usr/local/arm/3.4.1/bin

重新登錄

d)arm-linux-gcc –v 查看版本便知道交叉編譯器是否安裝成功

 

BSP

Linux的BSP其實就是外設驅動集合。比如擴了一個串口,需要編寫設備驅動。關于設備驅動編寫是一個很大的話題,我想這是另外需要一本書的《Linux Device Driver.3rd Edition》。看不懂可以看看參考http://www.deansys.com/doc/ldd3/index.html。

 

Kconfig以及內核裁減

Kconfig是用于定制內核的,有了交叉環境、BSP以及內核源碼后,就可以做Kconfig.源碼包的Makefile需要從.config得到信息以便把需要的東西編譯到內核,不需要的東西不放進來,這樣的內核是最精簡有效的。問題是這些信息是龐大的,正如管理一個大的工程用Makefile一樣,管理一個越來越復雜的內核用Kconfig。

 

以下引用自互聯網

Kconfig文檔的作用

內核源碼樹的目錄下都有兩個文檔Kconfig(2.4版本是Config.in)和Makefile。分布到各目錄的Kconfig構成了一個分布式的內核配置數據庫,每個Kconfig分別描述了所屬目錄源文檔相關的內核配置菜單。在內核配置make menuconfig(或xconfig等)時,從Kconfig中讀出菜單,用戶選擇后保存到.config的內核配置文檔中。在內核編譯時,主Makefile調用這個.config,就知道了用戶的選擇。


*上面的內容說明了,Kconfig就是對應著內核的配置菜單。假如要想添加新的驅動到內核的源碼中,能夠修改Kconfig,這樣就能夠選擇這個驅動,假如想使這個驅動被編譯,要修改Makefile

so添加新的驅動時需要修改的文檔有兩種(注意不只是兩個)

*Kconfig

*Makefile

要想知道怎么修改這兩種文檔,就要知道兩種文檔的語法結構

Kconfig

每個菜單都有一個關鍵字標識,最常見的就是config

語法:

config

symbol是個新的標記的菜單項,options是在這個新的菜單項下的屬性和選項

其中options部分有:


1、類型定義:

每個config菜單項都要有類型定義,bool布爾類型、 tristate三態:內建、模塊、移除 string字符串、 hex十六進制、 integer整型

例如config HELLO_MODULE

bool "hello test module"

bool類型的只能選中或不選中,tristate類型的菜單項多了編譯成內核模塊的選項,假如選擇編譯成內核模塊,則會在.config中生成一個CONFIG_HELLO_MODULE=m的配置,假如選擇內建,就是直接編譯成內核影響,就會在.config中生成一個CONFIG_HELLO_MODULE=y的配置.


2、依賴型定義depends on或requires

指此菜單的出現和否依賴于另一個定義

config HELLO_MODULE

bool "hello test module"

depends on ARCH_PXA

這個例子表明HELLO_MODULE這個菜單項只對XScale處理器有效。

3、幫助性定義

只是增加幫助用關鍵字help或---help---

內核的Makefile

 

在linux2.6.x/Documentation/kbuild目錄下有周詳的介紹有關kernel makefile的知識。

內核的Makefile分為5個組成部分:

Makefile     最頂層的Makefile

.config        內核的當前配置文檔,編譯時成為定層Makefile的一部分

arch/$(ARCH)/Makefile    和體系結構相關的Makefile

s/ Makefile.*      一些Makefile的通用規則

kbuild Makefile           各級目錄下的大概約500個文檔,編譯時根據上層Makefile傳下來的宏定義和其他編譯規則,將源代碼編譯成模塊或編入內核

頂層的Makefile文檔讀取 .config文檔的內容,并總體上負責build內核和模塊。Arch Makefile則提供補充體系結構相關的信息。 s目錄下的Makefile文檔包含了任何用來根據kbuild Makefile 構建內核所需的定義和規則。

(其中.config的內容是在make menuconfig的時候,通過Kconfig文檔配置的結果。

舉個例子:


假設想把自己寫的一個flash的驅動程式加載到工程中,而且能夠通過menuconfig配置內核時選擇該驅動該怎么辦呢?能夠分三步:

第一:將您寫的flashtest.c 文檔添加到/driver/mtd/maps/ 目錄下。

第二:修改/driver/mtd/maps目錄下的kconfig文檔:

        config MTD_flashtest

             tristate “ap71 flash"

         這樣當make menuconfig時 ,將會出現 ap71 flash選項。

第三:修改該目錄下makefile文檔。

ü添加如下內容:obj-$(CONFIG_MTD_flashtest)       += flashtest.o

這樣,當您運行make menucofnig時,您將發現ap71 flash選項,假如您選擇了此項。該選擇就會保存在.config文檔中。當您編譯內核時,將會讀取.config文檔,當發現ap71 flash 選項為yes 時,系統在調用/driver/mtd/maps/下的makefile 時,將會把 flashtest.o 加入到內核中。即可達到您的目的


make menuconfig后這個藍色的終端里,有許多復雜的配置,根據需要配置好后保存就可以了。

 

ubuntu 8.10出現make menuconfig失敗,一堆錯誤,這個需要

sudo apt-get install libncurses5-dev

 

鏡像制作和燒寫

內核鏡像是被bootloader加載的,比如u-boot可以把內核鏡像加載到RAM并執行。制作u-boot可加載的鏡像需要使用mkimage工具,所以

sudo cp ~/tools/mkimage /usr/bin

make uImage

需要注意的是如果mkimage權限不對make uImage是會出錯的,可以設置一下權限

sudo chmod 777 /usr/bin/mkimage

如果一切成功那么在linux-xxxx/arch/arm/boot下就有uImage文件了。

如果要更清楚里面的細節,需要對mkimage做進一步了解。


燒寫的工作還是交給u-boot吧,大概工作是這樣的:

a)中斷u-boot

b)需要一個tftp服務器,比如Windows XP下安裝tftpwin就可以了

c)調用u-boot命令啟動下載燒寫

關鍵字:ARM  Linux  開發步驟 引用地址:ARM-Linux開發步驟

上一篇:ARM 之LCD和LCD控制器
下一篇:arm裸板驅動總結(makefile+lds鏈接腳本+裸板調試)

推薦閱讀

不同類型的自動駕駛車輛招手即停、機器人變身“服務員”酒店大堂內穿梭、智慧樓宇內“刷臉”就能暢通……這樣酷炫的場景,未來都將出現在首鋼園區內。26日上午,“中關村(首鋼)人工智能創新應用產業園”(以下簡稱“首鋼AI園”)正式啟動并揭牌,由中關村科技園區管理委員會和首鋼集團有限公司合作共建。首鋼AI園是全球面積最大的人工智能創新應用產業園...
  隨著寬帶通信系統和其它高性能RF技術不斷發展,測量系統也必須與之保持同步。過去,頻譜分析對于大多數一般性應用來講己經足夠,矢量分析只用于更為特殊的測量中,如國防和信號監視場合。但矢量分析對測量快速移動的寬帶與擴頻信號非常重要,而且它在通用RF信號分析中也有很多優點,可以極大提高測量速度。  RP測量一般可分為三大類,即頻譜分析、矢...
OPPO 早些時候剛剛展示了自己的肌肉——OPPO X 2021 卷軸屏概念手機和 OPPO X Nendo 歐普折疊式概念手機。外媒 LetsGoDigital 昨日發現了一些文檔,這些文檔表明 OPPO 正在開發一款全新的概念型手機,該機壁紙等細節顯示該機大概率是與美式時裝設計品牌湯姆 · 福特(Tom Ford,常見于 TF 口紅)聯合設計。此外,該機背面擁有三顆攝像頭...
12月27日,有網友曬出了小米12的真機照片,該機將于12月28日正式發布。照片顯示,小米12后置三攝,矩形鏡頭模組,頂部主攝面積較大,兩顆副攝靠左放置,攝像頭和閃光燈之間有裝飾線條加以區隔,后蓋為三種不同顏色的素皮材質,且整體配色保持一致。根據此前預熱,小米12 Pro配備第二代低功耗 2K屏幕,是全能高端旗艦,擁有極致的配置和體驗,小米12配備...

史海拾趣

問答坊 | AI 解惑

如何將12DC轉換成220V AC

請各位高手給點建議和方案…

查看全部問答∨

ARM內核目標系統中的代碼運行時間測試

很多測量時間的C函數在ARM中都不能使用。某些能使用的,也是基于系統實時時鐘(RTC),故最短時間單位只能達到10-2 s。作為一種通用的精密計時方法,為了取得更精細的時間度量,可以考慮啟用ARM芯片內置的WatchDog實現擴展了的實時時鐘功能,并推廣 ...…

查看全部問答∨

安防監控一年千億元的市場規模,發展前景廣闊

提起安防監控,人們也許首先想到的是家庭或辦公用的門禁系統,這顯然是物理安全的范疇。近年來,國際上出現一種新的潮流物理安全逐漸與網絡安全融合,基于數字技術的安防監控系統逐漸取代傳統的模擬安防技術,這不僅讓安防監控技術得到了空前的發展 ...…

查看全部問答∨

無線您的HDMI,全高清無線HDMI長距離解決方案

無線您的HDMI,全高清無線HDMI長距離解決方案 深圳廣百思科技公司作為國內一家電子高科技創新型企業,繼2008年重磅推出游戲機領域系列視頻轉換高清解霸卡后。2009年度再次推出影音領域力作—高畫質無線影音傳輸器,該產品的問世,填補了國內影音設 ...…

查看全部問答∨

高清產品實際應用之我見——不想被誤導的進來(轉)

當前高清產品實際應用之我見(轉中安網于洪版主貼) 作為一個普通的應用者,從去年就開始關注進入到安防和工業電視領域的高清產品,尤其關注這類先進乃至有可能使應用電視系統產生本質飛躍的新產品的實際應用。限于本人水平及時間有限以及新技術的 ...…

查看全部問答∨

下載NK時會停在 Sp=ffffc7cc 或者死在 PSMFSD_MountDisk: FG_Init failed! status=33 ,請教做過相關的兄

各位:     最近不知道為什么下載NK時總是死在 Sp=ffffc7cc Windows CE Kernel for ARM (Thumb Enabled) Built on Aug  4 2008 at 18:38:38 ProcessorType=0411  Revision=7 sp_abt=ffff5000 sp_irq=ffff2800 s ...…

查看全部問答∨

EVC下把結構寫入文件的問題

EVC定義一個結構 struct  { TCHAR  str[6]; int     i; } WriterFile將結構寫入文件,正確,然后ReadFile讀取到結構變量,也正確,當修改i的值:struct.i=另一個int變量時,調試發現str后面多出一 ...…

查看全部問答∨

如體讓手機直接訪問電腦資源

 電腦硬盤上存有大量的電影、mp3、軟件,如何利用讓手機不用連線用wifi直接訪問硬盤資源,在手機上直接播放硬盤上的電影、音樂、瀏覽office文檔、運行軟件、在手機和硬盤之間復制文件免去同步連線的煩惱……總之讓你的硬盤成為手機的存儲卡。 ...…

查看全部問答∨

STM32RTC算法

                                 請問一下,誰有 STM32 RTC 年月 日 的計算算法啊???…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 南平市| 富顺县| 宿迁市| 陵川县| 景泰县| 东海县| 巴塘县| 沁水县| 开鲁县| 河南省| 威信县| 房山区| 江永县| 织金县| 青河县| 确山县| 金阳县| 枣强县| 辽宁省| 得荣县| 平塘县| 石嘴山市| 鄂托克前旗| 浠水县| 丰都县| 渭南市| 嘉黎县| 丁青县| 武山县| 越西县| 西华县| 沂源县| 益阳市| 烟台市| 芜湖县| 响水县| 滕州市| 女性| 泽普县| 囊谦县| 乃东县|