1.arm-linux-nm:将可执行程序生成对应的符号表,
arm-linux-as:
2.使用/proc
3.看门狗(wdt)定时器驱动
**********************************************************************************
* 在linux系统中,/proc文件系统它被用于内核向用户导出信息。/proc文件系统是 *
* 一个虚拟文件系统,通过它可以使用一种新的方法在linux内核空间和用户空间之间 *
* 进行通信。在/proc文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行 *
* 通信的一种手段,与普通文件不同的是,这些虚拟文件的内容都是动态创建的。 *
**********************************************************************************
一:
在linux系统中,可用如下函数创建/proc节点:
函数所在的头文件声明:xx/include/linux/proc_fs.h
************
struct proc_dir_entry *create_proc_entry(const char *name,
mode_t mode, struct proc_dir_entry *parent);
************
struct proc_dir_entry *create_proc_read_entry(const char *name,
mode_t mode, struct proc_dir_entry *base,
read_proc_t *read_proc, void * data);
create_proc_entry()函数用于创建/proc节点,而下面的create_proc_read_entry()调用
create_proc_entry()创建只读的/proc节点。参数name为/proc节点的名称,parent或base
为父目录的节点,如果为NULL,则指/proc目录,read_proc是/proc节点的读函数指针。
当read()系统调用在/proc文件系统中执行时,它映像到一个数据产生函数,而不是一个数
据获取函数。
二:
下列函数用于创建/proc目录:
struct proc_dir_entry *proc_mkdir(const char *name,
struct proc_dir_entry *parent);
三:
上述创建/proc节点和/proc目录的函数的返回值为如下结构体:
struct proc_dir_entry
{
...
read_proc_t *read_proc;
write_proc_t *write_proc;
...
};
proc_dir_entry结构体中包含了/proc节点的读函数指针 read_proc_t*read_proc;
写函数指针write_proc_t *write_proc;以及父节点,子节点信息等。
************************
/proc节点的读写函数的类型分别为:
typedef int (read_proc_t)(char *page, char **start, off_t off,
int count, int *eof, void *data);
typedef int (write_proc_t)(struct file *file, const char __user *buffer,
unsigned long count, void *data);
*读函数中page指针指向用于写入数据的缓冲区,start用于返回实际的数据写到内存
页的位置,eof是用于返回读结束标志,offset是读的偏移,count是要读的数据长
度。
start参数比较复杂,对于/proc只包含简单数据的情况,通常不需要在读函数
中设置*start,意味着内核将认为数据保存在内存页偏移0的地方。如果将*start
设置为非0值,意味着内核将认为*start指向的数据是offset偏移处的数据*
*写函数与file_operations中的write()成员类似,需要一次从用户缓冲区到内存空
间的复制过程 *
四:
linux系统中可用如下函数删除/proc节点:
void remove_proc_entry(const char *name, struct proc_dir_entry *parent);