日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Freescale]E9学习笔记-LTIB总结

發布時間:2023/12/10 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Freescale]E9学习笔记-LTIB总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:http://blog.csdn.net/wl_haanel/article/details/6231353 寫在前面
??????? 符號'##'后面語句均為注釋
??????? 需要做的操作命令以 '$' 或 '#'開頭,且都位于一行的開始, 分別表示不同權限下的操作
??????? 以下絕大部分操作是針對于我們的開發主機(PC),其他是針對于開發板(MPC8349itx)
??????? 對于主機上的操作,所說目錄路徑是相對于/usr/local/mpc8349/mytest/來描述的
??????? 開發主機的系統為redhat9,開發板通過串口1連接主機,終端工具為minicom
??????? 在主機上使用的普通用戶名為liuby,用戶主目錄為/home/liuby/
??????? 符號'<<'和'>>'之間的內容表示隨開發板自帶的文件名
由于這是一個介紹ltib使用并涉及相關部分的文檔,所以呢,首先來介紹一下ltib的安裝

1. LTIB安裝

## 首先將linux_BSP光盤放入光驅,然后以root用戶掛載
$ su - root??????????????? ## 切換身份到root用戶,需要root用戶密碼
# mount /dev/cdrom? /mnt/cdrom -o loop??????????????????????? ## 掛載光驅
# cp -rf /mnt/cdrom/ltib-mpc8349e-mitx? /home/liuby/??????? ## copy到liuby的主目錄下
??????????????????????????????? ## 上面兩步沒做測試,可能有誤
??????????????????????????????? ## 復制到主目錄下的方式很多,比如ftp,nfs等????????????????????????
# umount /mnt/cdrom??????????????? ## 卸載光盤
# mkdir -m 777 /usr/local/mpc8349??????? ## 創建安裝ltib的根目錄
## 由于安裝ltib需要是普通用戶身份,但部分命令要超級用戶權限才行,所以需要執行visudo增加用戶liuby的權限,如下操作
# /usr/sbin/visudo??????????????? ## 此命令相對于vi打開了一個權限設置文件
??????????????????????????????? ## 按i進入輸入模式,在最后一行添加如下一行內容
liuby?? ALL = NOPASSWD: /bin/rpm(或/usr/bin/rpm), /opt/freescale/ltib/usr/bin/rpm
??????????????????????????????? ## 按ESC進入命令行模式,按:wq保存退出
$ exit???????????????????????????????? ## 退出root,回到普通用戶身份liuby
$ cd /usr/local/mpc8349/??????????????????????? ## 進入mpc8349目錄,是因為默認安裝到當前工作目錄
$ /home/liuby/ltib-mpc8349e-mitx/install??????? ## 這個會有個提示詢問你是否接受install
??????????????????????????????? ## 輸入'Y'接受install,回答'yes' 接受 EULA
??????????????????????????????? ## 照上面操作,安裝結束后的文件為/usr/local/mpc8349/ltib-mpc8349itx-20070221/
??????????????????????????????? ## 此位置下的doc/*文檔有各種說明

1.1.小文件系統編譯

