移植minicom到嵌入式系统

一、添加驱动

因项目需求,需要通过MT7628中提供的USB转出两路串口。硬件方面使用FT232实现。

内核中需要选择FT232的驱动,按照网上的方法即可实现。需要注意的是:除了要添加FT232的驱动还要添加USB总线控制驱动。

编译生成内核文件即可。

二、安装minicom

minicom的编译依赖ncurses和libiconv;

三者的都为开源软件,可从官网下载,我用到的分别为:

ncurses-5.7

libiconv-1.15

minicom-2.7.1

下面分别介绍三者的编译和使用:

1、ncurses编译

1)、解压源码

tar xvf ncurses-5.7.tar.gz

2)、进入解压得到的ncurses-5.7目录,创建一个shell文件并添加如下内容:

  #!/bin/bash 
  ./configure \
  CC=/opt/buildroot-gcc463/usr/bin/mipsel-buildroot-linux-uclibc-gcc \
  CXX=/opt/buildroot-gcc463/usr/bin/mipsel-buildroot-linux-uclibc-g++ \
  --prefix=/opt/tools/ncurses-5.7/install \
  --host=arm-linux \
  CPPFLAGS=-I/opt/buildroot-gcc463/usr/include \                                                                                                                                   
  LDFLAGS=-L/opt/buildroot-gcc463/usr/lib
  make

其中CC和CXX分别对应自己所需的交叉编译工具gcc和g++;

prefix用于指定编译完成后生成文件的安装目录,此处的install目录是我自己手动创建的;

CPPFLAGS用于指定编译时所需头文件的查找目录;

LDFLAGS用于指定编译时所需库文件的查找目录;

3)、如上操作完成后,为该shell文件添加可执行权限,例如我创建的shell命名为run,则执行:

chmod 766 run

4)、运行该shell,等待编译完成;

5)、执行make install,将生成的文件安装到指定目录,如上所述,我指定的安装目录为:

--prefix=/opt/tools/ncurses-5.7/install

2、编译libiconv

说明:多数网上教程中没有该步骤,但我自己在编译完成ncurses之后就开始编译minicom时提示
minicom.c:34:19: fatal error: iconv.h: No such file or directory

我通过find命令查找了解压得到的minicom和ncurses目录都未找到该文件,所以就自己下载了libiconv源码,并通过交叉编译工具编译得到了该库文件。

1)、解压源码

tar xvf libiconv-1.15.tar.gz

2)、进入解压得到的目录,在顶层目录手动创建install目录和shell文件并添加如下内容:

  #!/bin/bash 
  ./configure \
  CC=/opt/buildroot-gcc463/usr/bin/mipsel-buildroot-linux-uclibc-gcc \
  --prefix=/opt/tools/libiconv-1.15/install \                                                                                                                                      
  --host=arm-linux \
  CPPFLAGS=-I/opt/buildroot-gcc463/usr/include \
  LDFLAGS=-L/opt/buildroot-gcc463/usr/lib

3)、为该shell添加可执行权限并运行;

4)、如果在该步骤之后直接make,编译时会包如下错误信息

getprogname.c: In function 'getprogname':
getprogname.c:147:4: error: #error "getprogname module not ported to this OS"
Makefile:1127: recipe for target 'getprogname.o' failed

此时,则需要对./srclib/getprogname.c做如下修改:

将原来的:

 getprogname (void)
 {
 # if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME                /* glibc, BeOS */
...
}

改为:

getprogname (void)
 {
 # if ARM
      char strProcessPath[1024] = {0};
      if(readlink("/proc/self/exe", strProcessPath,1024) <=0)
      {
          return NULL;
      }
      char *strProcessName = strrchr(strProcessPath, '/');  
      if(strProcessName)
      {
          size_t nameLen = strlen(strProcessName);
          char* namecopy = malloc(nameLen + 1);
          if (namecopy)
          {
              namecopy[nameLen] = 0;
              return memcpy(namecopy, strProcessName, nameLen);
          }
      }
  
      return NULL;
 # elif HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME                /* glibc, BeOS */
...
}

另在该文件中添加:

 #define ARM 1

5)、做完如上操作之后,执行make;

6)、等编译完成,执行make install;

3、编译minicom

1)、解压源码:

tar xvf minicom-2.7.1;

2)、进入解压得到的目录,在顶层目录手动创建install目录和shell文件并添加如下内容:

   #!/bin/bash 
   ./configure \
           CC=/opt/buildroot-gcc463/usr/bin/mipsel-buildroot-linux-uclibc-gcc \
           --prefix=/opt/tools/minicom-2.7.1/install \
           --host=arm-linux \
           CPPFLAGS=-I/opt/tools/ncurses-5.7/install/include/ncurses \
           CPPFLAGS=-I/opt/tools/ncurses-5.7/include \                                                                                                                                      
           CPPFLAGS=-I/opt/tools/libiconv-1.15/install/include/ \
           LDFLAGS=-L/opt/tools/ncurses-5.7/install/lib\
           LDFLAGS=-L/opt/tools/libiconv-1.15/install/lib

3)、为该shell添加可执行权限并运行;

4)、找到生成的src/Makefile,在其中添加ncurses静态库,修改方法如下:

修改:

 minicom_LDADD =  $(LIBICONV) $(MINICOM_LIBPORT) $(LOCKDEV_LIBS)
为:
 minicom_LDADD = /opt/tools/ncurses-5.7/lib/libncurses.a $(LIBICONV) $(MINICOM_LIBPORT) $(LOCKDEV_LIBS)

5)、之后执行make、makeinstall即可。

6)、查看install目录下是否有minicom。

三、将minicom在开发板上运行

经过以上步骤,我们已得到所需的minicom工具,之后就是在开发板上使用之。







  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值