1. 程式人生 > >linux/ubuntu16.04搭建minicom的arm除錯環境

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.

  1. 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?

類似如下的狀態:
usb converter state
其中的ttyUSB? 每臺機子會不同,我這裡的就是ttyUSB0這個裝置了.

這樣的話,說明硬體驅動是沒問題的. 接下來就是minicom的安裝了.

2.安裝minicom

ubuntu很人性化,直接terminal中:

$ sudo apt-get install minicom

等待,ok.
然後檢查是否安裝成功

minicom

如圖即ok,接下來就是配置了.
這裡寫圖片描述

3.配置minicom

  1. 配置可以先進入minicom在設定選單中進行設定,也可使用命令minicom -s直接進入設定選單.
    這裡使用命令方式直接先設定吧
    進入後,選擇Serial port setup選項(操作就是很vim的操作方式,JKHL,也可以使用箭頭選擇啦, 回車確認).
    如下:
    這裡寫圖片描述

  2. 配置成如圖(要配置某一項在Change which setting? 後面輸入對應的代號就可以,如 輸入’A’, 設定串列埠裝置名)其中:

    A—-就是剛剛看到的串列埠裝置的檔名,我這裡是/dev/ttyUSB0;
    B—-當出現不當操作時,軟體會產生一個保護鎖檔案,這裡就是儲存的位置,這裡就預設吧;
    E—-與開發板通訊速率相匹配的波特率;
    F,G—最好設定為不要軟體/硬體流控制;

  3. 設定好後,回車,在configuration目錄下選擇Save setup as dfl將當前配置儲存到預設的配置檔案儲存目錄中,預設的是/etc/minicom/下,當然也可以儲存為其他檔案,選擇Save setup as ..即可.

  4. 最後退出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.binstart.elf.

下載除錯

  1. 首先通過轉換線連線arm和linux宿主機;
  2. 開啟剛剛正好的minicom$ sudo minicom
    注意: 這裡由於要訪問到/dev/ttyUSB0這個裝置檔案,因此需要root許可權哦.
  3. 然後軟體就會靜靜的等待arm的接入,開啟開發板的電源把.注意!
  4. 這裡一定要在上電後,迅速按回車,不要讓minicom自動載入arm核心, 因為要除錯我們的小程式嘛,所以要打斷載入程序,如下
    這裡寫圖片描述
  5. 熟悉的命令列狀態,但是這裡面是不能執行linux命令的,畢竟開發板上啥都沒有嘛.只有等待我們直接將程式碼載入到記憶體執行的.
  6. 然後使用命令loady 0x4000800這裡的0x40008000是我的編譯時在連結檔案中將程式碼放在了這個記憶體地址,因此我們這裡也需要將程式載入對應的記憶體地址.具體有關.lds檔案參見http://blog.csdn.net/ccccdddxxx/article/details/6845377
  7. 這時候軟體會等待使用者新增檔案
    FS4412 # loady 0x40008000
    ## Ready for binary (ymodem) download to 0x40008000 at 115200 bps...

  8. 這時候進入選單(ctrl+a, 再 z),選擇 sending files
    這裡寫圖片描述

  9. 在傳送檔案選項中,選擇編譯好的.bin檔案,就可以傳送到開發板 了,速度稍慢.
    這裡寫圖片描述

  10. 完成過後,提示如下

FS4412# loady 0x40008000                                                                                      
\## Ready for binary (ymodem) download to 0x40008000 at 115200 bps...                                           
CC## Total Size      = 0x00000044 = 68 Bytes

11.完成後,使用命令go 0x40008000到剛剛的程式碼處執行.

搞定.