當前位置:首頁 » 編程軟體 » bbb編譯內核

bbb編譯內核

發布時間: 2022-09-09 19:23:57

A. 在編譯內核時修改linux文件系統出現這樣的情況,不能保存,怎麼破

這個是linux的保護機制,一般配置文件會自動產生一個.old文件。
因為文件非常重要,所以linux的保護機制提示需要備份一個,配置出錯也能恢復。
每次操作一些文件的時候不妨 cp /xx/yyyy/aa.bbb /xx/yyyy/aa.bbb.old 後再進行操作。
這樣出錯了也能自己手動恢復回來,應該養成這樣一個良好的習慣。
編輯的話覺得vi用不慣可以用nano。gedit編輯好像會出問題,以前我配置網卡IP的時候nano,vi寫出來沒問題,gedit寫出來就有問題。這個我也就不懂了

B. beagle bone black怎麼用SD卡更新內核

將內核編譯好,自己寫了一個hello world的驅動程序,弄到了BBB上insmod,於是出現了今天的主角---Invaild mole format

這種情況的原因一般是編譯驅動時用的內核和開發板上的內核版本不一樣。參見http://blog.csdn.net/zhenxisuiyuan/article/details/5570490
但是人家說要重新編譯內核,我哪甘心重新編譯?明明已經編譯好了一個,編譯好的直接代替不就行了。。。
於是拿出當年折騰gentoo的精神。。。。
BBB的啟動內核是/boot/uimage,而編譯生成的內核文件是3.8.13-beaglebone-zImage.uImage是
uboot的專用內核格式,只需要將zImage轉換為uImage即可-是用mkimage命令,這個可以在uboot/tool下找到
轉換命令mkimage -A arm -O linux -T kernel -C none -a 0x80007fc0 -e 0x80008000 -n Angstrom/3.8.13/beaglebone -d 3.8.13-bone33.1.zImage uImage-3.8.13
然後將uImage-3.8.13放到/boot/下,將/boot目錄下的相關文件修改即可。編譯內核的時候還會在deploy目錄下生成幾個壓縮文件,將其解壓到相應的目錄即可

mkimage 的參數可以參考未修改之前的uboot的啟動時列印的信息
## Booting kernel from Legacy Image at 80007fc0 ...
Image Name: Angstrom/3.8.13/beaglebone
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3361616 Bytes = 3.2 MiB
Load Address: 80007fc0
Entry Point: 80008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 80f80000
Booting using the fdt blob at 0x80f80000
XIP Kernel Image ... OK
OK
Using Device Tree in place at 80f80000, end 80f89133

Starting kernel ...

之後將模塊insmod後dmesg | tail,一切正常

C. C語言問題:我想把一個數組的值復制到一個char指針裡面,結果編譯可以通過,但是運行不出來

這樣說你就明白了,你有定義b[]這個數組嗎?你現在只有一個b指針,指針指向的是內存,而不是說指針裡面存這值,這樣你明白不?
按你的意思是項把數組a[]裡面的字元串通過指針b輸出出來,那你的程序就不能這么寫了
你要知道其實數組和指針有時候是有一定相似性的,比如說你定義的一維數組a[],你單獨拿出a這個在程序中用,那麼a就是一個地址,他裡面是內存地址名字,而如果你拿a[i]出來用,那麼就是取a這個地址中存儲的內容來用,比如說是a[0],他裡面存的是'a'這個字元,那你用printf("a=%d\n",a[0]);輸出的時候就是'a'這個字元,但是你要是這么輸出printf("a=%d\n",a);那你輸出的就是內存地址了,不一定是什麼數可,系統默認32位處理器內存地址是0x00000000~0xFFFFFFFF之間的16進制數表示的內存地址值,像我剛才輸出的是整數,那就是10進制的,他會直接讀取內存地址地址名轉換成十進制輸出出來,就是一大長串數字,所以你要項弄懂這個之間的關系,那就把指針懂。
其實指針也就那麼回事,指針裡面存的是地址,而不是一個數值。而這個地址裡面存的才是數值
再來說你那個指針b,你想用b來輸出數組a[]裡面的字元串,那麼就像我上面說的,數組a[]他裡面的a就相當於一個指針,指向a[]數組第一個元素首地址的指針,那你只要把你的a這個指針賦給你新建的指針b就可以了。根本用不到什麼循環。而你要輸出字元串,那麼既然現在b所指向的也和a指向的地址相同,那麼直接就能輸出來。
這是我修改的你看一下
#include <stdio.h>
int main(){
char a[] = "abc";
char *b = "bbb";
b=a;
printf("a[]=%s\n",a);
printf("b[]=%s\n",b);
return 0;
}

D. beaglebone black更換內核版本,還需要做一個新的根文件系統嗎

內核編譯自寫hello world驅程序弄BBBinsmod,於現今主角---Invaild mole format

