linux pty 做远程调试,busybox制作及移植ssh和gdb支持ccs9调试--Apple的学习笔记

前言

由于我要进入驱动及中间件应用开发,仅gdb远程调试没有界面,不方面,所以还是想用有界面的比如ccs9或者vscode。那么需要在开发板支持gdbserver和sshd服务器。

那么问题来了buildroot默认使用uclib无法支持gdbserver的编译。我把原来tisdk自带的编译出来的gdbserver放入buildroot文件系统是无法运行的。所以放弃uclib编译的文件系统。正好尝试下自己手工建立一个busybox小的文件系统,此时交叉编译器就可以直接用tisdk提供的glibc交叉编译器咯~

1.busybox文件系统制作

busybox编译参考《正点原子的教程》还是很容易的。

2.ssh选择(openssh or dropbear)

但是我不想编译ssh和gdb,直接将tisdk的lib中的库copy来。结果gdbserver是可以使用的。但是tisdk使用的是轻量级的dropbear。但是dropbear我有一个过不去的坎pam_start() failed,导致密码无法通过。

最后我选择自己交叉编译openssh,然后移植到文件系统中。

3.编译openssh

Zlib交叉编译

下载最新版

此为源码路径root@applecaiHP:/home/applecai/studybr/mytools/zlib/zlib-1.2.11# 在zlib文件夹下建立了build安装路径。

a.export PATH=/home/applecai/bbb/ti-processor-sdk-linux-am335x-evm-06.01.00.08/linux-devkit/sysroots/x86_64-arago-linux/usr/bin:$PATH

b.export CC=arm-linux-gnueabihf-gcc

c../configure --prefix=./../build/

d.make

e.make install

15aeb81778d1

image.png

Openssh

重开一个环境,否则上面的CC有污染。

1.export PATH=/home/applecai/bbb/ti-processor-sdk-linux-am335x-evm-06.01.00.08/linux-devkit/sysroots/x86_64-arago-linux/usr/bin:$PATH

2../Configure linux-armv4 no-asm shared no-async --prefix=/home/applecai/studybr/mytools/openssl/build CROSS_COMPILE=arm-linux-gnueabihf-

3.make

4.make install

成功

15aeb81778d1

image.png

openssh

1)./configure --host=arm-linux-gnueabihf --with-libs --with-zlib=/home/applecai/studybr/mytools/zlib/build --with-ssl-dir=/home/applecai/studybr/mytools/openssl/build --disable-etc-default-login CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar

2)make

成功

4.参考第B2章节设置文件系统。最后输入如下命令运行sshd。

/sbin/sshd(之后要加入到启动脚本作为后台运行,暂时不添加,因为random: ssh: uninitialized urandom read (32 bytes read)问题没有解决,它要阻塞3分钟)

4.使用ssh

bb black开发板上busybox是面密码登录的。所以先设置root密码

输入命令passwd root,然后输入密码

最后修改inittab。注释掉askfirst那行,否则是免密登录。

修改前console::askfirst:-/bin/sh

修改后console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL

然后就可以通过用户名+密码方式登录。

subl /etc/ssh/sshd_config在开发中哦,支持root登录。找到#PermitRootLogin no将其修改为PermitRootLogin yes, 把PasswordAuthentication设成yes。

ubuntuPC上输入命令

ssh root@xxx.xxx.xxx.xx然后第一次需要输入yes,再输入bb black开发板密码。

5.过程中遇到比较消耗时间的问题1

ubuntu输入密码时候,提示

PTY allocation request failed on channel 0。

原因是使用的ptmx设备没有在/dev环境下

解决方法:rcS启动脚本添加(我之前有添加如下3行,后来被我删除了,原来是有用的)

mount -a

mkdir /dev/pts -p

mount -t devpts devpts /dev/pts

6.过程中遇到比较消耗时间的问题2

15aeb81778d1

image.png

为什么说我密码过期,我刚刚设置的呀!原来是默认date为1970年导致的。我将date设置正确后,然后重新修改root的密码,此时保存密码的时候也保存了正确的时间。

15aeb81778d1

image.png

然后ubuntuPC能够连接上bb black开发板咯~

15aeb81778d1

image.png

7.ccs9远程调试环境搭建

点击debug后提示缺少sftp-server。

原因是sftp-server服务没有启动。

解决方法:Sshd_config中修改sftp_server的路径。当前在/usr/local/xxx下面

Subsystem sftp /usr/lib/openssh/sftp-server

然后提示没有找到调试文件,我需要将编译出来的二进制文件拖动到开发板对应路径中。解决2个小问题后,可以单步调试咯~

15aeb81778d1

image.png

至此自制文件系统也能支持远程gdb及ssh服务器,并且还是支持ccs9调试。好有成就感呀!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值