我在基于ARM V7架构的嵌入式主板上工作,只有128MB的闪存,我想在里面安装Bootloader Image,Linux Kernel Image以及根文件系统,为此我的主要目标是减少引导加载程序和Linux Kernel image的大小。
为了减小内核大小,我做了以下优化:
1. Deleted all the printk messages from displaying which reduced some memory,
2. Turning off Sysfs Support decreased the size of the kernel substant
我试图通过AM3517评估板上的JTAG加载和引导linux内核。我的调试器是BDI3000。我不使用openocd,因为根据调试器的文档,它不是必需的。到目前为止,我认为我能够将vmlinux映像加载到内存中,但是一旦完成,"cont“gdb命令就不会引导linux。我在串行控制台上没有收到任何消息。
我正在遵循这个链接中给出的指示
试图获取链接中提到的log_buffer地址将给出以下输出
(gdb) p (char*) &__log_buf[log_start]
$1 = 0xc04cd460 <Address 0xc04cd460 out of bounds>
我正在使用ioctl()从块设备(Scsi)读取数据。
我注意到,当我读取1024扇区时,ioctl完成时没有任何问题。当我读取2048时,过了很长一段时间后,它返回ENOMEM (errno=12),这甚至没有列在可能的错误列表中(请参阅)
我已经tripple检查了我传递的缓冲区大小是否合适,所以这不可能是这种情况--没有缓冲区溢出。
那么,我如何才能知道使用ioctl读取的最大缓冲区大小?
编辑1
一些附加信息可能会对您有所帮助:
Enterprise Linux Enterprise Linux Server release 5.3 (Carthage)
Red Hat Enterpr