当前位置: 首页 > news >正文

哈尔滨站建筑合肥优化排名推广

哈尔滨站建筑,合肥优化排名推广,旅行网站建设的规划书,做一个公司网站要多少钱在ubuntu下编写验证字符设备驱动 并移植到arm开发板上 1#xff0c;准备工作 uname -r 查看电脑版本信息 apt-get install linux-source 安装相应版本的linux内核2#xff0c;编写驱动程序 Global CharDev.c /* GlobalCharDev.c */ #include linux/module.h准备工作   uname -r  查看电脑版本信息       apt-get  install  linux-source  安装相应版本的linux内核  2编写驱动程序     Global CharDev.c /* GlobalCharDev.c */ #include linux/module.h #include linux/init.h #include linux/fs.h#include asm/uaccess.h#define DEV_NAME GlobalCharstatic ssize_t GlobalRead(struct file *, char *, size_t, loff_t *); static ssize_t GlobalWrite(struct file *, const char *, size_t,loff_t *);static int char_major 0; static int GlobalData 0; /* GlobalChar设备的全局变量 *//* 初始化字符设备驱动的 file_operations 结构体 */ struct file_operations globalchar_fops {.read GlobalRead,.write GlobalWrite };/* 模块初始化 */ static int __init GlobalChar_init(void) {int ret;ret register_chrdev(char_major, DEV_NAME, globalchar_fops);/* 注册设备驱动_driver_char_misc.c 第290行参考 */if(ret 0 )printk(KERN_ALERT GlobalChar Reg Fail\n);else{printk(KERN_ALERT GlobalChar Reg Success\n);char_major ret;printk(KERN_ALERT Major %d\n, char_major);}return ret; }/* 模块卸载函数 */ static void __exit GlobalChar_exit(void) {unregister_chrdev(char_major, DEV_NAME); /* 注销设备驱动 */return; }/* 模块驱动读函数 */ static ssize_t GlobalRead(struct file *file, char *buf, size_t len, loff_t *off) {if (copy_to_user(buf, GlobalData ,sizeof(int))) {/* 从内核复制 GlobalData 到用户空间*/return -EFAULT;}return sizeof(int); }/* 模块驱动写函数 */ static ssize_t GlobalWrite(struct file *file, const char *buf, size_t len, loff_t *off) {if (copy_from_user(GlobalData, buf, sizeof(int))){/* 从用户复制 GlobalData 到内核 */return -EFAULT;}return sizeof(int); }module_init(GlobalChar_init); module_exit(GlobalChar_exit);MODULE_LICENSE(GPL); MODULE_AUTHOR(dongjin);     Makefile ifneq ($(KERNELRELEASE),) obj-m : GlobalCharDev.o else# KERNELDIR ? /lib/modules/$(shell uname -r)/buildKERNELDIR ? /usr/src/linux-headers-$(shell uname -r) //这两个都可以PWD : $(shell pwd)default:$(MAKE) -C $(KERNELDIR) M$(PWD) modulesclean:rm -rf rm -rf *.ko *.mod* *.o* *.sy* endif    理解       pwd--  驱动文件目录       kerneldir --  内核源码目录       default --  表示到内核源码目录中去编译pwd下的驱动文件 ——————————————————————————————————————————————————————           make 编译 rootubuntu:/home/arm/data/char_driver# make make -C /usr/src/linux-headers-4.4.0-31-generic M/home/arm/data/char_driver modules make[1]: 正在进入目录 /usr/src/linux-headers-4.4.0-31-genericCC [M] /home/arm/data/char_driver/GlobalCharDev.oBuilding modules, stage 2.MODPOST 1 modulesLD [M] /home/arm/data/char_driver/GlobalCharDev.ko make[1]:正在离开目录 /usr/src/linux-headers-4.4.0-31-generic   出现Global CharDev.ko文件 2insmod Global CharDev.ko  将模块加入内核 3cat  /proc/devices  查看驱动设备     4mknod  /dev/GlobalChar   c  247  0      根据相应的设备号建立设备节点。 5测试文件 /* GlobaiCharText.c 测试文件*/#include sys/types.h #include sys/stat.h #include stdio.h #include fcntl.h #include unistd.h#define DEV_NAME /dev/GlobalCharint main() {int fd, num;/* 打开设备文件 */fd open(DEV_NAME, O_RDWR, S_IRUSR | S_IWUSR);if(fd 0){printf(Open Device Fail!\n);return -1;}/* 读取当前设备数值 */read(fd, num, sizeof(int));printf(The GlobalChar is %d\n, num);printf(Please input a numble written to GlobalChar: );scanf(%d, num);/* 写入新的数值 */write(fd, num, sizeof(int));/* 重新读取数值 */read(fd, num, sizeof(int));printf(The GlobalChar is %d\n, num);close(fd);return 0;}      gcc -o  GlobalCharText  GlobalCharText.c      编译出可执行文件    执行 rootubuntu:/home/arm/data/char_driver# ./a.out The GlobalChar is 0 Please input a numble written to GlobalChar: 111 The GlobalChar is 111   —————————————————————————————————————————————————————————————————————— 通过NFS我们可以建立共享目录将编写好的驱动加载到arm板当然也需要配置环境变量。 1驱动文件需要将Make file中KERNLDIR 改成 自己下载内核的地址如     KERNELDIR ? /home/arm/linux-4.4       2测试文件理所当然我们需要使用交叉编译去编译出可执行文件。 注意首先我们要知道自己制作的做小系统是采用静态编译还是动态编译我的采用静态编译   1静态   2动态 需要在制作最小系统时在  /lib  下加入所需的动态交叉编译库所选交叉编译工具目录下的链接库但是我在制作randisk的过程中提示内存不足暂没查找其原因。   如果在静态根文件系统内使用动态编译链所编译的elf会提示-sh:./test:no found  (这里 not found 指的是 链接库)   测试   卸载 删除  /dev  下的设备节点   rm /dev/GlobalChar 卸载驱动   rmmod  GlopbalCharDev.ko  出现问题     —————————————————————————————————————————————————————— 参考 http://tieba.baidu.com/p/3645403366 https://blog.csdn.net/Ultraman_hs/article/details/53239455 解决移植到arm上不兼容的问题   https://blog.csdn.net/zqj6893/article/details/48439711 解决驱动卸载问题转载于:https://www.cnblogs.com/chu-yi/p/10671865.html
http://www.pierceye.com/news/649699/

