Firefly开源社区

12
发表新贴
打印 上一主题 下一主题

[技术讨论] 求助:3566 kernel/System.map 中__initcall_7s函数指针表含无名非法指针导致跑飞

20

积分

0

威望

0

贡献

技术小白

积分
20

求助:3566 kernel/System.map 中__initcall_7s函数指针表含无名非法指针导致跑飞

发表于 2022-5-11 17:34:37      浏览:13352 | 回复:15        打印      只看该作者   [复制链接] 楼主
  • 固件类型: 自行编译的固件
  • SDK包名称: android11
  • SDK更新到哪个COMMIT: 2022-04-16 00:00:00
  • SDK修改内容: 学习阶段,mk config dts改了很多
  • Log日志: log.txt
问题描述及复现步骤:
do_initcall执行到7s阶段跑飞,查看kernel/System.map文件中__initcall_7s函数指针表格部分片段如下:
...

ffffff8009889e3c t __initcall_rockchip_clocks_loader_unprotect7s
ffffff8009889e40 t __initcall_mali_module_init7s
(此处本应有一个ffffff8009889e44函数指针,但此处缺失,do_initcall执行到这一项非法指针就跑飞了)
ffffff8009889e48 t __initcall_of_platform_sync_state_init7s
ffffff8009889e4c t __initcall_alsa_sound_last_init7s
...

搜索kernel所有源码,把所有late_initcall_sync都注释掉,__initcall7s已清空,实际结果如下,还是有一项无名非法指针:
ffffff8009889e44 T __initcall7s_start
ffffff8009889e48 T __con_initcall_start(由于__initcall7s_没有任何指针,此处应为44,不是48)
ffffff8009889e48 T __initcall_end(由于__initcall7s_没有任何指针,此处应为44,不是48)

请教:什么样的错误会导致kernel编译出这种结果?如何解决这个问题?


log.txt

1.4 KB, 下载次数: 3, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

发表于 2022-5-12 09:27:44        只看该作者  沙发
1. 不修改SDK,编译的固件有没有问题?
2. 根据自己的修改,一点一点撤销修改,排查原因。
回复

使用道具 举报

20

积分

0

威望

0

贡献

技术小白

积分
20
发表于 2022-5-12 09:37:36        只看该作者  板凳
sdk源码重新解压,不做任何修改,直接编译3566 roc pc,生成的system.map也有同样的问题
bundle是0416的,我用旧的bundle再试一次
回复

使用道具 举报

发表于 2022-5-12 11:16:27        只看该作者  地板
本帖最后由 firefly_zhongw 于 2022-5-12 11:27 编辑

1. 最新的SDK应该是:对应 bundle 的最新 commit 为 98ba077b368738f17996e8ef2e5df75e8df2bc37
2. 第一次解压SDK更新后,进行一次完整编译(不要只单独编译kernel),并烧录固件,不要用很旧的固件只单独烧录 boot.img
  1. ./FFTools/make.sh -d rk3566-roc-pc -j8 -l rk3566_roc_pc-userdebug
  2. ./FFTools/mkupdate/mkupdate.sh -l rk3566_roc_pc-userdebug
复制代码
3. 接调试串口,从上电到异常,提供完整的log信息,不要只提供部分

回复

使用道具 举报

20

积分

0

威望

0

贡献

技术小白

积分
20
发表于 2022-5-12 11:32:35        只看该作者  5#
firefly_zhongw 发表于 2022-5-12 11:16
1. 最新的SDK应该是:对应 bundle 的最新 commit 为 98ba077b368738f17996e8ef2e5df75e8df2bc37
2. 第一次 ...

我的电脑编译安卓要5个小时,所以只编译了uboot和kernel,用最新和上一版的bundle都一样结果
编译安卓会影响到kernel目录下的system.map吗?
回复

使用道具 举报

20

积分

0

威望

0

贡献

技术小白

积分
20
发表于 2022-5-12 11:35:40        只看该作者  6#
firefly_zhongw 发表于 2022-5-12 11:16
1. 最新的SDK应该是:对应 bundle 的最新 commit 为 98ba077b368738f17996e8ef2e5df75e8df2bc37
2. 第一次 ...