## 下面進行安裝,首先是小文件系統形式
$ cp -a? ltib-mpc8349itx-20070221?? small???????? ## 這個只是復制,名字任意起的
$ cd small??????? ## 進入到small目錄下
$ ./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs --batch??????? ## 開始build
??????????????? ## 此目錄開始安裝host支持包,第一次安裝可能時間會長些,half an hour? maybe.
??????????????? ## 若發生錯誤,查看日志文件/usr/local/mpc8349/small/host_config.log
??????????????? ## 此編譯的是小文件系統rootfs.ext2.gz.uboot,并在rootfs下產生文件系統
??????????????? ## 只編譯了文件系統,沒有內核鏡像,沒有uboot鏡像
??????????????? ## rootfs作為NFS輸出目錄(NFS-exported),是目標板的根文件系統
??????????????? ## 此編譯用的是uclibc的庫 ##?建立交叉編譯環境,若想使用powerpc-linux-gcc自動補全功能,需# vi /etc/bashrc,在最后添加一句:export? PATH=/opt/freescale/usr/local/gcc-3.4.3-uClibc-0.9.28-1/powerpc-linux /bin:$PATH,最后重啟后,可用# echo $PATH來查看環境變量中是否有/opt/mtwk/usr/local/powerpc-linux/gcc-3.4.3-glibc-2.3.3 /bin路徑變量。
??????????????? ## 編譯完畢會給出信息提示,然后繼續完成下面的操作
$ cd ..??????????????? ## 回到/usr/local/mpc8349/目錄下 1.2.大文件系統編譯 ## 下面進行安裝,這次是大文件系統形式
$ cp -a? ltib-mpc8349itx-20070221?? large???????? ## 這個只是復制,名字任意起的
$ cd large??????? ## 進入large目錄下
$ ./ltib??????? ## 開始了大文件系統的build(相對于小文件系統加參數,默認則是編譯大文件系統
??????????????? ## 編譯后的rootfs.ext2.gz.uboot會大很多,并產生rootfs下文件系統
??????????????? ## 此次編譯了uboot,內核和文件系統鏡像(難怪叫"the hard disk based file system")
??????????????? ## 編譯后的u-boot,u-boot.bin,uImage(bootable_kernel),vmlinux,System.map,vsc7385_load.bin,linux.config在rootfs/boot/下
??????????????? ## 此次編譯用的是glibc的庫
??????????????? ## 調用的配置文件為config/platform/mpc8349itx/.config
??????????????? ## 等待吧,編譯結束提示信息
## 注:其實以后隨著對ltib的熟悉,就會發現完全沒必要來做這舍生取義的事情。
## 注:文件夾ltib-mpc8349itx-20070221只是用來復制,我們沒做任何操作,為何? 備份用的
## 注:當small或large下我們編譯總是不成功時,備份的作用就來了,當然這是笨方法,新手嘛,值得原諒!
## 至此已經完成,下面是為了寫這個文檔而安裝
$ cd /usr/local/mpc8349/??????? ## 進入未來工作目錄的上一級
$ cp -a? ltib-mpc8349itx-20070221?? mytest???????? ## 未來的工作目錄誕生了
$ ./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs --batch
??????????????? ## 這個跟上面完全一樣,不做解釋
??????????????? ## 編譯完畢,我的準備工作就結束了
??????????????? ## 后面的大多數介紹操作都是在此目錄下(/usr/local/mpc8349/mytest/)

2. 內核和文件系統的編譯

