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

扬州西区网站建设网站建设 上海

扬州西区网站建设,网站建设 上海,百度一下首页官网,网络营销与直播电商主要学什么使用 Ubuntu Linux 测试 Linux 驱动 1. 测试 Linux 驱动准备工作 ​ 对于一个 Linux 驱动程序#xff0c;一开始可以在 Ubuntu Linux 上做前期开发和测试。对于访问硬件部分也可以在 Ubuntu Linux 用软件进行模拟,切记不能代替真实的环境#xff01;当基本开发完成后#…使用 Ubuntu Linux 测试 Linux 驱动 1. 测试 Linux 驱动准备工作 ​ 对于一个 Linux 驱动程序一开始可以在 Ubuntu Linux 上做前期开发和测试。对于访问硬件部分也可以在 Ubuntu Linux 用软件进行模拟,切记不能代替真实的环境当基本开发完成后就需要在开发板或工程样机上使 用真实的硬件进行测试当然最后还需要在最终销售的产品上进行测试。最终测试通过Linux 驱动才能算真 正开发完成。 1.1 实现步骤 1先测试自己 ubuntu 虚拟机的版本号 sunubuntu:~$ uname -r2找到对应版本的内核源码编译的目录 sunubuntu:/lib/modules$ ls 5.15.0-43-generic 5.15.0-56-generic 5.19.0-32-generic 5.15.0-53-generic 5.15.0-60-generic 5.19.0-35-genericsunubuntu:/lib/modules$ cd 5.19.0-32-generic sunubuntu:/lib/modules/5.19.0-32-generic$ ls build modules.builtin.alias.bin modules.order initrd modules.builtin.bin modules.softdep kernel modules.builtin.modinfo modules.symbols modules.alias modules.dep modules.symbols.bin modules.alias.bin modules.dep.bin vdso modules.builtin modules.devnamesunubuntu:/lib/modules/5.19.0-32-generic$ cd build sunubuntu:/lib/modules/5.19.0-32-generic/build$ ls arch Documentation init Kconfig mm scripts ubuntu block drivers io_uring kernel Module.symvers security usr certs fs ipc lib net sound virt crypto include Kbuild Makefile samples 3修改测试驱动程序的 Makefile 文件 KERNEL_DIR /lib/modules/5.19.0-32-generic/build #ubuntu 内核目录 CUR_DIR $(shell pwd) MYAPP virtdev_test all:make -C $(KERNEL_DIR) M$(CUR_DIR) modulesgcc -o $(MYAPP) $(MYAPP).c clean:make -C $(KERNEL_DIR) M$(CUR_DIR) cleanrm -rf $(MYAPP) obj-m virtdev_drv.o2. 测试驱动程序 2.1 编写驱动程序 virtdev_drv.c #include linux/module.h #include linux/init.h #include linux/kernel.h #include linux/fs.h #include linux/miscdevice.h #include asm/uaccess.h #include asm/atomic.h // 定义设备文件名 #define DEVICE_NAME virtdev static int atom 0; // 参数 atom0: 多个进程可以同时打开 vritdev 设备文件 // 参数 atom 非 0同时只能有一个进程打开 virtdev 设备文件 static atomic_t int_atomic_available ATOMIC_INIT(1); // 原子变量值为 1 static int virtdev_open(struct inode *node, struct file *file) {if (atom){if (!atomic_dec_and_test(int_atomic_available)){atomic_inc(int_atomic_available);return -EBUSY;}}return 0; }static int virtdev_close(struct inode *node, struct file *file) {if (atom){atomic_inc(int_atomic_available);}return 0; }static struct file_operations dev_fops {.owner THIS_MODULE,.open virtdev_open,.release virtdev_close };static struct miscdevice misc {.minor MISC_DYNAMIC_MINOR,.name DEVICE_NAME,.fops dev_fops };// 初始化 Linux 驱动 static int __init virtdev_init(void) {// 建立设备文件int ret misc_register(misc);printk(jaylen atomic%d\n, atom);printk(virtdev_init_success\n);return ret; }// 卸载 Linux 驱动 static void __exit virtdev_exit(void) {printk(jaylen atomic%d\n, atom);printk(jaylen virtdev_exit_success\n);// 删除设备文件misc_deregister(misc); }// 注册初始化 Linux 驱动的函数 module_init(virtdev_init); // 注册卸载 Linux 驱动的函数 module_exit(virtdev_exit);module_param(atom, int, S_IRUGO | S_IWUSR); MODULE_LICENSE(GPL); 2.2 编写应用程序 virtdev_test.c #include sys/types.h #include sys/stat.h #include fcntl.h #include stdlib.h #include unistd.h #include stdio.h #include errno.h int main(int argc, char *argv[]) {printf(app pid%d is running\n, getpid());int fd open(/dev/virtdev, O_RDWR);printf(ret:%d\n, fd);if (fd 0){printf(errno:%d\n, errno);}else{sleep(10);close(fd);}printf(app pid%d is over\n, getpid());return 0; }2.3 编译驱动 在 ubuntu 普通用户下完成编译驱动 unubuntu:ubuntu_drv_test$ make make -C /lib/modules/5.19.0-32-generic/build M/home/sun/work/ubuntu_drv_test modules make[1]: 进入目录“/usr/src/linux-headers-5.19.0-32-generic” warning: the compiler differs from the one used to build the kernelThe kernel was built by: x86_64-linux-gnu-gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0You are using: gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0CC [M] /home/sun/work/ubuntu_drv_test/virtdev_drv.oMODPOST /home/sun/work/ubuntu_drv_test/Module.symversCC [M] /home/sun/work/ubuntu_drv_test/virtdev_drv.mod.oLD [M] /home/sun/work/ubuntu_drv_test/virtdev_drv.koBTF [M] /home/sun/work/ubuntu_drv_test/virtdev_drv.ko Skipping BTF generation for /home/sun/work/ubuntu_drv_test/virtdev_drv.ko due to unavailability of vmlinux make[1]: 离开目录“/usr/src/linux-headers-5.19.0-32-generic” gcc -o virtdev_test virtdev_test.c1.2.4 测试驱动 在 ubuntu 下需要切换到管理员用户下才能安装测试驱动 sunubuntu:ubuntu_drv_test$ sudo su rootubuntu:/home/sun/work/ubuntu_drv_test# ls hello_test Module.symvers virtdev_drv.mod virtdev_drv.o Makefile virtdev_drv.c virtdev_drv.mod.c virtdev_test modules.order virtdev_drv.ko virtdev_drv.mod.o virtdev_test.c 安装驱动 rootubuntu:/home/sun/work/ubuntu_drv_test# insmod virtdev_drv.ko 传参加载驱动 rootubuntu:/home/sun/work/ubuntu_drv_test# insmod virtdev_drv.ko atom1打印并清空缓冲区日志 dmesg -c, 以下是测试过程 驱动加载过程 rootubuntu:/home/sun/work/ubuntu_drv_test# dmesg [25849.067381] robin atomic0 [25849.067387] robin virtdev_exit_success [25867.980387] robin atomic1 [25867.980395] virtdev_init_successrootubuntu:/home/sun/work/ubuntu_drv_test# lsmod Module Size Used by virtdev_drv 16384 1rootubuntu:/home/sun/work/ubuntu_drv_test# ls /dev/virtdev -al crw------- 1 root root 10, 121 3月 11 22:14 /dev/virtdev 用户测试 sunubuntu:ubuntu_drv_test$ sudo ./virtdev_test app pid43934 is running ret:3 app pid43934 is over 驱动卸载 rootubuntu:/home/sun/work/ubuntu_drv_test# rmmod virtdev_drv rootubuntu:/home/sun/work/ubuntu_drv_test# dmesg [25849.067381] robin atomic0 [25849.067387] robin virtdev_exit_success [25867.980387] robin atomic1 [25867.980395] virtdev_init_success [26054.089448] robin atomic1 [26054.089456] robin virtdev_exit_success 3 Linux 内核日志查看之 dmesg 命令简介 Linux 内核启动时会加载硬件驱动在有新硬件时也会加载驱动如果想要查看内核的活动可以使用 dmesg 命令。Linux 内核日志存储在一个 ring-buffer 中它的大小是固定的当队列满时新的消息会覆盖掉最旧的消 息。实际上在 boot 阶段所有的应用还没有启动syslogd 也未启动这时内核日志是非常重要的信息。 除了设备初始化日志、内核模块日志它还会包含一些应用崩溃的相关信息记录了解 dmesg 的使用对于调 试程序相当重要。 对于嵌入式设备的调试它会比较清楚地展现当前的 log 信息。 dmesg -c 显示并清除当前的日志内容。 下次再 dmesg 时就没有以前的日志了。
http://www.hkea.cn/news/14588815/

