海思kernel异常反汇编定位

加载驱动时候内核打印报错

PC is at ssp_lcd_ioctl+0x5c/0x84 [hi_ssp_ota5182]
LR is at do_vfs_ioctl+0xb0/0x8ec
pc : [<bf8aa364>]    lr : [<c01f031c>]    psr: 80000013
sp : ccbbdef8  ip : 00000003  fp : b1efede4
r10: 00000000  r9 : ccbbc000  r8 : b1efedc8
r7 : 0000000b  r6 : cca80b40  r5 : cc820030  r4 : b1efedc8
r3 : 00000002  r2 : b1efedc8  r1 : 00000003  r0 : cca80b40
Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
Control: 10c5383d  Table: 2b82806a  DAC: 00000051
Stack: (0xccbbdef8 to 0xccbbe000)
dee0:                                                       b1efedc8 c01f031c
df00: 00000001 c0362ad4 ffff9455 c0a04008 27a08d90 0bec8550 00000000 0000c350
df20: 00000000 00000001 00000000 c0173168 ccbbdf30 ca6a1f30 00000000 00000000
df40: ea90fbcd 00000005 ea90387d 00000005 c0172a18 cedd4ba0 000000

我们可以通过内核镜像文件反汇编来找到这个地址。内核编译完成后,会在内核代码根目录下生成vmlinux文件,我们可以通过以下命令来反汇编:

arm-himix200-linux-objdump -Dz  -S vmlinux >linux.dump

值得注意的是,arm-himix200-linux-objdump的参数-S表示尽可能的把原来的代码和反汇编出来的代码一起呈现出来,-S参数需要结合arm-himix200-linux-gcc编译参数-g,才能达到反汇编时同时输出原来的代码。所以,我在linux内核代码根目录的Makefile中增加-g编译参数:

KBUILD_CFLAGS   := -g -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
     -fno-strict-aliasing -fno-common \
     -Werror-implicit-function-declaration \
     -Wno-format-security \
     -fno-delete-null-pointer-checks

修改Makefile后,重新编译内核即可

海思(HiSilicon)是华为的半导体公司,其提供的麒麟芯片内嵌了自研的内核(Kernel),主要用于嵌入式系统和移动设备。在海思内核中开启IPv6支持,需要在内核配置阶段启用相应的IPv6模块。以下是基于Linux内核的通用指导,因为海思内核基于Linux内核进行定制。 1. 首先,您需要获取海思内核的源代码,通常这部分工作需要您有相应的授权和访问权限。 2. 解压并进入内核源代码目录,然后运行配置工具,根据您的硬件平台选择适合的配置文件进行配置。如果是命令行操作,可以使用以下命令: ``` make menuconfig ``` 3. 在配置菜单中找到“Networking support” -> “Networking options” -> “IPv6: enable IPv6 support”,将此选项从默认的“n”(不选中)改为“m”(模块化)或“y”(编译进内核)。 4. 如果您的系统需要支持IPv6的一些特定功能,您可能还需要进一步开启相关的子选项,比如路由、RA(Router Advertisement)等。 5. 配置完成后,保存配置并退出。 6. 编译内核。具体编译步骤取决于您的开发环境和配置,可能会包含如下命令: ``` make ``` 7. 将编译好的内核镜像和模块安装到您的设备上。 8. 重启设备,并在启动时确保内核已经加载了IPv6模块。 注意:上述步骤是通用的指导,具体到海思内核可能会有所不同,需要参考海思提供的开发文档和工具链来完成操作。如果海思提供了特定的配置工具或流程,请遵循其官方文档的指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值