下面略述一種簡單有效的方法編譯內核和文件系統,并順便介紹ltib核心工作流程和思想,然后再部分詳述。
需要修改內核或文件系統并編譯時,一個比較簡單的方法是利用自帶的配置文件(eg:defconfig-min-fs),綜述如下:
$ ./ltib --preconfig? config/platform/mpc8349itx/defconfig-min-fs?
## 此配置默認不編譯bootloader: [ ] Build a boot loader?
## 此配置文件默認編譯時不能修改配置內核:(X) Dont build the Linux kernel
## 若想修改此配置:
??????? ## 若需要編譯bootloader,請找到并選中 [*] Build a boot loader
??????? ## 若要編譯內核,請找到并選中 kernel (linux 2.6.13.4)? ---> (X) linux 2.6.13.4 ;其內核的默認配置文件為nas_linux-2.6.13.4-mpc8349itx.config?
??????? ## 若要修改內核的默認文件為其他,請找到 kernel config file,回車輸入相應的配置文件名,其默認目錄為config/platform/mpc8349itx/
??????? ## 若想在編譯時并修改內核,請找到并選中 [*] Configure the kernel
??????? ## 若想修改文件系統,添加或刪除程序包,請進入 Package list? ---> 并選中相應的包
??????? ## 若想修改busybox選項配置,請進入并選中 Package list? ---> [*]?? Configure busybox at build time?
??????? ## 其他目標系統配置、目標鏡像生成選項配置類似。
??????? ## (解釋)Load an Alternate Configuration File選項是選則一個已有的配置文件來自動配置各個選項
??????? ## Save Configuration to an Alternate File選項是將當前的配置信息保存為一個命名的文件名(eg:defconfig.liuby.today804)
??????? ## 最后退出時會彈出對話框,選擇Yes保存,默認保存到config/platform/mpc8349itx/,名字是上面的命名
??????? ## 開始編譯
??????? ## 附注:同時生成的配置文件也會另存為 defconfig.dev(在config/platform/mpc8349itx/下),
??????? ## 再附注:defconfig.liuby.today804同樣存在。
??????? ## 再再附注: 按鍵請看說明,主要包括上下左右鍵、空格、回車、搜索鍵(s)、ESC鍵。
??????? ## NB: 按ESC鍵要注意次數,多按容易前功盡棄!
## 上面的操作做完后開始編譯,假如選擇了編譯時配置內核,會彈出內核的配置對話框,可用用上面類似的方法修改配置,以添加8021Q模塊支持為例
??????? ## 添加8021Q: 進入 Networking? ---> [*] Networking support / Networking options? ---> <*> 802.1Q VLAN Support (注:<M>是編譯為模塊的形式)
??????? ## 類似可以刪除NTFS支持模塊 < >NTFS file system support (注:以此為例是因為現在用不到NTFS)
??????? ## 檢查是否支持NFS(注:寫此是因為開發常用,不詳寫)
??????? ## 類似上面將內核配置信息保存為一個文件
??????? ## 內核開始編譯
??????? ## 附注:生成的內核配置文件為 nas_linux-2.6.13.4-mpc8349itx.config.dev(在config/platform/mpc8349itx/下)
## 內核編譯完成后,開始選擇程序包的編譯,如果選擇了編譯時配置busybox,會彈出 BusyBox Configuration 配置對話框,配置和上面一樣,下面隨便舉一例:
??????? ## 如刪除fdisk工具編譯,進入Linux System Utilities,去除選項 [ ] fdisk?
??????? ## 如添加mount工具的nfs選項支持,進入并選中 Linux System Utilities? ---> [*]???? Support mounting NFS file systems?
??????? ## 類似上面將busybox配置信息保存為一個文件
??????? ## busybox開始編譯
??????? ## 附注: busybox是linux常用命令工具集,可根據開發需要選擇需要的命令工具
??????? ## 附注: 若不改文件名,生成的配置文件為busybox.config(在config/platform/mpc8349itx/下)
## 若是想向文件系統里添加自己寫的應用程序,或shell腳本。需要將相應的文件copy到config/platform/mpc8349itx /merge/文件夾下,此文件夾下的文件在開發板上相當于位于根文件系統下面。若想將程序燒進開發板后,開發板上電能自動執行程序或腳本,可以修改 config/platform/mpc8349itx/merge/etc/rc.d/rcS。注:此步操作需要在開始編譯內核和文件系統之前做好。
??????? ## 以添加vlan配置模塊vlan.ko,和添加vlan及配置腳本vlan_config.sh為例:
??????? ## 在config/platform/mpc8349itx/merge/下創建一個文件夾(eg: mypro);
??????? ## 將vlan.ko和vlan_config.sh添加到新建文件夾下config/platform/mpc8349itx/merge/mypro/下,配置好權限
??????? ## 在config/platform/mpc8349itx/merge/etc/rc.d/rcS最后添加運行腳本和程序的語句(后面詳細介紹)

3. 文件系統添加應用程序和腳本

上面已經對ltib編譯流程及主要操作做了大致描述,下面分別描述內核修改配置和文件系統添加應用程序和腳本

3.1.內核模塊添加

