linux/ubuntu16.04搭建minicom的arm调试环境

ARM 194浏览


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即可,搞定.

整一个测试程序搞一下呢…

源代码

可以直接可以下载:
https://github.com/Michael-Jay/arm_test.git

//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到刚刚的代码处运行.

搞定.