@whycan 非常感谢,明白了
zjbxzf 发布的帖子
-
回复: 开发板启动疑问
@whycan 感谢晕哥解疑,nandflash呢?查资料三星的早期产品是有相关引脚配合brom来适配不同的nandflash。全志的nandflash是怎么适配的?
-
开发板启动疑问
如果系统从nandflash启动,那么在uboot之前需要从nandflash中读取启动代码到ram,soc的irom中应该会有nandflash的驱动程序,但市面上有多种不同厂家与型号的nandflash,irom是怎么适配不同型号的nandflash的,是规定支持几种flash还是通过引进或者有别的方式重新烧写irom代码支持对nandflash的适配。
-
kgdb调试内核模块无法进入断点
问题描述:用KGDB在线调试disp模块时总是进入不了disp_module_init函数内部,disp_prob内部也进不去。
在内核启动初期进入kgdb,
add symbol table from file "/smbshare/dragonboard/buildroot/target/dragonboard/rootfs/lib/modules/3.4.39/disp.ko" at
.text_addr = 0xbf000000
.bss_addr = 0xbf0e20d8
.data_addr = 0xbf02dad0
.devinit.text_addr = 0xbf023c3c
.exit.text_addr = 0xbf023e24
.gnu.linkonce.this_module_addr = 0xbf0e1f64
.init.text_addr = 0xbf0f4000
.note.gnu.build-id_addr = 0xbf023ee8
.pv_table_addr = 0xbf029b8c
.rodata_addr = 0xbf023fc0
.rodata.str1.1_addr = 0xbf0255ac
.strtab_addr = 0xbf0ff974
.symtab_addr = 0xbf0f4154
.text.unlikely_addr = 0xbf023ea8
__kcrctab_addr = 0xbf023f84
__ksymtab_addr = 0xbf023f0c
__ksymtab_strings_addr = 0xbf028dcb
__mcount_loc_addr = 0xbf028ed0
(y or n) y
Reading symbols from /smbshare/dragonboard/buildroot/target/dragonboard/rootfs/lib/modules/3.4.39/disp.ko...warning: section .strtab not found in /smbshare/dragonboard/buildroot/target/dragonboard/rootfs/lib/modules/3.4.39/disp.ko
warning: section .symtab not found in /smbshare/dragonboard/buildroot/target/dragonboard/rootfs/lib/modules/3.4.39/disp.ko
done.
(gdb) b disp_module_init
Breakpoint 4 at 0xbf000000: disp_module_init. (2 locations)
设置断点时发现有2个位置
(gdb) i b 4
Num Type Disp Enb Address What
4 breakpoint keep y <MULTIPLE>
breakpoint already hit 1 time
4.1 y 0xbf000000 in disp_sync_finish_process
at drivers/video/sunxi/disp/dev_disp.c:1687
4.2 y 0xbf0f4010 <init_module+16>查看源码
(gdb) list disp_module_init
1682
1683 return ret;
1684 }
1685
1686 static void __exit disp_module_exit(void)
1687 {
1688 __inf("disp_module_exit\n");
1689
1690 #ifdef CONFIG_HAS_EARLYSUSPEND
1691 unregister_early_suspend(&backlight_early_suspend_handler);
(gdb)
行号完全不对,向下移动了很多行,应该在1642行
全速运行停在下面位置
(gdb) c
Continuing.Breakpoint 4, 0xbf0f4010 in init_module ()
再全速就执行完了,根本进入不了函数内部。不知道问题出在哪里?