Linux ARM 调试记录
2012-9-10 晚故障现象:在启动内核时,串口中断输出提示信息 Warning: unable to open an initial console.Failed to execute /linuxrc.??Attempting defaults...
原因:参数传入问题。跟nandflash分区有关,查看内核中的nand分区表,确定文件系统位置正确修改arch/arm/plat-s3c24xx/common-smdk.c时static struct mtd_partition smdk_default_nand_part[] = {#if defined(CONFIG_64M_NAND)[0] = {.name= "boot",.offset= 0,.size= SZ_1M错误原因将.offset = 0,.size = SZ_1M,写成了.size = 0,.offset = SZ_1M,这样就造成了Nand的分区与文件系统不一致,出现问题,文件系统就不能到指定的正确地址执行/linuxrc,},[1] = {.name= "kernel",.offset= SZ_1M + SZ_128K,.size= SZ_4M,},[2] = {.name= "yaffs2",.offset= SZ_1M + SZ_128K + SZ_4M,.size= SZ_64M - SZ_4M - SZ_1M - SZ_128K,}#elif defined(CONFIG_256M_NAND)[0] = {.name= "boot",.offset= 0,.size = SZ_1M,},[1] = {.name= "kernel",.offset= SZ_1M + SZ_128K,.size= SZ_4M,},[2] = {.name= "yaffs2",.offset= SZ_1M + SZ_128K + SZ_4M,.size= SZ_256M - SZ_4M - SZ_1M - SZ_128K,}#endif};
调试总结(心得)在Linux系统中,bootloader kernel rootfs 在NandFlash中的存放位置是由开发者定义的。如果三者之间的一些交互参数的存放地址不一致,就会导致各自采集不到相应的信息。从而导致系统不工作。在Linux中Nand的分区表至关重要。
二、故障现象:can't open /dev/ttySAC0: No such device or address大家遇到没有啊怎么见ttySAC0啊看看/dev下有没有这个设备节点jimmy(532893278)?2012-9-11?17:34:28没有,后来我ln?-s?console?ttySAC0怎么建?ttySACmknod吗搞定呵呵mknod建ttySAC0OK
故障现象:编译第一个驱动测试程序时,不能够make成功 说分析原因:KERN_DIR表示的是内核目录(为开发板(单板)上运行的内核版本),这个内核要先编译好,当执行make -C $(KERN_DIR)时就会转到KERN_DIR所定义的目录里面去,用KERN_DIR目录下的makefile来对驱动程序进行编译。解决方法/步骤:将原来的KERN_DIR 目录 /work/system/linux-改为/home/book/hudahua/linux-2.6.31#KERN_DIR = /work/system/linux-KERN_DIR = /home/book/hudahua/linux-2.6.31
all:make -C $(KERN_DIR) M=`pwd` modules
clean:make -C $(KERN_DIR) M=`pwd` modules cleanrm -rf modules.order
obj-m+= driver_module.o调试总结(心得):理解驱动程序的编译很重要,驱动程序本来就应该是属于内核,驱动程序是内核当中的一部分。
三、2012-9-29故障现象: make编译按键驱动程序时提示错误出现,arm-linux-gcc:command not found分析原因:用arm-linux-gcc –v 命令查看交叉编译器版本,有交叉编译器PATH里