拿到一个嵌入式设备之后,
我想看看这个设备的分区情况:cat /proc/mtd 回车
我想看看它各分区挂载的文件系统是什么:mount 回车
我想看看它的arm版本及主频:cat /proc/cpuinfo 回车
我想看看整个外界内存芯片的容量:
我想看看linux os占用的整个内存容量: cat /proc/meminfo |grep MemTotal 回车
我想看看booloader给内核的启动命令内容:cat /proc/cmdline 回车
我想看看它支持的文件系统:cat /proc/filesystems 回车
我想看看各个设备模块的中断情况:cat /proc/interrupts 回车
我想看看各个系统硬件设io mem地址空间的资源划分情况:cat /proc/iomem 回车 【对应开发中的ioremap,reques_mem_region,重要】
我想看看各个外围设备的io端口空间的划分况情况:cat /proc/ioports 回车 【ioports是x86里面的io管理设计思想,在arm里可以忽略】
我想看看整个flash芯片的大小:dmesg |grep size
对于开发驱动的人来讲,一个驱动是不是加载成功,甚至是这个设备是不是都已经被内核所识别,那就请把目光移到这里:
这种查看的方法的前提是必须遵从linux设备驱动模型来开发的,那从这个出发点来讲,我们说在linux设备模型下进行设备驱动开发,一般遵从驱动开发三步曲:
(1)总线设备及总线驱动注册,(2)待开发设备添加到总线;(3)待开发设备的驱动注册到总线。完事。
所以我们想想看看我们要开发的驱动是不是正常,可以按部就班的先查看下,这个设备所在的总线是不是已经注册到内核(或者说添加到platform bus上):
ls /sys/bus 回车,或ls /sys/devices/platform/ 回车,看是否有相应的总线适配器设备在里面;
继续,再查看下这个设备是不是已经添加到总线:
ls /sys/devices/platform/xxx_bus/ 回车 或 ls /sys/bus/xxx_bus/device/ 回车 查看该总线下的子设备是不是有我们添加的设备名。
最后,我想看看我要开发驱动是不是已经注册到总线(:
ls /sys/bus/xxx_bus/driver/ 回车 查看该总线下的驱动链表里,是不是有我们添加的驱动,或直接到/dev/xxx_node找我们要使用的设备节点文件在不在。
如果不是以设备驱动模型区开发的,那么就直接查看:
/proc/devices是不是有对应的主设备号及次设备号。
内存方面:
虚拟内存VM是linux很重要的概念在linux内核中vm分为ram部分和swap部分,linux的虚拟内存子系统就是负责在后台对ram和swap进行维护管理,分配资源的。
块设备方面:
mtdcheck ,mtddebug,nandread ,nandwrite,nandscrup,flash_erase,nm等工具要经常使用
文件系统方面:
看似平台堕入linux文件系统组织结构下,每个平凡的目录节点下可能挂载的是一个不甘寂寞的文件系统:包括了建立在块设备上的,以及建立在ram上的:
比如jffs2,squash,yaffs2,建立在ram上的如proc,sys,tmpfs等,建立在虚拟磁盘上的ramdisk,如jffs2等等均可选择。