種情況原般編譯驅用內核發板內核版本參見
家說要重新編譯內核我哪甘重新編譯明明已經編譯編譯直接代替行
於拿折騰gentoo精神
BBB啟內核/boot/uimage,編譯內核文件3.8.13-beaglebone-zImage.uImage
uboot專用內核格式需要zImage轉換uImage即-用mkimage命令uboot/tool找
轉換命令mkimage -A arm -O linux -T kernel -C none -a 0x80007fc0 -e 0x80008000 -n Angstrom/3.8.13/beaglebone -d 3.8.13-bone33.1.zImage uImage-3.8.13
uImage-3.8.13放/boot//boot目錄相關文件修改即編譯內核候deploy目錄幾壓縮文件其解壓相應目錄即

mkimage 參數參考未修改前uboot啟列印信息
## Booting kernel from Legacy Image at 80007fc0 ...
Image Name: Angstrom/3.8.13/beaglebone
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3361616 Bytes = 3.2 MiB
Load Address: 80007fc0
Entry Point: 80008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 80f80000
Booting using the fdt blob at 0x80f80000
XIP Kernel Image ... OK
OK
Using Device Tree in place at 80f80000, end 80f89133

Starting kernel ...

模塊insmoddmesg | tail,切

E. 如何在最新的Debian系統下使用BB-VIEW

我想很多同學可能想知道如何讓BB-VIEW在安裝了最新的Debian beta系統映像的element14 BeagleBone Black上工作。

比較麻煩的是需要對內核重新編譯。如果不重新編譯的話,屏幕顯示不會有問題(紅藍對調很容易解決),但是觸摸屏控制引腳和標準的TI 4線介面不一樣。我嘗試過為ti_am335x_tsc.c文件打補丁,這樣就只會對DTS進行重新編譯,但是還沒有成功(我敢肯定是狀態機位分配的問題)。不扯遠了,下面開始講操作步驟。

步驟一覽:

1) 下載需要用到的文件
a) Robert Nelson編譯工具,用於編譯BeagleBone內核
b)針對Angstrom的BB-VIEW源代碼
2) 創建默認內核
3) 為內核打補丁並快速重新編譯
4) 將新內核復制到BeagleBone
5) 編輯xorg.conf文件,糾正紅藍對調問題
6) 盡情享受你剛剛節省下來的整整4天的時間J

現在正式開始:

我用的是Ubuntu 12.04 LTS 64位版本,在VirtualBox虛擬機中來編輯內核:
> mkdir bb-view
> cd bb-view

安裝git:
> apt-get install git

本地克隆Robert Nelson的linux-dev項目。下載文件有點大,交叉編譯器大概100Mb,內核源碼大概700Mb:
> git clone http冒號//github.com/RobertCNelson/linux-dev.git

進入新的linux-dev目錄,然後選擇符合Debian版本的branch/tag:
> cd linux-dev
> git checkout 3.8.13-bone37 -b tmp

現在我們需要創建基本的映像,這樣就能植入BB-VIEW驅動目錄。腳本會提示操作或需要安裝的內容:
> ./build_kernel.sh

大約一個小時以後創建完畢(下面的內容需要下載Angstrom源代碼)

為內核打補丁

從Angstrom源碼提取兩個文件:
> unzip angstrom-source.zip
> tar -zxf bb-black-kernel-3.8.13-bb-view.tar.bz2
> cp ./kernel/kernel/drivers/input/touchscreen/ti_am335x_tsc.c ~/bb-view/linux-dev/KERNEL/drivers/input/touchscreen/
> cp ./kernel/kernel/firmware/capes/BB-VIEW-LCD7-01-00A0.dts ~/bb-view/linux-dev/KERNEL/firmware/capes/

現在我們需要讓編譯器知道我們要添加固件:
> nano ~/bb-view/linux-dev/KERNEL/firmware/Makefile

將以下代碼添加到第192行附近(按CTRL-C可以顯示當前游標位置):
BB-VIEW-LCD7-01-00A0.dtbo \

不要忽略了後面的反斜杠,這很重要。然後按下CTRL-O、Enter和CTRL-X鍵來保存和退出。

回到linux-dev根目錄:
> cd ~/bb-view/linux-dev

然後執行重新創建內核的命令,這一步需要的時間不會很長:
> ./tools/rebuild.sh

將內核復制到element14 BeagleBone Black:

以下命令的前提條件是已經在BeagleBone上安裝了Debian beta系統並且成功啟動。
最簡單的方法是從網上通過「scp」命令復制文件:
> scp ~/bb-view/linux-dev/deploy/3.8.13-bone37.zImage [email protected]:/home/debian

把上面的debian替換成你在BeagleBone上的用戶名,並且把192.168.7.2替換成BeagleBone的IP地址。
登錄BeagleBone,然後將內核映像復制到啟動分區:
> ssh [email protected]
bbb> sudo cp 3.8.13-bone37.zImage /boot/uboot/zImage

在讓LCD正常工作前還需要做一件事情。由於BB-VIEW沒有EEPROM,所以我們需要在啟動命令中屏蔽HDMI驅動,並強行載入BB-VIEW驅動:
bbb> sudo nano /boot/uboot/uEnv.txt

找到「optargs」那一行,然後修改為:
optargs=capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN capemgr.enable_partno=BB-VIEW-LCD7-01