在需要修改內核配置,比如為內核添加編譯新的模塊功能時,該如何完成,下面以將支持8021Q VLAN協議的模塊編譯進我們需要的內核中為例來演示:
##首先按照前面所說的簡單快捷的方式,執行命令:
$ ./ltib --preconfig? config/platform/mpc8349itx/defconfig-min-fs?
??????? ## defconfig-min-fs是安裝ltib后的自帶文件,并沒做修改。
??????? ## 在彈出的對話框中,通過上下鍵移動光標到 Choose your Kernel /? kernel (Dont build the Linux kernel) 回車進入內核選擇對話框,移動光標按空格鍵選中我們需要的內核 (X) linux 2.6.13.4,內核配置文件暫不修改,使用默認的。
??????? ## 為了能添加我們需要的8021Q支持模塊,需要修改內核的配置,移動光標按空格鍵選中 [*] Configure the kernel,這樣在編譯時可以修改其配置。
???????? ## 移動光標到Save Configuration to an Alternate File,回車輸入我們想將目前配置保存的文件名為defconfig-min-fs-modified任何回車。
??????? ## 左右移動光標到最下面的Exit,彈出對話框詢問是否保存配置文件,選擇'Yes'
## ltib開始根據配置進行工作。
## 很快又會彈出新的對話框 Linux Kernel Configuration?
## 下面需要修改內核配置,添加8021Q
??????? ## 移動光標選中 Networking? ---> 回車彈出新的對話框,移動光標到 [*] Networking support 下面一行 Networking options? ---> 然后回車,又彈出對話框,向下移動光標,按空格兩次選中<*> 802.1Q VLAN Support 將其編譯進我們需要的內核中。
??????? ## 然后按兩次ESC回到Linux Kernel Configuration的主界面
??????? ## 移動光標選中 Save Configuration to an Alternate File 回車輸入當前配置的保存名字 nas_linux-2.6.13.4-mpc8349itx.config-modified
??????? ## 左右移動光標選中最下面的Exit,彈出對話框詢問是否保存配置文件,選中'Yes'
## ltib調用當前的配置信息編譯內核。 3.2.
當我們寫好了開發板上的應用程序,并且已經做好了各種測試,需要燒寫到板子,達到上電時應用程序已經在板子上了,甚至是可以開機自動運 行,該如何操作呢,下面講述如何向開發板添加應用程序及需要的腳本。以添加VLAN配置模塊vlan.ko和添加VLAN編號并配置ip的腳本 vlan_config.sh:
## 首先需要明白config/platform/mpc8349itx/merge/下面的各種文件就是通過編譯后成為開發板文件系統的一部分,并且此文件夾下的文件就相當于位于開發板的根目錄下。
## 在文件夾config/platform/mpc8349itx/merge/創建一個文件夾ourpro,再將我們之前編譯的VLAN配置模塊 vlan.ko以及腳本vlan_config.sh添加到剛才創建的文件夾config/platform/mpc8349itx/merge /ourpro/下(用命令為mkdir,cp)
## 在config/platform/mpc8349itx/merge/etc/rc.d/rcS最后添加如下幾句(可用命令vi完成) ? ? ? ? 1 +++++++++++下面為添加內容++++++++++++++ 2 if [ $mode = "start" ] 3 then 4 if [ -x /ourpro/vlan_config.sh ] 5 then 6 /ourpro/vlan_config.sh 7 fi 8 fi 9 +++++++++++上面為添加內容++++++++++++++ 10 ## 附:vlan_config.sh腳本內容 11 ++++++++++++下面為vlan_config.sh腳本內容++++++++++++++++ 12 #!/bin/sh 13 # This script is used to add vlan configuration module 14 # and config eth1 with vlan-id and the relevant ip. 15 # date: Wed Aug 6 17:00:18 CST 2008 16 echo "Now start to config vlan ,please have patience. ^_^ " 17 echo "boot eth1 now" 18 ifconfig eth1 up 19 sleep 3 20 echo "insmod /ourpro/vlan.ko " 21 if [ -f /ourpro/vlan.ko ] 22 then 23 insmod /ourpro/vlan.ko 24 rmmod /ourpro/vlan.ko 25 usleep 100000 26 echo "Config vlan-name(1:6) ipaddr & netmask" 27 for x in 1 2 3 4 5 6 28 do 29 vconfig add eth1 $x 30 ifconfig eth1.$x 192.168.$x.1 netmask 255.255.255.0 up 31 echo eth1.$x 192.168.$x.1 netmask 255.255.255.0 up 32 done 33 echo "DONE. You can test vlan now. ^_^" 34 exit 0 35 fi 36 echo "Not found /ourpro/vlan.ko" 37 exit 0 38 ++++++++++++上面為vlan_config.sh腳本內容++++++++++++++++

