概述
瑞芯微rv1106/1109 linux 内核 GDB调试环境的搭建
- 说明
- GDB环境的准备
- 遇到的问题1:
- 遇到的问题2
- 遇到的问题3
- KGDB环境的准备
- 步骤1
- 步骤2
- 进行调试
- 可能遇到的问题
- 问题1
- 问题2
- 注意事项
说明
在这之前只在qmenu中调试过内核,没有在真实的板上调试过。
本文记录rv1109 linux 内核GDB调试环境的搭建过程中遇到的问题。
SDK使用的是rk官方的。
串口波特率荣品从1500000 改为115200
GDB环境的准备
遇到的问题1:
查看gdb的环境是否配置正确,进入SDK包kernel 目录,执行
../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gdb vmlinux
结果出现如下错误
Traceback (most recent call last):
File "/usr/lib/python2.7/site.py", line 554, in <module>
main()
File "/usr/lib/python2.7/site.py", line 536, in main
known_paths = addusersitepackages(known_paths)
File "/usr/lib/python2.7/site.py", line 272, in addusersitepackages
user_site = getusersitepackages()
File "/usr/lib/python2.7/site.py", line 247, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/usr/lib/python2.7/site.py", line 237, in getuserbase
USER_BASE = get_config_var('userbase')
File "/usr/lib/python2.7/sysconfig.py", line 587, in get_config_var
return get_config_vars().get(name)
File "/usr/lib/python2.7/sysconfig.py", line 533, in get_config_vars
_init_posix(_CONFIG_VARS)
File "/usr/lib/python2.7/sysconfig.py", line 417, in _init_posix
from _sysconfigdata import build_time_vars
File "/usr/lib/python2.7/_sysconfigdata.py", line 6, in <module>
from _sysconfigdata_nd import *
ImportError: No module named _sysconfigdata_nd
这里浓度切换python 版本,从3.8切换到2.7也还是出错
sudo update-alternatives --config python
有 2 个候选项可用于替换 python (提供 /usr/bin/python)。
选择 路径 优先级 状态
------------------------------------------------------------
0 /usr/bin/python2.7 2 自动模式
* 1 /usr/bin/python2.7 2 手动模式
2 /usr/bin/python3.8 1 手动模式
解决办法
sudo ln -fs /usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata.py /usr/lib/python2.7/
sudo ln -fs /usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.py /usr/lib/python2.7/
遇到的问题2
提示找不到libpython2.7.so.1.0 的库,搜索了/usr/目录下没有对应的库
解决方法,先用ldd命令查看还缺哪些库
ldd ../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gdb
然后在buildroot目录下查找名为libpython2.7.so.1.0的库,再export 环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:xxx对应的库路径
遇到的问题3
python配置问题,报错信息发下
symbol lookup error: ../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gdb: undefined symbol: PyUnicodeUCS4_FromEncodedObject
解决办法
1.buildroot编译配置时 指定,建议使用buildroot配置gdb,把python相关的功能加上
--enable-unicode=ucs4
或者手动重新编译python2.7
./configure --enable-shared --enable-ipv6 --enable-unicode=ucs4 --with-system-ffi --with-threads
make -j 16
然后再把问题2中的export 路径 (export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:xxx对应的库路径) 改为手动编译的python路径。
KGDB环境的准备
步骤1
内核的配置
CONFIG_KGDB_KDB 不用打开
CONFIG_KGDB_SERIAL_CONSOLE 要打开
CONFIG_DEBUG_INFO 也需要
步骤2
内核启动参数的配置
内核设置树中设置
chosen {
bootargs = "loglevel=7 earlycon=uart8250,mmio32,0xff570000 console=ttyFIQ0 initcall_debug=1 kgdboc=ttyFIQ0,115200 kgdbcon root=PARTUUID=614e0000-0000 rootfstype=ext4 rw rootwait snd_aloop.index=7 kgdbwait";
};
这里波形率如果是150000 启动gdb时会报错。
解释:
kgdb over serial console (简称 kgdboc)
kgdbcon 是连接gdb时printk有用
要增加kgdbwait
进行调试
按上述配置后,烧入程序,进行板上内核,进入kgdb调试
在PC上执行
../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gdb vmlinux
(gdb) set serial baud 115200
(gdb) target remote /dev/ttyUSB0
Remote debugging using /dev/ttyUSB0
就可以进行行调试
可能遇到的问题
问题1
出现如下报错
Continuing.
[ 89.574759] random: fast init done
[ 89.575523] iommu: Adding device ffb00000.vop to group 0
[ 89.611604] rockchip-vop ffb00000.vop: Linked as a consumer to ffb00f00.iommu
[ 89.632529] random: crng init done
Reply contains invalid hex digit 84
(gdb) continue
Cannot execute this command while the selected thread is running.
(gdb)
注意random: crng init done 文件系统找不到时会报这样的错误,这里是因为earlycon与后面的ttyfiq衔接的问题导致的。
解决办法
earlycon=uart8250,mmio32,0xff570000
备注:不加上述不进行调试也可以正常启动。
问题2
Reply contains invalid hex digit 105
虽要加上
initcall_debug=1
注意事项
1.在调试时不要再通过串口连接开发板,否则会出现通信错误。
2.调试时不能接屏,否则会出现/dev/ttyUSB0: Device or resource busy.
最后
以上就是文艺小霸王为你收集整理的Rv1109内核调试说明的全部内容,希望文章能够帮你解决Rv1109内核调试说明所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复