相关文章:

  • 如何提高网站排名的方法建设一个商业网站费用
  • 电商网站平台有哪些做自己的第一个网站
  • 源码资源下载站百度指数 多少流量 网站名
  • 合肥比较好的网站建设公司青阳网站建设
  • 上海地产网站建设甘肃建设厅网站二级建造师报名时间
  • 扬州网站建设推广泊头网站建设甘肃
  • 什么行业要做网站建设推广这些水墨网站设计欣赏
  • 渠道网站wap百度
  • 在网站上如何做天气预报栏wordpress 分类列表
  • 做网站需要投资多少钱做网站的销售团队
  • 苏州哪个公司做门户网站seo优化方案报价
  • 电力建设官方网站做网站送优化
  • 门户网站建设模式包括网站群和中企动力企业邮箱登陆首页
  • 做调查网站的问卷哪个给的钱高wordpress邮箱注册功能
  • 上海php网站开发基于php网站建设
  • 大丰专业做网站做旅游网站当地人服务赚钱吗
  • 长沙网站制作公司推荐seo关键词排名优化
  • 内蒙古住房与城乡建设部网站广州十大软件公司排名
  • 营销型网站 易网拓德阳做网站
  • 网站建设seo虾哥网络购物网站技术实施方案
  • 门户网站框架下载陕西省建设工会网站
  • 网站有信心做的更好做外贸到什么网站上发布比较好
  • wex5做网站wordpress页面的设置
  • 绍兴市建设银行网站网站建设的基本术语
  • 建筑企业网站模板免费下载seo 网站换程序
  • wordpress怎么做排名seo怎么样
  • 电商网站开发平台哪家好百度运营怎么做
  • 门户网站 源码网站建设推广公司范围
  • 网站字体大小wordpress用户登录页面
  • 影院禁止18岁以下观众入内宿迁新站seo