干净的SDK编译完看kernel的system.map就不对
ffffff800994be30 T __initcall7s_start
ffffff800994be30 t __initcall_clear_boot_tracer7s
ffffff800994be34 t __initcall_rockchip_csi2_dphy_clr_unready_dev7s
ffffff800994be38 t __initcall_clk_disable_unused7s
ffffff800994be3c t __initcall_rockchip_pd_keepon_release7s
ffffff800994be40 t __initcall_rockchip_pm_drv_register7s
ffffff800994be44 t __initcall_regulator_init_complete7s
ffffff800994be48 t __initcall_rockchip_clocks_loader_unprotect7s
ffffff800994be4c t __initcall_mali_module_init7s
ffffff800994be50 t __initcall_sensor_mod_init7s
ffffff800994be54 t __initcall_rkisp1_clr_unready_dev7s
ffffff800994be58 t __initcall_rkisp_clr_unready_dev7s
(注:此处缺ffffff800994be5c)
ffffff800994be60 t __initcall_of_platform_sync_state_init7s
ffffff800994be64 t __initcall_alsa_sound_last_init7s
ffffff800994be68 T __con_initcall_start
ffffff800994be68 T __initcall_end
回复

使用道具 举报

发表于 2022-5-12 11:37:59        只看该作者  7#
本帖最后由 firefly_zhongw 于 2022-5-12 11:48 编辑

1. 编译步骤是什么?
2. 烧录最新的公版固件有没有问题?
3. 接调试串口提供完整的log
4. 如果SDK没有进行过完整的编译,请先进行完整的编译,详细看维基教程 https://wiki.t-firefly.com/zh_CN ... t-img-yu-dao-wen-ti
回复

使用道具 举报

20

积分

0

威望

0

贡献

技术小白

积分
20
发表于 2022-5-12 12:25:45        只看该作者  8#
firefly_zhongw 发表于 2022-5-12 11:37
1. 编译步骤是什么?
2. 烧录最新的公版固件有没有问题?
3. 接调试串口提供完整的log

编译步骤:
./FFTools/make.sh -d rk3566-roc-pc -j8 -l rk3566_roc_pc-userdebug
编译到Kernel完成后,就查看kernel目录下最新生成的system.map,发现有问题,就没再继续编译安卓(要5个小时),也没有烧录运行

看了kernel源码do_initcall的过程,如果system.map有这样的问题,do_initcall_level_7必定跑飞,除非编完Kernel继续编译安卓会修改kernel以及kernel目录下的system.map,请问能确认这一点吗?

白天电脑还要做别的,等晚上睡觉之前启动完整编一个安卓,明早起来看看
回复

使用道具 举报

20

积分

0

威望

0

贡献

技术小白

积分
20
发表于 2022-5-13 09:35:36        只看该作者  9#
firefly_zhongw 发表于 2022-5-12 11:16
1. 最新的SDK应该是:对应 bundle 的最新 commit 为 98ba077b368738f17996e8ef2e5df75e8df2bc37
2. 第一次 ...

1.源码:按照以下这个页面的方法解压SDK,得到commit 为 98ba077b368738f17996e8ef2e5df75e8df2bc37

https://wiki.t-firefly.com/zh_CN/ROC-RK3566-PC/compile_android11.0_firmware.html

2.编译:
./FFTools/make.sh -d rk3566-roc-pc -j8 -l rk3566_roc_pc-userdebug
./FFTools/mkupdate/mkupdate.sh -l rk3566_roc_pc-userdebug

3.烧片:firmware选择ROC-RK3566-PC_Android11_HDMI_220513.img,eraseflash后upgrade

4.运行:调试口日志显示执行到以下位置死机:
[    2.040135] rockchip-csi2-dphy0: No link between dphy and sensor
[    2.040153] rkisp-vir0: update sensor failed
[    2.042833] v�

对应system.map的initcalls7为:
ffffff800995cedc t __initcall_sensor_mod_init7s
ffffff800995cee0 t __initcall_rkisp1_clr_unready_dev7s
ffffff800995cee4 t __initcall_rkisp_clr_unready_dev7s
(此处缺失ffffff800995cee8,执行到这个非法函数指针后死机)
ffffff800995ceec t __initcall_of_platform_sync_state_init7s
ffffff800995cef0 t __initcall_alsa_sound_last_init7s
log_map.zip (958.52 KB, 下载次数: 1)


5. 日志:调试口日志log.txt以及kernel/System.map文件见附件

感谢指导!

回复

使用道具 举报

发表于 2022-5-13 09:42:15        只看该作者  10#
本帖最后由 firefly_zhongw 于 2022-5-13 09:53 编辑

1. ROC-RK3566-PC这个板子的硬件是否有改动过?
2. 烧录官网最新的固件是否正常?
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表