嵌入式系统设计
sandalphon4869
这个作者很懒,什么都没留下…
展开
-
嵌入式设计实验二:模块参数及Proc文件系统
文章目录一、实验目的二、实验环境三、实验内容及实验原理四、实验结果及其分析1.编译模块(设备驱动程序)(1)创建模块文件xxx.c(2)Makefile(3)编译2.创建设备文件(设备进入点)(1)创建(2)赋权3.插入内核模块(加载设备驱动程序)4.交互proc五、心得体会与建议1. for循环初始化声明分开2.先卸载残留才能安装3.震惊!printk居然不能输出%c4.乱码5.没有string...原创 2020-05-03 11:11:16 · 1140 阅读 · 0 评论 -
嵌入式设计实验一:简单字符设备驱动
文章目录一、实验目的二、实验环境三、实验内容及实验原理四、实验结果及其分析1.编译模块(设备驱动程序)(1)创建模块文件xxx.c(2)Makefile(3)编译2.创建设备文件(设备进入点)(1)创建(2)赋权3.插入内核模块(加载设备驱动程序)4.测试用户应用程序(调用驱动程序)(1)读写(2)清除程序5.野指针问题五、心得体会与建议1.隐式声明函数‘copy_from_user’2.总结co...原创 2020-05-03 11:06:08 · 3921 阅读 · 0 评论 -
嵌入式设计实验三:Tasket与工作队列
文章目录一、实验目的二、实验环境三、实验内容及实验原理四、实验结果及其分析1.编译模块(设备驱动程序)(1)创建模块文件xxx.c(2)Makefile(3)编译2.插入内核模块(加载设备驱动程序)五、心得体会与建议一、实验目的掌握字符设备驱动程序中Tasklet和工作队列的编写和调用方法。分析对比Tasklet和工作队列的差异。二、实验环境ubuntu 12.04 内核3.2.14...原创 2020-05-02 11:23:57 · 1595 阅读 · 0 评论 -
嵌入式设计实验四:内存分配与内存映射
文章目录一、实验目的二、实验环境三、实验内容及实验原理四、实验结果及其分析(2)Makefile(3)编译2.创建设备文件(设备进入点)(1)创建3.插入内核模块(加载设备驱动程序)4.测试用户应用程序(调用驱动程序)五、心得体会与建议一、实验目的掌握字符设备驱动程序中利用nopage进行内存映射的方法。掌握利用get_free_pages进行连续物理地址空间申请的方法。二、实验环境u...原创 2020-05-02 11:20:21 · 1331 阅读 · 2 评论 -
嵌入式Linux驱动:不能多次close(fd)
文章目录一、问题二、解决一、问题驱动程序// buffer数组的最大长度#define RWBUF_MAX_SIZE 1024// 设备中存储信息的全局结构体指针typedef struct Data{ // 用于打开和释放的验证,0表示未使用,1表示已使用 int count; // 表示字符串 char buffer[RWBUF_MAX_SI...原创 2020-04-29 11:32:18 · 2786 阅读 · 0 评论 -
Linux驱动开发:\xffffffe7\xffffffa4\xffffffba\问题
文章目录一、原因:不支持中文二、原因:内存泄漏一、原因:不支持中文static int __init rwbuf_init(){ printk("Hello 示失world\n");}这一堆乱码仅仅是由于中文错误的原因。二、原因:内存泄漏数组越界kmalloc和kfree失误...原创 2020-04-29 11:01:27 · 506 阅读 · 0 评论 -
linux驱动开发:没有string.h
文章目录#include <string.h>写成这样就行:#include <linux/string.h>原创 2020-04-29 10:04:47 · 1735 阅读 · 0 评论 -
【嵌入式设计博客列表】》》》》》》
文章目录一、系统调用、设备驱动二、proc文件系统一、系统调用、设备驱动编译内核函数copy_from_user()和copy_to_user()Ubuntu10.04+kernel2.6.32.60编译内核(一):配置修改名称的内核版本Ubuntu10.04+kernel2.6.32.60编译内核(二):增加用户自定义的系统调用Ubuntu12.04编译内核(三):Linux加载内核...原创 2020-04-28 10:28:40 · 251 阅读 · 0 评论 -
proc文件系统:3.single_xxxx接口
文章目录二、实验1.内容2.过程(1)编写内核模块.c文件(2)编写Makefile文件(3)编译(4)安装模块:(5)交互proc文件(6)卸载模块:(7)清除`printk`输出在缓存区的信息:二、实验1.内容Proc文件系统实践2.过程(1)编写内核模块.c文件mkdir project && cd projectgedit catkinModule.c#...原创 2020-03-10 20:32:00 · 447 阅读 · 0 评论 -
proc文件系统:2.seq_file接口
文章目录一、seq_file接口1.目的2.函数二、实验1.内容2.过程(1)编写内核模块.c文件(2)编写Makefile文件(3)编译(4)安装模块:(5)查看`printk`的输出在缓冲区的信息:(6)卸载模块:(7)清除`printk`输出在缓存区的信息:一、seq_file接口1.目的从内核中导出信息到用户空间有很多方法,可以自己去实现file_operations的read...原创 2020-03-10 19:45:08 · 762 阅读 · 1 评论 -
编译内核函数copy_from_user()和copy_to_user()
文章目录一、定义二、例子三、问题1.隐式声明函数‘copy_from_user’一、定义copy_from_user(rwbuf, buf, count);【作用】:从用户空间复制到内核空间copy_to_user( buf, rwbuf, count);【作用】:从内核空间复制到用户空间【头文件】:#include <linux/uaccess.h> // co...原创 2020-03-10 12:38:21 · 6191 阅读 · 1 评论 -
proc文件系统:1.proc文件系统简介
// 内核#include <linux/kernel.h>// 模块#include <linux/module.h>// 使用mutex#include <linux/mutex.h>// proc_fs定义#include <linux/proc_fs.h>// seq_file接口#include <linux/seq...原创 2020-03-10 19:45:28 · 1607 阅读 · 0 评论 -
Ubuntu10.04+kernel2.6.32.60编译内核(五):Linux加载系统调用
三、实验二1.任务用内核模块的方式为系统添加一个系统调用。要求该系统调用能够完成以下功能:(1) 该系统调用有1个整型参数,接收输入自己的学号;(2) 若参数为奇数,则返回自己学号的最后5位。如你的学号为130120101 ,则返回20101;(3) 若参数为偶数,则返回自己的学号的最后6位。如你的学号为130120102 ,则返回120102 。2.过程得到sys_call_t...原创 2020-03-09 23:02:36 · 561 阅读 · 0 评论 -
嵌入式Linux:字符设备驱动
文章目录gedit rwbuf.c// rwbuf.c, driver for virtual char-device#define rwbuf_size 200 // MAX size of bufferstatic char rwbuf[rwbuf_size]; // the buffer keeping stringstatic int rwlen = 0; ...原创 2019-11-18 10:05:54 · 1974 阅读 · 1 评论 -
Ubuntu12.04编译内核(三):Linux加载内核模块
文章目录一、Linux内核模块命令二、实验一、Linux内核模块命令内核模块的安装(加载):insmod module_name.ko内核模块的卸载:rmmod module_name或modprobe -r module_name查看系统已经加载的模块:lsmod查看系统已经加载的模块信息:modinfo查看printk输出在缓存区的信息:dmesg...原创 2019-11-01 17:34:23 · 1300 阅读 · 0 评论 -
Ubuntu10.04+kernel2.6.32.60编译内核(二):增加用户自定义的系统调用
文章目录1.解压内核文件2.修改系统调用表3.修改系统调用号文件1.解压内核文件2.修改系统调用表cd linux-2.6.32.60/arch/x86/kernelsudo gedit syscall_table_32.S在文件的最后一行添加一个系统调用 .long sys_mycall /* 337 */直接从335到337,是因为335那行的系统调用是335,下面那一...原创 2019-10-25 16:01:21 · 1385 阅读 · 2 评论 -
Ubuntu10.04+kernel2.6.32.60编译内核(一):配置修改名称的内核版本
文章目录1.文件2.制造内核镜像make命令make完成后,看一下成功了吗3.make命令的意思1.文件链接:https://pan.baidu.com/s/1W5GIBpBXbJ1D70o3Cp5niQ&shfl=sharepset提取码:bzdd2.制造内核镜像make命令用命令行配置内核sudo make menuconfig选择General set...原创 2019-10-18 20:28:15 · 2374 阅读 · 1 评论