A. 如何用源碼安裝gnuradio
Gnuradio 3.3.0源碼編譯與安裝
要進行gnuradio的研究首先需要在linux環境下對開源源碼進行編譯與安裝操作。
1、相關資源
目前gnuradio的主要資源都在其官方網站上,當然也有部分是各大論壇上的。
gnuradio官方網站(英文):http://gnuradio.com (這里有各種linux平台安裝gnuradio的資料)
gnuradio中文官方網站:http://gnuradio.cc/ (這里有很多很好的中文參考資料)
2、初次安裝gnuradio
本人已經在Ubuntu 11.04上完成gnuradio3.3.0(源碼)編譯安裝。以下是我的安裝步驟:
step1: 安裝Ubuntu 11.04 系統。(利用U盤安裝,此步驟省略)
step2: 安裝gnuradio編譯的相關tools
(1)嚴格按照gnuradio官方網站上的方法安裝tools。首先安裝Lucid ubuntu (10.04)版本相關組件,安裝命令如下:
sudo apt-get -y install libfontconfig1-dev libxrender-dev libpulse-dev swig g++ automake autoconf libtool python-dev libfftw3-dev \ libcppunit-dev libboost-all-dev libusb-dev fort77 sdcc sdcc-libraries \ libsdl1.2-dev python-wxgtk2.8 git-core guile-1.8-dev \ libqt4-dev python-numpy ccache python-opengl libgsl0-dev \ python-cheetah python-lxml doxygen qt4-dev-tools \ libqwt5-qt4-dev libqwtplot3d-qt4-dev pyqt4-dev-tools python-qwt5-qt4
(2)安裝libxi-dev
sudo apt-get -y install libxi-dev
註:可以直接拷貝到終端窗口的命令行下。安裝這些組件總大小差不多600M多,需要一些時間(本人是在教育網上下載速度挺快,如果是其他網路比較慢 :))。這些組件必須全部安裝完成,否則後期編譯無法通過。
step3:編譯gnradio源碼,安裝
(1) 安裝完組件之後,需要在官網上下載最新的gnuradio源碼包,我下載的是3.3.0版本。然後利用tar -xzvf XXX 解壓縮源碼包。
(2) 配置相關參數
命令:./configure
(3)開始編譯
命令: make
注: 編譯過程時間較長,另外3.3.0版本存在一個固有的bug,編譯過程中會報錯(cannot convert 『int*』 to 『usrp2::usrp2*』 in initialization)。其解決的方案是:
修改gnuradio目錄下usrp2/host/lib/usrp2.cc 文件:
源文件->
B. java如何實現usb口插拔事件的監測,最好有源代碼
java 要訪問 usb 設備,通常要自己寫c/c++代碼,然後再用 java 訪問這些組件,以達到控制usb設備的目的。但現在有一個開源組件 libusb 幫我們做好了訪問usb設備的封裝(包括windows、linux等平台)。我們用 java 訪問usb 設備時,可以通過訪問 libusb 組件提供的介面即可。要了解這個組件的 java 部分的 Demo、API等,可以訪問這里:http://libusbjava.sourceforge.net/
使用這個組件最重要的意義在於:
首先,你不再需要在 win、linux 等平台上寫 c/c++ 等 native 組件,甚至,你不需要知道 jni 怎麼寫;
其次,使用這個組件,你可以訪問所有的 usb 設備,當然,前提條件是你必須知道 usb 設備的相關指令(我當前就用這個組件,直接發usb能接受的命令,去控制我的指紋儀來工作)
最後,如果你的 usb 設備沒有驅動程序,比如,你的 usb 設備是自己研製出來的,還沒來得及為各種平台寫驅動程序,你可以用這個組件提供驅動程序
從:http://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/ 下載 libusb-win32-bin-1.2.2.0.zip
從 http://sourceforge.net/projects/libusbjava/files/libusbjava-snapshots/20090517/ 下載 ch.ntb.usb-0.5.9.jar 和 LibusbJava_dll_0.2.4.0.zip
安裝 libusb-win32:
1)、解壓 libusb-win32-bin-1.2.2.0.zip;
2)、把目錄:\bin\x86 下的 libusb0_x86.dll 復制到 windows/system32 目錄下,並改名為:libusb0.dll;
3)、把目錄:\bin\x86 下的 libusb0.sys 復制到 windows/system32/drivers 目錄下
4)、運行 install-filter-win.exe ,從中選擇安裝你要訪問的 usb 設備
5)、運行 testlibusb-win.exe,有正確的提示信息。如下圖:
注意:如果你運行第4)步時,出現無法安裝libusb0服務、無法找到文件等錯誤,或者運行第5)步時,界面中「Driver version:」後面的版本號是,-1.-1 -1 ...這些情況,說明你的安裝不正常。原因可能是因為你的usb設備是新安裝的,且你沒有重啟計算機。你重啟一下計算機,再進行上述步驟,應該就可以了。
把 LibusbJava.dll 復制到 windows/system32 目錄下
這時,到達 ch.ntb.usb-0.5.9.jar 所在的目錄,運行: java -jar ch.ntb.usb-0.5.9.jar,這樣就會出來一個java swing做的窗口,如下圖。
當右鍵點擊倒數第二級的節點的時候,又會彈出新的窗口,在這個彈出窗口裡,你可以直接發送一些16進制的代碼給 usb 設備。但值得注意的是,這個窗口的代碼寫得有問題,其對16進制的代碼轉換為真正要發送的代碼時,轉換的是錯誤的代碼。這個錯誤可以自己下載源碼,更正即可。錯誤的類及方法是:
TestApp.java 中的方法:byte[] parseByteArray(String s);更正的代碼可以參考如下代碼:
Java代碼
重新編譯後,替換掉這個類,即可。
byte[] parseByteArray(String s) {
String[] hexs = s.split(" ");
byte[] bytes = new byte[hexs.length];
if(hexs.length > 0){
int i = 0;
for(String hex : hexs){
String s1 = hex.substring(2);
bytes[i] = (byte)(Integer.parseInt(s1, 16));
i++;
}
}
return bytes;
}
C. linux的U盤驅動源碼
根據你的描述,估計FUSE不適合你。
參考以下幾個文件吧(我的系統是DEBIAN LENNY)
localhost:/home/aaa/program# apt-cache search libusb
libusb-0.1-4 - userspace USB programming library
libusb-1.0-0 - userspace USB programming library
libusb-1.0-0-dev - userspace USB programming library development files
libusb-dev - userspace USB programming library development files
用apt-get source libusb下載過來的內如如下所示:
total 1688
-rw-r--r-- 1 500 500 2661 2005-02-14 acinclude.m4
-rw-r--r-- 1 500 500 244051 2006-03-04 aclocal.m4
drwxrwxrwx 2 500 500 4096 2006-03-04 apidocs
-rw-r--r-- 1 500 500 130 2004-04-22 AUTHORS
-rw-r--r-- 1 500 500 16833 2006-03-04 bsd.c
-rw-r--r-- 1 500 500 189 2004-01-28 ChangeLog
-rwxr-xr-x 1 500 500 3642 2004-03-12 compile
-rwxr-xr-x 1 500 500 42037 2004-04-12 config.guess
-rw-r--r-- 1 500 500 2467 2006-03-04 config.h.in
-rwxr-xr-x 1 500 500 30221 2004-04-12 config.sub
-rwxr-xr-x 1 500 500 746195 2006-03-04 configure
-rw-r--r-- 1 500 500 6777 2006-03-04 configure.in
-rw-r--r-- 1 500 500 26428 2004-01-28 COPYING
-rw-r--r-- 1 500 500 35685 2006-03-04 darwin.c
drwxr-xr-x 3 root root 4096 02-19 18:51 debian
-rwxr-xr-x 1 500 500 14841 2004-03-12 depcomp
-rw-r--r-- 1 500 500 15021 2006-03-04 descriptors.c
drwxrwxrwx 2 500 500 4096 02-19 18:49 doc
-rw-r--r-- 1 500 500 44099 2006-03-04 Doxyfile
-rw-r--r-- 1 500 500 44154 2006-02-07 Doxyfile.in
-rw-r--r-- 1 500 500 759 2004-01-28 error.c
-rw-r--r-- 1 500 500 716 2004-01-28 error.h
-rw-r--r-- 1 500 500 2043 2006-03-04 INSTALL.libusb
-rw-r--r-- 1 500 500 2063 2004-01-28 INSTALL.libusb.in
-rwxr-xr-x 1 500 500 9208 2004-03-12 install-sh
-rw-r--r-- 1 500 500 1267 2004-01-28 libusb-config.in
-rw-r--r-- 1 500 500 196 2005-02-15 libusb.pc.in
-rw-r--r-- 1 500 500 1290 2006-03-04 libusb.spec
-rw-r--r-- 1 500 500 1293 2006-03-04 libusb.spec.in
-rw-r--r-- 1 500 500 2248 2004-01-28 LICENSE
-rw-r--r-- 1 500 500 19148 2006-03-04 linux.c
-rw-r--r-- 1 500 500 3146 2005-02-03 linux.h
-rw-r--r-- 1 500 500 183730 2004-04-12 ltmain.sh
-rw-r--r-- 1 500 500 2220 2006-03-04 Makefile.am
-rw-r--r-- 1 500 500 34139 2006-03-04 Makefile.in
-rwxr-xr-x 1 500 500 10678 2004-03-12 missing
-rw-r--r-- 1 500 500 8 2004-01-28 NEWS
-rw-r--r-- 1 500 500 2546 2006-03-04 README
-rw-r--r-- 1 500 500 2556 2006-03-04 README.in
drwxrwxrwx 2 500 500 4096 2006-03-04 tests
-rw-r--r-- 1 500 500 6443 2006-03-04 usb.c
-rw-r--r-- 1 500 500 8367 2006-03-04 usb.h.in
-rw-r--r-- 1 500 500 1771 2006-03-04 usbi.h
-rw-r--r-- 1 500 500 13511 2006-03-04 usbpp.cpp
-rw-r--r-- 1 500 500 24428 2005-02-10 usbpp.h
可以從usb.c, usb.h.in入手來研究。
D. android編譯求助
1、安裝 JDK
2、安裝編譯所需包
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install build-essential u-boot-tools uboot-mkimage binutils-arm-linux-gnueabihf
$sudo apt-get install gcc g++ gcc-arm-linux-gnueabi gcc-arm-linux-gnueabihf g++-multilib
$sudo apt-get install cpp-arm-linux-gnueabihf libusb-1.0-0 libusb-1.0-0-dev wget fakeroot
$sudo apt-get install kernel-package zlib1g-dev libncurses5-dev build-essential
$sudo apt-get install texinfo texlive ccache zlib1g-dev gawk bison flex gettext uuid-dev
$sudo apt-get install ia32-libs git gnupg flex bison gperf build-essential zip
$sudo apt-get install curl libc6-dev x11proto-core-dev libx11-dev:i386 lib32ncurses5-dev
$sudo apt-get install libreadline6-dev:i386 mingw32 tofrodos python-markdown
$sudo apt-get install libxml2-utils xsltproc zlib1g-dev:i386 libgl1-mesa-dev
3、下載 Android 源碼包並解壓,兩個文件:
a20-android4.2_lichee.tar.gz
a20-android4.2_android.tar.gz
4、編譯:
lichee編譯通過,在編譯android時:
source build/envsetup.sh
lunch
選擇的是 sugar_cubietruck-eng
extract-bsp
make -j8