![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Device
技术小青年
这个作者很懒,什么都没留下…
展开
-
GCC对C/C++的扩展
不允许强弱符号多次定义,即不同的目标文件中不能有同名的强符号;否则链接器报重复定义的错误;如果一个符号在某个目标文件中是强符号,在其它文件中都是弱符号,那么选择强符号;如果一个符号在所有目标文件中都是弱符号,那么选择其占用空间最大的一个; GNC CC 是一个功能非常强大的跨平台 C 编译器,它对 C 语言提供了很多扩展,这些扩展对优化、目标代码布局、更安全的检查等方面提供了很强的转载 2018-01-15 22:17:35 · 606 阅读 · 0 评论 -
嵌入式驱动day01
1.编写一个简单的驱动代码,在内核态运行的helloworld#include #include int __init helloworld_init(void){ printk("hello world\n"); return 0;}void __exit helloworld_exit(void){ printk("bye bye\n");}moudle_init(hell原创 2018-01-15 22:19:16 · 186 阅读 · 0 评论 -
嵌入式驱动day02
回顾day011.搭建环境 编译器 内核编译 tftp nfs2.内核模块的编译 驱动程序工作于内核态 2.1直接编译进内核 2.2编译成内核模块 1).c放到内核源码目录中修改对应的Kconfig Makefile 2).c放到原创 2018-01-15 22:20:02 · 191 阅读 · 0 评论 -
嵌入式驱动day03
复习day021.模块参数 内核模块xxx.c文件中申请的全局变量声明为模块参数 insmod xxx.ko mpint=10l /sys/module/xxx/parameters/mpint2.内存管理 逻辑地址 虚拟地址 物理地址 linux 编程时使用到的都是虚拟地址原创 2018-01-15 22:20:50 · 186 阅读 · 0 评论 -
嵌入式驱动day04
复习day031.内核定时器struct timer_list{ expires function data}jiffiesinit_timeradd_timerdel_timermod_timer2.系统调用如何实现? 从用户态能够切换到内核的方法原创 2018-01-15 22:21:15 · 180 阅读 · 0 评论 -
嵌入式驱动day05
1.字符设备驱动框架struct cdev {//代表硬件上的一个字符设备 dev_t dev;//设备号 struct file_operations f_ops;//操作函数集合 ....}关于设备号的分配方式 静态分配 register_chrdev_region原创 2018-01-15 22:21:35 · 206 阅读 · 0 评论 -
嵌入式驱动day06
1.复习 struct file_operations{ .read .writer .llseek .ioctl } 内核态与用户态的数据交互问题 copy_to_user copy_from_user原创 2018-01-15 22:21:57 · 217 阅读 · 0 评论