linux/ubuntu16.04搭建minicom的arm除錯環境
linux下搭建minicom實現arm除錯
個人覺得windows下的超級中斷不是好用,而且本人在linux下開發,沒有使用虛擬機器,因此需要在linux配置除錯環境,這裡記錄一下.
工具
- ubuntu16.04
- minicom
- usb轉串列埠線 HL-340
- arm開發板
這裡主要是實現通過minicom在ubuntu下通過USB轉串列埠線實現程式的燒錄和除錯.
步驟
1.檢查系統環境配置
插上串列埠線, 檢查一下os是否能夠識別出usb埠的裝置,就是我們使用的串列埠線HL-340.
- terminal輸入命令
$ lsmod
Module Size Used by
.......
ch341 16384 0
usbserial 53248 1 ch341
可以看到,這裡是能夠識別的,記住,這裡是在ubuntu16.04環境下的,ubuntu12.04測試也可以,,預設是可以識別的,不像windows還要轉一些驅動.
2.檢視快取中的,看看對應的usb裝置是否已經被系統識別.
$dmesg
......
ch341-uart converter detected
ch341-uart converter now attached to ttyUSB?
類似如下的狀態:
其中的ttyUSB? 每臺機子會不同,我這裡的就是ttyUSB0這個裝置了.
這樣的話,說明硬體驅動是沒問題的. 接下來就是minicom的安裝了.
2.安裝minicom
ubuntu很人性化,直接terminal中:
$ sudo apt-get install minicom
等待,ok.
然後檢查是否安裝成功
minicom
如圖即ok,接下來就是配置了.
3.配置minicom
配置可以先進入minicom在設定選單中進行設定,也可使用命令
minicom -s
直接進入設定選單.
這裡使用命令方式直接先設定吧
進入後,選擇Serial port setup
選項(操作就是很vim的操作方式,JKHL,也可以使用箭頭選擇啦, 回車確認).
如下:
配置成如圖(要配置某一項在Change which setting? 後面輸入對應的代號就可以,如 輸入’A’, 設定串列埠裝置名)其中:
A—-就是剛剛看到的串列埠裝置的檔名,我這裡是
/dev/ttyUSB0
;
B—-當出現不當操作時,軟體會產生一個保護鎖檔案,這裡就是儲存的位置,這裡就預設吧;
E—-與開發板通訊速率相匹配的波特率;
F,G—最好設定為不要軟體/硬體流控制;設定好後,回車,在
configuration
目錄下選擇Save setup as dfl
將當前配置儲存到預設的配置檔案儲存目錄中,預設的是/etc/minicom/
下,當然也可以儲存為其他檔案,選擇Save setup as ..
即可.- 最後退出minicom即可,搞定.
整一個測試程式搞一下呢…
原始碼
//test.S
.global _start
_start:
b reset
reset:
mrs r0, cpsr
bic r0, r0, #0x1f
orr r0, r0, #0xd3
msr cpsr, r0
init_stack:
@svc
mov sp, r0 @svc_sp 1k
sub r0, #1024
mov sp, r0
test:
@set the output
ldr r2, =0x11000000 @base addr
mov r3, #0x1 @value
mov r3, r3, lsl#28 @focus on con_7
str r3, [r2, #0x0c40] @set GPX2CON[7]=0X01
@set output high
ldr r2, =0x11000000
mov r3, #0x1
mov r3, r3, lsl #7
str r3, [r2, #0x0c44]
nop
//”Makefile”
all:
arm-linux-gcc start.S -o start.o -c
arm-linux-ld start.o -o start.elf -Tstart.lds
arm-linux-objcopy -O binary -S start.elf start.bin
//start.lds
ENTRY(_start)
SECTIONS
{
. = 0x40008000;
.text :
{
*(.text)
}
.data :
{
*(.data)
}
.bss :
{
*(.bss)
}
}
然後,make一下咯. 生成好了二進位制的檔案start.bin
和start.elf.
下載除錯
- 首先通過轉換線連線arm和linux宿主機;
- 開啟剛剛正好的minicom
$ sudo minicom
注意: 這裡由於要訪問到/dev/ttyUSB0這個裝置檔案,因此需要root許可權哦. - 然後軟體就會靜靜的等待arm的接入,開啟開發板的電源把.注意!
- 這裡一定要在上電後,迅速按回車,不要讓minicom自動載入arm核心, 因為要除錯我們的小程式嘛,所以要打斷載入程序,如下
- 熟悉的命令列狀態,但是這裡面是不能執行linux命令的,畢竟開發板上啥都沒有嘛.只有等待我們直接將程式碼載入到記憶體執行的.
- 然後使用命令
loady 0x4000800
這裡的0x40008000是我的編譯時在連結檔案中將程式碼放在了這個記憶體地址,因此我們這裡也需要將程式載入對應的記憶體地址.具體有關.lds檔案參見http://blog.csdn.net/ccccdddxxx/article/details/6845377 這時候軟體會等待使用者新增檔案
FS4412 # loady 0x40008000
## Ready for binary (ymodem) download to 0x40008000 at 115200 bps...
這時候進入選單(ctrl+a, 再 z),選擇 sending files
在傳送檔案選項中,選擇編譯好的.bin檔案,就可以傳送到開發板 了,速度稍慢.
完成過後,提示如下
FS4412# loady 0x40008000
\## Ready for binary (ymodem) download to 0x40008000 at 115200 bps...
CC## Total Size = 0x00000044 = 68 Bytes
11.完成後,使用命令go 0x40008000
到剛剛的程式碼處執行.
搞定.