mdev

【mdev存在的理由--设备文件系统】


我们先看现象。当我们往开发板上移植了一个新的文件系统之后(假如各种设备驱动也移植好了),启动开发板,我们用串口工具进入开发板,查看系统/dev目录,往往里面没有或者就只有null、console等几个系统必须的设备文件在这儿外,没有任何设备文件了。那我们移植好的各种设备驱动的设备文件怎么没有啊?如果要使用这些设备,那不是要一个一个的去手动的创建这些设备的设备文件节点,这给我们使用设备带来了极为的不便(在之前篇幅中讲的各种设备驱动的移植都是这样)。
 
设备文件系统就是给我们解决这一问题的关键,他能够在系统设备初始化时动态的在/dev目录下创建好各种设备的设备文件节点(也就是说,系统启动后/dev目录下就有了各种设备的设备文件,直接就可使用了)。除此之外,他还可以在设备卸载后自动的删除/dev下对应的设备文件节点(这对于一些热插拔设备很有用,插上的时候自动创建,拔掉的时候又自动删除)。还有一个好处就是,在我们编写设备驱动的时候,不必再去为设备指定主设备号,在设备注册时用0来动态的获取可用的主设备号,然后在驱动中来实现创建和销毁设备文件(一般在驱动模块加载和卸载函数中来实现)。 
 
【mdev之我们用它来干啥】
mdev是busybox自带的一个简化版的udev,适合于嵌入式的应用埸合。其具有使用简单的特点。它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件。
【mdev之原理】
要想真正用好mdev,适当知道一下原理是必不可少的。现在简单介绍一下mdev的原理:


执行mdev -s
以‘-s’为参数调用位于/sbin目录写的mdev(其实是个链接,作用是传递参数给/bin目录下的busybox程序并调用它),mdev扫描 /sys/class 和
/sys/block中所有的类设备目录,如果在目录中含有名为“dev”的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev
下创建设备节点文件。一般只在启动时才执行一次 “mdev -s”。


热插拔事件:由于启动时运行了命令:echo /sbin/mdev > /proc/sys/kernel/hotplug ,那么当有热插拔事件产生时,内核就会调用位于
/sbin目录的mdev。这时mdev通过环境变量中的 ACTION 和DEVPATH,(这两个变量是系统自带的)来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev 下创建设备节点文件。
//注释:这黄色的部分查了好多资料都没有解释, 大部分都是一般的COPY,并没有这条语句的意思;


The file has the format: 
这个文件的格式如下: 
<device regex> <uid>:<gid> <octal permissions>        //注释:regex 正则表达式;octal 八进制


For example: 
例如: 
hd[a-z][0-9]* 0:3 660 


The config file parsing stops at the first matching line. If no line is 
这个配置文件在第一个匹配行处停止解析。 如果没有匹配行, 
matched, then the default of 0:0 660 is used. To set your own default, simply 
那么就使用默认的 0:0 660 。 你也可以通过在最后创建如下的全匹配 
create your own total match like so: 
行,来设置你自己的默认设置: 
.* 1:1 777 
 
//主要内容:自己执行自己定义的命令
If you also enable support for executing your own commands, then the file has 
如果你想 mdev 在找到匹配行时可以执行自定义的命令,那么文件格式如下: 
the format: 
<device regex> <uid>:<gid> <octal permissions> [<@|$|*> <command>] 
The special characters have the meaning: 
特殊字符的意义如下: 
@ Run after creating the device. 
@ 在创建设备节点后运行命令。 
$ Run before removing the device. 
$ 在删除设备节点前运行命令。 
* Run both after creating and before removing the device. 
* 在创建设备节点后和删除设备节点前都运行命令。 
The command is executed via the system() function (which means you're giving a 
这些命令是通过系统函数(system())执行的(也就是说你在对shell 下命令) 
command to the shell), so make sure you have a shell installed at /bin/sh. 
,所以请确保你已在 /bin/sh 安装了shell。 
For your convenience, the shell env var $MDEV is set to the device name. So if 
为了方便,shell 的环境变量 $MDEV 会被设置成设备名。 例如 
the device 'hdc' was matched, MDEV would be set to "hdc". 
mdev 解析到设备 'hdc' 匹配,MDEV 将会被设置为 "hdc"。 

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在现代军事领域,导弹的精确打击能力至关重要,而导弹的飞行轨迹直接影响其命中精度。为了深入研究导弹的飞行特性,本文通过 MATLAB 软件中的 Simulink 工具,对导弹的六自由度三维轨迹进行仿真分析。目标在惯性坐标系下进行匀速或变速机动,导弹采用比例导引法进行追踪。通过建立运动学与动力学模型,模拟导弹的飞行过程,旨在获取导弹的运动轨迹以及与目标的距离变化规律,为导弹的制导与控制研究提供理论支持与数据参考。 目标在惯性坐标系中按照设定的匀速或变速规律进行机动。其运动状态由位置、速度和加速度等参数描述,通过数学公式精确表达其在三维空间内的运动轨迹。匀速运动时,目标的速度保持恒定,位置随时间线性变化;变速运动时,引入加速度参数,使目标的运动更具复杂性和实战性。 导弹采用比例导引法进行制导。根据比例导引法的基本原理,导弹的加速度与目标与导弹之间的相对位置和相对速度成正比。结合导弹的运动学和动力学规律,建立导弹的六自由度运动模型。该模型考虑了导弹在三维空间内的平动和转动自由度,包括导弹的俯仰、偏航和滚转运动,以及相应的速度和加速度变化。通过运动学方程描述导弹的位置和姿态变化,动力学方程则考虑了导弹的推力、气动力和重力等因素对导弹运动的影响,从而全面刻画导弹的飞行特性。 在 MATLAB 的 Simulink 环境下,搭建仿真模型。将目标运动模型和导弹运动模型以模块化的方式进行组合,通过信号连接实现目标与导弹之间的信息交互。设置不同的初始条件,如目标和导弹的初始位置、速度、加速度等,以及比例导引法中的比例系数等参数。启动仿真后,Simulink 根据模型中的方程和参数,实时计算导弹和目标的运动状态,并以图形化的方式展示导弹的三维飞行轨迹以及导弹与目标之间的距离变化曲线。通过多次仿真,调整参数,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值