?

## 在以上操作中要注意權限的設置
## 要添加的文件和腳本,以及配置做好,可以編譯文件系統了,我們可以使用上面編譯內核所生成的配置defconfig-min-fs-modified
$ ./ltib --preconfig? config/platform/mpc8349itx/defconfig-min-fs-modified
??????? ## 首先彈出對話框 LTIB: Freescale MPC8349E-mITX board
??????? ## 若不希望再編譯內核,移動光標到--- Choose your Kernel下面一行 kernel (linux 2.6.13.4)? --->,按空格進入,彈出一個新的內核選擇對話框kernel,移動光標并按空格選中 (X) Dont build the Linux kernel 。若希望編譯內核,則跳過此步。
??????? ## 此次操作我們選擇編譯內核,但不再編譯時配置內核。
??????? ## 編譯時不再配置內核選項,移動光標按空格去除選項 [ ] Configure the kernel。
??????? ## 移動光標到(nas_linux-2.6.13.4-mpc8349itx.config) kernel config file回車,輸入我們的內核配置文件nas_linux-2.6.13.4-mpc8349itx.config.dev,確定返回到主對話框
??????? ## 移動光標到 Save Configuration to an Alternate File,輸入我們想保存為的文件名defconfig-min-fs-our-final
??????? ## 左右移動光標到< Exit >回車,然后會彈出是否保存新的配置文件,直接選擇 < Yes > 回車
??????? ## 然后開始編譯內核和文件系統
## 編譯結束。
??????? ## 注:上面編譯出的內核已經添加了8021Q內核模塊,文件系統里也包含vlan.ko和vlan_config.sh,燒進開發板上電會自動執行vlan_config.sh實現添加vlan編號及配置ip信息。
??????? ## 文件夾rootfs/下的文件就相當于在開發板上看到的全部文件系統
??????? ## 我們需要的內核文件為rootfs/boot/uImage,根文件系統文件為rootfs.ext2.gz.uboot 假如上面編譯出來的內核文件和文件系統文件不小心刪除了,或者文件遭到了破壞,需要重新編譯,而且文件不需要變化的話,這里有一個比較簡單的辦法,執行如下命令可一次完成滿足要求的內核和文件系統:
$ ./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs-our-final --batch
??????? ## 輸入完這些命令回車就開始編譯了,中間不需要任何操作,完全可以看會電影,或者學學vim...,大約半小時后就可以看到你希望的結果 :)

3.3.內核和文件系統測試方法(NFS文件系統掛載?)

上面編譯出來的結果怎么知道一定是對的呢,而且開發板的FLASH燒寫都有次數限制,一般情況下我們不能隨便燒寫內核或文件系統到FLASH中,下面一個方法可以解決這一問題。
## 下面的方法是完全針對8349itx開發板出廠后設置未做修改時來完成的。
## 假如開發主機的ip地址為59.64.155.150,開發板的ip地址59.64.155.79,網關為59.64.155.1
## 開發主機上提供了tftp服務(參見另寫的一篇筆記server.txt),其根目錄為/home/liuby/tftpboot/
## 首先在tftp根目錄下創建一個存放內核文件和根文件系統的目錄down,并將剛才編譯的結果復制到此文件夾下
$ mkdir -m 777 /home/liuby/tftpboot/down
$ cp rootfs/boot/uImage /home/liuby/tftpboot/down/
$ cp rootfs.ext2.gz.uboot /home/liuby/tftpboot/down/
## 此時開發主機上的工作已經完成了,下面介紹開發板上需要做的工作
## 開發板的uboot默認有3秒的延遲,來讓我們確定是否進入操作系統,在上電后uboot會給出一個提示:Hit any key to stop autoboot: 在這句后面的數字變為0之前按一下鍵盤。
## 在上一步按下鍵盤后,終端上會出現uboot提示符 '=> '
1 => getwayip=59.64.155.1 2 => ipaddr=59.64.155.79 3 => serverip=59.64.155.150 4 => tftp_path=down 5 => saveenv ## 保存uboot環境變量,這樣保存是為了方便以后不再設置其參量,可不保存 6 ## 一般不要修改uboot環境變量,可參看<<MPC8349ITX_set-uboot-env.txt>> 7 => run tftpramboot ## 下載內核和文件系統鏡像到DDR memory中,然后啟動 ## 系統啟動后輸入user id "root",with password "root",可以用ifconfig查看配置已經生效。好玩吧 ?!
## 也可以用"dmesg | grep -i 802"來查看內核是否支持8021Q

