设为首页 加入收藏

TOP

Linux内核模块/驱动编程基础
2014-11-24 07:48:49 来源: 作者: 【 】 浏览:1
Tags:Linux 内核 模块 驱动 编程 基础

Linux内核开发时需要注意以下几个问题:


1.不能访问C库,内核不能使用标准库。这个可以在编译链接内核以后从内核目录下的.vmlinux.cmd可以看出:arm-xxx-ld -nostdlib ... ... 。不过内核在lib下实现了部分常用的函数,如memset,strcpy这类函数,还有可能针对具体体系结构进行优化的代码,一般在arch/xxx/lib下。


2.内核编程使用的GNU C,而不是我们的标准C语言语法。看看内核的代码就知道。


3.因为是内核,所以其内存没有保护机制的。因为内核是在裸机上跑的,不像应用程序是在系统基础上运行的。这个搞过嵌入式开发的人都应该懂的。


4.要慎用内核栈,尽量用全局变量或者动态分配。因为内核栈被分配了比较小的空间,稍微大一点的数据就可能溢出,而且内核栈的底部保存着有关进程的信息。


5.不要轻易使用浮点数。


6.要注意同步和并发。多处理器,内核抢占,中断都有可能会产生竞争。


2.数据对齐。这个在ARM平台我们应该碰到过,不小心就有可能产生取数异常。ARM7,ARM9是不支持非对齐访问的,否则异常对待。新的ARMv7体系结构的芯片可以支持非对齐访问了。


3.字节顺序。主要是字中各种字节存放的顺序。有little-endian和big-endian。


4.使用内核定义的宏,不要使用魔幻数,不要对内核做任何假设。像使用HZ,PAGE_SHIFT来代替某些假的的数字。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Arm Linux 优化 下一篇ARM GCC工具链有关的使用总结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++ Lambda表达式保 (2025-12-26 05:49:45)
·C++ Lambda表达式的 (2025-12-26 05:49:42)
·深入浅出 C++ Lambda (2025-12-26 05:49:40)
·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)