編譯tty電視固件
⑴ 如何將android linux燒到Raspberry Pi及其調試
一.Raspberry Pi入門向導。
可以在以下地址下載Raspberry向導
4.設置引導區
引導區必須包含以下文件,你可以從官方鏡像里獲取(bootable/fat32 partition)也可以從書面步驟中復制過來:
bootcode.bin:第二階段的引導程序,
loader.bin:第三階段的引導程序,
start.elf:GPU二進制固件映像,
kernel.img操作系統的內核鏡像文件,
cmdline.txt:傳遞給內核的參數.
5.設置root文件系統分區
ROOTFS分區包含android文件系統,是從<your_android_framework_path>/out/target/proct/rpi/root復制過來的。
cp -r <your_android_framework_path>/out/target/proct/rpi/root/* /media/ROOTFS/
6.完成上述步驟之後,將其放在Raspberry Pi上跑。
七.如何在Raspberry Pi使用adb?
1.查看網路
當android linux在Raspberry Pi運行時,切換到控制台,執行以下命令:
ifconfig eth0
記下ip地址。
如果不能找到ip,可以輸入以下命令:/system/xbin/dhcp-eth0,來啟動網路連接程序。
ps:如果屏幕沒有顯示控制台,只要按CTRL+ALT+F2即可切換到控制台。如果你想要切換到Android界面,只要按CTRL+ALT+F7即可。
2.遠程連接adb伺服器
在主機上執行以下命令即可與同一區域網的Raspberry Pi相連
adb connect ip
連接成功後,你就可以用adb工具輸出日誌,執行shell命令等。
3.也可以用數據線連接主機,直接在主機上調試。
進入調試的命令為:
screen /dev/ttyUSB0 115200
名詞解釋:
交叉編譯(cross compile):交叉編譯呢,簡單地說,就是在一個平台上生成另一個平台上的可執行代碼。這里需要注意的是所謂 平台,實際上包含兩個概念:體系結構(Architecture)、操作系統(Operating System)。同一個體系結構可以運行不同的操作系統;同樣,同一個操作系統也可以在不同的體系結構上運行。舉例來說,常說的x86 Linux平台實際上是Intel x86體系結構和Linux for x86操作系統的統稱;而x86 WinNT平台實際上是Intel x86體系結構和Windows NT for x86操作系統的簡稱。
⑵ 幫幫解釋下Linux tty的概念。。謝謝
tty1~6,六個文字界面終端,可用鍵盤Ctrl+Alt+F1~6轉換。
tty7圖形界面終端,Ctrl+Alt+F7進入。
tty8系統信息。
⑶ 在linux下,為何tty顯示字元的速度這么慢而konsole卻能顯示這么快
同樣出現這種情況,之前關注過,資料說是可以打開一個緩沖區,這樣顯示速度會快一些
⑷ 有誰知道到關於OpenWrt固件編譯開發的入門的書籍在那裡買 或者書名叫什麼
編譯openwrt固件並沒有想像的那麼復雜,我也是個小白,以下內容是我將網路上的編譯教程稍微進行了一下整合。因為我發現很多編譯教程沒有說明如何更改flash相關配置。
安裝ubuntu,不贅述。
注意在安裝完成後,root不能直接登錄,需要設置密碼,設置方法,自己網路一下。
如果是虛擬機安裝,將虛擬機的網卡配置為橋接模式;
**************以下操作需要在root用戶下操作************************
編輯/etc/networt/option文件夾下的interfaces,將iface eth0 inet dhcp配置為dhcp模式,
然後執行/etc/init.d/networking restar即可自動獲取到ip地址(此方法適用於家中或單位使用dhcp獲取IP地址的場合,如果為固定地址,請自行研究)。互聯網聯通以後執行以下:
sudo apt-get update
安裝編譯需要的組件:
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install make
sudo apt-get install autoconf
sudo apt-get install gettext
sudo apt-get install texinfo
sudo apt-get install unzip
sudo apt-get install sharutils
sudo apt-get install subversion
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-term
sudo apt-get install zlib1g-dev
sudo apt-get install gawk
sudo apt-get install asciidoc
sudo apt-get install libz-dev
如果編譯過程中提示缺少某個組件,同樣使用sudo apt-get install安裝即可
編譯環境搭建完成
**************注意:以下操作需要在自己建的用戶下操作************************
mkdir openwrt 創建一個openwrt文件夾
cd openwrt 進入openwrt文件夾
svn co svn://svn.openwrt.org/openwrt/branches/backfire
或者svn co svn://svn.openwrt.org/openwrt/trunk下載官網的源碼
註:backfire和trunk為兩個不同分支的openwrt源碼,backfire據說較為穩定,但是支持的路由器沒有trunk多,trunk更多稱之為測試版,但編譯好後使用也沒什麼問題。編譯的時候只需執行以上一條命令即可。執行完成後,會在openwrt下生成目錄,使用backfire源碼生成backfire目錄,trunk同理。
然後cd trunk或者cd backfire
Svn up
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
進入定製界面(裡面可以選擇晶元的型號,集成的組件等等,根據實際情況選擇,多編譯幾次就熟悉了)
使用make defconfig,檢查編譯環境,如要報錯參考以下:
註:較常見的問題是編譯時不能使用root用戶編譯,如果使用root登錄,需要使用su 用戶名切換到非root用戶;如果切換用戶後,報許可權錯誤,再切換到root用戶,使用 sudo chown -R [自己用戶名] trunk(如果編譯的是backfire源碼,此處trunk替換為backfire),然後返回自己的用戶名,重新進行編譯。
make V=99
(開始編譯)
剩下的就是等待了,第一次編譯需要的時間相對比較長,這個跟你的電腦配置和網速有關。
以上為路由器未更改flash大小的編譯過程;如果要編譯非標准大小的flash固件,需要更改編譯環境中的一些文件,以703N,使用trunk源碼編譯為例(trunk與backfire需要更改的文件不一樣)
新版本trunk,703N編譯8M固件需要更改以下兩個文件:
1、 /turnk/tools/firmware-utils/src/mktplinkfw.c
在mktplinkfw.c中找到703N的相關屬性,
.id = "TL-WR703Nv1",
.hw_id = HWID_TL_WR703N_V1,
.hw_rev = 1,
.layout_id = "8Mlzma",(改成8)
2、 /trunk/ target/linux/ar71xx/image/Makefile
Makefiel中找到以下內容
$(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR703,tl-wr703n-v1,TL-WR703N,ttyATH0,115200,0x07030101,1,8Mlzma))
將4改成以上的8;
修改完成以上兩個文件後,即可make V=99進行編譯。
Backfire源碼需要改動的文件,第一個與trunk一樣,第二個文件位於
openwrt/backfire/target/linux/ar71xx/files/arch/mips/ar71xx目錄下,找到對應的設備型號進行更改即可。
編譯完成後,在bin/ar71xx目錄下會有固件產生,固件名必包含編譯的路由器型號,如果沒有這兩個文件,說明編譯失敗,有可能為編譯時候選擇的包太多,需重新選擇後進行編譯。
以上編譯未進行相關配置文件的修改,如想修改配置文件,如默認打開無線等等,請自己網路/google。
註:以上大部分內容均來自互聯網,我僅進行了整合。
⑸ 請教:WR743N改了16M的flash怎麼從openwrt中編譯出來16M固件
首先修改trunk/tools/firmware-utils/src/mktplinkfw.c
只修改fw_max_len為0xfc0000,16M flash;只修改fw_max_len為0x7c0000,8M flash
.id = "4M",
.fw_max_len = 0xfc0000,
.kernel_la = 0x80060000,
.kernel_ep = 0x80060000,
.rootfs_ofs = 0x140000,新版只用改fw的大小,分區表會自動認,不用像老版自己定義每個分區大小了。
另外還需下面修改:
Imagebuilder 目錄下,./target/linux/ar71xx/image/Makefile, 把703n最後的4Mlzma改成了8Mlzma或16Mlzma
$(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR703,tl-wr703n-v1,TL-WR703N,ttyATH0,115200,0x07030101,1,8Mlzma))
否則出現如下錯誤:
[mktplinkfw] kernel length aligned to 914864
[mktplinkfw] *** error: images are too big
make[3]: [install] Error 255 (ignored)
在openwrt中不能更新uboot時,需要做如下修改:
target/linux/ar71xx/files/drivers/mtd/tplinkpart.c
parts[0].mask_flags = MTD_WRITEABLE; //去除本行
⑹ archlinux 安裝完以後重啟出現can『t access tty job control tuned off
(1): 錯誤現象: Linux 啟動完成後列印如下信息
-sh: can't access tty; job control turned off
並且ctrl + c 不能殺死正在運行的程序。
(2): 問題的原因
busybox 要求shell能運行在實際的控制台,而不是虛擬的控制台。
Ctrl+C終止進程的流程是這樣的:
Ctrl + C首先通過 /dev/ttyS0 (/dev/console)的driver,這個serial driver直接把這個控制字元送到n_tty的driver,n_tty負責search所有的 控制字元。當 ctrl+C 按下,n_tty.c: n_tty_receive_break() –> isig(SIGINT,tty) –> kill_pg(SIGINT, tty->pgrp)signal.c: kill_pg() calls signal(SIGINT,task) 來中斷每個具有group number 為 tty->pgrp的task.值得一提的是,只要process具有相同的group id,不管是backgroud還 是foreground,都會被kill掉。
解決:-sh: cant access tty; job control turned off 的問題 - KuaFu - kuafu80 的博客
注意區別3個設備節點的意義:
/dev/tty1: 第一個虛擬控制台
/dev/ttyS0: 第一個UART 串口埠
/dev/console: 系統控制台
(3):解決辦法
編寫/etc/inittab文件(當然,前提是要編譯busybox時,需要選上"Support reading an inittab file"),寫入如下內容
console::sysinit:/etc/init.d/rcS
ttyS0::askfirst:-/bin/sh
ttyS1::askfirst:-/bin/sh
ttyS2::askfirst:/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/init
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
特別注意:
(1): 在uboot啟動命令行一般會指定系統控制台: console=ttyS2,115200n8,運行在哪個UART串列埠上,這個需要根據
自己的開發板的硬體電路來決定。
(2): ttyS0、ttyS1、ttyS2,根據自己的硬體電路來決定。
(3): console::sysinit:/etc/init.d/rcS,表明在uboot的命令行參數中不再需要指定: init=/rcS了,Linux系統起來後,自動
會去執行/etc/init.d/rcS腳本。
⑺ ARM s3c2440-linux如何釋放作為console的ttyS0串口
在你的s3c2440板子上,你的串口節點驅動,可能不是ttys0,這樣的驅動文件,在各個製作系統文件時串口的驅動節點,可能是別的文件名,你仔細的觀察下,給你個建議,我的串口驅動節點是s3c2440-serial這個文件,不是ttys0你看一下是不是這個
⑻ ubuntu編譯osmocombb完要多久
ubuntu編譯GNUARM以及OsmocomBB環境方法如下,時間的話看你代碼速度啦
以下所有操作基於Ubuntu Linux下,所以基於Ubuntu、Debian等Linux版本均可使用。
一、以Root許可權進行接下來的所有操作:
$ sudo -s
二、安裝編譯osmocomBB所需的軟體包:
$ aptitude install libtool shtool autoconf git-core pkg-config make gcc
三、下載所需要的GnuARM ToolChain
基於x86架構
$ wget http://gnuarm.com/bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2 網路網盤
$ tar xf bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2
$ mv gnuarm-* ~/gnuarm
基於64位架構
$ wget http://www.gnuarm.com/bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4_x86-64.tar.bz2 網路網盤
$ tar xf bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4_x86-64.tar.bz2
$ mv gnuarm-* ~/gnuarm
這樣子就已經完成了關於OsmocomBB的交叉編譯環境的搭建,剩下就是最關鍵的設置環境變數
$ export PATH=~/gnuarm/bin:$PATH
建議是直接編輯~/.bashrc的內容,把上面的這個段話直接加到最後。
四、編譯libosmocore:
$ git clone git://git.osmocom.org/libosmocore.git
$ cd libosmocore/
$ autoreconf -i
$ ./configure
$ make
$ make install
$ cd ..
$ ldconfig
ldconfig命令一定不要忘記執行,否則osmocomBB編譯後運行時會出現找不到libosmocore.so.4的錯誤。
五、編譯OsmocomBB:
$ git clone git://git.osmocom.org/osmocom-bb.git
$ cd osmocom-bb
$ git checkout --track origin/luca/gsmmap
$ cd src
$ make
基本上已經完成所有的編譯操作了!Enjoy你的玩具吧!
使用OsmocomBB
首先我們需要在刷寫固件之間完成以下幾個手動操作,以便接下來的其他操作。因為摩托羅拉C118的數據連接線是用2.5mm音頻介面的,所以連接方面大家要注意的是:
連接線介面的小缺陷
紅色框住的地方可能會導致大家在誤以為介面已經完全和手機介面銜接了,但在刷機的時候沒有任何反應。所以這個部分需要大家自己去削一下的。
連接線與TTL的接法
黑/黃:GND
紅:TX
白:RX
以上的接法是針對我們RadioWar淘寶店所出售的CP2102以及FT232rl,而基於淘寶其他的產品可能會在TX和RX部分需要反接,大家要記住。有些朋友會說為什麼我們不建議PL2303,那是PL2303隻有標準的波特率,所以無法進行任何調制,在真正功能固件上使用會出現很大的問題。所以我們不建議使用PL2303
當我們處理完以上的操作之後,就在osmocomBB套件目錄下進行相關固件刷寫操作,請記住這個操作過程只是臨時性的,固件只是以RAM TO ROM的途徑下進行臨時刷寫,關機後原有的摩托羅拉系統依然會存在的。
cd ~/osmocom-bb/src/host/osmocon/
啟動osmocon刷寫所需要的固件,通常大家都是直接刷寫Layer1的固件。
./osmocon -m c123xor -p /dev/ttyUSB0 ../../target/firmware/board/compal_e88/layer1.compalram.bin
看清楚c123xor是基於C118的,非C118的手機請不要使用這個,並且記住C118的固件目錄就是compal_e88,在輸入以上命令之前,手機必須連接好連接線以及TTL,並且確保手機必須為關鍵狀態。命令輸入完成後,當前命令窗口會出現以下類似信息:
got 1 bytes from modem, data looks like: 2f /
got 1 bytes from modem, data looks like: 00 .
got 1 bytes from modem, data looks like: 1b .
got 4 bytes from modem, data looks like: f6 02 00 41 ...A
got 1 bytes from modem, data looks like: 01 .
got 1 bytes from modem, data looks like: 40 @
出現以上信息後,直接輕按手機的紅色開機鍵,只需點亮機器而不需要進入手機的系統!!!這樣子信息狀態會顯示類似以下的信息:
Received PROMPT1 from phone, responding with CMD
read_file(../../target/firmware/board/compal_e88/layer1.compalram.bin):file_size=56016,hdr_len=4,dnload_len=56023
got 1 bytes from modem, data looks like: 1b .
got 1 bytes from modem, data looks like: f6 .
got 1 bytes from modem, data looks like: 02 .
got 1 bytes from modem, data looks like: 00 .
got 1 bytes from modem, data looks like: 41 A
got 1 bytes from modem, data looks like: 02 .
got 1 bytes from modem, data looks like: 43 C
Received PROMPT2 from phone, starting download handle_write(): 4096 bytes (4096/56023)
handle_write(): 4096 bytes (8192/56023)
handle_write(): 4096 bytes (12288/56023)
handle_write(): 4096 bytes (16384/56023)
handle_write(): 4096 bytes (20480/56023)
handle_write(): 4096 bytes (24576/56023)
handle_write(): 4096 bytes (28672/56023)
handle_write(): 4096 bytes (32768/56023)
handle_write(): 4096 bytes (36864/56023)
handle_write(): 4096 bytes (40960/56023)
handle_write(): 4096 bytes (45056/56023)
handle_write(): 4096 bytes (49152/56023)
handle_write(): 4096 bytes (53248/56023)
handle_write(): 2775 bytes (56023/56023)
handle_write(): finished
got 1 bytes from modem, data looks like: 1b .
got 1 bytes from modem, data looks like: f6 .
got 1 bytes from modem, data looks like: 02 .
got 1 bytes from modem, data looks like: 00 .
got 1 bytes from modem, data looks like: 41 A
got 1 bytes from modem, data looks like: 03 .
got 1 bytes from modem, data looks like: 42 B
Received DOWNLOAD ACK from phone, your code is running now!
battery_compal_e88_init: starting up
看到以上的信息就證明你的固件刷寫操作已經成功了,下來的操作可以是掃描基站或者其他簡單而快速的方法:
掃描基站
~/cell_logger/osmocom-bb/src/host/layer23/src/misc/cell_log -O
掃描某一個基站,例如30
~/cell_logger/osmocom-bb/src/host/layer23/src/misc/ccch_scan -i 127.0.0.1 -a 30
將掃描基站的日誌保存到本地
mpcap -i lo -w ~/cell_logger/mobilelog/Cell.log
打開WireShark實時讀取相關的信息
sudo wireshark -k -i lo -f 'port 4729'