3.4.燒寫內核和文件系統到目標板

經過各種測試,發現已經實現了所需要的功能,我們想把這樣的內核和文件鏡像固化到板子上,上面的辦法顯然不能滿足要求了,那有沒有一個簡單的辦法呢,答案是'有滴',只需要花幾分鐘時間就可以實現。LET'S START:
## 如上面介紹先把內核和文件系統鏡像復制到tftp目錄/home/liuby/tftpboot/down/下
## 下面的操作是在開發板啟動后進入uboot提示符下進行
1 => setenv bootdelay 3 ## 啟動延遲3s 2 => setenv loadaddr 200000 ## 下載到DDR內存中的起始地址 3 => setenv kernaddr fe810000 ## flash中內核分配的起始地址 4 => setenv ramdiskaddr fe9a0000 ## flash中文件系統分配的起始地址 5 => setenv ipaddr 59.64.155.79 6 => setenv netmask 255.255.255.0 7 => setenv gatewayip 59.64.155.1 8 => setenv serverip 59.64.155.150 9 => setenv tftp_path=down ## 相對根目錄的路徑 10 ## 以上操作都可以不做,保留下來只是想看看以前是多么菜,時光啊 11 => tftpboot $loadaddr $tftp_path/uImage ## 下載內核鏡像到DDR memory中 12 => erase $kernaddr feefffff ## 擦除flash中為內核和文件系統分配的空間(起止地址之間) 13 => cp.b $loadaddr $kernaddr $filesize ## 寫內核到flash中,filesize變量通過tftpboot獲得 14 => cmp.b $loadaddr $kernaddr $filesize ## 確認是否寫錯誤 15 => tftpboot $loadaddr $tftp_path/rootfs.ext2.gz.boot ## 下載小文件系統到DDR memory中 16 => cp.b $loadaddr $ramdiskaddr $filesize ## 寫文件系統到flash中 17 => cmp.b $loadaddr $ramdiskaddr $filesize ## 確認是否寫錯誤 18 => imls ## 確認寫到flash中的鏡像是否為有效的u-bootable鏡像 19 => boot ## 啟動 ## 系統上電,發現就是我們想要實現的,再重啟發現仍然是,心里默默地喊一個OH YEAH.
??????? ## 附一個常用的uboot命令吧:?? help 或者 ? ###### 附注:都快寫到吐了,與燒寫有關的不再寫了,請參看<<Readme.txt>>,此文不是一般的強大。

4. LTIB常用命令參數

下面再寫一點ltib的常用命令參數吧,雖然覺得對其編譯內核和文件系統流程有了一定了解,但是對其命令參數用過的還不是很多,可以說是不甚了解,下面介紹一些,希望有用:

4.1.常規命令參數