注意前面的「#」已經刪除了。否則EMMC被禁用,無法從emmc啟動。
然後按下CTRL-O、Enter和CTRL-X鍵來保存和退出。
重新啟動BeagleBone後,LCD就能工作了,但是藍色和紅色顯示對調了。

修復紅藍色對調

這個問題是由於TI AM335x處理器在16位和24位視頻模式切換時的錯誤造成的。要修復這個問題,需要首先找到顯示屏的名稱:
> ssh [email protected]
bbb> cat /var/log/Xorg.0.log | grep screen

我的顯示屏名稱是「Builtin Default fbdev Screen 0」
現在編輯X配置文件:
bbb> sudo nano /usr/share/X11/xorg.conf.d/10-evdev.conf

在文件末尾添加「Screen」代碼段:
Section "Screen"
Identifier "Builtin Default fbdev Screen 0"
Monitor "Configured Monitor"
Device "Configured Video Device"
DefaultDepth 24
EndSection

然後按下CTRL-O、Enter和CTRL-X鍵來保存和退出。
重新啟動即可!

F. linux里的追加命令是什麼

追加命令是可以使用文件追加重定向 >>。

優點;

1、Linux由眾多微內核組成,其源代碼完全開源。

2、Linux繼承了Unix的特性,具有非常強大的網路功能,其支持所有的網際網路協議,包括TCP/IPv4、TCP/IPv6和鏈路層拓撲程序等,且可以利用Unix的網路特性開發出新的協議棧。

3、Linux系統工具鏈完整,簡單操作就可以配置出合適的開發環境,可以簡化開發過程,減少開發中模擬工具的障礙,使系統具有較強的移植性。

(6)bbb編譯內核擴展閱讀;

linux里的通用命令有;

1、date:列印或者設置系統的日期和時間。

2、stty -a:可以查看或者列印控制字元(Ctrl-C、Ctrl-D、 Ctrl-Z等)。

3、passwd:用passwd -h查看。

4、logout,login:登錄shell的登錄和注銷命令。

5、more,ess,head tail:顯示或部分顯示文件內容。

6、lp/lpstat/cancel,lpr/lpq/lprm:列印文件。

7、chmod u+x:更改文件許可權。

8、rm -fr dir:刪除非空目錄。

9、cp -R dir:拷貝目錄。

10、fg jobid:可以將一個後台進程放到前台。

11、kill 的作用:send a signal to a process,eg:kill -9 發送的是SIG_KILL信號,具體發送什麼信號,可以通過man kill查看。

12、ps 的用法:ps -e 或 ps -o pid,ppid,session,tpgid,comm (其中session顯示的sessionid,tpgid顯示前台進程組id,comm顯示命令名稱)。

G. 安卓菜鳥關於 init.rc 中的 init.${ro.hardware}.rc 與 out 目錄下生成的.rc文件名不一致的問題

Android本質上就是一個基於Linux內核的操作系統。與Ubuntu Linux、Fedora Linux類似。只是Android在應用層專門為移動設備添加了一些特有的支持。既然Android是Linux內核的系統,那麼基本的啟動過程也應符 合Linux的規則。如果研究過其他Linux系統應該了解,一個完整的Linux系統首先會將一個Linux內核裝載到內存,也就是編譯Linux內核 源代碼生成的bzImage文件,對於為Android優化的Linux內核源代碼會生成zImage文件。該文件就是Linux內核的二進製版本。由於 zImage在內核空間運行,而我們平常使用的軟體都是在應用空間運行(關於內核空間和應用空間的詳細描述,可以參考《Android深度探索(卷1):HAL與驅動開發》一書的內容,在後續的各卷中將會對Android的整體體系進行全方位的剖析)。內核空間和應用空間是不能直接通過內存地址級別訪問的,所以就需要建立某種通訊機制。

H. 預處理器指令後有意外標記 - 應輸入換行符 vc++問題

不是代碼問題,而是CPP或C文件編碼格式問題。
新建文本文件,復制內容過去,改名bbb.cpp(原來的挪走),使用新建的cpp文件進行編譯試試吧。

熱點內容
孩子學習編程好處 發布:2025-03-29 18:48:24 瀏覽:424
c是高級程序設計語言的一種 發布:2025-03-29 18:44:38 瀏覽:384
王者榮耀安卓服和蘋果排位哪個好 發布:2025-03-29 18:14:54 瀏覽:932
什麼是微信緩存文件 發布:2025-03-29 18:13:32 瀏覽:463
怎麼修改安卓手機使用信息 發布:2025-03-29 18:03:51 瀏覽:231
網站後台更新緩存 發布:2025-03-29 18:03:46 瀏覽:142
榮耀相冊密碼在哪裡設置 發布:2025-03-29 18:02:56 瀏覽:450
活動記錄編譯 發布:2025-03-29 17:59:04 瀏覽:455
安卓系統視頻原文件在哪裡 發布:2025-03-29 17:46:00 瀏覽:845
pr編譯未安裝 發布:2025-03-29 17:45:57 瀏覽:218