一、環境搭建:
1、ubuntu系統安裝
以下操作都是在ubuntu16.04基礎上進行操作的。具體的系統安裝不進行說明。可以有以下方案,具體根據個人情況進行安裝。
- win7下安裝虛擬機進行ubuntu系統安裝;
- win7+ubuntu雙系統;
- 純ubuntu系統;
2、配置安裝secbulk的下載環境
這里的安裝dnw其實就是從網站上下載【dnw4linux-master.zip】,並把這個文件解壓到一個目錄中。【下載地址: https://github.com/Qunero/dnw4linux】其中包含 secbulk
下載完代碼后,一定要閱讀里面的README
1)源碼說明:
本源代碼收集自網絡,經過整理和加入宏定義,使其適用於OK6410開發板;對
源碼進行了適當的注釋和錯誤糾正;同樣以GPL協議發布;
2)使用說明:
a、先在/home下新建一個mydrive(名字可以自己取)(mkdir /home/mydriver),
b、將dnw4linux-master.zip中的“secbulk_driver”文件夾復制到該“mydrive”文件夾中。
c、使用jadeny@jadeny-K42Jc:~$ dmesg檢查系統的設備信息。
[23767.867752] usb 2-1.1: Product: SEC S3C2410X Test B/D
[23767.867760] usb 2-1.1: Manufacturer: System MCU
[23767.868277] secbulk:secbulk probing...
[23767.868282] secbulk:bulk out endpoint found!
[23777.302060] usb 2-1.1: USB disconnect, device number 10
[23777.302145] secbulk:secbulk disconnected!
[23889.626700] usb 2-1.1: new full-speed USB device number 11 using ehci-pci
[23889.720193] usb 2-1.1: New USB device found, idVendor=5345, idProduct=1234(設備信息編號)
[23889.720199] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[23889.720202] usb 2-1.1: Product: SEC S3C2410X Test B/D
[23889.720205] usb 2-1.1: Manufacturer: System MCU
[23889.720545] secbulk:secbulk probing...
[23889.720548] secbulk:bulk out endpoint found!
jadeny@jadeny-K42Jc:~$
d、進入secbulk_driver子目錄,修改文件secbulk.c中的關於DOWNLOAD_USB_ID_MAJOR和DOWNLOAD_USB_ID_MINOR的宏定義,讓其與你的usb對應,可以通過lsusb命令查看獲得該id的信息;
如下所示:
#define SECBULK_MAJOR 102 #define SECBULK_MINOR 0 #define DRIVER_NAME "secbulk" #define BULKOUT_BUFFER_SIZE 512 #ifdef OK6410 #define DOWNLOAD_USB_ID_MAJOR 0x5345//0x04e8 #define DOWNLOAD_USB_ID_MINOR 0x1234 #else /* add your usb info if neccessary */ #define DOWNLOAD_USB_ID_MAJOR 0x5345//0x04e8 #define DOWNLOAD_USB_ID_MINOR 0x1234 #endif
e、使用make(在secbulk_driver下執行)。生成secbulk.ko模塊文件。
f、$ sudo insmod secbulk.ko ;加載該模塊到內核(注意:需要root權限)
加載后用dmesg命令可以看到模塊已經成功加載
[23889.720545] secbulk:secbulk probing...
[23889.720548] secbulk:bulk out endpoint found!
將secbulk.ko驅動設為自動加載:
h、直接執行make clean, 讓你的源碼目錄干干凈凈;
i、為了能讓設備啟動時自動加載進行如下修改。修改/etc/rc.local文件
先在住目錄建立mydriver目錄:mkdir ~/mydriver
將驅動放入自定義mydriver中:cp secbulk.ko ~/mydriver/
修改/etc/rc.d/rc.local文件,末尾加入: sudo insmod $HOME/secbulk.ko
注意: 將上面的$HOME替換成實際的絕對路徑,比如: /home/mydriver/secbulk_driver
注意,當前編譯好的dnw在32位linux可用,但是secbulk.ko驅動文件需要自己編譯必須同當前使用的內核的版本一致,內核版本升級后也需要重新編譯;
/××問題1×/ubuntu以下無法找到ttyUSB0,即使是文件還是命令都找不到。
在沒有接U轉串先,直接接U線是無法找到ttyUSB0。
/××檢查是否有u轉串×/
Linux下如何使用USB轉串口設備
對沒有串口的筆記本持有者來說,做硬件開發經常為沒有串口而煩惱,不過現在有了USB轉串口設備。但是新的問題又出現了,比如說對於Minicom下的PC機和目標機通信還是存在着一些配置問題,下面就說一下linux下USB轉串口的具體配置和問題:
注意: 默認情況下ubuntu已經安裝了USB轉串口驅動(pl2303)。
1、# lsmod | grep usbserial
如果有usbserial,說明系統支持USB轉串口。
usbserial 40960 1 ch341
2、插上USB轉串口,在終端輸入命令#dmesg | grep ttyUSB0,如果出現連接成功信息,則說明ubuntu系統已經識別該設備了。
3、在上面minicom的配置中設置Serial Device: /dev/ttyUSB0,重啟開發板,這樣基本上就可以正常使用minicom來打印串口信息了。
4、問題
如果經過上面的步驟minicom還是不能正常工作,出現如下錯誤提示:
# sudo minicom
minicom: cannot open /dev/ttyUSB0: 沒有該文件或目錄
這時可以嘗試換一個USB口,然后再次操作以上流程。 如果還是提示這個錯誤,那么可以使用下面的方法來解決。
/××解決方法×/
1、安裝usbmount $ sudo apt-get install usbmount 2、更改usbmount配置文件 $ sudo gedit /etc/usbmount/usbmount.conf 3、在打開的文件中找到FILESYSTEM,並在其中添加vfat,ntfs 4、FS_MOUNTOPTIONS這個選項里加入”"-fstype= vfat,iocharset=utf8,codepage=936,umask=000,users” 5、重啟udev $sudo /etc/init.d/udev restart 6、重啟Ubuntu $ sudo reboot 重啟之后即可識別USB。
注:重啟系統的時候請將開發板的U口先拔出,或則系統無法正常進入。
3、使用minicom將make生成的可執行文件復制到開發板的linux系統中(前提開發把bootload和linux以及下載進去。)主要是測試是否能夠通過minicom將文件復制到開發板中。
1)安裝minicom
sudo apt-get install minicom
2)配置minicom:
1 . 在終端中輸入minicom以啟動minicom;
2. 先按下Ctrl + a, 放開, 再按o, 出現配置菜單.
3. 選擇 Serial port setup, 此時所示圖標在“Change which setting”中,鍵入“A”,此時光標移到第A項對應處:串口COM1對應ttyS0, COM2對應ttyS1. (注意選擇)
具體的配置信息如下所示:
Serial port setup [Enter]
+-------------------------------------------------------------+
| A - Serial Device : /dev/ttyUSB0 |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Program -: |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-------------------------------------------------------------+
注意: 如果沒有使用USB轉串口,而是直接使用串口,那么Serial Device要配置為/dev/ttyS0。對波特率,數據位和停止位進行配置,鍵入“E”,波特率選為115200 8N1 (奇偶校驗無, 停止位1), 硬/軟件流控制分別鍵入“F”“G”並且都選NO.在確認配置正確之后,可鍵入回車返回上級配置界面,並將其保存為默認配置。(即save setup as dfl),之后重啟minicom是剛才配置生效,在連上開發板的串口線后,就可在minicom中打印正確的串口信息了。
注:
這時候可以打印串口的信息了,但是在通過串口用xmodem協議燒寫內核時會提示沒有xmodem協議。
所以還必須安裝軟件包:lrzsz
sudo apt-get install lrzsz
下次在輸入minicon 即可直接進入。
命令minicom是進入串口超級終端畫面,而minicom -s為配置minicom。
說明/dev/ttyS0 對應為串口0 為你連接開發板的端口。
注意:非正常關閉minicom,會在/var/lock下創建幾個文件LCK*,這幾個文件阻止了minicom的運行,將它們刪除后即可恢復
組合鍵的用法是:先按Ctrl+A組合鍵,然后松開這兩個鍵,再按Z鍵。另外還有一些常用的組合鍵。
(1)S鍵:發送文件到目標系統中;
(2)W鍵:自動卷屏。當顯示的內容超過一行之后,自動將后面的內容換行。這個功能在查看內核的啟動信息時很有用。
(3)C鍵:清除屏幕的顯示內容;
(4)B鍵:瀏覽minicom的歷史顯示;
(5)X鍵:退出mInicom,會提示確認退出。
3)配置文件所在目錄
Ctrl + A --> O
+-----[configuration]------+
| Filenames and paths |
| File transfer protocols -|
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
+--------------------------+
選擇"Filenames and paths"
+-----------------------------------------------------------------------+
| A - Download directory : /tmp |
| B - Upload directory : /tmp/demo_space |
| C - Script directory : |
| D - Script program : runscript |
| E - Kermit program : |
| F - Logging options |
| |
| Change which setting? |
+-----------------------------------------------------------------------+
(1)A - download 下載文件的存放位置(開發板 ---> PC)開發板上的文件將被傳輸到PC機上的/home/crliu目錄下。 (2)B - upload 從此處讀取上傳的文件(PC ---> 開發板)PC機向開發板發送文件,需要發送的文件在/tmp目錄下(PC機上的目錄)。做了此項配置后,每次向開發板發送文件時,只需輸入文件名即可,無需輸入文件所在目錄的絕對路徑
4)將開發板和pc通過usb線鏈接好后,minicom開啟成功。對開發板上,開發板運行uboot之后按空格鍵,窗口顯示。
+------------------------------------------------------------+
| Select Menu |
+------------------------------------------------------------+
| [0] Download & Run |
| [1] Download to flash |
| [2] Download From UART |
| [3] Boot My Application |
| [4] Boot Linux |
| [5] Boot Wince |
| [6] Erase Flash Partition |
| [7] Config parameters |
+------------------------------------------------------------+
選擇[4]進入linux系統。開發板啟動成功。
6)通過minicom將開發板切換到tmp下。並查看下面的文件,hello就是之前通過minicom下載進去的文件。
# cd /tmp
# ls
qtembedded-0 qtopia-0
#
7)通過minicom將hello文件復制到開發板的tmp路徑下。
在界面下,ctrl+A,Z進入功能界面選擇“ Minicom Command Summary ”,選擇s
+-------------------------------------------------------------------+ | Minicom Command Summary | | | | Commands can be called by CTRL-A <key> | | | | Main Functions Other Functions | | | | Dialing directory..D run script (Go)....G | Clear Screen.......C | | Send files.........S Receive files......R | cOnfigure Minicom..O | | comm Parameters....P Add linefeed.......A | Suspend minicom....J | | Capture on/off.....L Hangup.............H | eXit and reset.....X | | send break.........F initialize Modem...M | Quit with no reset.Q | | Terminal settings..T run Kermit.........K | Cursor key mode....I | | lineWrap on/off....W local Echo on/off..E | Help screen........Z | | Paste file.........Y Timestamp toggle...N | scroll Back........B | | Add Carriage Ret...U | | | | Select function or press Enter for none. | +-------------------------------------------------------------------+
選擇S,跳出以下界面,選擇zmodem。回車。
| zmodem |'
| ymodem |
| xmodem |
| kermit |
| ascii |
跳出文件選擇界面
ya+-------------------[Select one or more files for upload]-------------------+
ya|Directory: /tmp/demo_space |
VF| [..] |
Mo| hello |
Fr| |
in| |
st| |
mo| |
et| |
if| |
| |
Pl| |.
Wa| |
QD| |
| |
st| |
# | |
# | ( Escape to exit, Space to tag ) |
# +---------------------------------------------------------------------------+
選擇hello之后回車,開始將文件傳給開發板。
init star+-----------[zmodem upload - Press CTRL-C to quit]------------+
starting |Sending: hello |
mount: mo|sz: skipped: hello |
eth0: lin| |
ifconfig:|Transfer complete |
| |
Please pr| READY: press any key to continue... |tc/dict.
Warning: | |
QDir::rea+-------------------------------------------------------------+o
等待文件傳完之后。使用ls查看tmp下文件。多了一個hello(直接打印“hello”)
# # ls
hello qtembedded-0 qtopia-0
#
運行查看文件執行結果。
# ./hello
Hello World
#
文件傳輸完成。
**交叉編譯環境**
1)解壓 arm-linux-gcc-3.4.1.tar.bz2
#tar -jxvf arm-linux-gcc-3.4.1.tar.bz2
解壓過程需要一段時間,解壓后的文件形成了 usr/local/arm/3.4.1 文件夾,進入該文件夾,將arm文件夾拷貝到/usr/local/下
現在交叉編譯程序集都在/usr/local/arm/3.4.1/bin下面了
2)修改/etc/profile文件:
root@jadeny-K42Jc:~# sudo gedit /etc/profile(或則# vim /etc/profile)
增加路徑設置,在末尾添加如下內容,保存/etc/profile文件:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
3)刷新環境變量,不用重啟電腦:
root@jadeny-K42Jc:~# source /etc/profile
在使用source命令時會出現
jadeny@jadeny-K42Jc:~$ sudo source /etc/profile
sudo: source:找不到命令
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
這時候,則要進行如下操作
jadeny@jadeny-K42Jc:~$ sudo -s
root@jadeny-K42Jc:~# source /etc/profile
root@jadeny-K42Jc:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/arm/3.4.1/bin:/snap/bin:/usr/local/arm/3.4.1/bin
注:還有一種方法。但是操作始終沒有將環境搭好,之后才采用上面的方法。
root@jadeny-K42Jc:~# source /root/.bashrc
root@jadeny-K42Jc:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
4)檢查是否將路徑加入到PATH:
root@jadeny-K42Jc:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
顯示的內容中有/usr/local/arm/bin,說明已經將交叉編譯器的路徑加入PATH。至此交叉編譯環境安裝完成。
5)測試是否安裝成功
root@jadeny-K42Jc:/tmp/demo_space# arm-linux-gcc -v
Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs
Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm-linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 3.4.1
說明交叉編譯環境成功。
6)編譯hello,測試交叉編譯工具
root@jadeny-K42Jc:/tmp/demo_space# arm-linux-gcc hello.c -o hello
root@jadeny-K42Jc:/tmp/demo_space# ls
hello hello.c
生成了hello文件,說明交叉編譯環境是正常的。
***nfs*
/**問題*/
在電腦直接插入網線時ubuntu始終無法同開發板ping通,后來將wifi斷開,重新插拔以下網線就可以ping通了。
jadeny@jadeny-K42Jc:~$ ifconfig
ens5f5 Link encap:以太網 硬件地址 20:cf:30:2d:7d:2e
UP BROADCAST MULTICAST MTU:1500 躍點數:1
接收數據包:0 錯誤:0 丟棄:0 過載:0 幀數:0
發送數據包:0 錯誤:0 丟棄:0 過載:0 載波:0
碰撞:0 發送隊列長度:1000
接收字節:0 (0.0 B) 發送字節:0 (0.0 B)
中斷:32
有線正常之后
ens5f5 Link encap:以太網 硬件地址 20:cf:30:2d:7d:2e
inet 地址:192.168.1.106 廣播:192.168.1.255 掩碼:255.255.255.0
inet6 地址: fe80::a05:bfac:9596:9c81/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 躍點數:1
接收數據包:5 錯誤:0 丟棄:0 過載:0 幀數:0
發送數據包:35 錯誤:0 丟棄:0 過載:0 載波:0
碰撞:0 發送隊列長度:1000
接收字節:300 (300.0 B) 發送字節:4958 (4.9 KB)
中斷:32
后續增加系統的移植,dnw的操作等。。。。。。。。。。。。
注:內容通過參考網上相關介紹資料,再通過自身實際操作匯總。