首先一個比較有用的命令參數就是help,一個人忘記命令參數很常見,何況剛開始熟悉這個工具。下面這個命令行可以查看ltib命令的使用幫助:
$ ./ltib --help??????????????????????? ## 這個等同于 ./ltib -h
在編譯內核和文件系統時,有時忘了我們選了哪些程序包來進行編譯操作,我們可以用下面的命令來查看當前安裝模式下所有可用的程序包,是否被選擇編譯進工程 :
$ ./ltib -m listpkgs??????????????? ## 此命令是根據ltib的配置來顯示
查看配置中已選編譯的程序包,如內核版本包,系統工具包: 
$ ./ltib -m listpkgs | grep ' y '
如果想看編譯過程產生的信息并把這些信息也保存,以備以后查看,可用以下命令
$ ./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs-our-final --batch 2>&1 | tee ltib_log.txt
## 保存編譯過程產生的信息及錯誤信息全部保存到ltib_log.txt文件中
ltib提供了一種shell模式,它直接提供了我們當前配置的交叉編譯工具鏈模式,下面的命令能讓我們進入ltib的shell環境
$ ./ltib -m shell??????? ## 完成后會給出提示,進入shell模式的提示符 'LTIB>'?
??????????????????????? ## 輸入exit可退出shell模式
## 下面的命令可以看一下這個有什么用,我直接給出命令,它下面就是這個命令的結果,不再解釋
??????? LTIB> gcc --version
??????? powerpc-linux-uclibc-gcc (GCC) 3.4.3
??????? Copyright (C) 2004 Free Software Foundation, Inc.
??????? This is free software; see the source for copying conditions.? There is NO
??????? warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
??????? LTIB>

4.2.查看源碼

有時候我們想看一下某些程序包的源碼,比如kernel、uboot等這些看了有益于身心健康的程序源碼,該怎么辦呢? 還有一種情況就是這些源碼中存放有板子的各種配置文件,比如內存映射分配,也需要看一下源碼文件,其命令格式為$ ./ltib -m prep -p <program_package_name>
## 下面這部分我是在large文件夾下操作,所寫路徑也是相對于/usr/local/mpc8349/large/來寫的,而不是mytest文件夾下
## 例如我們要查看MPC8349ITX開發板上vsc7385的內存分配,或查找VSC7385的驅動模塊部分,需要看uboot、內核源碼,以下命令得到內核源碼
$ ./ltib -m prep -p kernel
## 解壓后的內核源碼位于rpm/BUILD/linux-2.6.13/
## 其中vsc7485的驅動是rpm/BUILD/linux-2.6.13/drivers/net/gianfar_phy.c
## 下面操作必須在原來的large文件夾下操作,為什么這么做?自己思考吧。以下命令可以得到uboot源碼
$ ./ltib -m prep -p u-boot
## 解壓后得到的uboot源碼位于rpm/BUILD/u-boot-1.1.3
??????? ## 其中有關MPC8349MITX板子配置信息的重要文件為/include/configs/MPC8349ITX.h
??????? ## 在上面的這個文件中可用看到VSC7385的內存分配基地址信息(#define CFG_VSC7385_BASE???? 0xF8000000)
??????? ## 不用uboot命令的話,可參看一下源碼幫助理解。
## 注:上面這段命令操作我之所以選擇在/usr/local/mpc8349/large文件夾下,是因為要得到某些程序源碼,首先它得編譯過。
上面介紹了一個ltib編譯內核和文件系統比較好用的辦法,當你比較熟悉了ltib工作流程,完全可以自己配置交叉編譯工具鏈內核文件系統(應該還有uboot),然后編譯,可以用下面這個命令行
$ ./ltib --configure

4.3.重新生成鏡像

如果想重新產生所有內核和rootfs鏡像有以下三個辦法:
## 辦法一: 直接調用配置文件編譯,如果配置文件沒有更新,且編譯過的目標鏡像沒有變化,會不進行編譯。若有任何改動,會執行編譯
$ ./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs-our-final --batch
## 辦法二: 如辦法一一樣,但強制重新編譯
$ ./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs-our-final --batch -f
## 辦法三: 清除所有編譯的程序包,然后重新配置編譯鏡像
$ ./ltib -m distclean??????????????? ## 清除ltib工程文件
$ ./ltib --configure???????????????? ## 重新配置編譯