相关文章:

  • 个人网站备案号被注销了网站首页设计代码
  • 红河州建设局网站网站做的图上传后字变得很模糊
  • 西安网站建设 早晨凡科网站备案
  • 携程网网站规划建设特点佛山新网站建设渠道
  • 响应式网站建设服务器做网站有哪些按钮
  • 长春企业自助建站如何找人做网站
  • 甘肃网站建设方案服务至上网站首页漂浮广告代码
  • 爱站云网站建设heikw常德网站建设的策划方案
  • 网站域名一年多少钱网站建设服务兴田德润
  • 建站网站那个好网站设计手机
  • 制作企业网站步骤申请域名后怎样做网站
  • 找人给公司做网站去哪找网站上的3d怎么做的
  • 网站建设公司电话创客贴网站建设
  • 重庆网站备案需要几天iis怎么使用来建设一个网站
  • 广州网站建设策划书网站架构设计师薪资水平
  • 网站建设公司基本流程ciid中国室内设计官网
  • 教育网站制作服务优化搜索引擎的方法
  • 百度不收录的网站本地营销型网站建设
  • 小米路由器 做网站wordpress主题sora
  • 咋样查看网站用什么编程语言做的付费网站怎么制作
  • 营销助手app官方下载关键词优化策略有哪些
  • 紫色的网站vps做网站怎么加速
  • 期末作业制作网站网站建设存在问题整改报告
  • 网站建设你懂的凡科活动不良记录多久解除
  • ktv在那些网站做宣传效果好小程序商城怎么开通
  • 建设网站的申请信用卡分期花卉网站建设推广
  • 动漫网站源码免费提高搜索引擎检索效果的方法
  • 成都高端网站建设那家好网站营销力
  • 宁波高端网站设计公司秦皇岛网站制作公司哪家好
  • 南宁建设网站云溪网络建站宝盒