4.4.LTIB卸載

假如我們對ltib的配置文件不滿意,想自己通過配置操作來熟悉ltib的各種配置,或者相關工作做完了,甚至是看它不順眼,都可以采用此操作,把LTIB完全卸載,
## 首先執行命令:
$ ./ltib -m distclean??????????????? ## 此操作將徹底清除所有當前ltib工程文件
??????????????????????????????????????????? ## 此命令不要輕易使用,除非比較熟悉ltib編譯配置過程
## 然后以root身份執行以下操作(注意:此操作將卸載所有的公共文件)
# rm -rf /opt/freescale/pkgs
# rm -rf /opt/freescale/ltib
# rm <install_path>??????????????? ## 執行文件ltib的上級目錄
## 另一種更加暴力的辦法是root身份運行rm命令來刪除所有

5. 外部模塊編譯方法

下面再寫一下外部內核模塊的編譯,假如我們有一個文件夾test(位于主目錄/home/liuby/下),該文件夾包含程序源碼文件test.c和Makefile,這兩個文件的內容附在此段內容的最后。
## 首先我們得到內核源碼,然后再編譯,為什么這么做,我也不懂~~~,有些納悶,以后再解決
$ ./ltib -m prep -p kernel
$ ./ltib -m scbuild -p kernel??????? ## 編譯的鏡像為rpm/BUILD/linux/arch/ppc/boot/images/uImage
## 將test文件夾copy到內核的driver文件夾下
$ cp -a ~/test? rpm/BUILD/linux/drivers/
## vi修改driver文件夾下的Makefile
$ vi rpm/BUILD/linux/drivers/Makefile
## 可以仿照Makefile里的內容在最后添加如下一行
ojb-m? += test/???????????????? ## 然后保存退出
## 修改test文件夾下的test.c和Makefile確保其正確無誤。
## 下面的命令是進入ltib的shell環境,然后進入到test目錄,然后編譯
$ ./ltib -m shell
LTIB> cd rpm/BUILD/linux/drivers/test/
LTIB> make V=1 ARCH=ppc
## rpm/BUILD/linux/drivers/test/test.ko就是我們想要的module,下載到板子上用insmod test.ko來執行模塊(rmmod test.ko是卸載模塊)
1 ++++++++++++++++下面為test.c程序內容++++++++++++++++++ 2 #include <linux/init.h> 3 #include <linux/module.h> 4 #include <asm/mpc83xx.h> 5 MODULE_LICENSE("Dual BSD/GPL"); 6 static int hello_init(void) 7 { 8 printk(KERN_ALERT "Hello, world/n"); 9 printk(KERN_ALERT "IMMR virtual address: %X/n", VIRT_IMMRBAR); 10 printk(KERN_ALERT "IMMRBAR: %08lX/n", *(unsigned long*)(VIRT_IMMRBAR + 0x00000)); 11 printk(KERN_ALERT "SPRIDR : %08lX/n", *(unsigned long*)(VIRT_IMMRBAR + 0x00108)); 12 return 0; 13 } 14 static void hello_exit(void) 15 { 16 printk(KERN_ALERT "Goodbye, cruel world/n"); 17 } 18 module_init(hello_init); 19 module_exit(hello_exit); 20 ++++++++++++++++上面為test.c程序內容++++++++++++++++++

?

1 +++++++++++++++下面為Makefile程序內容+++++++++++++++++ 2 ifneq ($(KERNELRELEASE),) 3 obj-m := test.o 4 else 5 KDIR := ../.. 6 PWD := $(shell pwd) 7 default: 8 $(MAKE) -C $(KDIR) M=$(PWD) 9 endif 10 +++++++++++++++上面為Makefile程序內容+++++++++++++++++ ## 類似地我們可以編譯vlan配置模塊

??????????? ┌——————————┐
??????????? │????? 寫完收工?????????? │

轉載于:https://www.cnblogs.com/aaronLinux/p/5858528.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的[Freescale]E9学习笔记-LTIB总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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